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