]> git.eshelyaron.com Git - emacs.git/commitdiff
(get_next_display_element): Fix control and escape
authorKim F. Storm <storm@cua.dk>
Tue, 1 Mar 2005 13:38:34 +0000 (13:38 +0000)
committerKim F. Storm <storm@cua.dk>
Tue, 1 Mar 2005 13:38:34 +0000 (13:38 +0000)
glyph from display vector. From Ehud Karni <ehud@unix.mvs.co.il>

src/xdisp.c

index ea7945ad07e07f535a063d7285401ede21b81956..613f6f09b44d7bd27f5b771d866007e558a7f16e 100644 (file)
@@ -5087,11 +5087,12 @@ get_next_display_element (it)
                 display.  Then, set IT->dpvec to these glyphs.  */
              GLYPH g;
              int ctl_len;
-             int face_id, lface_id;
+             int face_id, lface_id = 0 ;
              GLYPH escape_glyph;
 
              if (it->c < 128 && it->ctl_arrow_p)
                {
+                 g = '^';           /* default glyph for Control */
                  /* Set IT->ctl_chars[0] to the glyph for `^'.  */
                  if (it->dp
                      && INTEGERP (DISP_CTRL_GLYPH (it->dp))
@@ -5099,19 +5100,18 @@ get_next_display_element (it)
                    {
                      g = XINT (DISP_CTRL_GLYPH (it->dp));
                      lface_id = FAST_GLYPH_FACE (g);
-                     if (lface_id)
-                       {
-                         g = FAST_GLYPH_CHAR (g);
-                         face_id = merge_faces (it->f, Qt, lface_id,
-                                                it->face_id);
-                       }
+                   }
+                 if (lface_id)
+                   {
+                      g = FAST_GLYPH_CHAR (g);
+                      face_id = merge_faces (it->f, Qt, lface_id,
+                                             it->face_id);
                    }
                  else
                    {
                      /* Merge the escape-glyph face into the current face.  */
                      face_id = merge_faces (it->f, Qescape_glyph, 0,
                                             it->face_id);
-                     g = '^';
                    }
 
                  XSETINT (it->ctl_chars[0], g);
@@ -5121,25 +5121,25 @@ get_next_display_element (it)
                  goto display_control;
                }
 
+             escape_glyph = '\\';    /* default for Octal display */
              if (it->dp
                  && INTEGERP (DISP_ESCAPE_GLYPH (it->dp))
                  && GLYPH_CHAR_VALID_P (XFASTINT (DISP_ESCAPE_GLYPH (it->dp))))
                {
                  escape_glyph = XFASTINT (DISP_ESCAPE_GLYPH (it->dp));
                  lface_id = FAST_GLYPH_FACE (escape_glyph);
-                 if (lface_id)
-                   {
-                     escape_glyph = FAST_GLYPH_CHAR (escape_glyph);
-                     face_id = merge_faces (it->f, Qt, lface_id,
-                                            it->face_id);
-                   }
+               }
+             if (lface_id)
+               {
+                 escape_glyph = FAST_GLYPH_CHAR (escape_glyph);
+                 face_id = merge_faces (it->f, Qt, lface_id,
+                                        it->face_id);
                }
              else
                {
                  /* Merge the escape-glyph face into the current face.  */
                  face_id = merge_faces (it->f, Qescape_glyph, 0,
                                         it->face_id);
-                 escape_glyph = '\\';
                }
 
              if (it->c == 0x8a0 || it->c == 0x8ad)