changeset 63061:ac2e43626d90

(Qno_break_space): New variable. (syms_of_xdisp): Initialize it. (get_next_display_element): Add no-break space and soft hypen codes for iso8859-2 and iso8859-5. Don't add `\' for them. Use `no-break-space' face for no-break spaces.
author Juri Linkov <juri@jurta.org>
date Mon, 06 Jun 2005 12:36:29 +0000
parents 1fd49ae230dd
children ab68a12df35a
files src/xdisp.c
diffstat 1 files changed, 28 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Mon Jun 06 12:31:48 2005 +0000
+++ b/src/xdisp.c	Mon Jun 06 12:36:29 2005 +0000
@@ -350,6 +350,10 @@
 
 Lisp_Object Qescape_glyph;
 
+/* Name and number of the face used to highlight non-breaking spaces.  */
+
+Lisp_Object Qno_break_space;
+
 /* The symbol `image' which is the car of the lists used to represent
    images in Lisp.  */
 
@@ -5094,8 +5098,10 @@
 			   && it->len == 1)
 			  || !CHAR_PRINTABLE_P (it->c)
 			  || (!NILP (Vshow_nonbreak_escape)
-			      && (it->c == 0x8ad || it->c == 0x8a0
-				  || it->c == 0xf2d || it->c == 0xf20)))
+			      && (it->c == 0x8a0 || it->c == 0x8ad
+				  || it->c == 0x920 || it->c == 0x92d
+				  || it->c == 0xe20 || it->c == 0xe2d
+				  || it->c == 0xf20 || it->c == 0xf2d)))
 		       : (it->c >= 127
 			  && (!unibyte_display_via_language_environment
 			      || it->c == unibyte_char_to_multibyte (it->c)))))
@@ -5162,13 +5168,25 @@
 					 it->face_id);
 		}
 
-	      if (it->c == 0x8a0 || it->c == 0x8ad
-		  || it->c == 0xf20 || it->c == 0xf2d)
-		{
-		  XSETINT (it->ctl_chars[0], escape_glyph);
+	      if (it->c == 0x8a0 || it->c == 0x920
+		  || it->c == 0xe20 || it->c == 0xf20)
+		{
+		  /* Merge the no-break-space face into the current face.  */
+		  face_id = merge_faces (it->f, Qno_break_space, 0,
+					 it->face_id);
+
 		  g = it->c;
-		  XSETINT (it->ctl_chars[1], g);
-		  ctl_len = 2;
+		  XSETINT (it->ctl_chars[0], g);
+		  ctl_len = 1;
+		  goto display_control;
+		}
+
+	      if (it->c == 0x8ad || it->c == 0x92d
+		  || it->c == 0xe2d || it->c == 0xf2d)
+		{
+		  g = it->c;
+		  XSETINT (it->ctl_chars[0], g);
+		  ctl_len = 1;
 		  goto display_control;
 		}
 
@@ -22714,6 +22732,8 @@
   staticpro (&Qtrailing_whitespace);
   Qescape_glyph = intern ("escape-glyph");
   staticpro (&Qescape_glyph);
+  Qno_break_space = intern ("no-break-space");
+  staticpro (&Qno_break_space);
   Qimage = intern ("image");
   staticpro (&Qimage);
   QCmap = intern (":map");