; Improve documentation of deletion of composed characters

* doc/emacs/basic.texi (Erasing): Document
'composition-break-at-point' (bug#81790).
This commit is contained in:
Eli Zaretskii 2026-09-05 13:21:55 +03:00
parent 2890334e70
commit cf1d8f9bc9

View file

@ -424,13 +424,37 @@ Kill back to the beginning of the previous word
(@code{backward-kill-word}). (@code{backward-kill-word}).
@end table @end table
The @kbd{@key{DEL}} (@code{delete-backward-char}) command removes @cindex grapheme cluster
the character before point, moving the cursor and the characters after @cindex delete part of composed sequence of characters
it backwards. If point was at the beginning of a line, this deletes The @kbd{@key{DEL}} (@code{delete-backward-char}) command removes the
the preceding newline, joining this line to the previous one. character before point, moving the cursor and the characters after it
backwards. If point was at the beginning of a line, this deletes the
preceding newline, joining this line to the previous one. If the
character before point is composed with one or more of the preceding
characters, and is displayed together with them as a single display
unit, a so-called @dfn{grapheme cluster} representing the entire
sequence, @kbd{@key{DEL}} deletes only a single character from the
composed sequence, which in some cases can significantly change the
appearance of the text on display. (The command
@code{backward-delete-char-untabify}, usually bound to @key{DEL} in
programming modes, does the same, @pxref{Program Modes}.) This is in
contrast with commands like @code{delete-char-forward}, which delete the
entire composed sequence of characters after point, see below.
If, however, the region is active, @kbd{@key{DEL}} instead deletes @vindex composition-break-at-point
the text in the region. @xref{Mark}, for a description of the region. For long enough sequences of composed characters, using
@kbd{@key{DEL}} to delete them one by one might be inconvenient. In
those cases, you can customize the option
@code{composition-break-at-point} to a non-@code{nil} value, to have
Emacs show characters around point separately, instead of showing the
result of their composition. This allows editing the composed sequence
of characters more conveniently, because you can move point inside the
composed sequence and delete characters there without having to delete
(and later re-insert) the following ones.
If the region is active, @kbd{@key{DEL}} deletes the text in the
region instead of deleting a single character. @xref{Mark}, for a
description of the region.
On most keyboards, @key{DEL} is labeled @key{BACKSPACE}, but we On most keyboards, @key{DEL} is labeled @key{BACKSPACE}, but we
refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL} refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL}
@ -438,18 +462,20 @@ with the @key{Delete} key; we will discuss @key{Delete} momentarily.)
On some text terminals, Emacs may not recognize the @key{DEL} key On some text terminals, Emacs may not recognize the @key{DEL} key
properly. @xref{DEL Does Not Delete}, if you encounter this problem. properly. @xref{DEL Does Not Delete}, if you encounter this problem.
@cindex grapheme cluster, deletion @cindex composed sequence of characters, deletion
@cindex delete entire grapheme cluster @cindex delete entire grapheme cluster
The @key{Delete} (@code{delete-forward-char}) command deletes in the The @key{Delete} (@code{delete-forward-char}) command deletes in the
opposite direction: it deletes the character after point, i.e., the opposite direction: it deletes the character after point, i.e., the
character under the cursor. If point was at the end of a line, this character under the cursor. If point was at the end of a line, this
joins the following line onto this one. Like @kbd{@key{DEL}}, it joins the following line onto this one. Like @kbd{@key{DEL}}, it
deletes the text in the region if the region is active (@pxref{Mark}). deletes the text in the region if the region is active (@pxref{Mark}).
If the character after point is composed with following characters and If the character after point is composed with following characters,
displayed as a single display unit, a so-called @dfn{grapheme cluster} @key{Delete} deletes the entire composed sequence in one go. This is in
representing the entire sequence, @key{Delete} deletes the entire contrast to @key{DEL} which always deletes a single character, even if
sequence in one go. This is in contrast to @key{DEL} which always the character is composed. If @code{composition-break-at-point} is
deletes a single character, even if the character is composed. non-@code{nil}, @key{Delete} deletes all of the composed characters from
point to the end of the composed sequence, which could be only a part of
the sequence if you moved point into the sequence.
@kbd{C-d} (@code{delete-char}) deletes the character after point, @kbd{C-d} (@code{delete-char}) deletes the character after point,
similar to @key{Delete}, but regardless of whether the region is similar to @key{Delete}, but regardless of whether the region is