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