1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-06 03:40:56 -08:00

Merge from savannah/emacs-30

c4ec905c9a Correct ommissions in rmc.el
bf862fc277 * lisp/hi-lock.el: More fixes related to revert-buffer.
6cc8ffae9a Update to Org 9.7.5-9-ga091ca
c477443ab8 ; Fix typo in lua-ts-mode.el
6e5e4d6193 ; Add 'eglot-ensure' option to 'lua-ts-mode-hook'
58a2f36a8b ; * etc/NEWS: Copy edit.
df53ef176a Merge branch 'emacs-30' of git.savannah.gnu.org:/srv/git/...
039e6ffd86 Write Antinews for Emacs 30 ELisp Reference
bf8c9f702b (eval-last-sexp): Fix bug#71774
6d94090cad * lisp/hi-lock.el: More fixes for revert-buffer (bug#57534)
280c91782a * lisp/hi-lock.el (hi-lock-revert-buffer-rehighlight): Im...
339310d020 * lisp/tab-bar.el (tab-bar-select-restore-windows): Impro...
c1e7569a92 Write Antinews for Emacs 30 user manual
233f683da8 ; * lisp/erc/erc-backend.el (erc-server-reconnect-timeout...

# Conflicts:
#	etc/NEWS
This commit is contained in:
Po Lu 2024-06-28 14:46:58 +08:00
commit 48f9dde133
25 changed files with 245 additions and 299 deletions

View file

@ -4,155 +4,133 @@
@c See file emacs.texi for copying conditions. @c See file emacs.texi for copying conditions.
@node Antinews @node Antinews
@appendix Emacs 28 Antinews @appendix Emacs 29 Antinews
@c Update the emacs.texi Antinews menu entry with the above version number. @c Update the emacs.texi Antinews menu entry with the above version number.
For those users who live backwards in time, here is information For those users who live backwards in time, here is information
about downgrading to Emacs version 28.2. We hope you will enjoy the about downgrading to Emacs version 29.4. We hope you will enjoy the
greater simplicity that results from the absence of many @w{Emacs greater simplicity that results from the absence of many @w{Emacs
@value{EMACSVER}} features. @value{EMACSVER}} features.
@itemize @bullet @itemize @bullet
@item @item
Like its newer releases, Emacs 28 can still be built with support of Emacs can no longer be built for Android mobile devices. We have
removed the Android support because it was deemed unnecessary, what with
the screens of the mobile devices becoming smaller and smaller as you
move back in time. We expect Android users to enjoy the much simpler
text editors available on their devices. As a nice bonus, removing
Android support allowed us to get rid of gobs of related files, thus
making the release tarballs much leaner.
@item
We have deleted much of the enhanced support for touchscreen devices,
for the same reason we dropped Android: there will be no need for that
as you move back in time.
@item
We also dropped support for sophisticated input methods that include
text conversions, again because those are mostly needed on mobile and
hand-held devices, which we gradually remove from Emacs in each past
version.
@item
Like its newer releases, Emacs 29 can still be built with support of
native compilation of Lisp programs. However, in preparation for native compilation of Lisp programs. However, in preparation for
removal of this feature in some previous version, we've deleted the removal of this feature in some previous version, we've made the native
capability of ahead-of-time native compilation of all the Lisp files compiler support off by default; you will now have to request it
that come with Emacs. This makes the Emacs build process much faster. explicitly at configure time. This makes the default Emacs build
process much faster.
@item @item
Emacs can no longer be built with the tree-sitter library, so you no JSON interfaces are slowly move into oblivion as past years come closer,
longer will need to look for and install the grammar libraries for so we have removed our internal implementation of JSON; you will now
the languages in which you want to program. Similarly, all the modes need to build Emacs with the libjansson library, if you need JSON.
that are based on the tree-sitter library were deleted, leaving you Eventually, we plan on removing JSON support from Emacs altogether; this
with just one major mode for every supported programming language: no move will make the removal much simpler.
more need to decide whether to turn the tree-sitter supported modes on
and try using their parser-based fontification, indentation, and other
features. For some languages and file types, this means no major mode
at all, leaving you with the venerable Fundamental mode as the
natural, high-performance choice. For example, Go, Rust, and CMake
files no longer have any major modes for editing their files ---
another milestone towards a simpler, leaner Emacs.
@item @item
Built-in support for accessing SQLite databases was removed. You can Tree-sitter based modes are now completely independent of their
now again edit SQLite files as simple binary files, which Emacs is non-Tree-Sitter counterparts. We decided that keeping the settings
quite capable to support, as it always did. separate and independent goes a long way toward simplicity, which is one
of our main motivation for removing stuff from Emacs.
@item @item
As a gesture to users of the Haiku operating system, we've dropped the Various Help commands no longer turn on Outline minor mode. With less
code which allowed Emacs to be built on that OS@. We expect Haiku material to display in the *Help* buffers, due to removing of excess
users to enjoy the much simpler editors they have for editing their documentation from Emacs, we think using outlining is an unnecessary
files. complication, as scrolling through plain text is so much simpler.
For the same reasons, Emacs no longer shows Unicode names of characters
in *Help* buffers shown by @code{describe-bindings}.
@item @item
Support for XInput2 input events on X is gone. We think the To make Emacs configuration simpler and easier to control, the tool bar
traditional X input events are more than enough, certainly so as you can now be displayed only in its natural and logical position: on the
move back in time, where XInput2 will eventually be removed from X as top of the frame; no more of that @code{tool-bar-position} nonsense with
well, once the maintainers of the X Windows system realize the utter tool bars on the bottom. For the same reasons @code{modifier-bar-mode}
futility of supporting fancy input mechanisms. is now gone.
@item @item
The ``pure GTK'' (a.k.a.@: @acronym{PGTK}) configuration of Emacs is The command @code{recover-file} no longer allows to display the diffs
no longer supported. This is in anticipation of the complete removal between a file and its auto-save file. You either want to recover a
of the GTK toolkit support from Emacs, and in accordance with our file or you don't; confusing users with a third alternative when they
expectation that GTK will cease to exist as you move back in time. We are anxious already by the possibility of losing precious edits is
plan on removing support for all the other toolkits as well, leaving considered a bad idea, certainly so as we move further towards smaller,
only the pure X build with our own widgets as the single supported GUI simpler Emacs.
configuration on X.
@item @item
The @option{--init-directory} command-line option was removed, as Several languages and input methods, which will fall in disuse as you
initializing Emacs with init files of another user is a preposterous move back in time, were removed. This includes Urdu, Pashto, and Sindhi
idea anyway. languages, and the input method for the Colemak keyboard layout. Many
@kbd{C-x 8} key sequences, including those which insert various
quotation characters and guillemets, were deleted for the same reason.
@item @item
In line with simplifying and eventually removing the The support for @code{lzip}-compressed Info manuals was removed from the
native-compilation option, we've deleted the Info mode. We anticipate that @command{lzip} will disappear from the
@option{--with-native-compilation=aot} configure-time option. This face of the Earth in the near past, and are preparing Emacs for that in
greatly simplifies how native compilation works and makes your advance.
configure-time decision regarding native compilation in Emacs
clear-cut: either Emacs compiles non-preloaded Lisp packages to native
code only before using it, or it never uses native compilation at all;
no more half measures and special exceptions. For similar reasons,
@code{native-compile-prune-cache} and
@code{startup-redirect-eln-cache} features are no longer part of
Emacs.
@item @item
We've deleted the special code and features which allowed Emacs to Support for LLDB in Grand Unified Debugger mode was dropped. We decided
present decent performance and responsiveness when editing files with that given LLDB's diminishing popularity, its support is just code
very long lines. Such files become more and more rare as time goes bloat.
back, and so having all this tricky code in Emacs for their benefit
was deemed an unnecessary complication.
@item @item
Emacs dropped support for Eglot and the LSP servers. We decided that Several fancy Project and VC commands were deleted, as part of our
the built-in ways of analyzing source code are more than enough as you consistent effort of making Emacs simpler to use.
move back in time.
@item @item
Commands to scale and rotate images are once again bound to single The user option @code{shell-command-guess-functions} and the context
keys like @kbd{+}, @kbd{-}, and @kbd{r}, which makes them much easier menu @samp{Open With} in Dired are gone. We trust Emacs users to always
to type. As for the risk of typing these by mistake, we don't believe know themselves which shell command is the appropriate one for a given
Emacs users make typing mistakes, especially as they move back in file, so no guessing by Dired is needed, or welcome. The
time and become younger and younger. @code{dired-do-open} command was deleted for the same reasons.
@item @item
To simplify typing popular commands, we've rebound the @w{@kbd{C-x 8 . .}} We went back to the original lean-and-mean interface for specifying
back to @w{@kbd{C-x 8 .}} and @w{@kbd{C-x 8 = =}} back to @w{@kbd{C-x 8 =}}. registers for register-related commands. The fancy preview and the
There's no need for fancier, longer key sequences, as moving back in options to go with it were deemed gratuitous and were removed.
time means we will have fewer and fewer commands to bind to them in
the first place.
@item @item
If you inadvertently kill the @file{*scratch*} buffer, Emacs will Eshell is now much smaller and easier to use, due to dropping quite a
recreate it in Fundamental mode, not in Lisp Interaction mode. You few of the new commands and fancy new options.
get to turn on the mode you like yourself. Our long-term plans for
past Emacs releases is to remove the recreation of @file{*scratch*}
altogether, and this is the first step in that direction.
@item @item
Support for @code{rlogin} and @code{rsh} protocols are back, since we The command @code{customize-dirlocals} was removed. Editing the
expect them to become more and more important and popular as you move @file{.dir-locals.el} files as plain text is so much simpler, and quite
back in time. enough.
@item @item
In preparation for eventual removal of Unicode support from Emacs, We have removed several packages that we consider unnecessary for the
we've downgraded our Unicode support to version 14.0. past of Emacs. This includes EditorConfig support, @samp{which-key},
PEG, and Window-Tool-Bar.
@item @item
You can no longer change the size of the font globally. Since Emacs The @code{etags-regen-mode} was deleted. Regeneration of @file{TAGS}
will at some past date remove all support for variable-size fonts, tables manually is all Emacs users will need in the past.
having such commands is a luxury we are better without.
@item
On our permanent quest for simplifying Emacs, we've removed the
commands @code{duplicate-line} and @code{duplicate-dwim}; the old-time
friends @kbd{M-w} and @kbd{C-y} (typed one or more times) should
suffice. The command @code{rename-visited-file} is gone for the same
reason.
@item
We've deleted many commands related to Emoji, which were bound in the
@kbd{C-x 8 e} prefix keymap. We decided that the ability to type
Emoji sequences using @kbd{C-x 8 @key{RET}} is enough, and actually
serves our users better by requiring them to know the codepoints of
the sequences they want to type.
@item
We dropped support for many scripts and input methods, especially old
scripts that no one uses anyway. For similar reasons, Greek and
Ukrainian translations of the Emacs tutorial are not available
anymore.
@item
@file{package.el} can no longer fetch source code of packages from
their VCS repositories. We think command-line tools like Git should
be enough to allow you to clone their repositories. So we deleted
the @code{package-vc-install} command and other similar commands.
@item @item
To keep up with decreasing computer memory capacity and disk space, many To keep up with decreasing computer memory capacity and disk space, many
other functions and files have been eliminated in Emacs 28.2. other functions and files have been eliminated in Emacs 29.4.
@end itemize @end itemize

View file

@ -220,7 +220,7 @@ Appendices
* GNU Free Documentation License:: The license for this documentation. * GNU Free Documentation License:: The license for this documentation.
* Emacs Invocation:: Hairy startup options. * Emacs Invocation:: Hairy startup options.
* X Resources:: X resources for customizing Emacs. * X Resources:: X resources for customizing Emacs.
* Antinews:: Information about Emacs version 28. * Antinews:: Information about Emacs version 29.
* Mac OS / GNUstep:: Using Emacs under macOS and GNUstep. * Mac OS / GNUstep:: Using Emacs under macOS and GNUstep.
* Haiku:: Using Emacs on Haiku. * Haiku:: Using Emacs on Haiku.
* Android:: Using Emacs on Android. * Android:: Using Emacs on Android.

View file

@ -6,178 +6,113 @@
@c This node must have no pointers. @c This node must have no pointers.
@node Antinews @node Antinews
@appendix Emacs 28 Antinews @appendix Emacs 29 Antinews
@c Update the elisp.texi Antinews menu entry with the above version number. @c Update the elisp.texi Antinews menu entry with the above version number.
For those users who live backwards in time, here is information about For those users who live backwards in time, here is information about
downgrading to Emacs version 28.2. We hope you will enjoy the greater downgrading to Emacs version 29.4. We hope you will enjoy the greater
simplicity that results from the absence of many @w{Emacs simplicity that results from the absence of many @w{Emacs
@value{EMACSVER}} features. @value{EMACSVER}} features.
@itemize @bullet @itemize @bullet
@item @item
The implementation of overlays is back to its simple, time-proven Mouse wheel events once again follow the platform and window-system
storage in a pair of linear linked lists centered around some buffer conventions: sometimes they are @code{wheel-up/down} and sometimes
position. No more fancy interval trees and suchlikes. Lisp programs @code{mouse-4/5/6/7}. Lisp programs which use these should once again
that use overlays once again need to recenter overlays around the be aware of the conventions in effect and behave accordingly.
buffer position of interest, and display-related features should again
make sure they don't use too many overlays in a buffer, lest redisplay
will be too slow.
@item @item
Several functions stopped the annoying conversion of quotes and key The command @code{describe-function} no longer distracts you by showing
sequences by no longer calling @code{substitute-command-keys}. One unnecessary details like the type of the function's object. Emacs
prominent example is @code{format-prompt} and all its many callers. hackers always know whether a function is a primitive, a native-compiled
This makes the strings they produce much more predictable, returning Lisp function, or any other kind. Stating the obvious simply wastes the
to you, the Lisp programmer, control on which punctuation characters precious screen estate; as you move into the past, and the typical
will appear in the text presented to the users. For similar reasons, dimensions of the screen become smaller, that waste is less and less
the @code{substitute-quotes} function was deleted. justified. So we made the waste smaller.
@item @item
The venerable @code{buffer-modified-p} function again reliably returns The support for styled underline in face attribute was dropped. The
either @code{nil} or @code{t}, not any other confusing values. simple underline should be enough; anything else is just code bloat and
creeping featurism. Colorful underlines on TTY frames are no longer
supported for the same reason.
@item @item
The support for @samp{medium} weight of fonts was dropped. Emacs now IELM stopped recording its input history. You will no longer be annoyed
considers @samp{medium} and @samp{regular} weights to be the same. We by inputs from your past sessions; each session starts with a clean
believe this will simplify your font setup, since there's no longer a slate. What can be simpler and easier to remember?
need to worry about fonts that support @samp{regular} weight, but not
the @samp{medium} one, or vice versa: either one will do!
@item @item
To reduce the amount of code in Emacs related to unimportant features, You can no longer disable JavaScript in xwidget Webkit sessions. Since
we've removed the function @code{compiled-function-p}. Lisp programs xwidgets are going away in one of the previous Emacs versions, we
are expected to test explicitly for the relevant types of function decided to make this one step in that direction and get rid of this
objects: built-in, byte-compiled, and natively-compiled. For the same complication.
reasons we deleted the functions @code{pos-bol}, @code{pos-eol},
@code{file-attribute-file-identifier}, and quite a few others. We
don't expect anyone to miss those fancy functions.
@item @item
The timeout used by @code{x-show-tip} can no longer be specified by The @code{minibuffer-regexp-mode} was removed. Regular expressions are
Lisp programs; it is hard-coded in the function. This will lead to a just strings, so no fancy mode should be needed for editing them.
simpler, easier maintained code, and no one should want to control the
timeout after which the tip pops down.
@item @item
The macro @code{setopt} was deleted; use @code{customize-variable} We removed the Compat package. Forward compatibility for ELPA packages
instead, or invoke the @code{:set} function from Lisp. becomes less and less important as you move back through time, and soon
enough ELPA will disappear entirely. We decided it was prudent to start
preparing for that now.
@item @item
We removed the @code{lisp-directory} variable, as the value can be We are back to interpreting @code{\x} without any following hex digits
easily deduced from other similar variables, like as character code zero (@acronym{NUL}), as it always was in Emacs. The
@code{installation-directory} and @code{source-directory}, each one savings in typing due to this alone are enough to justify this
when it's relevant. simplification.
@item @item
To simplify code and reduce complexity, we deleted the functions To keep Emacs clean and elegant, we've removed the ability to show
@code{get-display-property} and @code{add-display-text-property}; use tooltips for fringe bitmaps. What important information cam be shown on
the generic @code{get-text-property} and @code{put-text-property} the fringes, and why would it require tooltips to explain its purpose?
instead. We decided it isn't justified to keep this in past versions of Emacs.
@item @item
Support for pinch input events and for modern drag-and-drop Fancy sorting-related facilities, like the @code{value<} function and
functionality on X was dropped. As you move back in time, these keyword arguments for @code{sort}, were deleted as too complex. The
facilities will become less and less important, and will soon enough basic @code{sort} function should all that's needed in the years to go.
disappear, so there's no reason to keep them in Emacs.
@item @item
To keep Emacs clean and elegant, we've removed the @file{textsec.el} Features related to the inheritance graph of major modes were deemed
library, with its facilities for checking whether some text is unnecessary and thus were dropped. This includes
``suspicious''. We consider our users smart enough to detect @code{provided-mode-derived-p}, @code{derived-mode-add-parents}, and
maliciously modified text by just looking at it or by moving the others. We decided that untangling the mode inheritance relationships
cursor across it, and the whole idea that someone would wish to by hand facilitates more clear code and makes the intent evident.
deliberately deceive Emacs users ridiculous and unworthy of
complicating our elegant text-processing and display capabilities.
@item @item
The functions @code{keymap-set}, @code{keymap-global-set}, We removed unnecessary functionality for handling touch screen events,
@code{keymap-local-set}, @code{keymap-substitute}, as touch screens gradually disappear from view as you move back in time.
@code{keymap-lookup}, and some others were deleted. We have found the There's no need to keep obsolete these new inventions in the past.
traditional @code{define-key}, @code{global-set-key},
@code{local-set-key}, @code{substitute-key-definition}, and
@code{key-binding} more than enough, and their minor inconsistencies
in the syntax of keys they accept a source of endless fun in Emacs
Lisp programming. Why make Emacs programming a dull place? For the
same reasons we deleted @code{key-valid-p}, since we consider the
permissive nature of @code{kbd} more in the spirit of Emacs Lisp.
@item @item
Yanking of anything but plain text from other applications becomes Various new functions and variables for moving and transposing sexps and
more and more an unnecessary feature as you move back in time, so we for moving by program statements were dropped as unnecessary. The
dropped support for pasting media like HTML and images via the original commands that move by balanced expressions are more than
clipboard. If you @i{really} need to yank those into an Emacs buffer, enough.
you can go via a disk file.
@item @item
We removed unnecessary functions @code{string-pixel-width} and We deleted some fancy @code{declare} forms for functions, such as
@code{string-glyph-split}, as we consider it inappropriate for Lisp @code{ftype}. Emacs Lisp is not a string-typed language, which makes
programs to do display layout calculations, where these functions come these declarations anathema. The types @code{closure} and
in handy. Display is for the display engine, written in C, and should @code{interpreted-function} are gone for the same reason: no need to
stay there! distinguish types of Lisp functions.
@item @item
Various new Xwidget functions, such as The byte compiler stopped issuing warnings about practices some purists
@code{xwidget-perform-lispy-event}, @code{xwidget-webkit-load-html}, consider questionable. This includes warnings about missing
and @code{xwidget-webkit-back-forward-list}, were deleted as part of @code{lexical-binding} cookies, empty bodies of special forms and
our continuing effort to gradually delete the entire Xwidget macros, comparison with literals, @code{condition-case} without
functionality in some previous release of Emacs. handlers, mutation of constants, and some others. As time moves into
the past, the typical Emacs hacker knows best what's correct code and
what isn't, and thus these warnings become useless annoyances. Good
riddance!
@item @item
Setting the @code{:stderr} property of a process in a The @code{obarray} type is gone. Obarrays are back to their original
@code{make-process} call once again forces the process's connection to representation as vectors. Each removed Lisp data type makes Emacs
use pipes, not ptys, for all the standard streams --- a considerable simpler and easier to use, so this is a welcome deletion.
simplification of this complex interface.
@item
To keep the amount of Lisp functions from growing out of control, we
deleted @code{string-equal-ignore-case}. Use @code{compare-strings}
instead.
Several features that complicated the byte compiler have been removed:
@itemize @minus
@item
The warnings about quoting mistakes in documentation strings. You are
expected to find such mistakes yourself, by eyeballing the resulting
@file{*Help*} buffer display.
@item
The warnings about malformed @code{defcustom} types, like
double-quoting symbols in @code{choice} lists.
@end itemize
@item
The macro @code{with-buffer-unmodified-if-unchanged} was deleted.
Lisp programs that need to leave the buffer unmodified in these cases
can always compare the text before and after the modifications.
@item
The functions @code{string-edit} and @code{read-string-from-buffer}
were removed, as we consider the fun of programming them anew every
time an important part of the education of each Emacs Lisp developer.
@item
We deleted the function @code{readablep} and the related variable
@code{print-unreadable-function}, since no one is supposed to want to
print unreadable Lisp objects.
@item
The facility for storing multisession variables was deleted as an
unnecessary complication. With it are gone @code{multisession-value},
@code{define-multisession-variable}, and
@code{list-multisession-values}.
@item
The support for the @code{cursor-face} text property was dropped. We
consider the rest of the faces adequate for supporting this
functionality.
@item
The function @code{tooltip-show} dropped support for optional face
arguments @code{text-face} and @code{default-face} that allow fancy
control of the face of the tip text and top frame colors. We decided
that tooltips should all look the same, to prevent user confusion.
@item @item
As part of the ongoing quest for simplicity, many other functions and As part of the ongoing quest for simplicity, many other functions and

View file

@ -236,7 +236,7 @@ To view this manual in other formats, click
Appendices Appendices
* Antinews:: Info for users downgrading to Emacs 28. * Antinews:: Info for users downgrading to Emacs 29.
* GNU Free Documentation License:: The license for this documentation. * GNU Free Documentation License:: The license for this documentation.
* GPL:: Conditions for copying and changing GNU Emacs. * GPL:: Conditions for copying and changing GNU Emacs.
* Tips:: Advice and coding conventions for Emacs Lisp. * Tips:: Advice and coding conventions for Emacs Lisp.

View file

@ -23163,7 +23163,7 @@ specify a date December 1, 2005, the call might look like
=(diary-date 12 1 2005)= or =(diary-date 1 12 2005)= or =(diary-date =(diary-date 12 1 2005)= or =(diary-date 1 12 2005)= or =(diary-date
2005 12 1)=, depending on the settings. This has been the source of 2005 12 1)=, depending on the settings. This has been the source of
much confusion. Org mode users can resort to special versions of much confusion. Org mode users can resort to special versions of
these functions, namely ~org-date~, ~org-anniversary~, ~org-cyclic, and these functions, namely ~org-date~, ~org-anniversary~, ~org-cyclic~, and
~org-block~. These work just like the corresponding ~diary-~ ~org-block~. These work just like the corresponding ~diary-~
functions, but with stable ISO order of arguments (year, month, day) functions, but with stable ISO order of arguments (year, month, day)
wherever applicable, independent of the value of wherever applicable, independent of the value of

View file

@ -130,17 +130,16 @@ to your init:
The round-trip through the Lisp function The round-trip through the Lisp function
'internal-default-process-filter' is skipped when the process filter is 'internal-default-process-filter' is skipped when the process filter is
the default one. It's reimplemented in native code, reducing GC churn. the default one. It's reimplemented in native code, reducing GC churn.
To undo this change, set 'fast-read-process-output' to nil.
To undo the change, set 'fast-read-process-output' to nil.
* Changes in Emacs 30.1 * Changes in Emacs 30.1
** 'describe-function' now shows the type of the function object. ** 'describe-function' now shows the type of the function object.
The text used to say things like "car is is a built-in function" The text used to say things like "car is is a built-in function" whereas
whereas it now says "car is a primitive-function" where "primitive-function" it now says "car is a primitive-function" where "primitive-function" is
is the symbol returned by 'cl-type-of' and you can click on it to get the symbol returned by 'cl-type-of'. You can click on those words to
information about that type. get information about that type.
** 'advice-remove' is now an interactive command. ** 'advice-remove' is now an interactive command.
When called interactively, 'advice-remove' now prompts for an advised When called interactively, 'advice-remove' now prompts for an advised
@ -1863,7 +1862,7 @@ and keys.
This command pops up a buffer to edit the settings in ".dir-locals.el". This command pops up a buffer to edit the settings in ".dir-locals.el".
--- ---
** New command 'customize-toggle-option'. *** New command 'customize-toggle-option'.
This command can toggle boolean options for the duration of a session. This command can toggle boolean options for the duration of a session.
** Calc ** Calc
@ -1992,10 +1991,10 @@ The following new XML schemas are now supported:
- Nuget package specification file - Nuget package specification file
- Nuget packages config file - Nuget packages config file
** color.el now supports the Oklab color representation. *** color.el now supports the Oklab color representation.
--- ---
** 'M-x ping' can now give "ping" additional flags. *** 'M-x ping' can now give "ping" additional flags.
Typing 'C-u M-x ping' prompts first for the host, and then for the flags Typing 'C-u M-x ping' prompts first for the host, and then for the flags
to give to "ping". to give to "ping".
@ -3033,7 +3032,7 @@ functionalities to operate correctly.
** MS-Windows ** MS-Windows
+++ +++
*** You can now opt out of following the system's Dark mode. *** You can now opt out of following MS-Windows' Dark mode.
By default, Emacs on MS-Windows follows the system's Dark mode for its By default, Emacs on MS-Windows follows the system's Dark mode for its
title bars' and scroll bars' appearance. If the new user option title bars' and scroll bars' appearance. If the new user option
'w32-follow-system-dark-mode' is customized to the nil value, Emacs 'w32-follow-system-dark-mode' is customized to the nil value, Emacs

View file

@ -18,6 +18,9 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
# Here, we list the *most important* changes and changes that _likely_ # Here, we list the *most important* changes and changes that _likely_
# require user action for most Org mode users. # require user action for most Org mode users.
# Sorted from most important to least important. # Sorted from most important to least important.
*** Arbitrary shell commands may no longer run when turning on Org mode
This is for security reasons, to avoid running malicious commands.
*** =python-mode.el (MELPA)= support in =ob-python.el= is removed *** =python-mode.el (MELPA)= support in =ob-python.el= is removed

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode % Reference Card for Org Mode
\def\orgversionnumber{9.7.4} \def\orgversionnumber{9.7.5}
\def\versionyear{2024} % latest update \def\versionyear{2024} % latest update
\input emacsver.tex \input emacsver.tex

View file

@ -179,6 +179,9 @@ Usage example:
(read-multiple-choice--short-answers (read-multiple-choice--short-answers
prompt choices help-string show-help))) prompt choices help-string show-help)))
(declare-function touch-screen-scroll "touch-screen.el")
(declare-function touch-screen-pinch "touch-screen.el")
(defun read-multiple-choice--short-answers (prompt choices help-string show-help) (defun read-multiple-choice--short-answers (prompt choices help-string show-help)
(let* ((dialog-p (use-dialog-box-p)) (let* ((dialog-p (use-dialog-box-p))
(prompt-choices (prompt-choices
@ -225,7 +228,11 @@ Usage example:
(when (setq command (when (setq command
(let ((current-key-remap-sequence (let ((current-key-remap-sequence
(vector tchar))) (vector tchar)))
(touch-screen-translate-touch nil))) ;; Provide an empty prompt to `t-s-t-t' so
;; that it may not repeatedly display
;; and/or disable the on-screen keyboard,
;; or move point.
(touch-screen-translate-touch "")))
(setq command (if (> (length command) 0) (setq command (if (> (length command) 0)
(aref command 0) (aref command 0)
nil)) nil))
@ -240,9 +247,9 @@ Usage example:
;; Respond to scroll and pinch events as if RMC were ;; Respond to scroll and pinch events as if RMC were
;; not in progress. ;; not in progress.
((eq (car-safe command) 'touchscreen-scroll) ((eq (car-safe command) 'touchscreen-scroll)
(funcall #'touch-screen-scroll command)) (touch-screen-scroll command))
((eq (car-safe command) 'touchscreen-pinch) ((eq (car-safe command) 'touchscreen-pinch)
(funcall #'touch-screen-pinch command)) (touch-screen-pinch command))
;; Prevent other touchscreen-generated events from ;; Prevent other touchscreen-generated events from
;; reaching the default conditional. ;; reaching the default conditional.
((memq (or (and (symbolp command) command) ((memq (or (and (symbolp command) command)

View file

@ -425,7 +425,7 @@ If this value is too low, servers may reject your initial nick
request upon reconnecting because they haven't yet noticed that request upon reconnecting because they haven't yet noticed that
your previous connection is dead. If this happens, try setting your previous connection is dead. If this happens, try setting
this value to 120 or greater and/or exploring the option this value to 120 or greater and/or exploring the option
`erc-regain-services-alist', which may provide a more proactive `erc-services-regain-alist', which may provide a more proactive
means of handling this situation on some servers." means of handling this situation on some servers."
:type 'number) :type 'number)

View file

@ -769,6 +769,7 @@ SPACES-REGEXP is a regexp to substitute spaces in font-lock search."
;; Hashcons the regexp, so it can be passed to remove-overlays later. ;; Hashcons the regexp, so it can be passed to remove-overlays later.
(setq regexp (hi-lock--hashcons regexp)) (setq regexp (hi-lock--hashcons regexp))
(setq subexp (or subexp 0)) (setq subexp (or subexp 0))
(when lighter (setq lighter (propertize lighter 'regexp regexp)))
(let ((pattern (list (lambda (limit) (let ((pattern (list (lambda (limit)
(let ((case-fold-search case-fold) (let ((case-fold-search case-fold)
(search-spaces-regexp spaces-regexp)) (search-spaces-regexp spaces-regexp))
@ -879,15 +880,18 @@ Apply the previous patterns after reverting the buffer."
(let ((hi-lock-file-patterns-policy policy)) (let ((hi-lock-file-patterns-policy policy))
(hi-lock-mode 1)) (hi-lock-mode 1))
(setq rehighlight t)) (setq rehighlight t))
;; When hi-lock overlays were relocated to the top ;; When using hi-lock overlays, then need to update them
(when (seq-some (lambda (o) (overlay-get o 'hi-lock-overlay)) (unless (and font-lock-mode (font-lock-specified-p major-mode)
(overlays-in (point-min) (point-min))) (not hi-lock-use-overlays))
(hi-lock-unface-buffer t) (hi-lock-unface-buffer t)
(setq rehighlight t)) (setq rehighlight t))
(when rehighlight (when rehighlight
(setq hi-lock--unused-faces hi-lock-face-defaults)
(dolist (pattern (reverse patterns)) (dolist (pattern (reverse patterns))
(let ((face (hi-lock-keyword->face (cdr pattern)))) (let ((face (hi-lock-keyword->face (cdr pattern))))
(highlight-regexp (car pattern) face) (highlight-regexp (or (get-text-property 0 'regexp (car pattern))
(car pattern))
face)
(setq hi-lock--unused-faces (setq hi-lock--unused-faces
(remove (face-name face) hi-lock--unused-faces))))))))) (remove (face-name face) hi-lock--unused-faces)))))))))

View file

@ -484,7 +484,7 @@ Returns a placeholder string for insertion, to later be replaced
by `org-babel-comint-async-filter'." by `org-babel-comint-async-filter'."
(org-babel-comint-async-register (org-babel-comint-async-register
session (current-buffer) session (current-buffer)
"^\\(?:[>.+] \\)*\\[1\\] \"ob_comint_async_R_\\(.+?\\)_\\(.+\\)\"$" "^\\(?:[>.+] \\)*\\[1\\] \"ob_comint_async_R_\\(start\\|end\\|file\\)_\\(.+\\)\"$"
'org-babel-chomp 'org-babel-chomp
'ob-session-async-R-value-callback) 'ob-session-async-R-value-callback)
(cl-case result-type (cl-case result-type

View file

@ -2959,9 +2959,9 @@ used as a string to be appended to #+begin_example line."
(goto-char body-start) (goto-char body-start)
(insert body)))) (insert body))))
(defun org-babel-merge-params (&rest plists) (defun org-babel-merge-params (&rest alists)
"Combine all parameter association lists in PLISTS. "Combine all parameter association lists in ALISTS.
Later elements of PLISTS override the values of previous elements. Later elements of ALISTS override the values of previous elements.
This takes into account some special considerations for certain This takes into account some special considerations for certain
parameters when merging lists." parameters when merging lists."
(let* ((results-exclusive-groups (let* ((results-exclusive-groups
@ -2990,8 +2990,8 @@ parameters when merging lists."
;; Some keywords accept multiple values. We need to treat ;; Some keywords accept multiple values. We need to treat
;; them specially. ;; them specially.
vars results exports) vars results exports)
(dolist (plist plists) (dolist (alist alists)
(dolist (pair plist) (dolist (pair alist)
(pcase pair (pcase pair
(`(:var . ,value) (`(:var . ,value)
(let ((name (cond (let ((name (cond

View file

@ -537,7 +537,7 @@ Returns a placeholder string for insertion, to later be replaced
by `org-babel-comint-async-filter'." by `org-babel-comint-async-filter'."
(org-babel-comint-async-register (org-babel-comint-async-register
session (current-buffer) session (current-buffer)
"ob_comint_async_python_\\(.+\\)_\\(.+\\)" "ob_comint_async_python_\\(start\\|end\\|file\\)_\\(.+\\)"
'org-babel-chomp 'org-babel-python-async-value-callback) 'org-babel-chomp 'org-babel-python-async-value-callback)
(pcase result-type (pcase result-type
(`output (`output

View file

@ -92,10 +92,10 @@ variables."
name)) name))
(funcall (if (fboundp 'defvar-1) #'defvar-1 #'set) ;Emacs-29 (funcall (if (fboundp 'defvar-1) #'defvar-1 #'set) ;Emacs-29
(intern (concat "org-babel-default-header-args:" name)) (intern (concat "org-babel-default-header-args:" name))
nil) org-babel-default-header-args:shell)
(funcall (if (fboundp 'defvar-1) #'defvar-1 #'set) ;Emacs-29 (funcall (if (fboundp 'defvar-1) #'defvar-1 #'set) ;Emacs-29
(intern (concat "org-babel-header-args:" name)) (intern (concat "org-babel-header-args:" name))
nil))) org-babel-header-args:shell)))
(defcustom org-babel-shell-names (defcustom org-babel-shell-names
'("sh" "bash" "zsh" "fish" "csh" "ash" "dash" "ksh" "mksh" "posh") '("sh" "bash" "zsh" "fish" "csh" "ash" "dash" "ksh" "mksh" "posh")
@ -338,7 +338,7 @@ return the value of the last statement in BODY."
(org-babel-comint-async-register (org-babel-comint-async-register
session session
(current-buffer) (current-buffer)
"ob_comint_async_shell_\\(.+\\)_\\(.+\\)" "ob_comint_async_shell_\\(start\\|end\\|file\\)_\\(.+\\)"
'ob-shell-async-chunk-callback 'ob-shell-async-chunk-callback
nil) nil)
(org-babel-comint-async-delete-dangling-and-eval (org-babel-comint-async-delete-dangling-and-eval

View file

@ -1662,7 +1662,7 @@ definition."
;; Insert affiliated keywords before the table. ;; Insert affiliated keywords before the table.
(when content-lines (when content-lines
(while (string-match-p "\\`[ \t]*#\\+" (car content-lines)) (while (string-match-p "\\`[ \t]*#\\+" (car content-lines))
(insert (pop content-lines) "\n"))) (insert (string-trim-left (pop content-lines)) "\n")))
(save-excursion (save-excursion
;; Insert table at point. ;; Insert table at point.
(insert (insert
@ -1675,7 +1675,7 @@ definition."
(let ((case-fold-search t)) (let ((case-fold-search t))
(dolist (line content-lines) (dolist (line content-lines)
(when (string-match-p "\\`[ \t]*#\\+TBLFM:" line) (when (string-match-p "\\`[ \t]*#\\+TBLFM:" line)
(insert "\n" line) (insert "\n" (string-trim-left line))
(unless recalc (setq recalc t)))))) (unless recalc (setq recalc t))))))
(when recalc (org-table-recalculate 'all t)) (when recalc (org-table-recalculate 'all t))
(org-table-align) (org-table-align)

View file

@ -270,7 +270,7 @@ Return value is the containing property name, as a keyword, or nil."
"Dynamically computed value. "Dynamically computed value.
The value can be obtained by calling FUNCTION with containing syntax The value can be obtained by calling FUNCTION with containing syntax
node as first argument and ARGS list as remainting arguments. node as first argument and ARGS list as remaining arguments.
If the function throws `:org-element-deferred-retry' signal, assume If the function throws `:org-element-deferred-retry' signal, assume
that the syntax node has been modified by side effect and retry that the syntax node has been modified by side effect and retry

View file

@ -110,7 +110,7 @@
;; to current setup. ;; to current setup.
(defconst org-element-archive-tag "ARCHIVE" (defconst org-element-archive-tag "ARCHIVE"
"Tag marking a substree as archived.") "Tag marking a subtree as archived.")
(defconst org-element-citation-key-re (defconst org-element-citation-key-re
(rx "@" (group (one-or-more (any word "-.:?!`'/*@+|(){}<>&_^$#%~")))) (rx "@" (group (one-or-more (any word "-.:?!`'/*@+|(){}<>&_^$#%~"))))
@ -181,8 +181,7 @@ Drawer's name is located in match group 1.")
(rx line-start (0+ (any ?\s ?\t)) (rx line-start (0+ (any ?\s ?\t))
":" (1+ (any ?- ?_ word)) ":" ":" (1+ (any ?- ?_ word)) ":"
(0+ (any ?\s ?\t)) line-end) (0+ (any ?\s ?\t)) line-end)
"Regexp matching opening or closing line of a drawer. "Regexp matching opening or closing line of a drawer.")
Drawer's name is located in match group 1.")
(defconst org-element-dynamic-block-open-re (defconst org-element-dynamic-block-open-re
(rx line-start (0+ (any ?\s ?\t)) (rx line-start (0+ (any ?\s ?\t))
@ -4679,7 +4678,7 @@ element it has to parse."
;; ;;
;; In general, the checks below should be as efficient as ;; In general, the checks below should be as efficient as
;; possible, especially early in the `cond' form. (The ;; possible, especially early in the `cond' form. (The
;; early checks will contribute to al subsequent parsers as ;; early checks will contribute to all subsequent parsers as
;; well). ;; well).
(cond (cond
;; Item. ;; Item.
@ -5956,7 +5955,7 @@ better to remove the commands advised in such a way from this list.")
(defmacro org-element--cache-log-message (format-string &rest args) (defmacro org-element--cache-log-message (format-string &rest args)
"Add a new log message for org-element-cache. "Add a new log message for org-element-cache.
FORMAT-STRING and ARGS are the same arguments as in `foramt'." FORMAT-STRING and ARGS are the same arguments as in `format'."
`(when (or org-element--cache-diagnostics `(when (or org-element--cache-diagnostics
(eq org-element--cache-self-verify 'backtrace)) (eq org-element--cache-self-verify 'backtrace))
(let* ((format-string (concat (format "org-element-cache diagnostics(%s): " (let* ((format-string (concat (format "org-element-cache diagnostics(%s): "
@ -6226,7 +6225,7 @@ the cache."
;; children starting at the same pos. ;; children starting at the same pos.
(not (org-element-type-p hashed '(section org-data table)))) (not (org-element-type-p hashed '(section org-data table))))
hashed hashed
;; No appriate HASHED. Search the cache. ;; No appropriate HASHED. Search the cache.
(while node (while node
(let* ((element (avl-tree--node-data node)) (let* ((element (avl-tree--node-data node))
(begin (org-element-begin element))) (begin (org-element-begin element)))
@ -8323,7 +8322,7 @@ the cache."
limit-count)) limit-count))
(cache-walk-abort)) (cache-walk-abort))
;; Make sure that we have a cached ;; Make sure that we have a cached
;; element at the new STAR. ;; element at the new START.
(when start (element-match-at-point))) (when start (element-match-at-point)))
;; Check if the buffer or cache has been modified. ;; Check if the buffer or cache has been modified.
(unless (org-with-base-buffer nil (unless (org-with-base-buffer nil

View file

@ -666,7 +666,14 @@ When INNER is non-nil, do not try to match as list of containers."
(fboundp 'file-attribute-inode-number)) (fboundp 'file-attribute-inode-number))
(file-attribute-inode-number (file-attribute-inode-number
(file-attributes file)))) (file-attributes file))))
(setq hash (secure-hash 'md5 associated)) (setq hash
;; `secure-hash' may trigger interactive dialog when it
;; cannot determine the coding system automatically.
;; Force coding system that works reliably for any text
;; to avoid it. The has will be consistent anyway, as
;; long as we use the same coding system.
(let ((coding-system-for-write 'emacs-internal))
(secure-hash 'md5 associated)))
(puthash associated (puthash associated
(list (buffer-modified-tick associated) (list (buffer-modified-tick associated)
file inode hash) file inode hash)

View file

@ -666,12 +666,12 @@ this function appends the default value from
#'completing-read)) #'completing-read))
(extra (if org-refile-use-outline-path "/" "")) (extra (if org-refile-use-outline-path "/" ""))
(cbnex (concat (buffer-name) extra)) (cbnex (concat (buffer-name) extra))
(filename (and cfn (expand-file-name cfn))) (filename (and cfn (file-truename cfn)))
(tbl (mapcar (tbl (mapcar
(lambda (x) (lambda (x)
(if (and (not (member org-refile-use-outline-path (if (and (not (member org-refile-use-outline-path
'(file full-file-path title))) '(file full-file-path title)))
(not (equal filename (nth 1 x)))) (not (equal filename (file-truename (nth 1 x)))))
(cons (concat (car x) extra " (" (cons (concat (car x) extra " ("
(file-name-nondirectory (nth 1 x)) ")") (file-name-nondirectory (nth 1 x)) ")")
(cdr x)) (cdr x))

View file

@ -5,13 +5,13 @@
(defun org-release () (defun org-release ()
"The release version of Org. "The release version of Org.
Inserted by installing Org mode or when a release is made." Inserted by installing Org mode or when a release is made."
(let ((org-release "9.7.4")) (let ((org-release "9.7.5"))
org-release)) org-release))
;;;###autoload ;;;###autoload
(defun org-git-version () (defun org-git-version ()
"The Git version of Org mode. "The Git version of Org mode.
Inserted by installing Org or when a release is made." Inserted by installing Org or when a release is made."
(let ((org-git-version "release_9.7.4-7-g165319")) (let ((org-git-version "release_9.7.5-9-ga091ca"))
org-git-version)) org-git-version))
(provide 'org-version) (provide 'org-version)

View file

@ -9,7 +9,7 @@
;; URL: https://orgmode.org ;; URL: https://orgmode.org
;; Package-Requires: ((emacs "26.1")) ;; Package-Requires: ((emacs "26.1"))
;; Version: 9.7.4 ;; Version: 9.7.5
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;
@ -4541,6 +4541,7 @@ directory."
;; Fake Org mode: `org-element-at-point' ;; Fake Org mode: `org-element-at-point'
;; doesn't need full set-up. ;; doesn't need full set-up.
(let ((major-mode 'org-mode)) (let ((major-mode 'org-mode))
(setq-local tab-width 8)
(setq alist (setq alist
(org--collect-keywords-1 (org--collect-keywords-1
keywords unique directory keywords unique directory

View file

@ -1633,7 +1633,10 @@ integer value is also printed as a character of that codepoint.
If `eval-expression-debug-on-error' is non-nil, which is the default, If `eval-expression-debug-on-error' is non-nil, which is the default,
this command arranges for all errors to enter the debugger." this command arranges for all errors to enter the debugger."
(interactive "P") (interactive "P")
(values--store-value (funcall
;; Not sure why commit 4428c27c1ae7d stored into `values' only when
;; `eval-expression-debug-on-error' was nil, but let's preserve that.
(if eval-expression-debug-on-error #'identity #'values--store-value)
(handler-bind ((error (if eval-expression-debug-on-error (handler-bind ((error (if eval-expression-debug-on-error
#'eval-expression--debug #'ignore))) #'eval-expression--debug #'ignore)))
(elisp--eval-last-sexp eval-last-sexp-arg-internal)))) (elisp--eval-last-sexp eval-last-sexp-arg-internal))))

View file

@ -58,7 +58,8 @@
(defcustom lua-ts-mode-hook nil (defcustom lua-ts-mode-hook nil
"Hook run after entering `lua-ts-mode'." "Hook run after entering `lua-ts-mode'."
:type 'hook :type 'hook
:options '(flymake-mode :options '(eglot-ensure
flymake-mode
hs-minor-mode hs-minor-mode
outline-minor-mode) outline-minor-mode)
:version "30.1") :version "30.1")
@ -116,7 +117,7 @@
(defcustom lua-ts-indent-continuation-lines t (defcustom lua-ts-indent-continuation-lines t
"Controls how multi-line if/else statements are aligned. "Controls how multi-line if/else statements are aligned.
If t, then continuation lines are indented by `lua-ts-indent-offset': If non-nil, then continuation lines are indented by `lua-ts-indent-offset':
if a if a
and b then and b then

View file

@ -1455,11 +1455,20 @@ and the newly selected tab."
(defcustom tab-bar-select-restore-windows #'tab-bar-select-restore-windows (defcustom tab-bar-select-restore-windows #'tab-bar-select-restore-windows
"Function called when selecting a tab to handle windows whose buffer was killed. "Function called when selecting a tab to handle windows whose buffer was killed.
When a tab-bar tab displays a window whose buffer was killed since When a tab-bar tab displays a window whose buffer was killed since
this tab was last selected, this function determines what to do with this tab was last selected, this variable determines what to do with
that window. By default, either a random buffer is displayed instead of that window.
the killed buffer, or the window gets deleted. However, with the help
of `window-restore-killed-buffer-windows' it's possible to handle such If this variable is nil, there is no special handling;
situations better by displaying an information about the killed buffer." `set-window-configuration' will decide what to do with the window,
then either a random buffer is displayed instead of the killed buffer,
or the window gets deleted.
If this variable is a function, display another buffer in that window,
and pass that buffer to the function. See the variable
`window-restore-killed-buffer-windows' for the calling convention.
By default, `tab-bar-select-restore-windows' displays a placeholder buffer
in the same window to give information about the killed buffer."
:type '(choice (const :tag "No special handling" nil) :type '(choice (const :tag "No special handling" nil)
(const :tag "Show placeholder buffers" (const :tag "Show placeholder buffers"
tab-bar-select-restore-windows) tab-bar-select-restore-windows)