Add a new face for non-breaking hyphen characters
* doc/emacs/display.texi (Standard Faces): Mention nobreak-hyphen. (Text Display): Ditto. * lisp/faces.el (nobreak-hyphen): New face (bug#12048). * src/xdisp.c (get_next_display_element): Use it instead of the escape-glyph face. * src/xdisp.c (syms_of_xdisp): New symbil Qnobreak_hyphen.
This commit is contained in:
parent
214f85a0a6
commit
c3ac2cbf73
4 changed files with 35 additions and 15 deletions
|
@ -657,6 +657,9 @@ The face for displaying control characters and escape sequences
|
|||
@item nobreak-space
|
||||
The face for displaying no-break space characters (@pxref{Text
|
||||
Display}).
|
||||
@item nobreak-hyphen
|
||||
The face for displaying no-break hyphen characters (@pxref{Text
|
||||
Display}).
|
||||
@end table
|
||||
|
||||
The following faces control the appearance of parts of the Emacs
|
||||
|
@ -1481,7 +1484,7 @@ characters. To deal with this problem, Emacs displays such characters
|
|||
specially: it displays @code{U+00A0} (no-break space) with the
|
||||
@code{nobreak-space} face, and it displays @code{U+00AD} (soft
|
||||
hyphen), @code{U+2010} (hyphen), and @code{U+2011} (non-breaking
|
||||
hyphen) with the @code{escape-glyph} face. To disable this, change
|
||||
hyphen) with the @code{nobreak-hyphen} face. To disable this, change
|
||||
the variable @code{nobreak-char-display} to @code{nil}. If you give
|
||||
this variable a non-@code{nil} and non-@code{t} value, Emacs instead
|
||||
displays such characters as a highlighted backslash followed by a
|
||||
|
|
3
etc/NEWS
3
etc/NEWS
|
@ -56,6 +56,9 @@ affected by this, as SGI stopped supporting IRIX in December 2013.
|
|||
|
||||
* Changes in Emacs 25.2
|
||||
|
||||
** Non-breaking hypens are now displayed with the `nobreak-hyphen'
|
||||
face instead of the `escape-glyph' face.
|
||||
|
||||
---
|
||||
** `C-x h' (`mark-whole-buffer') will now avoid marking the prompt
|
||||
part of minibuffers.
|
||||
|
|
|
@ -2428,13 +2428,21 @@ If you set `term-file-prefix' to nil, this function does nothing."
|
|||
:version "22.1")
|
||||
|
||||
(defface nobreak-space
|
||||
'((((class color) (min-colors 88)) :inherit escape-glyph :underline t)
|
||||
(((class color) (min-colors 8)) :background "magenta")
|
||||
(t :inverse-video t))
|
||||
'((((background dark)) :foreground "cyan")
|
||||
(((type pc)) :foreground "magenta")
|
||||
(t :foreground "brown"))
|
||||
"Face for displaying nobreak space."
|
||||
:group 'basic-faces
|
||||
:version "22.1")
|
||||
|
||||
(defface nobreak-hyphen
|
||||
'((((background dark)) :foreground "cyan")
|
||||
(((type pc)) :foreground "magenta")
|
||||
(t :foreground "brown"))
|
||||
"Face for displaying nobreak hyphens."
|
||||
:group 'basic-faces
|
||||
:version "25.2")
|
||||
|
||||
(defgroup mode-line-faces nil
|
||||
"Faces used in the mode line."
|
||||
:group 'mode-line
|
||||
|
|
28
src/xdisp.c
28
src/xdisp.c
|
@ -7080,6 +7080,19 @@ get_next_display_element (struct it *it)
|
|||
goto display_control;
|
||||
}
|
||||
|
||||
/* Handle non-ascii hyphens in the mode where it only
|
||||
gets highlighting. */
|
||||
|
||||
if (nonascii_hyphen_p && EQ (Vnobreak_char_display, Qt))
|
||||
{
|
||||
/* Merge `nobreak-space' into the current face. */
|
||||
face_id = merge_faces (it->f, Qnobreak_hyphen, 0,
|
||||
it->face_id);
|
||||
XSETINT (it->ctl_chars[0], '-');
|
||||
ctl_len = 1;
|
||||
goto display_control;
|
||||
}
|
||||
|
||||
/* Handle sequences that start with the "escape glyph". */
|
||||
|
||||
/* the default escape glyph is \. */
|
||||
|
@ -7096,15 +7109,6 @@ get_next_display_element (struct it *it)
|
|||
? merge_faces (it->f, Qt, lface_id, it->face_id)
|
||||
: merge_escape_glyph_face (it));
|
||||
|
||||
/* Draw non-ASCII hyphen with just highlighting: */
|
||||
|
||||
if (nonascii_hyphen_p && EQ (Vnobreak_char_display, Qt))
|
||||
{
|
||||
XSETINT (it->ctl_chars[0], '-');
|
||||
ctl_len = 1;
|
||||
goto display_control;
|
||||
}
|
||||
|
||||
/* Draw non-ASCII space/hyphen with escape glyph: */
|
||||
|
||||
if (nonascii_space_p || nonascii_hyphen_p)
|
||||
|
@ -31198,8 +31202,10 @@ They are still logged to the *Messages* buffer. */);
|
|||
/* Name and number of the face used to highlight escape glyphs. */
|
||||
DEFSYM (Qescape_glyph, "escape-glyph");
|
||||
|
||||
/* Name and number of the face used to highlight non-breaking spaces. */
|
||||
/* Name and number of the face used to highlight non-breaking
|
||||
spaces/hyphens. */
|
||||
DEFSYM (Qnobreak_space, "nobreak-space");
|
||||
DEFSYM (Qnobreak_hyphen, "nobreak-hyphen");
|
||||
|
||||
/* The symbol 'image' which is the car of the lists used to represent
|
||||
images in Lisp. Also a tool bar style. */
|
||||
|
@ -31311,7 +31317,7 @@ The face used for trailing whitespace is `trailing-whitespace'. */);
|
|||
doc: /* Control highlighting of non-ASCII space and hyphen chars.
|
||||
If the value is t, Emacs highlights non-ASCII chars which have the
|
||||
same appearance as an ASCII space or hyphen, using the `nobreak-space'
|
||||
or `escape-glyph' face respectively.
|
||||
or `nobreak-hyphen' face respectively.
|
||||
|
||||
U+00A0 (no-break space), U+00AD (soft hyphen), U+2010 (hyphen), and
|
||||
U+2011 (non-breaking hyphen) are affected.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue