X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fredisplay-tty.c;h=ff29b5f483ea119cb5528abdb7c83daaba699fbd;hb=63a686a3d18465a8c96b8cc4a273c295f8a5a379;hp=6794bdbe1766794c0ecd93ecff3a42d3ad1ea9b9;hpb=76759ab036458c54499a454399e19602b8ae6ce3;p=chise%2Fxemacs-chise.git.1 diff --git a/src/redisplay-tty.c b/src/redisplay-tty.c index 6794bdb..ff29b5f 100644 --- a/src/redisplay-tty.c +++ b/src/redisplay-tty.c @@ -53,17 +53,12 @@ Boston, MA 02111-1307, USA. */ invoking them correctly. */ /* # include */ /* # include */ -#ifdef __cplusplus -extern "C" { -#endif -extern int tgetent (const char *, const char *); -extern int tgetflag (const char *); -extern int tgetnum (const char *); -extern char *tgetstr (const char *, char **); -extern void tputs (const char *, int, void (*)(int)); -#ifdef __cplusplus -} -#endif +EXTERN_C int tgetent (const char *, const char *); +EXTERN_C int tgetflag (const char *); +EXTERN_C int tgetnum (const char *); +EXTERN_C char *tgetstr (const char *, char **); +EXTERN_C void tputs (const char *, int, void (*)(int)); + #define FORCE_CURSOR_UPDATE(c) send_string_to_tty_console (c, 0, 0) #define OUTPUTN(c, a, n) \ do { \ @@ -171,8 +166,7 @@ static void #endif tty_frame_output_end (struct frame *f) { - struct device *d = XDEVICE (FRAME_DEVICE (f)); - struct console *c = XCONSOLE (DEVICE_CONSOLE (d)); + struct console *c = XCONSOLE (FRAME_CONSOLE (f)); CONSOLE_TTY_CURSOR_X (c) = CONSOLE_TTY_FINAL_CURSOR_X (c); CONSOLE_TTY_CURSOR_Y (c) = CONSOLE_TTY_FINAL_CURSOR_Y (c); @@ -202,7 +196,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block, int cursor_height) { struct frame *f = XFRAME (w->frame); - Emchar_dynarr *buf = Dynarr_new (Emchar); + Emchar_dynarr *buf; struct display_block *db = Dynarr_atp (dl->display_blocks, block); rune_dynarr *rba = db->runes; @@ -228,7 +222,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block, if (end < 0) end = Dynarr_length (rba); - Dynarr_reset (buf); + buf = Dynarr_new (Emchar); while (elt < end && Dynarr_atp (rba, elt)->xpos < start_pixpos) { @@ -351,7 +345,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block, case IMAGE_TEXT: case IMAGE_POINTER: default: - abort (); + ABORT (); } IMAGE_INSTANCE_OPTIMIZE_OUTPUT (XIMAGE_INSTANCE (instance)) = 0; @@ -361,7 +355,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block, elt++; } else - abort (); + ABORT (); } } @@ -870,6 +864,9 @@ set_tty_modes (struct console *c) OUTPUT1_IF (c, TTY_SD (c).init_motion); OUTPUT1_IF (c, TTY_SD (c).cursor_visible); OUTPUT1_IF (c, TTY_SD (c).keypad_on); + + if (TTY_FLAGS (c).auto_margins) + OUTPUT1_IF (c, TTY_SD (c).disable_auto_margins); } /***************************************************************************** @@ -887,7 +884,16 @@ reset_tty_modes (struct console *c) OUTPUT1_IF (c, TTY_SD (c).keypad_off); OUTPUT1_IF (c, TTY_SD (c).cursor_normal); OUTPUT1_IF (c, TTY_SD (c).end_motion); - tty_frame_output_end (XFRAME (CONSOLE_SELECTED_FRAME (c))); + + if (TTY_FLAGS (c).auto_margins) + OUTPUT1_IF (c, TTY_SD (c).enable_auto_margins); + + { + Lisp_Object frm = CONSOLE_SELECTED_FRAME (c); + + if (!NILP (frm)) + tty_frame_output_end (XFRAME (frm)); + } } /***************************************************************************** @@ -924,6 +930,7 @@ tty_redisplay_shutdown (struct console *c) up or removed. */ +#ifdef NOT_YET /* FLAGS - these don't need to be console local since only one console can be being updated at a time. */ static int insert_mode_on; /* nonzero if in insert mode */ @@ -932,7 +939,6 @@ static int underline_mode_on; /* nonzero if in underline mode */ static int alternate_mode_on; /* nonzero if in alternate char set */ static int attributes_on; /* nonzero if any attributes on */ -#ifdef NOT_YET static void turn_on_insert (struct frame *f) { @@ -1059,12 +1065,12 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) CONSOLE_TTY_DATA (c)->term_entry_buffer = (char *) xmalloc (2044); bufptr = CONSOLE_TTY_DATA (c)->term_entry_buffer; -#if !defined(WIN32) +#ifdef SIGTTOU /* SIGTT* don't exist under win32 */ EMACS_BLOCK_SIGNAL (SIGTTOU); #endif status = tgetent (entry_buffer, terminal_type); -#if !defined(WIN32) +#ifdef SIGTTOU EMACS_UNBLOCK_SIGNAL (SIGTTOU); #endif #if 0 @@ -1185,12 +1191,14 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) TTY_SD (c).audio_bell = "\07"; } - TTY_SD (c).cursor_visible = tgetstr ("ve", &bufptr); - TTY_SD (c).cursor_normal = tgetstr ("vs", &bufptr); + TTY_SD (c).cursor_visible = tgetstr ("vs", &bufptr); + TTY_SD (c).cursor_normal = tgetstr ("ve", &bufptr); TTY_SD (c).init_motion = tgetstr ("ti", &bufptr); TTY_SD (c).end_motion = tgetstr ("te", &bufptr); TTY_SD (c).keypad_on = tgetstr ("ks", &bufptr); TTY_SD (c).keypad_off = tgetstr ("ke", &bufptr); + TTY_SD (c).disable_auto_margins = tgetstr ("RA", &bufptr); + TTY_SD (c).enable_auto_margins = tgetstr ("SA", &bufptr); /* @@ -1203,6 +1211,7 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) TTY_FLAGS (c).memory_below_frame = tgetflag ("db"); TTY_FLAGS (c).standout_width = tgetnum ("sg"); TTY_FLAGS (c).underline_width = tgetnum ("ug"); + TTY_FLAGS (c).auto_margins = tgetflag ("am"); if (TTY_FLAGS (c).standout_width == -1) TTY_FLAGS (c).standout_width = 0; @@ -1218,6 +1227,7 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) */ cm_cost_init (c); +#ifdef NOT_YET /* * Initialize local flags. */ @@ -1226,6 +1236,7 @@ init_tty_for_redisplay (struct device *d, char *terminal_type) underline_mode_on = 0; alternate_mode_on = 0; attributes_on = 0; +#endif /* * Attempt to initialize the function_key_map to