1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-01 08:17:38 +00:00
emacs/etc/NEWS

271 lines
9.2 KiB
Plaintext
Raw Normal View History

GNU Emacs NEWS -- history of user-visible changes.
Copyright (C) 2022-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.
1999-10-03 12:39:42 +00:00
2018-11-13 10:04:20 +00:00
Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
If possible, use 'M-x report-emacs-bug'.
This file is about changes in Emacs version 30.
See file HISTORY for a list of GNU Emacs versions and release dates.
See files NEWS.29, NEWS.28, ..., NEWS.18, and NEWS.1-17 for changes
in older Emacs versions.
You can narrow news to a specific version by calling 'view-emacs-news'
2018-11-13 10:04:20 +00:00
with a prefix argument or by typing 'C-u C-h C-n'.
Temporary note:
+++ indicates that all relevant manuals in doc/ have been updated.
--- means no change in the manuals is needed.
When you add a new item, use the appropriate mark if you are sure it
applies, and please also update docstrings as needed.
2015-11-25 14:44:20 +00:00
* Installation Changes in Emacs 30.1
Don't store docstrings of preloaded .el files in etc/DOC Since the location of those files changes between build time and installation time, this requires to tweak the file name used in those (#$ . NNN) references during the dump so they don't hardcode the build directory. We do it in the same way as was already done for those same file names in `load-history`, except we convert them back to absolute file names more lazily (i.e. when fetching the actual docstring rather than at startup), which requires remembering the `lisp-dir` computed at startup in the new `lisp-directory` variable. * src/Makefile.in ($(etc)/DOC): Don't scan Lisp files any more. * src/lread.c (Fload): Use relative file names for `load-file-name` when preloading for the dump, like we already did for `current-load-list`. (read_list): Don't zero-out dynamic docstring references during the preload since they won't be filled later by Snarf-documentation any more. (read1): Remove the hash-hack for doc references that were zeroed. * lisp/startup.el (lisp-directory): New variable. (command-line): Set it. * src/doc.c (get_doc_string): Use `lisp-directory` for dynamic docstring references using relative file names. (syms_of_doc): Add `Qlisp_directory`. * lib-src/make-docfile.c (scan_file): Don't handle `.el` or `.elc` files any more. (IS_SLASH): Remove macro, not used any more. (skip_white, read_lisp_symbol, search_lisp_doc_at_eol) (scan_lisp_file): Remove functions, not used any more. * doc/lispref/loading.texi (Library Search): Mention `lisp-directory`.
2021-12-31 04:17:45 +00:00
* Startup Changes in Emacs 30.1
2021-09-06 02:27:12 +00:00
* Changes in Emacs 30.1
** X selection requests are now handled much faster and asynchronously.
This means it should be less necessary to disable the likes of
'select-active-regions' when Emacs is running over a slow network
connection.
** Emacs now updates invisible frames that are made visible by a compositor.
If an invisible or an iconified frame is shown to the user by the
compositing manager, Emacs will now redisplay such a frame even though
'frame-visible-p' returns nil or 'icon' for it. This can happen, for
example, as part of preview for iconified frames.
+++
** 'write-region-inhibit-fsync' now defaults to t in interactive mode,
as it has in batch mode since Emacs 24.
+++
** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'.
When non-nil, this option suppresses moving remote files to the local
trash when deleting. Default is nil.
* Editing Changes in Emacs 30.1
** New helper variable 'transpose-sexps-function'.
Emacs now can set this variable to customize the behavior of the
'transpose-sexps' function.
** New function 'transpose-sexps-default-function'.
The previous implementation is moved into its own function, to be
bound by transpose-sexps-function'.
** New function 'treesit-transpose-sexps'.
treesit.el now unconditionally sets 'transpose-sexps-function' for all
Tree-sitter modes. This functionality utilizes the new
'transpose-sexps-function'.
** Commands and variables to move by program statements
*** New variable 'forward-sentence-function'.
Major modes can now set this variable to customize the behavior of the
'forward-sentence' command.
*** New function 'forward-sentence-default-function'.
The previous implementation of 'forward-sentence' is moved into its
own function, to be bound by 'forward-sentence-function'.
*** New defvar-local 'treesit-sentence-type-regexp.
Similarly to 'treesit-defun-type-regexp', this variable is used to
define "sentences" in Tree-sitter enabled modes.
*** New function 'treesit-forward-sentence'.
All tree-sitter modes that define 'treesit-sentence-type-regexp' now
set 'forward-sentence-function' to call 'treesit-forward-sentence'.
2021-09-06 02:27:12 +00:00
* Changes in Specialized Modes and Packages in Emacs 30.1
---
** Variable order and truncation can now be configured in 'gdb-many-windows'.
The new user option 'gdb-locals-table-row-config' allows users to
configure the order and max length of various properties in the local
2022-12-10 13:32:41 +00:00
variables buffer when using 'gdb-many-windows'.
By default, this user option is set to write the properties in the order:
2022-12-10 13:32:41 +00:00
name, type and value, where the name and type are truncated to 20
characters, and the value is truncated according to the value of
'gdb-locals-value-limit'.
If you want to get back the old behavior, set the user option to the value
2022-12-10 13:32:41 +00:00
(setopt gdb-locals-table-row-config
`((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
** VC
---
*** New user option 'vc-git-shortlog-switches'.
This is a string or a list of strings that specifies the Git log
switches for shortlogs, such as the one produced by 'C-x v L'.
'vc-git-log-switches' is no longer used for shortlogs.
** Buffer Selection
2022-12-07 01:36:41 +00:00
---
*** New user option 'bs-default-action-list'.
You can now configure how to display the "*buffer-selection*" buffer
using this new option. (Or set 'display-buffer-alist' directly.)
2022-12-07 01:36:41 +00:00
Add support for the "splice operator" in Eshell This allows splicing lists in-place in argument lists, which is particularly important when defining aliases using the '$*' special variable (bug#59960). * lisp/eshell/esh-var.el (eshell-parse-variable): Add support for the splice operator. (eshell-interpolate-variable): Let 'eshell-parse-variable' handle adding 'eshell-escape-arg'. (eshell-complete-variable-reference): Handle the splice operator. * lisp/eshell/esh-arg.el (eshell-concat-groups) (eshell-prepare-splice): New functions... (eshell-resolve-current-argument): ... use them. (eshell-splice-args): New function. * lisp/eshell/esh-cmd.el (eshell-rewrite-named-command): Handle 'eshell-splice-args'. * lisp/eshell/esh-util.el (eshell-list-to-string): New function... (eshell-flatten-and-stringify): ... use it. * lisp/eshell/em-cmpl.el (eshell-complete-parse-arguments): Remove 'eshell-splice-args' sigils in Eshell command forms so that we can perform completion on splice-expansions. * lisp/eshell/em-unix.el (eshell-complete-host-reference): Don't try to complete arguments containing "$@". * test/lisp/eshell/esh-var-tets.el (esh-var-test/interp-list-var) (esh-var-test/interp-list-var-concat, esh-var-test/interp-var-splice) (esh-var-test/interp-var-splice-concat) (esh-var-test/quoted-interp-list-var) (esh-var-test/quoted-interp-list-var-concat) (esh-var-test/quoted-interp-var-splice) (esh-var-test/quoted-interp-var-splice-concat): New tests. * test/lisp/eshell/em-alias-tests.el (em-alias-test/alias-all-args-var-splice): New test. * doc/misc/eshell.texi (Dollars Expansion): Explain the splice operator. (Aliases): Expand documentation and use '$@*'. (Built-ins, Bugs and Ideas): Use '$@*' where appropriate. * etc/NEWS: Announce this change.
2022-11-09 06:49:23 +00:00
** Eshell
+++
*** New splice operator for Eshell dollar expansions.
Dollar expansions in Eshell now let you splice the elements of the
expansion in-place using '$@expr'. This makes it easier to fill lists
of arguments into a command, such as when defining aliases. For more
information, see the "(eshell) Dollars Expansion" node in the Eshell
manual.
---
*** Eshell now uses 'field' properties in its output.
In particular, this means that pressing the <home> key moves the point
to the beginning of your input, not the beginning of the whole line.
If you want to go back to the old behavior, add something like this to
your configuration:
(keymap-set eshell-mode-map "<home>" #'eshell-bol-ignoring-prompt)
+++
*** 'eshell-read-aliases-list' is now an interactive command.
After manually editing 'eshell-aliases-file', you can use this command
to load the edited aliases.
** Prog Mode
+++
*** New command 'prog-fill-reindent-defun'.
This command either fills a single paragraph in a defun, such as a
docstring, or a comment, or (re)indents the surrounding defun if
point is not in a comment or a string. It is by default bound to
'M-q' in 'prog-mode' and all its descendants.
** Tramp
+++
*** New connection method "toolbox".
This allow accessing system containers provided by Toolbox.
** EWW
+++
*** 'eww-open-file' can now display the file in a new buffer.
By default, the command reuses the '*eww*' buffer, but if called with
the new argument non-nil, it will use a new buffer instead.
Interactively, invoke 'eww-open-file' with a prefix argument to
activate this behavior.
* New Modes and Packages in Emacs 30.1
---
** The highly accessible Modus themes collection has six items.
The 'modus-operandi' and 'modus-vivendi' are the main themes that have
been part of Emacs since version 28. The former is light, the latter
dark. In addition to these, we now have 'modus-operandi-tinted' and
'modus-vivendi-tinted' for easier legibility, as well as
'modus-operandi-deuteranopia' and 'modus-vivendi-deuteranopia' to
cover the needs of users with red-green color deficiency. The Info
manual "(modus-themes) Top" describes the details and showcases all
their customization options.
* Incompatible Lisp Changes in Emacs 30.1
** User option 'tramp-completion-reread-directory-timeout' has been removed.
This user option has been obsoleted in Emacs 27, use
'remote-file-name-inhibit-cache' instead.
* Lisp Changes in Emacs 30.1
Abolish max-specpdl-size (bug#57911) The max-lisp-eval-depth limit is sufficient to prevent unbounded stack growth including the specbind stack; simplify matters for the user by not having them to worry about two different limits. This change turns max-specpdl-size into a harmless variable with no effects, to keep existing code happy. * lisp/subr.el (max-specpdl-size): Define as an ordinary (but obsolete) dynamic variable. * admin/grammars/Makefile.in: * doc/lispintro/emacs-lisp-intro.texi (Loops & Recursion): * doc/lispref/control.texi (Cleanups): * doc/lispref/edebug.texi (Checking Whether to Stop): * doc/lispref/eval.texi (Eval): * doc/lispref/variables.texi (Local Variables): * doc/misc/calc.texi (Recursion Depth): Update documentation. * etc/NEWS: Announce. * src/eval.c (FletX): Use safe iteration to guard against circular bindings list. (syms_of_eval): Remove old max-specpdl-size definition. (init_eval_once, restore_stack_limits, call_debugger) (signal_or_quit, grow_specpdl_allocation): * leim/Makefile.in: * lisp/Makefile.in: * lisp/calc/calc-stuff.el (calc-more-recursion-depth) (calc-less-recursion-depth): * lisp/calc/calc.el (calc-do): * lisp/cedet/semantic/ede-grammar.el (ede-proj-makefile-insert-rules): * lisp/cedet/semantic/grammar.el (semantic-grammar-batch-build-one-package): * lisp/cus-start.el (standard): * lisp/emacs-lisp/comp.el (comp--native-compile): * lisp/emacs-lisp/edebug.el (edebug-max-depth): (edebug-read-and-maybe-wrap-form, edebug-default-enter): * lisp/emacs-lisp/regexp-opt.el (regexp-opt): * lisp/eshell/esh-mode.el (eshell-mode): * lisp/loadup.el (max-specpdl-size): * lisp/mh-e/mh-e.el (mh-invisible-headers): * lisp/net/shr.el (shr-insert-document, shr-descend): * lisp/play/hanoi.el (hanoi-internal): * lisp/progmodes/cperl-mode.el: * src/fileio.c (Fdo_auto_save): Remove references to and modifications of max-specpdl-size.
2022-09-19 08:55:09 +00:00
** New or changed byte-compilation warnings
---
*** Warn about empty bodies for more special forms and macros.
The compiler now warns about an empty body argument to 'when',
'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to
the existing warnings for 'let' and 'let*'. Example:
(when (> x 2))
This warning can be suppressed using 'with-suppressed-warnings' with
the warning name 'empty-body'.
---
*** Warn about quoted error names in 'condition-case' and 'ignore-error'.
The compiler now warns about quoted condition (error) names
in 'condition-case' and 'ignore-error'. Example:
(condition-case nil
(/ x y)
('arith-error "division by zero"))
Quoting them adds the error name 'quote' to those handled or ignored
respectively, which was probably not intended.
---
*** Warn about comparison with literal constants without defined identity.
The compiler now warns about comparisons by identity with a literal
string, cons, vector, record, function, large integer or float as this
may not match any value at all. Example:
(eq x "hello")
Only literals for symbols and small integers (fixnums), including
characters, are guaranteed to have a consistent (unique) identity.
This warning applies to 'eq', 'eql', 'memq', 'memql', 'assq', 'rassq',
'remq' and 'delq'.
To compare by (structural) value, use 'equal', 'member', 'assoc',
'rassoc', 'remove' or 'delete' instead. Floats and bignums can also
be compared using 'eql', '=' and 'memql'. Function literals cannot be
compared reliably at all.
This warning can be suppressed using 'with-suppressed-warnings' with
the warning name 'suspicious'.
Add 'file-user-uid' to get the connection-local effective UID In particular, this lets Eshell show a "#" root prompt sigil when the user has sudo'ed via "cd /sudo::" (bug#60722). * lisp/simple.el (file-user-uid): New function. * lisp/net/tramp.el (tramp-file-name-for-operation): Add 'file-user-uid'. (tramp-handle-file-user-uid): New function. * lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist): * lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist): * lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist): * lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist): * lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist): * lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist): * lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-handler-alist): * lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist): Add 'file-user-uid'. * lisp/net/tramp-archive.el (tramp-archive-handle-file-user-uid): New function... (tramp-archive-file-name-handler-alist): ... use it. * lisp/eshell/em-prompt.el (eshell-prompt-function): Use 'file-user-uid'. * lisp/eshell/esh-var.el (eshell-variable-aliases-list): Add '$UID'. * test/lisp/eshell/esh-var-tests.el (esh-var-test/uid-var): New test. * doc/lispref/os.texi (User Identification): Document 'file-user-uid'. * doc/lispref/files.texi (Magic File Names): Mention 'file-user-uid'. * doc/misc/eshell.texi (Variables): Document '$UID'. Add a missing index entry for '$INSIDE_EMACS'. * etc/NEWS: Announce 'file-user-uid'.
2023-01-10 23:35:18 +00:00
+++
** New function 'file-user-uid'.
This function is like 'user-uid', but is aware of file name handlers,
so it will return the remote UID for remote files (or -1 if the
connection has no associated user).
* Changes in Emacs 30.1 on Non-Free Operating Systems
1999-10-03 12:39:42 +00:00
----------------------------------------------------------------------
This file is part of GNU Emacs.
1999-10-03 12:39:42 +00:00
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
1999-10-03 12:39:42 +00:00
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
Local variables:
coding: utf-8
mode: outline
mode: emacs-news
paragraph-separate: "[ ]"
end: