aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2021-10-09 07:50:36 -0700
committerGlenn Morris2021-10-09 07:50:36 -0700
commitcc202c713be60355dbcf4e5ea87603c5e16a92db (patch)
tree718f701ca6622f242172eb138a983b343efb0f5d
parentfecc4c0f79bbfcae3c6dd0ad8331a8ef6faa4034 (diff)
parent394209c1a012ec0d24cbef031101c82a79ceea83 (diff)
downloademacs-cc202c713be60355dbcf4e5ea87603c5e16a92db.tar.gz
emacs-cc202c713be60355dbcf4e5ea87603c5e16a92db.zip
Merge from origin/emacs-28
394209c1a0 (origin/emacs-28) ; Fix indentation in etc/NEWS 81f20e8b89 Fix thinko in ls-lisp--insert-directory ec9f25bd35 Mention that RET means "yes" in y-or-n-p 00eb21c897 ; * src/dispextern.h (struct glyph_string): Comment on NCH... 20eb3644ba Rewrite Antinews for Emacs 28 3a9b881603 ; * etc/NEWS: Rearrange the "incompatible changes" sections. ebb7e26013 ; * etc/NEWS: Fix a typo. 315fe20086 ; * src/Makefile.in (../native-lisp): Add comment. 47cbd103f5 * lisp/bindings.el (mode-line-position): Improve tooltip. 35a752863a * lisp/progmodes/xref.el: Bump the version. bbcd8cc1a9 Slight simplificaiton e139dd1b1e Fix doc strings of 2 categories 59782839cb (xref--collect-matches-1): Remove some intermediate alloca... 1c7d056f4d ; Fix two typos where em dash was written as en dash # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/anti.texi198
-rw-r--r--doc/emacs/emacs.texi2
-rw-r--r--doc/emacs/maintaining.texi2
-rw-r--r--doc/lispref/anti.texi241
-rw-r--r--doc/lispref/elisp.texi2
-rw-r--r--doc/misc/ert.texi2
-rw-r--r--etc/NEWS.28208
-rw-r--r--lisp/bindings.el2
-rw-r--r--lisp/international/characters.el4
-rw-r--r--lisp/ls-lisp.el1
-rw-r--r--lisp/progmodes/xref.el110
-rw-r--r--lisp/subr.el2
-rw-r--r--src/Makefile.in9
-rw-r--r--src/dispextern.h4
14 files changed, 387 insertions, 400 deletions
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index 49da473fa51..354f20e757e 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -4,156 +4,138 @@
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5 5
6@node Antinews 6@node Antinews
7@appendix Emacs 26 Antinews 7@appendix Emacs 27 Antinews
8@c Update the emacs.texi Antinews menu entry with the above version number. 8@c Update the emacs.texi Antinews menu entry with the above version number.
9 9
10 For those users who live backwards in time, here is information 10 For those users who live backwards in time, here is information
11about downgrading to Emacs version 26.3. We hope you will enjoy the 11about downgrading to Emacs version 27.2. We hope you will enjoy the
12greater simplicity that results from the absence of many @w{Emacs 12greater simplicity that results from the absence of many @w{Emacs
13@value{EMACSVER}} features. 13@value{EMACSVER}} features.
14 14
15@itemize @bullet 15@itemize @bullet
16@item 16@item
17Emacs no longer uses @acronym{GMP}, the GNU Multiple Precision 17Emacs can no longer be built with support of native compilation of
18library, and doesn't support Lisp integers greater than 18Lisp programs. This means Emacs builds much faster, and the problems
19@code{most-positive-fixnum} or smaller than 19that came with native compilation: the need to have GCC and Binutils
20@code{most-negative-fixnum}. We now have only one kind of a Lisp 20installed, the complications of managing your @file{eln-cache}
21integer. This simplifies many Lisp programs that use integers, and 21directories---all of that is now future history. The simplicity and
22makes integer calculations always fast. If you want larger values, 22elegance of the Emacs byte-compiled code is now restored in all of its
23use Lisp floats, as Emacs has done since day one. 23pristine beauty.
24 24
25@item 25@item
26Emacs no longer supports HarfBuzz as the engine for shaping complex 26Emacs no longer builds by default with Cairo, even if it's present.
27text. As you move back in time, we will gradually shed off all traces 27The warnings about not using HarfBuzz are also gone, in preparation
28of support for complex text shaping, and this is one step in that 28for complete removal of HarfBuzz support in previous Emacs versions.
29direction. 29Fancy text shaping and display is becoming less important as you move
30back in time. The @code{ftx} font backend is again part of Emacs, for
31the same reasons.
30 32
31@item 33@item
32We have removed support for building with the Jansson library, and 34As Motif becomes more and more important with moving farther into the
33consequently the native support for JSON parsing is gone. The 35past, we've reinstated the code which supports Motif in Emacs.
34importance of JSON decreases as we go back in time, so for now using
35the Lisp code for handling it should be good enough; in one of the
36past Emacs versions, we intend to remove even that, as useless bloat.
37
38The library for supporting JSONRPC applications was removed for the
39same reason.
40 36
41@item 37@item
42The ``portable dumper'' feature is gone. We are once again using the 38Emacs once again supports versions 5.3 and older OpenBSD system, which
43field-proven ``unexec'' way of dumping Emacs. With that, the hope for 39will be needed as you move back in time.
44being able to re-dump your customized Emacs session is also gone: why
45would anyone want to record their random customization experiments on
46disk, and restore them the next time they start Emacs? And true
47Emacsers don't restart their Emacs sessions anyway.
48 40
49@item 41@item
50We dropped the support for @acronym{XDG}-style configuration 42We've dropped support for Secure Computing filter on GNU/Linux. The
51directories and the @env{XDG_CONFIG_HOME} environment variable. 43past world is much more secure than the present, so the complexities
52There's once again only one place where Emacs looks for its init 44related with this stuff, which can only be explained by severe
53files: the @file{~/.emacs.d} directory, with the @file{~/.emacs} file 45paranoia, are no longer justified.
54as fallback. We think this will go a long way towards preventing
55confusion among users who for some reason have @env{XDG_CONFIG_HOME}
56set, thus risking to have their init files randomly spread between two
57places. In one of the past Emacs versions, we intend to further
58simplify this, removing the @file{~/.emacs.d} place and leaving only
59@file{~/.emacs}; stay tuned.
60
61For similar reasons, we've removed the ``early init'' file. You can
62now again use all the tricks you want to initialize variables like
63@code{package-user-dir} and @code{package-load-list} just in time for
64the packages to load.
65 46
66@command{emacsclient} no longer supports @acronym{XDG}-style directory 47@item
67trees, either. 48Emacs reverted back to supporting Unicode 13.x, since the following
49versions of the standards are not yet published where you are going.
50The @samp{emoji} script and the support for displaying Emoji sequences
51were removed for the same reasons: no one will produce them in the
52past.
68 53
69@item 54@item
70TLS connections are back to their lenient security settings. We 55Mode-specific commands and the @kbd{M-S-x} command that invokes them
71decided that too tight security settings are an annoyance for users, 56were removed. As you move back in time, the command set in Emacs
72and make little sense considering the world-wide tendency to have 57becomes smaller, so any such filtering of applicable commands just
73fewer and fewer network security problems as we move back in time 58gets in the way.
74(those issues will be completely gone when networks disappear in some
75distant past).
76 59
77@item 60@item
78The @code{server-after-make-frame-hook} hook was deleted, in 61We have removed the system for displaying documentation of groups of
79preparation for removing the entire daemon business in some past Emacs 62related functions, the @kbd{shortdoc-display-group} command to go with
80version. You will be glad to learn that setting up the GUI 63it, and the corresponding ``See also'' button in the @file{*Help*}
81customizations of your sessions is now once again as easy as it ever 64buffer. That should make searching for certain functions simpler:
82was, with just the @code{after-make-frame-functions} to use. 65just use the venerable @samp{apropos} commands.
83 66
84@item 67@item
85The @code{flex} completion style was removed. We feel that it 68The @code{context-menu-mode} was removed, and with it the context
86unnecessarily complicates the Emacs user experience, and therefore 69menus popped by pressing the right mouse button. This is one small
87will continue to remove other tricky completion styles, until in some 70step towards freeing Emacs (and eventually, the whole world of
88past Emacs version we get to a single original style Emacs pioneered 71computing) from the tyranny of the GUI pointing devices in general,
89decades ago. Long live simplicity; down with complications! 72and moving back to the simplicity of text-mode user interfaces.
73Down with mice and other rodents!
90 74
91@item 75@item
92The optional display of the fill-column indicator is no longer 76The commands @kbd{C-x 4 4} and @kbd{C-x 5 5} for displaying the
93supported. With the display sizes becoming smaller and smaller as you 77results in a new window/frame re gone. We are quite certain that
94move back in time, we feel that the display itself will always show 78creating a new window/frame before running a command is much simpler,
95you where to fill or wrap your text, and do this much more easily and 79and doesn't require a complication of a new prefix.
96reliably than any such display indicator.
97 80
98@item 81@item
99We removed the features that made visiting large files easier. Thus, 82The behavior of active minibuffers when switching frames is now the
100Emacs will no longer suggest visiting a large file literally, nor 83perfect mess it should be: sometimes the minibuffer moves to the new
101offer the @code{so-long} mode to deal with overly-long lines. We 84selected frame, sometimes it doesn't, and sometimes you get an error.
102decided that this simplification is worthwhile, given that the general 85This makes Emacs usage much more fun, as you get to guess the result,
103tendency of having very large files is becoming a rarity as we move 86instead of having it boringly consistent.
104back in time.
105 87
106@item 88@item
107We have removed the feature that displayed echo-area messages without 89Compact mode-line display mode has been removed. The items displayed
108hiding content of the active minibuffer. This should prevent user 90on the mode line are now always in the same place, and if there's not
109confusion from having two unrelated pieces of text staring at them, 91enough space for them, they are not displayed at all, instead of being
110with no clear separation between them. Users with good memories (and 92confusingly displayed in a different position. You no longer need to
111Emacs users are all expected to be of that kind) will have no trouble 93think twice where to find a particular mode-line element on display.
112keeping the minibuffer text in their minds, and typing the responses
113without actually seeing the prompts.
114 94
115@item 95@item
116Horizontal scrolling using the mouse or touchpad has been removed. In 96Many commands and options related to tab bars were removed, including
117the past, wide monitors will become less popular, so horizontal 97(but not limited to) frame-specific appearance of tab bars, the
118scrolling will no longer be needed. Removal of the mouse support for 98@code{tab-bar-format} option, the @kbd{C-x t n}, @kbd{C-x t N},
119horizontal scrolling is the first step towards its complete removal in 99@kbd{C-x t M}, and @kbd{C-x t G} commands, and many mouse gestures on
120prior Emacs versions. 100the tab bar. We are going to delete the tab bar support from Emacs in
101one of the past versions, and this is a step in that direction.
121 102
122@item 103@item
123The @code{main-thread} variable and @code{list-threads} were removed, 104The ``transient'' input methods have been removed; use @kbd{C-\} to
124and @code{thread-join} no longer returns the result of the finished 105turn input methods on and off instead. This is in preparation for
125thread. We intend to remove the support for Lisp threads in some past 106complete removal of input methods from Emacs in version 19, and
126Emacs version, so we continue removing the associated complexities and 107consistent with the fact that the number of input methods we support
127features as we go back in time. 108becomes smaller as you move back in time.
128 109
129@item 110@item
130Tab bar and window tab-lines were removed. This should make the Emacs 111We disabled @code{show-paren-mode} by default, since we think the
131display simpler and less cluttered, and help those users who disable 112venerable @code{blink-matching-paren} feature is more than enough, and
132menu bar and tool bar in their GUI sessions. The fashion to provide 113better fits the simplicity of past Emacs versions. It will definitely
133tabs in every GUI application out there is gaining less and less 114be better when colors are removed from Emacs in the distant past.
134popularity as we move back in time, and will completely disappear at 115
135some past point; removing the tabs from Emacs is the step in that 116For the same reason, sub-groups in interactive regexp searches are no
136direction. 117longer highlighted in distinct colors.
137 118
138@item 119@item
139Displaying line numbers for a buffer is only possibly using add-on 120On our permanent quest for simplifying Emacs, we've removed the Ispell
140features, such as @code{linum-mode}, which can only display the 121command @code{ispell-comment-or-string-at-point}; the old-time friend
141numbers in the display margins. Line-number display using these 122@code{ispell-comments-and-strings} should suffice.
142features is also slow, as we firmly believe such a feature is
143un-Emacsy and should not have been included in Emacs to begin with.
144Consequently, @code{display-line-numbers-mode} was removed.
145 123
146@item 124@item
147On our permanent quest for simplifying Emacs, we've removed the 125Many Gnus commands and options were deemed to unnecessarily complicate
148support for changing the font size by turning the mouse wheel. 126the use of Gnus (which is too complex to begin with), and thus were
127removed. This includes @code{gnus-topic-display-predicate},
128@code{gnus-process-mark-toggle}, @code{gnus-registry-register-all},
129@code{gnus-paging-select-next}, and many others. The @code{nnselect}
130backend was deleted for the same reason.
149 131
150@item 132@item
151Several commands, deemed to be unnecessary complications, have been 133The @file{project.el} package have been redesigned to remove many
152removed. Examples include @code{make-empty-file}, 134unnecessary features, so that just the bare essentials remain. We
153@code{font-lock-refontify}, @code{xref-find-definitions-at-mouse}, 135plan on removing this package from Emacs in a previous version, but
154@code{make-frame-on-monitor}, and @code{diff-buffers}. 136decided to begin with removing some extra features first.
155 137
156@item 138@item
157To keep up with decreasing computer memory capacity and disk space, many 139To keep up with decreasing computer memory capacity and disk space, many
158other functions and files have been eliminated in Emacs 26.3. 140other functions and files have been eliminated in Emacs 27.2.
159@end itemize 141@end itemize
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 2fafb43e9fb..83847fb8f12 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -219,7 +219,7 @@ Appendices
219* GNU Free Documentation License:: The license for this documentation. 219* GNU Free Documentation License:: The license for this documentation.
220* Emacs Invocation:: Hairy startup options. 220* Emacs Invocation:: Hairy startup options.
221* X Resources:: X resources for customizing Emacs. 221* X Resources:: X resources for customizing Emacs.
222* Antinews:: Information about Emacs version 26. 222* Antinews:: Information about Emacs version 27.
223* Mac OS / GNUstep:: Using Emacs under macOS and GNUstep. 223* Mac OS / GNUstep:: Using Emacs under macOS and GNUstep.
224* Microsoft Windows:: Using Emacs on Microsoft Windows and MS-DOS. 224* Microsoft Windows:: Using Emacs on Microsoft Windows and MS-DOS.
225* Manifesto:: What's GNU? Gnu's Not Unix! 225* Manifesto:: What's GNU? Gnu's Not Unix!
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 7e8b0e5914d..d1380bc297f 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -945,7 +945,7 @@ the author's description of the changes in the revision on the current
945line. 945line.
946 946
947@item w 947@item w
948Annotate the working revision--the one you are editing. If you used 948Annotate the working revision---the one you are editing. If you used
949@kbd{p} and @kbd{n} to browse to other revisions, use this key to 949@kbd{p} and @kbd{n} to browse to other revisions, use this key to
950return to your working revision. 950return to your working revision.
951 951
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index ced8082f6a4..118df05c791 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -6,186 +6,179 @@
6@c This node must have no pointers. 6@c This node must have no pointers.
7 7
8@node Antinews 8@node Antinews
9@appendix Emacs 26 Antinews 9@appendix Emacs 27 Antinews
10@c Update the elisp.texi Antinews menu entry with the above version number. 10@c Update the elisp.texi Antinews menu entry with the above version number.
11 11
12For those users who live backwards in time, here is information about 12For those users who live backwards in time, here is information about
13downgrading to Emacs version 26.3. We hope you will enjoy the greater 13downgrading to Emacs version 27.2. We hope you will enjoy the greater
14simplicity that results from the absence of many @w{Emacs 14simplicity that results from the absence of many @w{Emacs
15@value{EMACSVER}} features. 15@value{EMACSVER}} features.
16 16
17@itemize @bullet 17@itemize @bullet
18@item 18@item
19Lisp objects are again implemented on the C level as integer types, 19The annoying @code{lexical-binding} local variable now heeds the
20not as pointers. This might be a small step for Emacs Lisp users, but 20value of @code{enable-local-variables}: if it's @code{nil}, the
21it's a giant leap for the Emacs developers who work on the C level, 21@code{lexical-binding} cookie is ignored. We are working hard on
22since it is now again easy to print Lisp object in the debugger in the 22removing the lexical-binding support in some past Emacs version, and
23decimal format, which is so much easier for debugging. It also makes 23this small step advances us back to that change.
24calling Emacs functions from the debugger easier, and allows us to
25freely mix integers and Lisp objects in the C code.
26 24
27@item 25@item
28The test suite was removed from the distribution tarball. We believe 26The @code{load-dangerous-libraries} variable is not obsolete, as it
29that tests need seldom if ever be run, certainly not by the end 27must be used to allow loading Lisp compiled by XEmacs, which will
30users. Removing the tests from the tarball makes it much smaller, 28become more and more important as you move back in time.
31which is important since disk space becomes more and more at premium
32as you move back in time.
33 29
34@item 30@item
35Dynamic module support is disabled by default. This both makes Emacs 31The optional @var{modes} argument of @code{interactive} is not
36smaller (a worthy goal by itself), and removes the complications and 32supported, and every command is deemed applicable to any major mode.
37additional complexity related with installing module support files and 33We believe this makes the life of Lisp programmers much simpler, as
38letting random shared objects an opportunity to be loaded into Emacs 34there's now no need to tag commands with the modes where they make
39and mess with it. 35sense.
40 36
41@item 37@item
42You now must activate any installed packages only after loading your 38Shorthands for Lisp symbols have been removed, which makes loading
43init files. That requires an explicit call to 39Lisp files and handling Lisp symbols much simpler and more efficient.
44@code{package-initialize} in your init file, which is a Good Thing, as 40This is important for decent performance on slower CPUs as you move
45it makes you think seriously where and indeed whether you'd like your 41back in time.
46packages to become available to your sessions. Simplicity should
47tramp convenience!
48 42
49@item 43@item
50To reduce the amount of code in Emacs related to unimportant features, 44To reduce the amount of code in Emacs related to unimportant features,
51we've removed native rotation and resizing of images. You will have 45we've removed the variables @code{global-minor-modes} and
52to build Emacs with ImageMagick if you want to resize or rotate images 46@code{local-minor-modes}. If your Lisp program needs to determine
53inside Emacs. We don't expect anyone to miss that. 47whether some minor mode is in effect, it will have to test explicitly
48for every mode. We don't expect anyone to miss those fancy variables.
54 49
55@item 50@item
56We've re-enabled color fonts usage by the XFT font back-end. We 51The default preference for servicing sub-processes that produce output
57consider the availability of these fonts more important than a random 52at a high rate, and the associated variable
58crash here and there, especially since the use of these fonts for 53@code{process-prioritize-lower-fds}, have been removed. Moving back
59displaying Emoji will become less and less important as we travel back 54in time means fewer and fewer programs can produce such high-rate
60in time, and will completely disappear in some past Emacs version. 55output, so this features becomes just useless crud.
61 56
62@item 57@item
63The function @code{network-interface-list} can now return only IPv4 58The encodings that are variants of EBCDIC were removed. This includes
64addresses. We consider the complexity introduced by IPv6 to be too 59@code{ibm256}, @code{ibm273}, and others---variants of the EBCDIC
65much to be justified, and on the other hand its removal is the step in 60encoding tailored for some Japanese and European locales. You won't
66the right direction, given that IPv6 is expected to be completely 61need those where you are going.
67removed as we move back in time.
68 62
69@item 63@item
70The limit on repetitions in regular expressions was reduced to 64The ``Bindat type expression'' description language has been removed,
71@ifnottex 65as the existing data layout specifications are perfectly suited for
722**15 @minus{} 1. 66this job.
73@end ifnottex
74@tex
75@math{2^{15}-1}.
76@end tex
77We envision that regular expressions will become more and more simple
78as we move towards the distant past.
79 67
80@item 68@item
81To simplify code and reduce complexity, we removed the capability of 69To simplify code and reduce complexity, we removed the capability of
82searching programs on remote hosts in @code{executable-find}. If you 70specifying the success handler in @code{condition-case} via the
83really need this feature (why would you?), you can always write your 71@code{:success} keyword. If you really need this feature (why would
84own shell script and run it on the remote. 72you?), you can always write some simple Lisp that has the same effect.
85 73
86@item 74@item
87The @code{:extend} face attribute is no longer available; all faces 75Emacs modules can no longer provide interactive functions, or install
88have their background color extended by default past end of line. 76finalizers, nor open channels to existing pipe sub-processes. All
89This should significantly simplify face management and remove 77this is extra ballast, especially since we plan on removing modules in
90unnecessary code bloat, as well as make faces significantly simpler to 78some past Emacs version. The @code{make_unibyte_string} module API
91understand and use. 79was removed for the same reason.
92 80
93@item 81@item
94The predicates @code{display-blink-cursor-p} and 82To keep Emacs clean and elegant, we've removed the
95@code{display-symbol-keys-p} were deleted. They are rarely if ever 83@code{print-integers-as-characters} option. Recognizing characters by
96needed, and can easily be substituted by appropriate calls to old and 84their decimal codes is a basic requirement for Emacs Lisp programmers,
97proven APIs like @code{display-graphic-p}. As an additional bonus, 85and with the expected decrease in use of Unicode characters, this will
98writing Lisp programs that depend on this functionality will make sure 86be soon limited to ASCII only: surely something you all can master!
99the programmer understands better what exactly is the required
100features of the display terminal.
101 87
102@item 88@item
103Relative directories in the value of the @env{HOME} environment 89The optional @var{count} argument of the @code{directory-files}
104variable are once again interpreted relative to the 90function has been removed. Extracting the first @var{n} members from
105@code{default-directory} of the current buffer. This is much simpler, 91the full list is trivial, so this is a significant simplification for
106and also allows @env{HOME} to resolve to a different place in 92an insignificant cost.
107different buffers, which allows some interesting applications.
108 93
109For the same reasons, @code{file-name-absolute-p} now again considers 94@item
110@file{~foo} an absolute file name, even if there's no known user 95Functions that create sub-processes and network connections no longer
111@samp{foo}. This means a Lisp program which uses such file names will 96accept the @code{:coding} argument; use
112always work the same on any system, regardless of its known users. 97@code{set-process-coding-system} or bind
98@code{coding-system-for-read/write} instead: again, a significant
99reduction in Emacs complexity for little or no cost.
100
101@item
102We deleted from the macros @code{define-derived-mode} and
103@code{define-minor-mode} the code which allowed using the
104@code{:interactive} argument. The possibility of marking a mode
105non-interactive makes very little sense,
106
107@item
108The possibility of having links to man pages in doc strings has been
109removed. Use plain text instead, if you need such references.
110
111@item
112Temporary buffers are no longer exempt from running any buffer-related
113hooks. Programs that don't want such hooks in some buffer can always
114disable it locally, whereas making that simpler complicates Emacs for
115no good reason.
113 116
114@item 117@item
115File-related primitives like @code{file-attributes}, 118Several features that complicated the byte compiler have been removed:
116@code{file-modes}, @code{file-newer-than-file-p}, and some others once
117again return @code{nil} when the underlying low-level APIs fail,
118instead of signaling an error. We decided that functions which signal
119errors require more complex code from Lisp programs which use them,
120and found this complexity unjustified when returning @code{nil} will
121do.
122 119
120@itemize @minus
123@item 121@item
124Similarly, old-style backquotes no longer signal errors; they generate 122The checks for missing declarations of dynamic variables. This will
125warnings instead. You can remove error handling from programs that 123continue making less and less sense as we move away of lexical-binding
126use backquotes. 124support.
127 125
128@item 126@item
129Formatting floating-point numbers has been sped up by letting the 127The ability of compiling symlinked @file{*.el} files, which is really
130underlying implementation produce unpredictable values, instead of 128gross: copy the files instead.
131signaling errors when the number is too large to format correctly. We
132believe the Emacs Lisp programmers should always know what they are
133doing when they deal with floating-point values.
134 129
135@item 130@item
136The function @code{read-char-from-minibuffer} was deleted. We decided 131The warnings about too-wide doc strings---that is just a nuisance, as
137that @code{read-char} should be enough for any Lisp program that needs 132the programmers should be trusted to know what they are doing.
138to ask the user for a single-character input, in recognition of the 133@end itemize
139fact that nothing makes Emacs Lisp hackers rejoice more than the need 134
140to sit down and write yet another interactive question-and-answer 135
141function, and make it optimal for each specific case. Consequently, 136@item
142no history is provided for such responses (why would someone want 137We deleted several features of the @code{pcase} macro, in accordance
143history of single-key strokes, anyway?). 138with our general plane to remove @code{pcase} from Emacs:
144 139
140@itemize @minus
145@item 141@item
146The function @code{ngettext} was deleted. Non-English languages will 142The @code{cl-type} pattern.
147become less and less widespread, let alone useful, as you move back in
148time, so we took this small step in that direction, and simplified
149Emacs as a nice bonus.
150 143
151@item 144@item
152Focus-change notifications on text-mode frames are no longer 145the @code{pcase-setq} macro.
153recognized or supported. You can now safely disregard the possibility 146
154of receiving such notifications on TTY frames. This is one small step 147@item
155on the long road of removing all non-character input events Emacs 148The @code{pcase-compile-patterns} function.
156supports on TTY frames. 149@end itemize
157 150
158@item 151@item
159Face specifications in @code{face-remapping-alist} now have to be 152Some of the keywords used in Edebug specification lists were deemed to
160buffer-specific, without any differences between windows showing the 153be of little use, and were therefore removed: @code{&interpose},
161same buffers. This allowed us to remove a lot of unneeded code bloat 154@code{&error}, and @code{&name}. The long-term plane is for Emacs to
162from Emacs, and make the face handling much simpler. 155drop Edebug entirely, leaving only the trusted Lisp debugger, and we
156continue working according to that plan.
163 157
164@item 158@item
165The @samp{%o} and @samp{%x} formats now always produce unsigned 159The function @code{object-intervals} was dropped, as a Lisp program
166values, as you'd expect. This allows you to reveal the underlying 160can easily collect the intervals of a buffer or a string by iterating
167machine representation, which is different on each architecture, 161through them one by one.
168something we consider a valuable feature.
169 162
170@item 163@item
171We no longer highlight in @code{font-lock-warning-face} symbols with 164We decided that the @code{require-theme} function is an unnecessary
172confusable quote characters, such as U+2018. Detecting them 165complication, so we deleted it. Lisp programs can easily search along
173needed non-trivial amount of code, and we firmly believe that Lisp 166@code{custom-theme-load-path} instead.
174programmers always know what they are doing, and don't need to be
175annoyed with typefaces that stand out and distract.
176 167
177@item 168@item
178The function @code{file-system-info} was dropped on Posix platforms, 169The convenience functions @code{length<}, @code{length>}, and
179since you can always invoke @command{df} instead and parse its 170@code{length=} were removed, as using @code{length} followed by a
180output. 171comparison should be good enough for everyone, especially considering
172that the typical length of a list keeps going down as you move back
173through time.
181 174
182@item 175@item
183The functions that implement the @samp{base64url} encoding were 176The variable @code{current-minibuffer-command} is no longer available,
184removed, as they can always be emulated by suitable tweaking of the 177as we found little justification for keeping it.
185normal base-64 encoding. No need to bloat Emacs and force Lisp
186programmers learn more interfaces on this account.
187 178
188@item 179@item
189As part of the ongoing quest for simplicity, many other functions and 180As part of the ongoing quest for simplicity, many other functions and
190variables have been eliminated. 181variables have been eliminated. Other functions and variables, that
182were declared obsolete since Emacs 23, have been added back, in
183preparation for releasing Emacs 23 in some distant past.
191@end itemize 184@end itemize
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index e9e306fa0de..da3a3a84e9b 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -234,7 +234,7 @@ To view this manual in other formats, click
234 234
235Appendices 235Appendices
236 236
237* Antinews:: Info for users downgrading to Emacs 26. 237* Antinews:: Info for users downgrading to Emacs 27.
238* GNU Free Documentation License:: The license for this documentation. 238* GNU Free Documentation License:: The license for this documentation.
239* GPL:: Conditions for copying and changing GNU Emacs. 239* GPL:: Conditions for copying and changing GNU Emacs.
240* Tips:: Advice and coding conventions for Emacs Lisp. 240* Tips:: Advice and coding conventions for Emacs Lisp.
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index 770a5b77493..440c61add8e 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -415,7 +415,7 @@ emacs -batch -l ert -l my-tests.el \
415@end example 415@end example
416 416
417By default, ERT test failure summaries are quite brief in batch 417By default, ERT test failure summaries are quite brief in batch
418mode--only the names of the failed tests are listed. If the 418mode---only the names of the failed tests are listed. If the
419EMACS_TEST_VERBOSE environment variable is set, the failure summaries 419EMACS_TEST_VERBOSE environment variable is set, the failure summaries
420will also include the data from the failing test. 420will also include the data from the failing test.
421 421
diff --git a/etc/NEWS.28 b/etc/NEWS.28
index 8f49d67ba9b..09537d7d313 100644
--- a/etc/NEWS.28
+++ b/etc/NEWS.28
@@ -912,6 +912,109 @@ now been updated to point to Libera.Chat.
912https://lists.gnu.org/archive/html/info-gnu-emacs/2021-06/msg00000.html 912https://lists.gnu.org/archive/html/info-gnu-emacs/2021-06/msg00000.html
913 913
914 914
915* Incompatible Editing Changes in Emacs 28.1
916
917---
918** 'toggle-truncate-lines' now disables 'visual-line-mode'.
919This is for symmetry with 'visual-line-mode', which disables
920'truncate-lines'.
921
922---
923** 'electric-indent-mode' now also indents inside strings and comments.
924(This only happens when indentation function also supports this.)
925
926To recover the previous behavior you can use:
927
928 (add-hook 'electric-indent-functions
929 (lambda (_) (if (nth 8 (syntax-ppss)) 'no-indent)))
930
931---
932** The 'M-o' ('facemenu-keymap') global binding has been removed.
933To restore the old binding, say something like:
934
935 (require 'facemenu)
936 (define-key global-map "\M-o" 'facemenu-keymap)
937 (define-key facemenu-keymap "\es" 'center-line)
938 (define-key facemenu-keymap "\eS" 'center-paragraph)
939
940The last two lines are not strictly necessary if you don't care about
941having those two commands on the 'M-o' keymap; see the next section.
942
943---
944** The 'M-o M-s' and 'M-o M-S' global bindings have been removed.
945Use 'M-x center-line' and 'M-x center-paragraph' instead. See the
946previous section for how to get back the old bindings. Alternatively,
947if you only want these two commands to have global bindings they had
948before, you can add the following to your init file:
949
950 (define-key global-map "\M-o\M-s" 'center-line)
951 (define-key global-map "\M-o\M-S" 'center-paragraph)
952
953---
954** The 'M-o M-o' global binding has been removed.
955Use 'M-x font-lock-fontify-block' instead, or the new 'C-x x f'
956command, which updates the syntax highlighting in the current buffer.
957
958---
959** The escape sequence '\e[29~' in Xterm is now mapped to 'menu'.
960Xterm sends this sequence for both 'F16' and 'Menu' keys
961It used to be mapped to 'print' but we couldn't find a terminal
962that uses this sequence for any kind of 'Print' key.
963This makes the Menu key (see https://en.wikipedia.org/wiki/Menu_key)
964work for 'context-menu-mode' in Xterm.
965
966---
967** New user option 'xterm-store-paste-on-kill-ring'.
968If non-nil (the default), Emacs pushes pasted text onto the kill ring
969(if using an xterm-like terminal that supports bracketed paste).
970Setting this to nil inhibits that.
971
972---
973** 'vc-print-branch-log' shows the change log from its root directory.
974It previously used to use the default directory.
975
976---
977** 'project-shell' and 'shell' now use 'pop-to-buffer-same-window'.
978This is to keep the same behavior as Eshell.
979
980---
981** In 'nroff-mode', 'center-line' is no longer bound to a key.
982The original key binding was 'M-s', which interfered with I-search,
983since the latter uses 'M-s' as a prefix key of the search prefix map.
984
985---
986** In 'f90-mode', the backslash character ('\') no longer escapes.
987For about a decade, the backslash character has no longer had a
988special escape syntax in Fortran F90. To get the old behavior back,
989say something like:
990
991 (modify-syntax-entry ?\\ "\\" f90-mode-syntax-table)
992
993+++
994** Setting 'fill-column' to nil is obsolete.
995This undocumented use of 'fill-column' is now obsolete. To disable
996auto filling, turn off 'auto-fill-mode' instead.
997
998For instance, you could add something like the following to your init
999file:
1000
1001 (add-hook 'foo-mode-hook (lambda () (auto-fill-mode -1))
1002
1003** Xref migrated from EIEIO to cl-defstruct for its core objects.
1004This means that 'oref' and 'with-slots' no longer works on them, and
1005'make-instance' can no longer be used to create those instances (which
1006wasn't recommended anyway). Packages should keep to using the
1007functions like 'xref-make', 'xref-make-match', 'xref-make-*-location',
1008as well as accessor functions 'xref-item-summary' and
1009'xref-item-location'.
1010
1011Among the benefits are better performance (noticeable when there are a
1012lot of matches) and improved flexibility: 'xref-match-item' instances
1013do not require that 'location' inherits from 'xref-location' anymore
1014(that class was removed), so packages can create new location types to
1015use with "match items" without adding EIEIO as a dependency.
1016
1017
915* Editing Changes in Emacs 28.1 1018* Editing Changes in Emacs 28.1
916 1019
917** Input methods 1020** Input methods
@@ -1090,7 +1193,7 @@ buffer to be able to move point to the inaccessible portion.
1090'goto-line-relative' is bound to 'C-x n g'. 1193'goto-line-relative' is bound to 'C-x n g'.
1091 1194
1092+++ 1195+++
1093** 'got-char' prompts for the character position. 1196** 'goto-char' prompts for the character position.
1094When called interactively, 'goto-char' now offers the position at 1197When called interactively, 'goto-char' now offers the position at
1095point as the default. 1198point as the default.
1096 1199
@@ -3170,109 +3273,6 @@ This new 'etc-authors-mode' provides font-locking for displaying the
3170"etc/AUTHORS" file from the Emacs distribution, and not much else. 3273"etc/AUTHORS" file from the Emacs distribution, and not much else.
3171 3274
3172 3275
3173* Incompatible Editing Changes in Emacs 28.1
3174
3175---
3176** 'toggle-truncate-lines' now disables 'visual-line-mode'.
3177This is for symmetry with 'visual-line-mode', which disables
3178'truncate-lines'.
3179
3180---
3181** 'electric-indent-mode' now also indents inside strings and comments.
3182(This only happens when indentation function also supports this.)
3183
3184To recover the previous behavior you can use:
3185
3186 (add-hook 'electric-indent-functions
3187 (lambda (_) (if (nth 8 (syntax-ppss)) 'no-indent)))
3188
3189---
3190** The 'M-o' ('facemenu-keymap') global binding has been removed.
3191To restore the old binding, say something like:
3192
3193 (require 'facemenu)
3194 (define-key global-map "\M-o" 'facemenu-keymap)
3195 (define-key facemenu-keymap "\es" 'center-line)
3196 (define-key facemenu-keymap "\eS" 'center-paragraph)
3197
3198The last two lines are not strictly necessary if you don't care about
3199having those two commands on the 'M-o' keymap; see the next section.
3200
3201---
3202** The 'M-o M-s' and 'M-o M-S' global bindings have been removed.
3203Use 'M-x center-line' and 'M-x center-paragraph' instead. See the
3204previous section for how to get back the old bindings. Alternatively,
3205if you only want these two commands to have global bindings they had
3206before, you can add the following to your init file:
3207
3208 (define-key global-map "\M-o\M-s" 'center-line)
3209 (define-key global-map "\M-o\M-S" 'center-paragraph)
3210
3211---
3212** The 'M-o M-o' global binding has been removed.
3213Use 'M-x font-lock-fontify-block' instead, or the new 'C-x x f'
3214command, which updates the syntax highlighting in the current buffer.
3215
3216---
3217** The escape sequence '\e[29~' in Xterm is now mapped to 'menu'.
3218Xterm sends this sequence for both 'F16' and 'Menu' keys
3219It used to be mapped to 'print' but we couldn't find a terminal
3220that uses this sequence for any kind of 'Print' key.
3221This makes the Menu key (see https://en.wikipedia.org/wiki/Menu_key)
3222work for 'context-menu-mode' in Xterm.
3223
3224---
3225** New user option 'xterm-store-paste-on-kill-ring'.
3226If non-nil (the default), Emacs pushes pasted text onto the kill ring
3227(if using an xterm-like terminal that supports bracketed paste).
3228Setting this to nil inhibits that.
3229
3230---
3231** 'vc-print-branch-log' shows the change log from its root directory.
3232It previously used to use the default directory.
3233
3234---
3235** 'project-shell' and 'shell' now use 'pop-to-buffer-same-window'.
3236This is to keep the same behavior as Eshell.
3237
3238---
3239** In 'nroff-mode', 'center-line' is no longer bound to a key.
3240The original key binding was 'M-s', which interfered with I-search,
3241since the latter uses 'M-s' as a prefix key of the search prefix map.
3242
3243---
3244** In 'f90-mode', the backslash character ('\') no longer escapes.
3245For about a decade, the backslash character has no longer had a
3246special escape syntax in Fortran F90. To get the old behavior back,
3247say something like:
3248
3249 (modify-syntax-entry ?\\ "\\" f90-mode-syntax-table)
3250
3251+++
3252** Setting 'fill-column' to nil is obsolete.
3253This undocumented use of 'fill-column' is now obsolete. To disable
3254auto filling, turn off 'auto-fill-mode' instead.
3255
3256For instance, you could add something like the following to your init
3257file:
3258
3259 (add-hook 'foo-mode-hook (lambda () (auto-fill-mode -1))
3260
3261** Xref migrated from EIEIO to cl-defstruct for its core objects.
3262This means that 'oref' and 'with-slots' no longer works on them, and
3263'make-instance' can no longer be used to create those instances (which
3264wasn't recommended anyway). Packages should keep to using the
3265functions like 'xref-make', 'xref-make-match', 'xref-make-*-location',
3266as well as accessor functions 'xref-item-summary' and
3267'xref-item-location'.
3268
3269Among the benefits are better performance (noticeable when there are a
3270lot of matches) and improved flexibility: 'xref-match-item' instances
3271do not require that 'location' inherits from 'xref-location' anymore
3272(that class was removed), so packages can create new location types to
3273use with "match items" without adding EIEIO as a dependency.
3274
3275
3276* Incompatible Lisp Changes in Emacs 28.1 3276* Incompatible Lisp Changes in Emacs 28.1
3277 3277
3278+++ 3278+++
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 1cd22167c5b..e397e44b2ff 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -505,7 +505,7 @@ mouse-1: Display Line and Column Mode Menu"))
505 local-map ,mode-line-column-line-number-mode-map 505 local-map ,mode-line-column-line-number-mode-map
506 mouse-face mode-line-highlight 506 mouse-face mode-line-highlight
507 ;; XXX needs better description 507 ;; XXX needs better description
508 help-echo "Size indication mode\n\ 508 help-echo "Buffer Position
509mouse-1: Display Line and Column Mode Menu") 509mouse-1: Display Line and Column Mode Menu")
510 (size-indication-mode 510 (size-indication-mode
511 (8 ,(propertize 511 (8 ,(propertize
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 475a669dc40..5aefda23283 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -116,11 +116,11 @@ Base characters (Unicode General Category L,N,P,S,Zs)")
116Combining diacritic or mark (Unicode General Category M)") 116Combining diacritic or mark (Unicode General Category M)")
117 117
118;; bidi types 118;; bidi types
119(define-category ?R "Right-to-left (strong) 119(define-category ?R "Strong R2L
120Characters with \"strong\" right-to-left directionality, i.e. 120Characters with \"strong\" right-to-left directionality, i.e.
121with R, AL, RLE, or RLO Unicode bidi character type.") 121with R, AL, RLE, or RLO Unicode bidi character type.")
122 122
123(define-category ?L "Left-to-right (strong) 123(define-category ?L "Strong L2R
124Characters with \"strong\" left-to-right directionality, i.e. 124Characters with \"strong\" left-to-right directionality, i.e.
125with L, LRE, or LRO Unicode bidi character type.") 125with L, LRE, or LRO Unicode bidi character type.")
126 126
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 8e81f79e429..82153ff0adb 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -283,6 +283,7 @@ are also supported; unsupported long options are silently ignored."
283 (funcall orig-fun 283 (funcall orig-fun
284 file switches wildcard full-directory-p) 284 file switches wildcard full-directory-p)
285 ;; We need the directory in order to find the right handler. 285 ;; We need the directory in order to find the right handler.
286 (setq switches (or switches ""))
286 (let ((handler (find-file-name-handler (expand-file-name file) 287 (let ((handler (find-file-name-handler (expand-file-name file)
287 'insert-directory)) 288 'insert-directory))
288 (orig-file file) 289 (orig-file file)
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 0d51019f735..52a4e0c5435 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1,7 +1,7 @@
1;;; xref.el --- Cross-referencing commands -*-lexical-binding:t-*- 1;;; xref.el --- Cross-referencing commands -*-lexical-binding:t-*-
2 2
3;; Copyright (C) 2014-2021 Free Software Foundation, Inc. 3;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
4;; Version: 1.2.2 4;; Version: 1.3.0
5;; Package-Requires: ((emacs "26.1")) 5;; Package-Requires: ((emacs "26.1"))
6 6
7;; This is a GNU ELPA :core package. Avoid functionality that is not 7;; This is a GNU ELPA :core package. Avoid functionality that is not
@@ -956,13 +956,11 @@ GROUP is a string for decoration purposes and XREF is an
956`xref-item' object." 956`xref-item' object."
957 (require 'compile) ; For the compilation faces. 957 (require 'compile) ; For the compilation faces.
958 (cl-loop for (group . xrefs) in xref-alist 958 (cl-loop for (group . xrefs) in xref-alist
959 for max-line-width = 959 for max-line = (cl-loop for xref in xrefs
960 (cl-loop for xref in xrefs 960 maximize (xref-location-line
961 maximize (let ((line (xref-location-line 961 (xref-item-location xref)))
962 (xref-item-location xref)))) 962 for line-format = (and max-line
963 (and line (1+ (floor (log line 10)))))) 963 (format "%%%dd: " (1+ (floor (log max-line 10)))))
964 for line-format = (and max-line-width
965 (format "%%%dd: " max-line-width))
966 with item-text-props = (list 'mouse-face 'highlight 964 with item-text-props = (list 'mouse-face 'highlight
967 'keymap xref--button-map 965 'keymap xref--button-map
968 'help-echo 966 'help-echo
@@ -973,27 +971,27 @@ GROUP is a string for decoration purposes and XREF is an
973 do 971 do
974 (xref--insert-propertized '(face xref-file-header xref-group t) 972 (xref--insert-propertized '(face xref-file-header xref-group t)
975 group "\n") 973 group "\n")
976 (cl-loop for xref in xrefs do 974 (dolist (xref xrefs)
977 (pcase-let (((cl-struct xref-item summary location) xref)) 975 (pcase-let (((cl-struct xref-item summary location) xref))
978 (let* ((line (xref-location-line location)) 976 (let* ((line (xref-location-line location))
979 (prefix 977 (prefix
980 (cond 978 (cond
981 ((not line) " ") 979 ((not line) " ")
982 ((and (equal line prev-line) 980 ((and (equal line prev-line)
983 (equal prev-group group)) 981 (equal prev-group group))
984 "") 982 "")
985 (t (propertize (format line-format line) 983 (t (propertize (format line-format line)
986 'face 'xref-line-number))))) 984 'face 'xref-line-number)))))
987 ;; Render multiple matches on the same line, together. 985 ;; Render multiple matches on the same line, together.
988 (when (and (equal prev-group group) 986 (when (and (equal prev-group group)
989 (or (null line) 987 (or (null line)
990 (not (equal prev-line line)))) 988 (not (equal prev-line line))))
991 (insert "\n")) 989 (insert "\n"))
992 (xref--insert-propertized (nconc (list 'xref-item xref) 990 (xref--insert-propertized (nconc (list 'xref-item xref)
993 item-text-props) 991 item-text-props)
994 prefix summary) 992 prefix summary)
995 (setq prev-line line 993 (setq prev-line line
996 prev-group group)))) 994 prev-group group))))
997 (insert "\n")) 995 (insert "\n"))
998 (add-to-invisibility-spec '(ellipsis . t)) 996 (add-to-invisibility-spec '(ellipsis . t))
999 (save-excursion 997 (save-excursion
@@ -1883,34 +1881,36 @@ Such as the current syntax table and the applied syntax properties."
1883 syntax-needed))))) 1881 syntax-needed)))))
1884 1882
1885(defun xref--collect-matches-1 (regexp file line line-beg line-end syntax-needed) 1883(defun xref--collect-matches-1 (regexp file line line-beg line-end syntax-needed)
1886 (let (match-pairs matches) 1884 (let (matches
1885 stop beg end
1886 last-beg last-end
1887 summary-end)
1887 (when syntax-needed 1888 (when syntax-needed
1888 (syntax-propertize line-end)) 1889 (syntax-propertize line-end))
1889 (while (and 1890 (while (not stop)
1890 ;; REGEXP might match an empty string. Or line. 1891 (if (and
1891 (or (null match-pairs) 1892 ;; REGEXP might match an empty string. Or line.
1892 (> (point) line-beg)) 1893 (not (and last-beg (eql end line-beg)))
1893 (re-search-forward regexp line-end t)) 1894 (re-search-forward regexp line-end t))
1894 (push (cons (match-beginning 0) 1895 (setq beg (match-beginning 0)
1895 (match-end 0)) 1896 end (match-end 0)
1896 match-pairs)) 1897 summary-end beg)
1897 (setq match-pairs (nreverse match-pairs)) 1898 (setq stop t
1898 (while match-pairs 1899 summary-end line-end))
1899 (let* ((beg-end (pop match-pairs)) 1900 (when last-beg
1900 (beg-column (- (car beg-end) line-beg)) 1901 (let* ((beg-column (- last-beg line-beg))
1901 (end-column (- (cdr beg-end) line-beg)) 1902 (end-column (- last-end line-beg))
1902 (loc (xref-make-file-location file line beg-column)) 1903 (summary-start (if matches last-beg line-beg))
1903 (summary (buffer-substring (if matches (car beg-end) line-beg) 1904 (summary (buffer-substring summary-start
1904 (if match-pairs 1905 summary-end))
1905 (caar match-pairs) 1906 (loc (xref-make-file-location file line beg-column)))
1906 line-end)))) 1907 (add-face-text-property (- last-beg summary-start)
1907 (when matches 1908 (- last-end summary-start)
1908 (cl-decf beg-column (- (car beg-end) line-beg)) 1909 'xref-match t summary)
1909 (cl-decf end-column (- (car beg-end) line-beg))) 1910 (push (xref-make-match summary loc (- end-column beg-column))
1910 (add-face-text-property beg-column end-column 'xref-match 1911 matches)))
1911 t summary) 1912 (setq last-beg beg
1912 (push (xref-make-match summary loc (- end-column beg-column)) 1913 last-end end))
1913 matches)))
1914 (nreverse matches))) 1914 (nreverse matches)))
1915 1915
1916(defun xref--find-file-buffer (file) 1916(defun xref--find-file-buffer (file)
diff --git a/lisp/subr.el b/lisp/subr.el
index 33aa3ced446..cca6d53ba73 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -3219,7 +3219,7 @@ PROMPT is also updated to show `help-char' like \"(y, n or C-h) \",
3219where `help-char' is automatically bound to `help-form-show'. 3219where `help-char' is automatically bound to `help-form-show'.
3220 3220
3221No confirmation of the answer is requested; a single character is 3221No confirmation of the answer is requested; a single character is
3222enough. SPC also means yes, and DEL means no. 3222enough. RET and SPC also means yes, and DEL means no.
3223 3223
3224To be precise, this function translates user input into responses 3224To be precise, this function translates user input into responses
3225by consulting the bindings in `query-replace-map'; see the 3225by consulting the bindings in `query-replace-map'; see the
diff --git a/src/Makefile.in b/src/Makefile.in
index 0326b4a8f22..6d75e3537a6 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -803,6 +803,15 @@ elnlisp := $(addprefix ${lispsource}/,${elnlisp}) $(lisp:.elc=.eln)
803 @$(MAKE) $(AM_V_NO_PD) -C ../lisp EMACS="../src/emacs$(EXEEXT)"\ 803 @$(MAKE) $(AM_V_NO_PD) -C ../lisp EMACS="../src/emacs$(EXEEXT)"\
804 THEFILE=$< $<n 804 THEFILE=$< $<n
805 805
806## FIXME: this is fragile! We lie to Make about the files produced by
807## this rule, and we rely on the absence of the native-lisp directory
808## to trigger it. This means that if anything goes wrong during
809## native compilation, the only way to trigger it again is to remove
810## the directory and re-native-compile everything. The main
811## underlying problem is that the name of the subdirectory of
812## native-lisp where the *.eln files will be produced, and the exact
813## names of those *.eln files, cannot be known in advance; we must ask
814## Emacs to produce them.
806../native-lisp: | $(pdmp) 815../native-lisp: | $(pdmp)
807 @if test ! -d $@; then \ 816 @if test ! -d $@; then \
808 mkdir $@ && $(MAKE) $(AM_V_NO_PD) $(elnlisp); \ 817 mkdir $@ && $(MAKE) $(AM_V_NO_PD) $(elnlisp); \
diff --git a/src/dispextern.h b/src/dispextern.h
index 6aefe43e195..08dac5d4557 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1326,7 +1326,9 @@ struct glyph_string
1326 /* The area within row. */ 1326 /* The area within row. */
1327 enum glyph_row_area area; 1327 enum glyph_row_area area;
1328 1328
1329 /* Characters to be drawn, and number of characters. */ 1329 /* Characters to be drawn, and number of characters. Note that
1330 NCHARS can be zero if this is a composition glyph string, as
1331 evidenced by FIRST_GLYPH->type. */
1330 unsigned *char2b; 1332 unsigned *char2b;
1331 int nchars; 1333 int nchars;
1332 1334