mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-04 19:29:37 +00:00
Backward compatibility option for 'nobreak-char-display'
* src/xdisp.c (syms_of_xdisp) <nobreak-char-ascii-display>: New variable. (get_next_display_element): If 'nobreak-char-ascii-display' is non-nil, display non-ASCII space and hyphen characters as their ASCII equivalents. (Bug#50983) * etc/NEWS: * etc/PROBLEMS: Mention 'nobreak-char-ascii-display'.
This commit is contained in:
parent
ea1b728a06
commit
b5afbedc90
3 changed files with 46 additions and 3 deletions
19
etc/NEWS
19
etc/NEWS
|
@ -828,7 +828,24 @@ buffers. This can be controlled by customizing the user option
|
||||||
*** 'nobreak-char-display' now also affects all non-ASCII space characters.
|
*** 'nobreak-char-display' now also affects all non-ASCII space characters.
|
||||||
Previously, this was limited only to 'NO-BREAK SPACE' and hyphen
|
Previously, this was limited only to 'NO-BREAK SPACE' and hyphen
|
||||||
characters. Now it also covers the rest of the non-ASCII Unicode
|
characters. Now it also covers the rest of the non-ASCII Unicode
|
||||||
space characters.
|
space characters. Also, unlike in previous versions of Emacs, the
|
||||||
|
non-ASCII characters are displayed as themselves when
|
||||||
|
'nobreak-char-display' is t, i.e. they are not replaced on display
|
||||||
|
with the ASCII space and hyphen characters.
|
||||||
|
|
||||||
|
---
|
||||||
|
*** New backward compatibility variable 'nobreak-char-ascii-display'.
|
||||||
|
This variable is nil by default, and non-ASCII space and hyphen
|
||||||
|
characters are displayed as themselves, even if 'nobreak-char-display'
|
||||||
|
is non-nil. If 'nobreak-char-ascii-display' is set to a non-nil
|
||||||
|
value, the non-ASCII space and hyphen characters are instead displayed
|
||||||
|
as their ASCII counterparts: spaces and ASCII hyphen (a.k.a. "dash")
|
||||||
|
characters. This provides backward compatibility feature for the
|
||||||
|
change described above, where the non-ASCII characters are no longer
|
||||||
|
replaced with their ASCII counterparts when 'nobreak-char-display' is
|
||||||
|
t. You may need this on text-mode terminals that produce messed up
|
||||||
|
display when non-ASCII spaces and hyphens are written to the display.
|
||||||
|
(This variable is only effective when 'nobreak-char-display' is t.)
|
||||||
|
|
||||||
+++
|
+++
|
||||||
*** Improved support for terminal emulators that encode the Meta flag.
|
*** Improved support for terminal emulators that encode the Meta flag.
|
||||||
|
|
|
@ -1995,6 +1995,10 @@ a regular ASCII dash character '-':
|
||||||
(aset standard-display-table
|
(aset standard-display-table
|
||||||
#xAD (vector (make-glyph-code ?- 'escape-glyph)))
|
#xAD (vector (make-glyph-code ?- 'escape-glyph)))
|
||||||
|
|
||||||
|
Another workaround is to set 'nobreak-char-ascii-display' to a non-nil
|
||||||
|
value, which will cause any non-ASCII space and hyphen characters to
|
||||||
|
be displayed as their ASCII counterparts, with a special face.
|
||||||
|
|
||||||
Kitty also differs from many other character terminals in how it
|
Kitty also differs from many other character terminals in how it
|
||||||
handles character compositions. As one example, Emoji sequences that
|
handles character compositions. As one example, Emoji sequences that
|
||||||
begin with a non-Emoji character and end in U+FE0F VARIATION SELECTOR
|
begin with a non-Emoji character and end in U+FE0F VARIATION SELECTOR
|
||||||
|
|
26
src/xdisp.c
26
src/xdisp.c
|
@ -7668,7 +7668,8 @@ get_next_display_element (struct it *it)
|
||||||
/* Merge `nobreak-space' into the current face. */
|
/* Merge `nobreak-space' into the current face. */
|
||||||
face_id = merge_faces (it->w, Qnobreak_space, 0,
|
face_id = merge_faces (it->w, Qnobreak_space, 0,
|
||||||
it->face_id);
|
it->face_id);
|
||||||
XSETINT (it->ctl_chars[0], it->c);
|
XSETINT (it->ctl_chars[0],
|
||||||
|
nobreak_char_ascii_display ? ' ' : it->c);
|
||||||
ctl_len = 1;
|
ctl_len = 1;
|
||||||
goto display_control;
|
goto display_control;
|
||||||
}
|
}
|
||||||
|
@ -7681,7 +7682,8 @@ get_next_display_element (struct it *it)
|
||||||
/* Merge `nobreak-space' into the current face. */
|
/* Merge `nobreak-space' into the current face. */
|
||||||
face_id = merge_faces (it->w, Qnobreak_hyphen, 0,
|
face_id = merge_faces (it->w, Qnobreak_hyphen, 0,
|
||||||
it->face_id);
|
it->face_id);
|
||||||
XSETINT (it->ctl_chars[0], it->c);
|
XSETINT (it->ctl_chars[0],
|
||||||
|
nobreak_char_ascii_display ? '-' : it->c);
|
||||||
ctl_len = 1;
|
ctl_len = 1;
|
||||||
goto display_control;
|
goto display_control;
|
||||||
}
|
}
|
||||||
|
@ -35034,6 +35036,26 @@ glyph followed by an ordinary space or hyphen.
|
||||||
A value of nil means no special handling of these characters. */);
|
A value of nil means no special handling of these characters. */);
|
||||||
Vnobreak_char_display = Qt;
|
Vnobreak_char_display = Qt;
|
||||||
|
|
||||||
|
DEFVAR_BOOL ("nobreak-char-ascii-display", nobreak_char_ascii_display,
|
||||||
|
doc: /* Control display of non-ASCII space and hyphen chars.
|
||||||
|
If the value of this variable is nil, the default, Emacs displays
|
||||||
|
non-ASCII chars which have the same appearance as an ASCII space
|
||||||
|
or hyphen as themselves, with the `nobreak-space' or `nobreak-hyphen'
|
||||||
|
face, respectively.
|
||||||
|
|
||||||
|
If the value is t, these characters are displayed as their ASCII
|
||||||
|
counterparts: whitespace characters as ASCII space, hyphen characters
|
||||||
|
as ASCII hyphen (a.k.a. \"dash\"), using the `nobreak-space' or
|
||||||
|
the `nobreak-hyphen' face.
|
||||||
|
|
||||||
|
This variable has effect only if `nobreak-char-display' is t;
|
||||||
|
otherwise it is ignored.
|
||||||
|
|
||||||
|
All of the non-ASCII characters in the Unicode horizontal whitespace
|
||||||
|
character class, as well as U+00AD (soft hyphen), U+2010 (hyphen), and
|
||||||
|
U+2011 (non-breaking hyphen) are affected. */);
|
||||||
|
nobreak_char_ascii_display = false;
|
||||||
|
|
||||||
DEFVAR_LISP ("void-text-area-pointer", Vvoid_text_area_pointer,
|
DEFVAR_LISP ("void-text-area-pointer", Vvoid_text_area_pointer,
|
||||||
doc: /* The pointer shape to show in void text areas.
|
doc: /* The pointer shape to show in void text areas.
|
||||||
A value of nil means to show the text pointer. Other options are
|
A value of nil means to show the text pointer. Other options are
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue