diff --git a/etc/NEWS b/etc/NEWS index b75c1c9f6c..47ca9c4b6e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -68,6 +68,21 @@ option '--without-xinput2' to disable this support. '(featurep 'xinput2)' can be used to test for the presence of XInput 2 support from Lisp programs. +--- +** Emacs no longer reduces the size of the Japanese dictionary. +Building Emacs includes generation of a Japanese dictionary, which is +used by Japanese input methods. Previously, the build included a step +of reducing the size of this dictionary's vocabulary. This vocabulary +reduction is now optional, by default off. If you need the Emacs +build to include the vocabulary reduction, configure Emacs with the +option '--with-small-ja-dic'. In an Emacs source tree already +configured without that option, you can force the vocabulary reduction +by saying + + make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION='' + +after deleting lisp/leim/ja-dic/ja-dic.el. + +++ ** Emacs now supports being built with pure GTK. To use this option, make sure the GTK 3 (version 3.20 or later) and @@ -101,6 +116,14 @@ Emacs Sessions" node in the Emacs manual for more details. * Startup Changes in Emacs 29.1 ++++ +** -batch and -script now adjusts the garbage collection levels. +These switches now set 'gc-cons-percentage' to 1.0 (up from the +default of 0.1). This means that batch processes will typically use +more memory than before, but use less time doing garbage collection. +Batch jobs that are supposed to run for a long time should adjust the +limit back down again. + +++ ** Emacs can now be used more easily in an executable script. If you start an executable script with @@ -125,8 +148,15 @@ This is run at the end of the Emacs startup process, and is meant to be used to reinitialize structures that would normally be done at load time. +** Native Compilation + --- -** New function 'startup-redirect-eln-cache'. +*** New command 'native-compile-prune-cache'. +This command deletes older .eln cache entries (but not the ones for +the current Emacs version). + +--- +*** New function 'startup-redirect-eln-cache'. This function can be called in your init files to change the user-specific directory where Emacs stores the "*.eln" files produced by native compilation of Lisp packages Emacs loads. The default @@ -136,6 +166,24 @@ of 'user-emacs-directory'. * Incompatible changes in Emacs 29.1 ++++ +** Warning about "eager macro-expansion failure" is changed into an error. + +--- +** Previously, the X reverseVideo value at startup was heeded for all frames. +This meant that if you had a reverseVideo resource on the initial +display, and then opened up a new frame on a display without any +explicit reverseVideo setting, it would get heeded there, too. (This +included terminal frames.) In Emacs 29, the reverseVideo X resource +is handled like all the other X resources, and set on a per-frame basis. + ++++ +** 'E' in 'query-replace' now edits the replacement with exact case. +Previously, this command did the same as 'e'. + +--- +** '/ a' in *Packages* now limits by package name(s) instead of regexp. + +++ ** Setting the goal columns now also affects '' and ''. Previously, 'C-x C-n' only affected 'next-line' and 'previous-line', @@ -276,6 +324,58 @@ startup. Previously, these functions ignored * Changes in Emacs 29.1 +--- +** 'longlines-mode' is no longer obsolete. + ++++ +** New command to change the font size globally. +To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to +decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x +C-M-0'. The final key in these commands may be repeated without the +leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+' +and 'C-x C-M-+ + +' increase the font size by three steps. When +mouse-wheel-mode is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also +increase and decrease the font size globally. Additionally, the +variable 'global-text-scale-adjust-resizes-frames' controls whether +the frames are resized when the font size is changed. + +** New config variable 'syntax-wholeline-max' to reduce the cost of long lines. +This variable is used by some operations (mostly syntax-propertization +and font-locking) to treat lines longer than this variable as if they +were made up of various smaller lines. This can help reduce the +pathological slowdowns seen in buffers made of a single long line, but +can also cause misbehavior in the presence of such long lines (tho +most of that misbehavior should usually be limited to mis-highlighting). +You can recover the previous behavior with: + + (setq syntax-wholeline-max most-positive-fixnum) + +--- +** New bindings in 'find-function-setup-keys' for 'find-library'. +When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to +'find-library', 'C-x 4 L' is now bound to 'find-library-other-window' +and 'C-x 5 L' is now bound to 'find-library-other-frame'. + ++++ +** New key binding after 'M-x' or 'M-X': 'M-X'. +Emacs allows different completion predicates to be used with 'M-x' +(i.e., 'execute-extended-command') via the +'read-extended-command-predicate' user option. Emacs also has the +'M-X' (note upper case) command, which only displays commands +especially relevant to the current buffer. Emacs now allows toggling +between these modes while the user is inputting a command by hitting +'M-X' while in the minibuffer. + +--- +** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved. + +--- +** New command 'duplicate-line'. +This command duplicates the current line the specified number of times. + +--- +** Files with the '.eld' extension are now visited in 'lisp-data-mode'. + +++ ** New command 'find-sibling-file'. This command jumps to a file considered a "sibling file", which is @@ -292,6 +392,11 @@ This should be a regexp or a list of regexps; buffers whose names match those regexps will be ignored by 'switch-to-prev-buffer' and 'switch-to-next-buffer'. ++++ +** New command 'rename-visited-file'. +This command renames the file visited by the current buffer by moving +it to a new location, and also makes the buffer visit this new file. + ** Menus --- @@ -331,11 +436,33 @@ to another program. If non-nil, this option allows scrolling a window while dragging text around without a scroll wheel. ++++ +*** 'mouse-drag-copy-region' can now be 'non-empty'. +This inhibits putting empty strings onto the kill ring. + +++ ** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'. These options allow adjusting point and scrolling a window when dragging items from another program. ++++ +** The X Direct Save (XDS) protocol is now supported. +This means dropping an image or file link from programs such as +Firefox will no longer create a temporary file in a random directory, +instead asking you where to save the file first. + ++++ +** New user option 'record-all-keys'. +If non-nil, this option will force recording of all input keys, +including those typed in response to passwords prompt (this was the +previous behavior). The default is nil, which inhibits recording of +passwords. + ++++ +** New user option 'longlines-breakpoint-chars'. +This is a string containing chars that could be used as breakpoint in +longlines mode. + +++ ** New function 'command-query'. This function makes its argument command prompt the user for @@ -473,6 +600,12 @@ This is in addition to previously-supported ways of discovering 24-bit color support: either via the "RGB" or "setf24" capabilities, or if the 'COLORTERM' environment variable is set to the value "truecolor". +*** Select active regions with xterm selection support. +On terminals with xterm setSelection support, the active region may be +saved to the X primary selection, following the +'select-active-regions' variable. This support is enabled when +'tty-select-active-regions' is non-nil. + ** ERT +++ @@ -527,6 +660,11 @@ inserted. This command will tell you the name of the Emoji at point. (This command also works for non-Emoji characters.) +--- +*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'. +These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They +can be used on any character, but are mainly useful for emoji. + --- *** New input method 'emoji'. This allows you to enter emoji using short strings, eg ':face_palm:' @@ -534,6 +672,14 @@ or ':scream:'. ** Help +--- +*** Variable values displayed by 'C-h v' in *Help* are now font-locked. + ++++ +*** New user option 'help-clean-buttons'. +If non-nil, link buttons in *Help* will have any surrounding quotes +removed. + --- *** 'M-x apropos-variable' output now includes values of variables. @@ -729,6 +875,14 @@ available options can be restored by enabling this option. Use it if you want Imenu to forget the buffer's index alist and recreate it anew next time 'imenu' is invoked. ++++ +** Emacs is now capable of abandoning a window's redisplay that takes too long. +This is controlled by the new variable 'max-redisplay-ticks'. If that +variable is set to a non-zero value, display of a window will be +aborted after that many low-level redisplay operations, thus +preventing Emacs from becoming wedged when visiting files with very +long lines. + * Editing Changes in Emacs 29.1 +++ @@ -863,6 +1017,9 @@ corresponding language environments are: **** Lontara script and language environment **** Hanifi Rohingya script and language environment **** Grantha script and language environment +**** Kharoshthi script and language environment +**** Lepcha script and language environment +**** Meetei Mayek script and language environment --- *** The "Oriya" language environment was renamed to "Odia". @@ -879,6 +1036,41 @@ so automatically. * Changes in Specialized Modes and Packages in Emacs 29.1 +** Dired + +*** 'dired-info' and 'dired-man' moved from dired-x to dired. +The 'dired-info' and 'dired-man' commands have been moved from the +'dired-x' package to 'dired'. They have also been renamed to +'dired-do-info' and 'dired-do-man'; the old command names are obsolete +aliases. + +The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound +in Dired mode by default. The user options 'dired-bind-man' and +'dired-bind-info' no longer have any effect and are obsolete. + +To get the old behavior back and unbind these keys in Dired mode, add +the following to your Init file: + +(with-eval-after-load 'dired + (keymap-set dired-mode-map "N" nil) + (keymap-set dired-mode-map "I" nil)) + +** Elisp + +*** New command 'elisp-eval-buffer' (bound to 'C-c C-e'). +This command evals the forms in the current buffer. + +*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'. +These commands (bound to 'C-c C-f' and 'C-c C-b', respectively) +byte-compile the visited file and the current buffer, respectively. + +** Games + +--- +*** New user option 'tetris-allow-repetitions'. +This controls how randomness is implemented (whether to use pure +randomness as before or whether to use a bag). + ** Battery +++ @@ -950,6 +1142,11 @@ list-packages'. *** New command 'package-update-all'. This command allows updating all packages without any queries. ++++ +*** New commands 'package-recompile' and 'package-recompile-all'. +These commands can be useful if the .elc files are out of date +(invalid byte code and macros). + +++ *** New DWIM action on 'x' in "*Packages*" buffer. If no packages are marked, 'x' will install the package under point if @@ -965,12 +1162,30 @@ inadvertently delete the "*scratch*" buffer. ** Debugging +--- +*** 'q' in a *Backtrace* buffer no longer clears the buffer. +Instead it just buries the buffer and switches the mode from +'debugger-mode' to 'backtrace-mode', since commands like 'e' are no +longer available after exiting the recursive edit. + ++++ *** New user option 'debug-allow-recursive-debug'. This user option controls whether the 'e' (in a "*Backtrace*" buffer or while edebugging) and 'C-x C-e' (while edebugging) commands lead to a (further) backtrace. By default, this variable is nil, which is a change in behaviour from previous Emacs versions. ++++ +*** 'e' in edebug can now take a prefix arg to pretty-print the results. +When invoked with a prefix argument, as in 'C-u e', this command will +pop up a new buffer and show the full pretty-printed value there. + ++++ +*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results. +When invoked with a non-zero prefix argument, as in 'C-u C-x C-e', +this command will pop up a new buffer and show the full pretty-printed +value there. + ** Compile +++ @@ -1044,17 +1259,11 @@ To enable this behavior, customize the user option the second one will switch to the "*Completions*" buffer. --- -*** New user option 'completion-wrap-movement'. +*** New user option 'completion-auto-wrap'. When non-nil, the commands 'next-completion' and 'previous-completion' automatically wrap around on reaching the beginning or the end of the "*Completions*" buffer. -+++ -*** New user option 'completions-sort'. -This option controls the sorting of the completion candidates in -the "*Completions*" buffer. Available styles are no sorting, -alphabetical (the default), or a custom sort function. - +++ *** New values for the 'completion-auto-help' user option. There are two new values to control the way the "*Completions*" buffer @@ -1064,6 +1273,18 @@ to complete. The value 'visual' is like 'always', but only updates the completions if they are already visible. The default value 't' always hides the completion buffer after some completion is made. +*** New commands to complete the minibuffer history. +'minibuffer-complete-history' ('C-x up') is like 'minibuffer-complete' +but completes on the history items instead of the default completion +table. 'minibuffer-complete-defaults' ('C-x down') completes +on the list of default items. + ++++ +*** New user option 'completions-sort'. +This option controls the sorting of the completion candidates in +the "*Completions*" buffer. Available styles are no sorting, +alphabetical (the default), or a custom sort function. + +++ *** New user option 'completions-max-height'. This option limits the height of the "*Completions*" buffer. @@ -1087,6 +1308,11 @@ This means that typing 'C-u RET' on a completion candidate in the "*Completions*" buffer inserts the completion to the minibuffer, but doesn't exit the minibuffer. ++++ +*** You can now define abbrevs for the fundamental minibuffer modes. +'minibuffer-mode-abbrev-table' and +'minibuffer-inactive-mode-abbrev-table' are now defined. + ** Isearch and Replace +++ @@ -1250,6 +1476,13 @@ doesn't work on other systems. Also see etc/PROBLEMS. These are used to alter an URL before using it. By default it removes the common "utm_" trackers from URLs. +** Find-Dired + +*** New command 'find-dired-with-command'. +This enables users to run 'find-dired' with an arbitrary command, +enabling running commands previously unsupported and also enabling new +commands to be built on top. + ** Gnus +++ @@ -1431,6 +1664,10 @@ This controls whether or not to show a message when opening certain image formats saying how to edit it as text. The default is to show this message for SVG and XPM. ++++ +*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'. +These commands horizontally and vertically flip the image under point. + ** Image-Dired +++ @@ -1534,6 +1771,11 @@ the thumbnail file. ** Dired +--- +*** New user option 'dired-omit-lines'. +This is used by 'dired-omit-mode', and now allows you to hide based on +other things than just the file names. + +++ *** New user option 'dired-mouse-drag-files'. If non-nil, dragging file names with the mouse in a Dired buffer will @@ -1554,6 +1796,28 @@ If non-nil (which is the default), hitting 'RET' or 'mouse-1' on the directory components at the directory displayed at the start of the buffer will take you to that directory. +--- +*** Search and replace in Dired/Wdired supports more regexps. +For example, the regexp ".*" will match only characters that are part +of the file name. Also "^.*$" can be used to match at the beginning +of the file name and at the end of the file name. + +** Bookmarks + +--- +*** 'list-bookmarks' now includes a type column. +Types are registered via a 'bookmark-handler-type' symbol property on +the jumping function. + ++++ +*** 'bookmark-sort-flag' can now be set to 'last-modified'. +This will display bookmark list from most recently set to least +recently set. + +--- +*** When editing a bookmark annotation, 'C-c C-k' will now cancel. +It is bound to the new command 'bookmark-edit-annotation-cancel'. + ** Exif --- @@ -1687,6 +1951,12 @@ values passed as a single token, such as '-oVALUE' or 'eshell-eval-using-options' macro. See "Defining new built-in commands" in the "(eshell) Built-ins" node of the Eshell manual. +--- +*** Eshell globs ending with '/' now match only directories. +Additionally, globs ending with '**/' or '***/' no longer raise an +error, and now expand to all directories recursively (following +symlinks in the latter case). + ** Shell --- @@ -1714,16 +1984,6 @@ The resulting tables can display text in variable pitch fonts, text using fonts of different sizes, and images. See the "(vtable) Top" manual for more details. ---- -*** 'list-bookmarks' now includes a type column. -Types are registered via a 'bookmark-handler-type' symbol property on -the jumping function. - -+++ -*** 'bookmark-sort-flag' can now be set to 'last-modified'. -This will display bookmark list from most recently set to least -recently set. - --- *** New minor mode 'elide-head-mode'. Enabling this minor mode turns on hiding header material, like @@ -1735,6 +1995,17 @@ Enabling this minor mode turns on hiding header material, like If non-nil, files untracked by a VCS are considered to be part of the project by a VC project based on that VCS. +--- +*** 'recentf-mode' now uses shortened filenames by default. +This means that e.g. "/home/foo/bar" is now displayed as "~/bar". +Customize the user option 'recentf-filename-handlers' to nil to get +back the old behavior. + +--- +*** New command 'recentf-open'. +This command prompts for a recently opened file in the minibuffer, and +visits it. + --- ** The autoarg.el library is now marked obsolete. This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor @@ -1775,6 +2046,24 @@ Emacs buffers, like indentation and the like. The new ert function * Incompatible Lisp Changes in Emacs 29.1 +--- +** 'find-image' now uses 'create-image'. +This means that images found through 'find-image' also has +auto-scaling applied. (This only makes a difference on HiDPI +displays.) + ++++ +** Changes to "raw" in-memory xbm images are specified. +Some years back Emacs gained the ability to scale images, and you +could then specify :width and :height when using 'create-image' on all +image types -- except xbm images, because this format already used the +:width and :height arguments to specify the width/height of the "raw" +in-memory format. This meant that if you used these specifications +on, for instance, xbm files, Emacs would refuse to display them. This +has been changed, and :width/:height now works as with all other image +formats, and the way to specify the width/height of the "raw" +in-memory format is now by using :data-width and :data-height. + +++ ** loaddefs.el generation has been reimplemented. The various loaddefs.el files in the Emacs tree (which contain @@ -1943,9 +2232,35 @@ functions. --- ** '?\' at the end of a line now signals an error. Previously it produced a nonsense value, -1, that was never intended. + +** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed: +abbrevlist.el, assoc.el, complete.el, cust-print.el, +erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el, +patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el. + * Lisp Changes in Emacs 29.1 ++++ +** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'. +These function now take an optional comparison predicate argument. + ++++ +** 'read-multiple-choice' can now use long-form answers. + ++++ +** 'read-regexp' now allows the user to indicate whether to use case folding. + ++++ +** 'completing-read' now allows a function as its REQUIRE-MATCH argument. +This function is called to see whether what the user has typed in is a +match. This is also available from functions that call +'completing-read', like 'read-file-name'. + ++++ +** 'posn-col-row' can now give position data based on windows. +Previously, it reported data only based on the frame. + +++ ** 'file-expand-wildcards' can now also take a regexp as PATTERN argument. @@ -2114,9 +2429,10 @@ list in reported motion events if there is no frame underneath the mouse pointer. +++ -** New functions 'x-begin-drag', 'dnd-begin-text-drag' and 'dnd-begin-file-drag'. -These functions allow dragging contents (such as files and text) from -Emacs to other programs. +** New functions for dragging items from Emacs to other programs. +The new functions 'x-begin-drag', 'dnd-begin-file-drag', +'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents +(such as files and text) from Emacs to other programs. --- ** New function 'ietf-drums-parse-date-string'. @@ -2258,6 +2574,12 @@ option. ** Keymaps and key definitions ++++ +*** 'where-is-internal' can now filter events marked as non key events. +If a command maps to a key binding like [some-event], and 'some-event' +has a symbol plist containing a non-nil 'non-key-event' property, then +that binding is ignored by 'where-is-internal'. + +++ *** New functions for defining and manipulating keystrokes. These all take the syntax defined by 'key-valid-p'. None of the older @@ -2429,6 +2751,12 @@ dimensions. Specifying a cons as the FROM argument allows to start measuring text from a specified amount of pixels above or below a position. ++++ +** 'window-body-width' and 'window-body-height' can use remapped faces. +Specifying 'remap' as the PIXELWISE argument now checks if the default +face was remapped, and if so, uses the remapped face to determine the +character width/height. + +++ ** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P. This means the vscroll will not be reset when set on a window that is @@ -2646,6 +2974,10 @@ when used as part of a property list specification for the ** 'defalias' records a more precise history of definitions. This is recorded in the 'function-history' symbol property. +--- +** New hook 'save-place-after-find-file-hook'. +This is called at the end of 'save-place-find-file-hook'. + --- ** 'indian-tml-base-table' no longer translates digits. Use 'indian-tml-base-digits-table' if you want digits translation. @@ -2665,7 +2997,7 @@ invocation. Such shells are POSIX conformant by default. This is to determine which function has to be called in order to deliver the signal. This allows Tramp to send the signal to remote asynchronous processes. The hitherto existing implementation has been -moved to 'signal-default-interrupt-process'. +moved to 'internal-default-signal-process'. +++ ** 'list-system-processes' now returns remote process IDs.