diff options
author | Juri Linkov <[email protected]> | 2005-06-06 12:36:29 +0000 |
---|---|---|
committer | Juri Linkov <[email protected]> | 2005-06-06 12:36:29 +0000 |
commit | 44e582b843ef057c07d89dfa5485fd9814caa0d1 (patch) | |
tree | 2e1866d661201f21523b31aadd97c1e8b4a8c644 | |
parent | e6ca43c89eb9793471f5fa020df7efb41836e584 (diff) |
(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.
-rw-r--r-- | src/xdisp.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 63af22d911..c1ea2a9389 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -350,6 +350,10 @@ Lisp_Object Qtrailing_whitespace; 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 @@ get_next_display_element (it) && 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 @@ get_next_display_element (it) it->face_id); } - if (it->c == 0x8a0 || it->c == 0x8ad - || it->c == 0xf20 || it->c == 0xf2d) + if (it->c == 0x8a0 || it->c == 0x920 + || it->c == 0xe20 || it->c == 0xf20) { - XSETINT (it->ctl_chars[0], escape_glyph); + /* 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 @@ syms_of_xdisp () 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"); |