XEmacs 21.4.18 (Social Property).
[chise/xemacs-chise.git.1] / src / redisplay-tty.c
index 6794bdb..1970369 100644 (file)
@@ -53,17 +53,12 @@ Boston, MA 02111-1307, USA.  */
    invoking them correctly. */
 /* # include <curses.h> */
 /* # include <term.h> */
-#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);
@@ -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