aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2020-01-11 07:50:31 -0800
committerGlenn Morris2020-01-11 07:50:31 -0800
commit41d9d51cf5ac5b76c09802388e1691cf489d9d9d (patch)
tree6171164ad07da6a4a5ded5287d71efb3f5e6e4a5
parent17cfd708575c351d030f8b05c5921d1867028d79 (diff)
parentf0ebd919c16c71d1010f2625425932e46b58f8b4 (diff)
downloademacs-41d9d51cf5ac5b76c09802388e1691cf489d9d9d.tar.gz
emacs-41d9d51cf5ac5b76c09802388e1691cf489d9d9d.zip
Merge from origin/emacs-27
f0ebd919c1 (origin/emacs-27) ; * doc/lispref/anti.texi (Antinews): Fi... 6f059159ee Update Acknowledgments sections e1262d45f9 Update Antinews in ELisp manual fd8128f0c1 ; Move the description of define-inline to a different nod... 524441d6b3 Improve wording in the ELisp manual 8addfa91c8 Reset to the standard value when reverting session's custo... d6f9b09777 Fix saving multiple themes c556aabde8 Calc: fix interval entry (bug#39040) 91cd3c1372 Fix horizontal line display in Custom buffers 15c8e984ae ; * etc/NEWS: Fix a typo. ff8996a337 flymake: fix typo in variable binding (bug#38752) 16eaaa07e6 ; Minor spelling fixes 5efe795659 Update Antinews in the Emacs manual 5841240295 Use NSNumber instead of BOOL (bug#39047) beec9f64a5 Add comment on fido-mode's file-sorting semantics eb3c6ad325 Consider non-string minibuffer-default in icomplete # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/ack.texi27
-rw-r--r--doc/emacs/anti.texi203
-rw-r--r--doc/emacs/emacs.texi15
-rw-r--r--doc/lispref/anti.texi342
-rw-r--r--doc/lispref/elisp.texi2
-rw-r--r--doc/lispref/functions.texi196
-rw-r--r--doc/lispref/modes.texi17
-rw-r--r--etc/NEWS.272
-rw-r--r--lisp/calc/calc.el2
-rw-r--r--lisp/cus-edit.el20
-rw-r--r--lisp/custom.el2
-rw-r--r--lisp/icomplete.el17
-rw-r--r--lisp/progmodes/flymake-proc.el2
-rw-r--r--src/nsfns.m4
14 files changed, 400 insertions, 451 deletions
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index e8d0a4b3a8d..c6224885df3 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -236,6 +236,12 @@ Andrew Cohen wrote @file{spam-wash.el}, to decode and clean email before
236it is analyzed for spam. 236it is analyzed for spam.
237 237
238@item 238@item
239Daniel Colascione wrote the portable dumping code in @file{pdumper.c}
240and elsewhere. He also implemented double-buffering for X-based GUI
241frames, and the original support for loading shared-object modules
242into Emacs.
243
244@item
239Theresa O'Connor wrote @file{json.el}, a file for parsing and 245Theresa O'Connor wrote @file{json.el}, a file for parsing and
240generating JSON files. 246generating JSON files.
241 247
@@ -503,6 +509,10 @@ Tassilo Horn wrote DocView mode, allowing viewing of PDF, PostScript and
503DVI documents. 509DVI documents.
504 510
505@item 511@item
512Khaled Hosny, Yamamoto Mitsuharu, and Eli Zaretskii implemented
513text shaping with HarfBuzz for Emacs.
514
515@item
506Joakim Hove wrote @file{html2text.el}, a html to plain text converter. 516Joakim Hove wrote @file{html2text.el}, a html to plain text converter.
507 517
508@item 518@item
@@ -702,7 +712,9 @@ files.
702Juri Linkov wrote @file{misearch.el}, extending isearch to multi-buffer 712Juri Linkov wrote @file{misearch.el}, extending isearch to multi-buffer
703searches; the code in @file{files-x.el} for handling file- and 713searches; the code in @file{files-x.el} for handling file- and
704directory-local variables; and the @code{info-finder} feature that 714directory-local variables; and the @code{info-finder} feature that
705creates a virtual Info manual of package keywords. 715creates a virtual Info manual of package keywords. He also
716implemented the Tab Bar and window tab-lines, and added numerous
717enhancements and improvements in I-search.
706 718
707@item 719@item
708Leo Liu wrote @file{pcmpl-x.el}, providing completion for 720Leo Liu wrote @file{pcmpl-x.el}, providing completion for
@@ -818,6 +830,11 @@ major modes by inheriting key bindings and commands from existing major
818modes. 830modes.
819 831
820@item 832@item
833Jimmy Aguilar Mena wrote the code to support the @code{:extend} face
834attribute, and also implemented the optional
835@code{display-fill-column-indicator} feature.
836
837@item
821Will Mengarini wrote @file{repeat.el}, a command to repeat the preceding 838Will Mengarini wrote @file{repeat.el}, a command to repeat the preceding
822command with its arguments. 839command with its arguments.
823 840
@@ -1084,6 +1101,10 @@ Kevin Ryde wrote @file{info-xref.el}, a library for checking
1084references in Info files. 1101references in Info files.
1085 1102
1086@item 1103@item
1104Phil Sainty wrote @file{so-long.el}, a set of features for easier
1105editing of files with very long lines.
1106
1107@item
1087James B. Salem and Brewster Kahle wrote @file{completion.el}, providing 1108James B. Salem and Brewster Kahle wrote @file{completion.el}, providing
1088dynamic word completion. 1109dynamic word completion.
1089 1110
@@ -1235,6 +1256,10 @@ Tibor Šimko and Milan Zamazal wrote @file{slovak.el}, support for
1235editing text in Slovak language. 1256editing text in Slovak language.
1236 1257
1237@item 1258@item
1259João Távora wrote many improvements for @file{flymake.el}, an
1260on-the-fly syntax-checking package.
1261
1262@item
1238Luc Teirlinck wrote @file{help-at-pt.el}, providing local help through 1263Luc Teirlinck wrote @file{help-at-pt.el}, providing local help through
1239the keyboard. 1264the keyboard.
1240 1265
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index 6cf573ea279..5190ae4f9fa 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -4,103 +4,113 @@
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 25 Antinews 7@appendix Emacs 26 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 25.3. We hope you will enjoy the 11about downgrading to Emacs version 26.3. 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 defaults to requiring the GnuTLS library when you 17Emacs no longer uses @acronym{GMP}, the GNU Multiple Precision
18build it. Those who want the TLS functionality built-in will have to 18library, and doesn't support Lisp integers greater than
19explicitly request it at build time---or forever hold their peace. We 19@code{most-positive-fixnum} or smaller than
20decided that having the TLS functionality doesn't justify annoying 20@code{most-negative-fixnum}. We now have only one kind of a Lisp
21users or package builders with error messages about libgnutls absence. 21integer. This simplifies many Lisp programs that use integers, and
22We also decided that if you do build with GnuTLS, we will allow 22makes integer calculations always fast. If you want larger values,
23versions of the library older than 2.12.2, as that version will become 23use Lisp floats, as Emacs has done since day one.
24less and less available/popular as you move farther back in time.
25 24
26@item 25@item
27For similar reasons, we've reverted back to building our own version 26Emacs no longer supports HarfBuzz as the engine for shaping complex
28of @command{movemail} that retrieves POP3 mail as clear text via 27text. As you move back in time, we will gradually shed off all traces
29insecure channels. As you move back in time, the availability of 28of support for complex text shaping, and this is one step in that
30secure alternatives to POP3 will diminish, and we are only keen to 29direction.
31support that. We've also removed the @option{--with-mailutils}
32configure-time option, as it no longer makes sense for the observable
33past.
34 30
35@item 31@item
36We have removed support for @command{systemd} and similar services: we 32We have removed support for building with the Jansson library, and
37no longer provide a user init file for enabling Emacs support via 33consequently the native support for JSON parsing is gone. The
38those services, and we removed from the Emacs server the 34importance of JSON decreases as we go back in time, so for now using
39socket-launching support important for Emacs client operation under 35the Lisp code for handling it should be good enough; in one of the
40these services. Again, these services will lose popularity as you 36past Emacs versions, we intend to remove even that, as useless bloat.
41move back in time, so the code supporting them will be just dead code, 37
42bloating Emacs unnecessarily. 38The library for supporting JSONRPC applications was removed for the
39same reason.
43 40
44@item 41@item
45Reproducible builds of Emacs are no longer supported, as past 42The ``portable dumper'' feature is gone. We are once again using the
46development will make that unnecessary. 43field-proven ``unexec'' way of dumping Emacs. With that, the hope for
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.
47 48
48@item 49@item
49The @option{--fg-daemon} is gone, leaving only @option{--daemon}. No 50We dropped the support for @acronym{XDG}-style configuration
50need to procrastinate on the dilemma whether you do or do not want the 51directories and the @env{XDG_CONFIG_HOME} environment variable.
51new shiny ``headless Emacs'' thingy. Hail, simplicity! 52There's once again only one place where Emacs looks for its init
53files: the @file{~/.emacs.d} directory, with the @file{~/.emacs} file
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
66@command{emacsclient} no longer supports @acronym{XDG}-style directory
67trees, either.
52 68
53@item 69@item
54As text terminals supporting true color will lose ground as you move 70TLS connections are back to their lenient security settings. We
55back in time, we've removed support for 24-bit colors on text 71decided that too tight security settings are an annoyance for users,
56terminals. If you want colors on a text terminal, you should be fine 72and make little sense considering the world-wide tendency to have
57with just 8 of them. (Truth being told, we think text terminals 73fewer and fewer network security problems as we move back in time
58should be monochrome, but you will have to keep downgrading to older 74(those issues will be completely gone when networks disappear in some
59Emacs versions to have that feature back.) 75distant past).
60 76
61@item 77@item
62Emacs 25.3 no longer supports magic signatures of the form 78The @code{server-after-make-frame-hook} hook was deleted, in
63@samp{#!/usr/bin/env @var{interpreter}} in scripts. Moving back in 79preparation for removing the entire daemon business in some past Emacs
64time means you are getting closer to the ideal of the original Unix 80version. You will be glad to learn that setting up the GUI
65design where all the interpreters lived in a single directory 81customizations of your sessions is now once again as easy as it ever
66@file{/bin}, so this fancy feature is simply becoming unnecessary 82was, with just the @code{after-make-frame-functions} to use.
67ballast.
68 83
69@item 84@item
70The double-buffering feature of Emacs display on X has been removed. 85The @code{flex} completion style was removed. We feel that it
71We decided that its complexity and a few random surprising 86unnecessarily complicates the Emacs user experience, and therefore
72side-effects aren't justified by the gains, even though those gains 87will continue to remove other tricky completion styles, until in some
73were hailed in some quarters. Yes, Emacs 25.3 will flicker in some 88past Emacs version we get to a single original style Emacs pioneered
74use cases, but we are sure Emacs users will be able to suck it, as 89decades ago. Long live simplicity; down with complications!
75they have been doing for years. Since this feature is gone, we've
76also removed the @code{inhibit-double-buffering} frame parameter,
77which is now unnecessary.
78 90
79@item 91@item
80Non-breaking hyphens and ASCII characters displayed instead of 92The optional display of the fill-column indicator is no longer
81unsupported quote characters are now again displayed using the 93supported. With the display sizes becoming smaller and smaller as you
82@code{escape-glyph} face. We think having a single face instead of 3 94move back in time, we feel that the display itself will always show
83different ones will make Emacs customization a much simpler job for 95you where to fill or wrap your text, and do this much more easily and
84users. For the same reason, we've removed the 96reliably than eny such display indicator.
85@code{header-line-highlight} face, leaving just @code{highlight} for
86any element of the Emacs display besides the mode line.
87 97
88@item 98@item
89You can no longer disable attempts of recovery from fatal exceptions 99We removed the features that made visiting large files easier. Thus,
90such as C stack overflows and fatal signals. Since the recovery 100Emacs will no longer suggest visiting a large file literally, nor will
91included in Emacs is reliable enough, we decided there was no reason 101offer the @code{so-long} mode to deal with overly-long lines. We
92to put your edits in danger of becoming lost when these situations 102decided that this simplification is worthwhile, given that the general
93happen. The variables @code{attempt-stack-overflow-recovery} and 103tendency of having very large files is becoming a rarity as we move
94@code{attempt-orderly-shutdown-on-fatal-signal} are therefore removed. 104back in time.
95 105
96@item 106@item
97The @code{list-timers} command was removed, as we decided timers are 107We have removed the feature that displayed echo-area messages without
98not a user-level feature, and therefore users should not be allowed to 108hiding content of the active minibuffer. This should prevent user
99mess with them. Ask an Emacs Lisp guru near you for help if you have 109confusion from having two unrelated pieces of text staring at them,
100a runaway timer in your session. (Of course, as you move back in 110with no clear separation between them. Users with good memories (and
101time, such runaway timers will become less and less frequent, and 111Emacs users are all expected to be of that kind) will have no trouble
102actually timers might start shutting down automatically, as they 112keeping the minibuffer text in their minds, and typing the responses
103cannot cope with time reversal.) 113without actually seeing the prompts.
104 114
105@item 115@item
106Horizontal scrolling using the mouse or touchpad has been removed. In 116Horizontal scrolling using the mouse or touchpad has been removed. In
@@ -110,14 +120,20 @@ horizontal scrolling is the first step towards its complete removal in
110prior Emacs versions. 120prior Emacs versions.
111 121
112@item 122@item
113We have found the @option{--tramp} option of @command{emacsclient} too 123The @code{main-thread} variable and @code{list-threads} were removed,
114risky and too complicated, so we removed it to simplify the client 124and @code{thread-join} no longer returns the result of the finished
115code and its usage. 125thread. We intend to remove the support for Lisp threads in some past
126Emacs version, so we continue removing the associated complexities and
127features as we go back in time.
116 128
117@item 129@item
118The @code{display-raw-bytes-as-hex} variable is gone, so raw bytes can 130Tab bar and window tab-lines were removed. This should make the Emacs
119only be displayed as octal escapes. Emacs users should be able to 131display simpler and less cluttered, and help those users who disable
120convert from octal to any other base in their sleep! 132menu bar and tool bar in their GUI sessions. The fashion to provide
133tabs in every GUI application out there is gaining less and less
134popularity as we move back in time, and will completely disappear at
135some past point; removing the tabs from Emacs is the step in that
136direction.
121 137
122@item 138@item
123Displaying line numbers for a buffer is only possibly using add-on 139Displaying line numbers for a buffer is only possibly using add-on
@@ -129,42 +145,15 @@ Consequently, @code{display-line-numbers-mode} was removed.
129 145
130@item 146@item
131On our permanent quest for simplifying Emacs, we've removed the 147On our permanent quest for simplifying Emacs, we've removed the
132support for passing command-line arguments and options to Emacs via 148support for changing the font size by turning the mouse wheel.
133the @option{--alternate-editor} option of @command{emacsclient} and
134@env{ALTERNATE_EDITOR} environment variable. There's only one True
135Emacs---the one that comes up when invoked as @kbd{emacs}, no need for
136all those fancy options!
137
138@item
139The complication known as ``single-line horizontal scrolling'' is no
140longer with you in Emacs 25.3. This feature was a bow to ``other
141editors''; instead, let those other editors bow to Emacs by hscrolling
142the entire window at all times. Repeat after me: ``The Emacs way is
143the Only Way!''
144
145@item
146The fancy case conversions of non-ASCII characters used in several
147locales, like Turkish and Greek, are removed, leaving the relations
148between upper and lower letter-case simple again, as they were in
1497-bit ASCII. Likewise with ligatures that turn into multiple
150characters when their letter-case changes---gone.
151
152@item
153Enchant is no longer supported by @code{ispell-buffer} and similar
154spell-checking commands. As Enchant will gradually disappear while
155you move back in time, its support will become unnecessary anyway.
156
157@item
158Tramp lost its support for Google Drive repositories. Cloud storage
159is on its way to extinction as you move back in time, thus making this
160feature redundant.
161 149
162@item 150@item
163Several commands, deemed to be unnecessary complications, have been 151Several commands, deemed to be unnecessary complications, have been
164removed. Examples include @code{replace-buffer-contents} and 152removed. Examples include @code{make-empty-file},
165@code{apropos-local-variable}. 153@code{font-lock-refontify}, @code{xref-find-definitions-at-mouse},
154@code{make-frame-on-monitor}, and @code{diff-buffers}.
166 155
167@item 156@item
168To keep up with decreasing computer memory capacity and disk space, many 157To keep up with decreasing computer memory capacity and disk space, many
169other functions and files have been eliminated in Emacs 25.3. 158other functions and files have been eliminated in Emacs 26.3.
170@end itemize 159@end itemize
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 1368f3e2980..0400ed0b736 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 25. 222* Antinews:: Information about Emacs version 26.
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!
@@ -1404,6 +1404,7 @@ Berry, Anna M. Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan
1404Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner, 1404Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner,
1405Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin 1405Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin
1406Broadey, Vincent Broman, Michael Brouwer, David M. Brown, Ken Brown, Stefan Bruda, 1406Broadey, Vincent Broman, Michael Brouwer, David M. Brown, Ken Brown, Stefan Bruda,
1407Daniel Colascione,
1407Georges Brun-Cottan, Joe Buehler, Scott Byer, Włodek Bzyl, Tino Calancha, 1408Georges Brun-Cottan, Joe Buehler, Scott Byer, Włodek Bzyl, Tino Calancha,
1408Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris Chase, Bob 1409Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris Chase, Bob
1409Chassell, Andrew Choi, Chong Yidong, Sacha Chua, Stewart Clamen, James 1410Chassell, Andrew Choi, Chong Yidong, Sacha Chua, Stewart Clamen, James
@@ -1429,7 +1430,7 @@ Guillaume, Dmitry Gutov, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, C
1429Hanson, Jesper Harder, Alexandru Harsanyi, K. Shane Hartman, John 1430Hanson, Jesper Harder, Alexandru Harsanyi, K. Shane Hartman, John
1430Heidemann, Jon K. Hellan, Magnus Henoch, Markus Heritsch, Dirk 1431Heidemann, Jon K. Hellan, Magnus Henoch, Markus Heritsch, Dirk
1431Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst, 1432Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst,
1432Jeffrey C. Honig, Tassilo Horn, Kurt Hornik, Tom Houlder, Joakim 1433Jeffrey C. Honig, Tassilo Horn, Kurt Hornik, Khaled Hosny, Tom Houlder, Joakim
1433Hove, Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, 1434Hove, Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue,
1434Philip Jackson, Martyn Jago, Pavel Janik, Paul Jarc, Ulf Jasper, 1435Philip Jackson, Martyn Jago, Pavel Janik, Paul Jarc, Ulf Jasper,
1435Thorsten Jolitz, Michael K. Johnson, Kyle Jones, Terry Jones, Simon 1436Thorsten Jolitz, Michael K. Johnson, Kyle Jones, Terry Jones, Simon
@@ -1449,7 +1450,7 @@ Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie,
1449Christopher J. Madsen, Neil M. Mager, Artur Malabarba, Ken Manheimer, Bill Mann, 1450Christopher J. Madsen, Neil M. Mager, Artur Malabarba, Ken Manheimer, Bill Mann,
1450Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin, 1451Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin,
1451Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, David 1452Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, David
1452Megginson, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad 1453Megginson, Jimmy Aguilar Mena, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad
1453Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Dani Moncayo, Stefan 1454Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Dani Moncayo, Stefan
1454Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris, 1455Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
1455Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum, 1456Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
@@ -1468,7 +1469,7 @@ Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
1468Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny 1469Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny
1469Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo 1470Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo
1470J. Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney, Wolfgang 1471J. Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney, Wolfgang
1471Rupprecht, Benjamin Rutt, Kevin Ryde, James B. Salem, Masahiko Sato, 1472Rupprecht, Benjamin Rutt, Kevin Ryde, Phil Sainty, James B. Salem, Masahiko Sato,
1472Timo Savola, Jorgen Schäfer, Holger Schauer, William Schelter, Ralph 1473Timo Savola, Jorgen Schäfer, Holger Schauer, William Schelter, Ralph
1473Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell, 1474Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell,
1474Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef, 1475Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
@@ -1481,9 +1482,9 @@ South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
1481Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson, Ken 1482Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson, Ken
1482Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F. 1483Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.
1483Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto 1484Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
1484Takahashi, Steven Tamm, Jan Tatarik, Luc Teirlinck, Jean-Philippe Theberge, Jens 1485Takahashi, Steven Tamm, Jan Tatarik, João Távora, Luc Teirlinck,
1485T. Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi, 1486Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas,
1486David O'Toole, Markus Triska, Tom Tromey, Eli 1487Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Eli
1487Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil 1488Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
1488W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey 1489W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
1489Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin 1490Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 5421d77762f..a134e883588 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -6,276 +6,184 @@
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 25 Antinews 9@appendix Emacs 26 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 25.3. We hope you will enjoy the greater 13downgrading to Emacs version 26.3. 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@section Old Lisp Features in Emacs 25
18
19@itemize @bullet 17@itemize @bullet
20@item 18@item
21The concurrency features have been removed. Even in its limited 19Lisp objects are again implemented on the C level as integer types,
22``mostly cooperative'' form, with only one Lisp thread running at any 20not as pointers. This might be a small step for Emacs Lisp users, but
23given time, it made Emacs significantly more complex for Lisp programs 21it's a giant leap for the Emacs developers who work on the C level,
24that need to work correctly in the presence of additional threads. 22since it is now again easy to print Lisp object in the debugger in the
25 23decimal format, which is so much easier for debugging. It also makes
26@item 24calling Emacs functions from the debugger easier, and allows us to
27Handling of file attributes has been simplified by discarding the 25freely mix integers and Lisp objects in the C code.
28accessor functions, such as @code{file-attribute-type} and
29@code{file-attribute-modification-time}. Real Lisp programmers always
30access the individual attributes by their ordinal numbers, and can
31recite those numbers in their sleep.
32
33@item
34The networking code is back at its pristine simplicity, as we deleted
35the use of asynchronous DNS resolution, connection, and TLS
36negotiation for TLS streams. You no longer need to consider the
37resulting complexity and interesting race conditions when you write
38Lisp programs that use network communications. As a direct
39consequence, the @code{:complete-negotiation} parameter of
40@code{gnutls-boot} has become unnecessary, and was removed---just one
41example of how removal of asynchronicity simplifies Emacs.
42
43@item
44We've removed the @file{puny.el} library, so Web sites with
45non-@acronym{ASCII} URLs are no longer easily accessible. But such
46sites become more and more rare as you move back in time, so having a
47specialized library for their support was deemed an unnecessary
48maintenance burden.
49
50@item
51The time conversion functions @code{current-time-string},
52@code{current-time-zone}, @code{decode-time},
53@code{format-time-string}, and @code{set-time-zone-rule} no longer
54accept integer offsets as time zone rules, to make it more of a
55challenge to convert foreign timestamps. Also,
56@code{format-time-string} no longer converts @samp{%q} to the calendar
57quarter, as that is something you can easily do for yourself.
58
59@item
60Field numbers like @samp{%2$} in format specifiers are no longer
61available. We decided that their use makes code reading and
62comprehension much harder, and that having them is unjustified in the
63past where similar features in popular C libraries will also be gone.
64
65@item
66Since the built-in capability to display line numbers has been removed
67(@pxref{Antinews,,, emacs, The GNU Emacs Manual}), we've also deleted
68the @code{line-number-display-width} function and the support for the
69@code{display-line-numbers-disable} property, as Lisp programs that do
70their own display layout decisions no longer need to cater to this
71tricky feature.
72
73@item
74Regular expressions have been simplified by removing support for
75Unicode character properties in the @code{[:blank:]} regexp class. As
76result, this class will match only spaces and tabs. Once again, this
77is in line with diminishing importance of Unicode as you move back in
78time.
79
80@item
81For similar reasons, we removed the function @code{char-from-name}.
82It should be easy enough to access the full list of Unicode characters
83returned by @code{ucs-names} instead, for as long as Unicode support
84in Emacs exists (which shouldn't be too long).
85
86@item
87Various functions that accept file names as arguments, such as
88@code{file-attributes}, @code{file-symlink-p}, and
89@code{make-symbolic-link} gained back the special support for file
90names quoted with @samp{/:}, and they now interpret @samp{~} in
91symlink targets as you'd expect: to mean your home directory. The
92confusing differences between the operation of these functions in
93interactive and non-interactive invocations has been removed.
94
95@item
96Several functions that create or rename their files now treat their
97destination specially if it happens to be a directory, even when its
98name does not appear to be that of a directory. For example,
99@code{(rename-file "A" "B")} no longer renames @file{A} to @file{B} if
100@file{B} happens to be a directory. This is so that dealing with
101files becomes more of an adventure.
102 26
103@item 27@item
104The @code{format} function now returns new strings in more cases, to 28The test suite was removed from the distribution tarball. We believe
105place more stress on the Emacs memory manager and thereby test Emacs 29that tests need seldom if ever be run, certainly not by the end
106better. 30users. Removing the tests from the tarball makes it much smaller,
31which is important since disk space becomes more and more at premium
32as you move back in time.
107 33
108@item 34@item
109The function @file{assoc} has been simplified by removing its third 35Dynamic module support is disabled by default. This both makes Emacs
110optional argument. It now always uses @code{equal} for comparison. 36smaller (a worthy goal by itself), and removes the complications and
111Likewise, @code{alist-get} always uses @code{assq}, and @code{map-get} 37additional complexity related with installing module support files and
112and @code{map-put} always use @code{eql} for their comparisons. 38letting random shared objects an opportunity to be loaded into Emacs
39and mess with it.
113 40
114@item 41@item
115Numeric comparisons and the functions @code{format}, 42You now must activate any installed packages only after loading your
116@code{make-hash-table}, @code{min}, @code{max} and @code{logb} now 43init files. That requires an explicit call to
117occasionally round values internally to make their results less 44@code{package-initialize} in your init file, which is a Good Thing, as
118predictable. 45it makes you think seriously where and indeed whether you'd like your
46packages to become available to your sessions. Simplicity should
47tramp convenience!
119 48
120@item 49@item
121The functions @code{ffloor}, @code{fceiling}l, @code{ftruncate} and 50To reduce the amount of code in Emacs related to unimportant features,
122@code{fround} now accept integer arguments. Conversely, functions 51we've removed native rotation and resizing of images. You will have
123like @code{decode-char} that accept floating-point integers now accept 52to build Emacs with ImageMagick if you want to resize or rotate images
124arguments that are not integers. In both cases the results are 53inside Emacs. We don't expect anyone to miss that.
125amusingly nonsensical sometimes.
126 54
127@item 55@item
128GnuTLS cryptographic functions are no longer available in Emacs. We 56We've re-enabled color fonts usage by the XFT font back-end. We
129have decided that the needs for such functionality are deteriorating, 57consider the availability of these fonts more important than a random
130and their cumbersome interfaces make them hard to use. 58crash here and there, especially since the use of these fonts for
59displaying Emoji will become less and less important as we travel back
60in time, and will completely disappear in some past Emacs version.
131 61
132@item 62@item
133We have removed support for records of user-defined types, and 63The function @code{network-interface-list} can now return only IPv4
134@code{cl-defstruct} no longer uses records. This removes the 64addresses. We consider the complexity introduced by IPv6 to be too
135potential for quite a few places where existing and past code could be 65much to be justified, and on the other hand its removal is the step in
136broken by records. 66the right direction, given that IPv6 is expected to be completely
67removed as we move back in time.
137 68
138@item 69@item
139You can again use @code{string-as-unibyte}, 70The limit on repetitions in regular expressions was reduced to
140@code{string-make-multibyte}, and other similar functions, without 71@ifnottex
141being annoyed by messages about their deprecation. This is in 722**15 @minus{} 1.
142preparation for removal of multibyte text from Emacs in the distant 73@end ifnottex
143past. 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.
144 79
145@item 80@item
146The @code{string-version-lessp} function has been removed, to 81To simplify code and reduce complexity, we removed the capability of
147encourage programmers to use their own idiosyncratic methods to 82searching programs on remote hosts in @code{executable-find}. If you
148determine whether one version string precedes another. 83really need this feature (why would you?), you can always write your
84own shell script and run it on the remote.
149 85
150@item 86@item
151The function @code{read-color} no longer displays color names using 87The @code{:extend} face attribute is no longer available; all faces
152each color as the background. We have determined that this surprises 88have their background color extended by default past end of line.
153users and produces funny inconsistent results on color-challenged 89This should significantly simplify face management and remove
154terminals. 90unnecessary code bloat, as well as make faces significantly simpler to
91understand and use.
155 92
156@item 93@item
157Support for 24-bit color on text terminals has been dropped, since 94The predicates @code{display-blink-cursor-p} and
158it wasn't needed long ago. 95@code{display-symbol-keys-p} were deleted. They are rarely if ever
96needed, and can easily be substituted by appropriate calls to old and
97proven APIs like @code{display-graphic-p}. As an additional bonus,
98writing Lisp programs that depend on this functionality will make sure
99the programmer understands better what exactly is the required
100features of the display terminal.
159 101
160@item 102@item
161We removed the function @code{file-name-case-insensitive-p}, as 103Relative directories in the value of the @env{HOME} environment
162testing for the OS symbol should be enough for the observable past to 104variable are once again interpreted relative to the
163come, and learning to use yet another API is a burden. 105@code{default-directory} of the current buffer. This is much simpler,
106and also allows @env{HOME} to resolve to a different place in
107different buffers, which allows some interesting applications.
164 108
165@item 109For the same reasons, @code{file-name-absolute-p} now again considers
166The function @code{read-multiple-choice} is also gone, in recognition 110@file{~foo} an absolute file name, even if there's no known user
167of the fact that nothing makes Emacs Lisp hackers rejoice more than 111@samp{foo}. This means a Lisp program which uses such file names will
168the need to sit down and write yet another interactive 112always work the same on any system, regardless of its known users.
169question-and-answer function, and make it optimal for each specific
170case.
171
172@item
173The function @code{add-variable-watcher} and the corresponding
174debugger command @code{debug-on-variable-change} have been removed.
175They make debugging more complicated, while examining the value of a
176variable at each stop point is easy enough to cover the same use
177cases. Let simplicity rule!
178
179@item
180The function @code{mapcan} is gone; use @code{mapcar} instead, and
181process the resulting list as you see fit.
182
183@item
184Low-level list functions like @code{length} and @code{member} can now
185loop indefinitely when given cyclic lists, causing Emacs to freeze.
186This can help these functions run a tiny bit faster in the usual case
187where the input is not cyclic.
188
189@item
190The @code{write-region} function no longer propagates its
191@var{lockname} argument to file name handlers.
192
193@item
194You can once again write a Lisp program that returns funny random
195values from @code{file-attributes} by having another process alter the
196filesystem while Emacs is accessing the file. This can give rise to
197some interesting applications in the near past.
198
199@item
200The functions @code{file-attributes}, @code{file-symlink-p}, and
201@code{make-symbolic-link} now quietly mutate the target of a local
202symbolic link in some cases, to make it more of a challenge to deal
203with arbitrary symlinks in Emacs code.
204
205@item
206The error @code{file-missing} has been removed; operations now lump
207such errors into the @code{file-error} category instead.
208
209@item
210The function @code{delete-directory} now signals an error if operating
211recursively and some other process deletes the directory before this
212function gets to it.
213
214@item
215The @code{dutch} input method now attempts to support Turkish too,
216albeit incorrectly. Also, it converts @samp{IJ} and @samp{ij} to
217special characters instead of leaving them alone.
218
219@item
220Non-breaking hyphens and approximations to quotes are now displayed
221just with the @code{escape-glyph} face instead of having faces of
222their own. This is simpler and gives the user amusing puzzles to
223solve when viewing text containing these characters.
224 113
225@item 114@item
226The user option @code{electric-quote-context-sensitive} and the 115File-related primitives like @code{file-attributes},
227variable @code{electric-quote-inhibit-functions}, so that electric 116@code{file-modes}, @code{file-newer-than-file-p}, and some others once
228quoting is simpler and more likely to do the wrong thing. 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.
229 122
230@item 123@item
231The user option @code{text-quoting-style} has been removed, and is now 124Similarly, old-style backquotes no longer signal errors; they generate
232just a variable. 125warnings instead. You can remove error handling from programs that
126use backquotes.
233 127
234@item 128@item
235We have removed the functions @code{file-name-quote}, 129Formatting floating-point numbers has been sped up by letting the
236@code{file-name-unquote}, and @code{file-name-quoted-p}. Writing code 130underlying implementation produce unpredictable values, instead of
237that checks whether a file name is already quoted is easy, and doubly 131signaling errors when the number is too large to format correctly. We
238quoting a file name should not produce any problems for well-written 132believe the Emacs Lisp programmers should always know what they are
239Lisp code. 133doing when they deal with floating-point values.
240 134
241@item 135@item
242Frame parameters like @code{z-group}, @code{min-width}, 136The function @code{read-char-from-minibuffer} was deleted. We decided
243@code{parent-frame}, @code{delete-before}, etc. have been removed. 137that @code{read-char} should be enough for any Lisp program that needs
244Emacs should not replace your window-manager, certainly not as 138to ask the user for a single-character input, in recognition of the
245window-managers become less and less capable. 139fact that nothing makes Emacs Lisp hackers rejoice more than the need
140to sit down and write yet another interactive question-and-answer
141function, and make it optimal for each specific case. Consequently,
142no history is provided for such responses (why would someone want
143history of single-key strokes, anyway?).
246 144
247@item 145@item
248We decided that the format of mode line and header line should be 146The function @code{ngettext} was deleted. Non-English languages will
249customizable only based on buffers; the @code{mode-line-format} and 147become less and less widespread, let alone useful, as you move back in
250@code{header-line-format} window parameters have been removed. 148time, so we took this small step in that direction, and simplified
149Emacs as a nice bonus.
251 150
252@item 151@item
253Emacs now normally builds a limited @command{movemail} substitute that 152Focus-change notifications on text-mode frames are no longer
254retrieves POP3 email only via insecure channels, and the 153recognized or supported. You can now safely disregard the possibility
255configure-time option @option{--with-mailutils} has been removed. 154of receiving such notifications on TTY frames. This is one small step
256This simplifies Emacs setup when security is not important. 155on the long road of removing all non-character input events Emacs
156supports on TTY frames.
257 157
258@item 158@item
259The configure-time option @option{--enable-gcc-warnings=warn-only} 159Face specifications in @code{face-remapping-alist} now have to be
260has been removed, so that build-time warnings are always fatal now. 160buffer-specific, without any differences between windows showing the
161same buffers. This allowed us to remove a lot of unneeded code bloat
162from Emacs, and make the face handling much simpler.
261 163
262@item 164@item
263The configure-time option @option{--disable-build-details} has been 165The @samp{%o} and @samp{%x} formats now always produce unsigned
264removed. This way, Emacs builds are unique and irreproducible. 166values, as you'd expect. This allows you to reveal the underlying
167machine representation, which is different on each architecture,
168something we consider a valuable feature.
265 169
266@item 170@item
267The variable @code{emacs-version} now includes the build number 171We no longer highlight in @code{font-lock-warning-face} symbols with
268instead of storing it separately in @code{emacs-build-number}. 172confusable quote characters, such as U+2018. Detecting them
173needed non-trivial amount of code, and we firmly believe that Lisp
174programmers always know what they are doing, and don't need to be
175annoyed with typefaces that stand out and distract.
269 176
270@item 177@item
271Emacs has been ported to IRIX. 178The function @code{file-system-info} was dropped on Posix platforms,
179since you can always invoke @command{df} instead and parse its
180output.
272 181
273@item 182@item
274Several options and variables have been removed to simplify Emacs and 183The functions that implement the @samp{base64url} encoding were
275potentially make it less reliable. These include the 184removed, as they can always be emulated by suitable tweaking of the
276@option{--module-assertions} option, the 185normal base-64 encoding. No need to bloat Emacs and force Lisp
277@code{attempt-stack-overflow-recovery} variable, and the 186programmers learn more interfaces on this account.
278@code{attempt-orderly-shutdown-on-fatal-signal} variable.
279 187
280@item 188@item
281As part of the ongoing quest for simplicity, many other functions and 189As part of the ongoing quest for simplicity, many other functions and
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index c157079bc75..cfd96f7aa68 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -233,7 +233,7 @@ To view this manual in other formats, click
233 233
234Appendices 234Appendices
235 235
236* Antinews:: Info for users downgrading to Emacs 25. 236* Antinews:: Info for users downgrading to Emacs 26.
237* GNU Free Documentation License:: The license for this documentation. 237* GNU Free Documentation License:: The license for this documentation.
238* GPL:: Conditions for copying and changing GNU Emacs. 238* GPL:: Conditions for copying and changing GNU Emacs.
239* Tips:: Advice and coding conventions for Emacs Lisp. 239* Tips:: Advice and coding conventions for Emacs Lisp.
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 8e3e6aefb00..5cf67ba6473 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -576,8 +576,9 @@ naming conventions, which are being phased out.
576@cindex defining a function 576@cindex defining a function
577 577
578 We usually give a name to a function when it is first created. This 578 We usually give a name to a function when it is first created. This
579is called @dfn{defining a function}, and it is done with the 579is called @dfn{defining a function}, and we usually do it with the
580@code{defun} macro. 580@code{defun} macro. This section also describes other ways to define
581a function.
581 582
582@defmac defun name args [doc] [declare] [interactive] body@dots{} 583@defmac defun name args [doc] [declare] [interactive] body@dots{}
583@code{defun} is the usual way to define new Lisp functions. It 584@code{defun} is the usual way to define new Lisp functions. It
@@ -682,95 +683,8 @@ definition will have no effect on them.
682and tells the Lisp compiler to perform inline expansion on it. 683and tells the Lisp compiler to perform inline expansion on it.
683@xref{Inline Functions}. 684@xref{Inline Functions}.
684 685
685 Alternatively, you can define a function by providing the code which 686 To undefine a function name, use @code{fmakunbound}.
686will inline it as a compiler macro. The following macros make this 687@xref{Function Cells}.
687possible.
688
689@c FIXME: Can define-inline use the interactive spec?
690@defmac define-inline name args [doc] [declare] body@dots{}
691Define a function @var{name} by providing code that does its inlining,
692as a compiler macro. The function will accept the argument list
693@var{args} and will have the specified @var{body}.
694
695If present, @var{doc} should be the function's documentation string
696(@pxref{Function Documentation}); @var{declare}, if present, should be
697a @code{declare} form (@pxref{Declare Form}) specifying the function's
698metadata.
699@end defmac
700
701Functions defined via @code{define-inline} have several advantages
702with respect to macros defined by @code{defsubst} or @code{defmacro}:
703
704@itemize @minus
705@item
706They can be passed to @code{mapcar} (@pxref{Mapping Functions}).
707
708@item
709They are more efficient.
710
711@item
712They can be used as @dfn{place forms} to store values
713(@pxref{Generalized Variables}).
714
715@item
716They behave in a more predictable way than @code{cl-defsubst}
717(@pxref{Argument Lists,,, cl, Common Lisp Extensions for GNU Emacs
718Lisp}).
719@end itemize
720
721Like @code{defmacro}, a function inlined with @code{define-inline}
722inherits the scoping rules, either dynamic or lexical, from the call
723site. @xref{Variable Scoping}.
724
725The following macros should be used in the body of a function defined
726by @code{define-inline}.
727
728@defmac inline-quote expression
729Quote @var{expression} for @code{define-inline}. This is similar to
730the backquote (@pxref{Backquote}), but quotes code and accepts only
731@code{,}, not @code{,@@}.
732@end defmac
733
734@defmac inline-letevals (bindings@dots{}) body@dots{}
735This is similar to @code{let} (@pxref{Local Variables}): it sets up
736local variables as specified by @var{bindings}, and then evaluates
737@var{body} with those bindings in effect. Each element of
738@var{bindings} should be either a symbol or a list of the form
739@w{@code{(@var{var} @var{expr})}}; the result is to evaluate
740@var{expr} and bind @var{var} to the result. The tail of
741@var{bindings} can be either @code{nil} or a symbol which should hold
742a list of arguments, in which case each argument is evaluated, and the
743symbol is bound to the resulting list.
744@end defmac
745
746@defmac inline-const-p expression
747Return non-@code{nil} if the value of @var{expression} is already
748known.
749@end defmac
750
751@defmac inline-const-val expression
752Return the value of @var{expression}.
753@end defmac
754
755@defmac inline-error format &rest args
756Signal an error, formatting @var{args} according to @var{format}.
757@end defmac
758
759Here's an example of using @code{define-inline}:
760
761@lisp
762(define-inline myaccessor (obj)
763 (inline-letevals (obj)
764 (inline-quote (if (foo-p ,obj) (aref (cdr ,obj) 3) (aref ,obj 2)))))
765@end lisp
766
767@noindent
768This is equivalent to
769
770@lisp
771(defsubst myaccessor (obj)
772 (if (foo-p obj) (aref (cdr obj) 3) (aref obj 2)))
773@end lisp
774 688
775@node Calling Functions 689@node Calling Functions
776@section Calling Functions 690@section Calling Functions
@@ -2155,8 +2069,12 @@ this:
2155 An @dfn{inline function} is a function that works just like an 2069 An @dfn{inline function} is a function that works just like an
2156ordinary function, except for one thing: when you byte-compile a call 2070ordinary function, except for one thing: when you byte-compile a call
2157to the function (@pxref{Byte Compilation}), the function's definition 2071to the function (@pxref{Byte Compilation}), the function's definition
2158is expanded into the caller. To define an inline function, use 2072is expanded into the caller.
2159@code{defsubst} instead of @code{defun}. 2073
2074 The simple way to define an inline function, is to write
2075@code{defsubst} instead of @code{defun}. The rest of the definition
2076looks just the same, but using @code{defsubst} says to make it inline
2077for byte compilation.
2160 2078
2161@defmac defsubst name args [doc] [declare] [interactive] body@dots{} 2079@defmac defsubst name args [doc] [declare] [interactive] body@dots{}
2162This macro defines an inline function. Its syntax is exactly the same 2080This macro defines an inline function. Its syntax is exactly the same
@@ -2194,9 +2112,95 @@ argument of an inline function is evaluated exactly once, you needn't
2194worry about how many times the body uses the arguments, as you do for 2112worry about how many times the body uses the arguments, as you do for
2195macros. 2113macros.
2196 2114
2197 As an alternative to @code{defsubst}, you can use 2115 Alternatively, you can define a function by providing the code which
2198@code{define-inline} to define functions via their exhaustive compiler 2116will inline it as a compiler macro. The following macros make this
2199macro. @xref{Defining Functions, define-inline}. 2117possible.
2118
2119@c FIXME: Can define-inline use the interactive spec?
2120@defmac define-inline name args [doc] [declare] body@dots{}
2121Define a function @var{name} by providing code that does its inlining,
2122as a compiler macro. The function will accept the argument list
2123@var{args} and will have the specified @var{body}.
2124
2125If present, @var{doc} should be the function's documentation string
2126(@pxref{Function Documentation}); @var{declare}, if present, should be
2127a @code{declare} form (@pxref{Declare Form}) specifying the function's
2128metadata.
2129@end defmac
2130
2131Functions defined via @code{define-inline} have several advantages
2132with respect to macros defined by @code{defsubst} or @code{defmacro}:
2133
2134@itemize @minus
2135@item
2136They can be passed to @code{mapcar} (@pxref{Mapping Functions}).
2137
2138@item
2139They are more efficient.
2140
2141@item
2142They can be used as @dfn{place forms} to store values
2143(@pxref{Generalized Variables}).
2144
2145@item
2146They behave in a more predictable way than @code{cl-defsubst}
2147(@pxref{Argument Lists,,, cl, Common Lisp Extensions for GNU Emacs
2148Lisp}).
2149@end itemize
2150
2151Like @code{defmacro}, a function inlined with @code{define-inline}
2152inherits the scoping rules, either dynamic or lexical, from the call
2153site. @xref{Variable Scoping}.
2154
2155The following macros should be used in the body of a function defined
2156by @code{define-inline}.
2157
2158@defmac inline-quote expression
2159Quote @var{expression} for @code{define-inline}. This is similar to
2160the backquote (@pxref{Backquote}), but quotes code and accepts only
2161@code{,}, not @code{,@@}.
2162@end defmac
2163
2164@defmac inline-letevals (bindings@dots{}) body@dots{}
2165This is similar to @code{let} (@pxref{Local Variables}): it sets up
2166local variables as specified by @var{bindings}, and then evaluates
2167@var{body} with those bindings in effect. Each element of
2168@var{bindings} should be either a symbol or a list of the form
2169@w{@code{(@var{var} @var{expr})}}; the result is to evaluate
2170@var{expr} and bind @var{var} to the result. The tail of
2171@var{bindings} can be either @code{nil} or a symbol which should hold
2172a list of arguments, in which case each argument is evaluated, and the
2173symbol is bound to the resulting list.
2174@end defmac
2175
2176@defmac inline-const-p expression
2177Return non-@code{nil} if the value of @var{expression} is already
2178known.
2179@end defmac
2180
2181@defmac inline-const-val expression
2182Return the value of @var{expression}.
2183@end defmac
2184
2185@defmac inline-error format &rest args
2186Signal an error, formatting @var{args} according to @var{format}.
2187@end defmac
2188
2189Here's an example of using @code{define-inline}:
2190
2191@lisp
2192(define-inline myaccessor (obj)
2193 (inline-letevals (obj)
2194 (inline-quote (if (foo-p ,obj) (aref (cdr ,obj) 3) (aref ,obj 2)))))
2195@end lisp
2196
2197@noindent
2198This is equivalent to
2199
2200@lisp
2201(defsubst myaccessor (obj)
2202 (if (foo-p obj) (aref (cdr obj) 3) (aref obj 2)))
2203@end lisp
2200 2204
2201@node Declare Form 2205@node Declare Form
2202@section The @code{declare} Form 2206@section The @code{declare} Form
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 7354eb1b9f8..b52871ef70b 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -135,13 +135,26 @@ non-@code{nil} value, it returns that value; otherwise it returns
135@node Setting Hooks 135@node Setting Hooks
136@subsection Setting Hooks 136@subsection Setting Hooks
137 137
138 Here's an example that uses a mode hook to turn on Auto Fill mode when 138 Here's an example that adds a funtion to a mode hook to turn
139in Lisp Interaction mode: 139on Auto Fill mode when in Lisp Interaction mode:
140 140
141@example 141@example
142(add-hook 'lisp-interaction-mode-hook 'auto-fill-mode) 142(add-hook 'lisp-interaction-mode-hook 'auto-fill-mode)
143@end example 143@end example
144 144
145 The value of a hook variable should be a list of functions. You can
146manipulate that list using the normal Lisp facilities, but the modular
147way is to use the functions @code{add-hook} and @code{remove-hook},
148defined below. They take care to handle some unusual situations and
149avoid problems.
150
151 It works to put a @code{lambda}-expression function on a hook, but
152we recommend avoiding this because it can lead to confusion. If you
153add the same @code{lambda}-expression a second time but write it
154slightly differently, you will get two equivalent but distinct
155functions on the hook. If you then remove one of them, the other will
156still be on it.
157
145@defun add-hook hook function &optional depth local 158@defun add-hook hook function &optional depth local
146This function is the handy way to add function @var{function} to hook 159This function is the handy way to add function @var{function} to hook
147variable @var{hook}. You can use it for abnormal hooks as well as for 160variable @var{hook}. You can use it for abnormal hooks as well as for
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index 6d4a6119afa..43805bb0ac6 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -1687,7 +1687,7 @@ If non-nil, the default, buffers opened during pdbtracking session are
1687killed when pdbtracking session is finished. 1687killed when pdbtracking session is finished.
1688 1688
1689--- 1689---
1690*** New function 'python-shell-send-region'. 1690*** New function 'python-shell-send-statement.
1691It sends the statement delimited by 'python-nav-beginning-of-statement' 1691It sends the statement delimited by 'python-nav-beginning-of-statement'
1692and 'python-nav-end-of-statement' to the inferior Python process. 1692and 'python-nav-end-of-statement' to the inferior Python process.
1693 1693
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index d299c5bf5d3..b519559330e 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -2288,7 +2288,7 @@ the United States."
2288 (calc-alg-digit-entry) 2288 (calc-alg-digit-entry)
2289 (setq calc-aborted-prefix nil) 2289 (setq calc-aborted-prefix nil)
2290 (let* ((calc-digit-value nil) 2290 (let* ((calc-digit-value nil)
2291 (calc-prev-char nil) 2291 (calc-prev-char last-command-event)
2292 (calc-prev-prev-char nil) 2292 (calc-prev-prev-char nil)
2293 (calc-buffer (current-buffer)) 2293 (calc-buffer (current-buffer))
2294 (buf 2294 (buf
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 79c235783d3..d3d17fda7ad 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -3035,17 +3035,18 @@ Update the widget to show that value. The value that was current
3035before this operation becomes the backup value." 3035before this operation becomes the backup value."
3036 (let* ((symbol (widget-value widget)) 3036 (let* ((symbol (widget-value widget))
3037 (saved-value (get symbol 'saved-value)) 3037 (saved-value (get symbol 'saved-value))
3038 (comment (get symbol 'saved-variable-comment))) 3038 (comment (get symbol 'saved-variable-comment))
3039 value)
3039 (custom-variable-backup-value widget) 3040 (custom-variable-backup-value widget)
3040 (if (not (or saved-value comment)) 3041 (if (not (or saved-value comment))
3041 ;; If there is no saved value, remove the setting. 3042 ;; If there is no saved value, remove the setting.
3042 (custom-push-theme 'theme-value symbol 'user 'reset) 3043 (custom-push-theme 'theme-value symbol 'user 'reset)
3043 ;; Otherwise, apply the saved value. 3044 (setq value (car-safe saved-value))
3044 (put symbol 'variable-comment comment) 3045 (custom-push-theme 'theme-value symbol 'user 'set value)
3045 (custom-push-theme 'theme-value symbol 'user 'set (car-safe saved-value)) 3046 (put symbol 'variable-comment comment))
3046 (ignore-errors 3047 (ignore-errors
3047 (funcall (or (get symbol 'custom-set) 'set-default) 3048 (funcall (or (get symbol 'custom-set) #'set-default) symbol
3048 symbol (eval (car saved-value))))) 3049 (eval (or value (car (get symbol 'standard-value))))))
3049 (put symbol 'customized-value nil) 3050 (put symbol 'customized-value nil)
3050 (put symbol 'customized-variable-comment nil) 3051 (put symbol 'customized-variable-comment nil)
3051 (widget-put widget :custom-state 'unknown) 3052 (widget-put widget :custom-state 'unknown)
@@ -4295,6 +4296,7 @@ This works for both graphical and text displays."
4295 (widget-put widget :children children) 4296 (widget-put widget :children children)
4296 (custom-group-state-update widget)) 4297 (custom-group-state-update widget))
4297 ;; End line 4298 ;; End line
4299 (insert "\n")
4298 (custom-group--draw-horizontal-line))))) 4300 (custom-group--draw-horizontal-line)))))
4299 4301
4300(defvar custom-group-menu 4302(defvar custom-group-menu
diff --git a/lisp/custom.el b/lisp/custom.el
index 037f6c5b1d5..885c486c5e4 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1381,7 +1381,7 @@ function runs. To disable other themes, use `disable-theme'."
1381 (custom-theme-recalc-variable symbol))))))) 1381 (custom-theme-recalc-variable symbol)))))))
1382 (unless (eq theme 'user) 1382 (unless (eq theme 'user)
1383 (setq custom-enabled-themes 1383 (setq custom-enabled-themes
1384 (cons theme (delq theme custom-enabled-themes))) 1384 (cons theme (remq theme custom-enabled-themes)))
1385 ;; Give the `user' theme the highest priority. 1385 ;; Give the `user' theme the highest priority.
1386 (enable-theme 'user))) 1386 (enable-theme 'user)))
1387 1387
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index e7e8cbf6e0a..a1a67e2330a 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -448,13 +448,14 @@ Usually run by inclusion in `minibuffer-setup-hook'."
448 with end = (icomplete--field-end) 448 with end = (icomplete--field-end)
449 with all = (completion-all-sorted-completions beg end) 449 with all = (completion-all-sorted-completions beg end)
450 for fn in (cond ((and minibuffer-default 450 for fn in (cond ((and minibuffer-default
451 (stringp minibuffer-default) ; bug#38992
451 (= (icomplete--field-end) (icomplete--field-beg))) 452 (= (icomplete--field-end) (icomplete--field-beg)))
452 ;; When we have a non-nil default and no input 453 ;; When we have a non-nil string default and
453 ;; whatsoever: we want to make sure that default 454 ;; no input whatsoever: we want to make sure
454 ;; is bubbled to the top so that 455 ;; that default is bubbled to the top so that
455 ;; `icomplete-force-complete-and-exit' will 456 ;; `icomplete-force-complete-and-exit' will
456 ;; select it (do that even if the match doesn't 457 ;; select it (do that even if the match
457 ;; match the completion perfectly. 458 ;; doesn't match the completion perfectly.
458 `(,(lambda (comp) 459 `(,(lambda (comp)
459 (equal minibuffer-default comp)) 460 (equal minibuffer-default comp))
460 ,(lambda (comp) 461 ,(lambda (comp)
@@ -462,6 +463,12 @@ Usually run by inclusion in `minibuffer-setup-hook'."
462 ((and fido-mode 463 ((and fido-mode
463 (not minibuffer-default) 464 (not minibuffer-default)
464 (eq (icomplete--category) 'file)) 465 (eq (icomplete--category) 'file))
466 ;; `fido-mode' has some extra file-sorting
467 ;; semantics even if there isn't a default,
468 ;; which is to bubble "./" to the top if it
469 ;; exists. This makes M-x dired RET RET go to
470 ;; the directory of current file, which is
471 ;; what vanilla Emacs and `ido-mode' both do.
465 `(,(lambda (comp) 472 `(,(lambda (comp)
466 (string= "./" comp))))) 473 (string= "./" comp)))))
467 thereis (cl-loop 474 thereis (cl-loop
diff --git a/lisp/progmodes/flymake-proc.el b/lisp/progmodes/flymake-proc.el
index e2d9408e20a..62f6d1aaea2 100644
--- a/lisp/progmodes/flymake-proc.el
+++ b/lisp/progmodes/flymake-proc.el
@@ -851,7 +851,7 @@ can also be executed interactively independently of
851 (interactive (list "Interrupted by user")) 851 (interactive (list "Interrupted by user"))
852 (dolist (buf (buffer-list)) 852 (dolist (buf (buffer-list))
853 (with-current-buffer buf 853 (with-current-buffer buf
854 (let (p flymake-proc--current-process) 854 (let ((p flymake-proc--current-process))
855 (when (process-live-p p) 855 (when (process-live-p p)
856 (kill-process p) 856 (kill-process p)
857 (process-put p 'flymake-proc--interrupted reason) 857 (process-put p 'flymake-proc--interrupted reason)
diff --git a/src/nsfns.m b/src/nsfns.m
index f2857c022ee..42bd88eeb47 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -499,11 +499,11 @@ ns_set_represented_filename (struct frame *f)
499#if defined (NS_IMPL_COCOA) && defined (MAC_OS_X_VERSION_10_7) 499#if defined (NS_IMPL_COCOA) && defined (MAC_OS_X_VERSION_10_7)
500 /* Work around for Mach port leaks on macOS 10.15 (bug#38618). */ 500 /* Work around for Mach port leaks on macOS 10.15 (bug#38618). */
501 NSURL *fileURL = [NSURL fileURLWithPath:fstr isDirectory:NO]; 501 NSURL *fileURL = [NSURL fileURLWithPath:fstr isDirectory:NO];
502 BOOL isUbiquitousItem = YES; 502 NSNumber *isUbiquitousItem = @YES;
503 [fileURL getResourceValue:(id *)&isUbiquitousItem 503 [fileURL getResourceValue:(id *)&isUbiquitousItem
504 forKey:NSURLIsUbiquitousItemKey 504 forKey:NSURLIsUbiquitousItemKey
505 error:nil]; 505 error:nil];
506 if (isUbiquitousItem) 506 if ([isUbiquitousItem boolValue])
507 fstr = @""; 507 fstr = @"";
508#endif 508#endif
509 509