]> code.delx.au - gnu-emacs/blobdiff - src/term.c
(set_text_properties): New function. Like
[gnu-emacs] / src / term.c
index 89c0892cb3a869439e6ca98fcb7c03219e301840..fc6fa1031872b9cd6d3f78fa96610288854646b8 100644 (file)
@@ -38,6 +38,10 @@ Boston, MA 02111-1307, USA.  */
 #include "dispextern.h"
 #include "window.h"
 
+#ifdef HAVE_TERMCAP_H
+#include <termcap.h>
+#endif
+
 #include "cm.h"
 #ifdef HAVE_X_WINDOWS
 #include "xterm.h"
@@ -56,14 +60,14 @@ static void tty_hide_cursor P_ ((void));
 #define OUTPUT1(a) tputs (a, 1, cmputc)
 #define OUTPUTL(a, lines) tputs (a, lines, cmputc)
 
-#define OUTPUT_IF(a)                                           \
-     if (a)                                                    \
-       tputs (a, (int) (FRAME_HEIGHT (XFRAME (selected_frame)) \
-                       - curY), cmputc);                       \
-     else                                                      \
-       (void) 0
+#define OUTPUT_IF(a)                                                   \
+     do {                                                              \
+       if (a)                                                          \
+         tputs (a, (int) (FRAME_HEIGHT (XFRAME (selected_frame))       \
+                         - curY), cmputc);                             \
+     } while (0)
      
-#define OUTPUT1_IF(a) if (a) tputs (a, 1, cmputc); else (void) 0
+#define OUTPUT1_IF(a) do { if (a) tputs (a, 1, cmputc); } while (0)
 
 /* Function to use to ring the bell.  */
 
@@ -940,8 +944,6 @@ encode_terminal_code (src, dst, src_len, dst_len, consumed)
       /* We must skip glyphs to be padded for a wide character.  */
       if (! CHAR_GLYPH_PADDING_P (*src))
        {
-         struct frame *sf = XFRAME (selected_frame);
-         
          c = src->u.ch.code;
          if (! GLYPH_CHAR_VALID_P (c))
            {
@@ -1995,7 +1997,6 @@ turn_off_face (f, face_id)
      int face_id;
 {
   struct face *face = FACE_FROM_ID (f, face_id);
-  Lisp_Object entry;
 
   xassert (face != NULL);
 
@@ -2212,18 +2213,23 @@ to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.",
   MultiLeft = tgetstr ("LE", address);
   MultiRight = tgetstr ("RI", address);
 
-  /* SVr4/ANSI color suppert.  */
+  /* SVr4/ANSI color suppert.  If "op" isn't available, don't support
+     color because we can't switch back to the default foreground and
+     background.  */
   TS_orig_pair = tgetstr ("op", address);
-  TS_set_foreground = tgetstr ("AF", address);
-  TS_set_background = tgetstr ("AB", address);
-  if (!TS_set_foreground)
+  if (TS_orig_pair)
     {
-      /* SVr4.  */
-      TS_set_foreground = tgetstr ("Sf", address);
-      TS_set_background = tgetstr ("Sb", address);
+      TS_set_foreground = tgetstr ("AF", address);
+      TS_set_background = tgetstr ("AB", address);
+      if (!TS_set_foreground)
+       {
+         /* SVr4.  */
+         TS_set_foreground = tgetstr ("Sf", address);
+         TS_set_background = tgetstr ("Sb", address);
+       }
+      TN_max_colors = tgetnum ("Co");
+      TN_max_pairs = tgetnum ("pa");
     }
-  TN_max_colors = tgetnum ("Co");
-  TN_max_pairs = tgetnum ("pa");
 
   MagicWrap = tgetflag ("xn");
   /* Since we make MagicWrap terminals look like AutoWrap, we need to have