aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2019-12-28 15:19:05 +0200
committerEli Zaretskii2019-12-28 15:19:05 +0200
commit74261ff301d9dc46a4aee9878febaaaa6f574a18 (patch)
tree16995a14ab244812abbd2c8fc306c5b68d9530a2
parent6c9571379ed68c171fcf80c4368f30bc9d453d2f (diff)
downloademacs-74261ff301d9dc46a4aee9878febaaaa6f574a18.tar.gz
emacs-74261ff301d9dc46a4aee9878febaaaa6f574a18.zip
Rearrange NEWS, add missing documentation
* etc/NEWS: Rearrange and mark entries whether documented or not. * doc/lispref/streams.texi (Output Variables): Document the new default of 'print-quoted'. * doc/lispref/keymaps.texi (Functions for Key Lookup): Document that KEYMAP arg to 'lookup-key' can also be a list. * doc/lispref/customize.texi (Variable Definitions): Document the :local keyword of 'defcustom'. * doc/lispref/numbers.texi (Float Basics): Document changes in 'logb'. * doc/lispref/hooks.texi (Standard Hooks): Document 'comint-password-function'. * doc/emacs/display.texi (Text Scale): Document text-size adjustment using the mouse wheel. * doc/emacs/frames.texi (Mouse Commands): Document image scaling with the mouse wheel. * doc/emacs/windows.texi (Window Convenience): Document 'global-tab-line-mode'. * doc/emacs/search.texi (Repeat Isearch, Symbol Search) (Isearch Yank): Document the new support for numeric arguments in Isearch commands. (Special Isearch): Document 'M-s M->' and 'M-s M-<'. (Search Customizations): Document 'isearch-lazy-count'. Improve indexing. (Not Exiting Isearch): Document the new value of 'isearch-allow-scroll'. * doc/emacs/maintaining.texi (Xref Commands): Document the new 'g' key binding. * doc/emacs/package.texi (Package Installation): Document changes in 'package-check-signature'. * doc/emacs/maintaining.texi (VC Change Log): Document 'vc-log-search'. * doc/emacs/dired.texi (Operating on Files): Document 'dired-vc-rename'.
-rw-r--r--doc/emacs/dired.texi5
-rw-r--r--doc/emacs/display.texi7
-rw-r--r--doc/emacs/frames.texi3
-rw-r--r--doc/emacs/maintaining.texi15
-rw-r--r--doc/emacs/package.texi6
-rw-r--r--doc/emacs/search.texi76
-rw-r--r--doc/emacs/windows.texi10
-rw-r--r--doc/lispref/customize.texi7
-rw-r--r--doc/lispref/hooks.texi4
-rw-r--r--doc/lispref/keymaps.texi2
-rw-r--r--doc/lispref/numbers.texi10
-rw-r--r--doc/lispref/streams.texi3
-rw-r--r--etc/NEWS641
13 files changed, 516 insertions, 273 deletions
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index d1863510d45..8a4fa7e183d 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -720,6 +720,11 @@ should create non-existent directories in @var{new}.
720Dired automatically changes the visited file name of buffers associated 720Dired automatically changes the visited file name of buffers associated
721with renamed files so that they refer to the new names. 721with renamed files so that they refer to the new names.
722 722
723@vindex dired-vc-rename
724If the value of the variable @code{dired-vc-rename} is non-@code{nil},
725files are renamed using the commands of the underlying VCS, via
726@code{vc-rename-file} (@pxref{VC Delete/Rename}).
727
723@findex dired-do-hardlink 728@findex dired-do-hardlink
724@kindex H @r{(Dired)} 729@kindex H @r{(Dired)}
725@cindex hard links (in Dired) 730@cindex hard links (in Dired)
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index cb37ef448e8..313abde6cf6 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -797,6 +797,8 @@ would be selected if you click a mouse or press @key{RET}.
797@kindex C-x C-- 797@kindex C-x C--
798@kindex C-x C-= 798@kindex C-x C-=
799@kindex C-x C-0 799@kindex C-x C-0
800@kindex C-wheel-down
801@kindex C-wheel-up
800 To increase the height of the default face in the current buffer, 802 To increase the height of the default face in the current buffer,
801type @kbd{C-x C-+} or @kbd{C-x C-=}. To decrease it, type @kbd{C-x 803type @kbd{C-x C-+} or @kbd{C-x C-=}. To decrease it, type @kbd{C-x
802C--}. To restore the default (global) face height, type @kbd{C-x 804C--}. To restore the default (global) face height, type @kbd{C-x
@@ -804,6 +806,11 @@ C-0}. These keys are all bound to the same command,
804@code{text-scale-adjust}, which looks at the last key typed to 806@code{text-scale-adjust}, which looks at the last key typed to
805determine which action to take. 807determine which action to take.
806 808
809 Similarly, scrolling the mouse wheel with the @kbd{Ctrl} modifier
810pressed, when the mouse pointer is above buffer text, will increase or
811decrease the height of the default face, depending on the direction of
812the scrolling.
813
807 The final key of these commands may be repeated without the leading 814 The final key of these commands may be repeated without the leading
808@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face 815@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face
809height by three steps. Each step scales the text height by a factor 816height by three steps. Each step scales the text height by a factor
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 8ea923fccb8..560d612ed43 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -222,6 +222,9 @@ be tilted. This feature is off by default; the variable
222the direction of horizontal scrolling, customize the variable 222the direction of horizontal scrolling, customize the variable
223@code{mouse-wheel-flip-direction} to a non-@code{nil} value. 223@code{mouse-wheel-flip-direction} to a non-@code{nil} value.
224 224
225When the mouse pointer is over an image, scrolling the mouse wheel
226with the @key{Ctrl} modifier scales the image under the mouse pointer.
227
225 228
226@node Word and Line Mouse 229@node Word and Line Mouse
227@section Mouse Commands for Words and Lines 230@section Mouse Commands for Words and Lines
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index fa92f568dac..6985486d09e 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -968,6 +968,9 @@ Display the changes that will be sent by the next ``push'' operation
968@item C-x v h 968@item C-x v h
969Display the history of changes made in the region of file visited by 969Display the history of changes made in the region of file visited by
970the current buffer (@code{vc-region-history}). 970the current buffer (@code{vc-region-history}).
971
972@item M-x vc-log-search @key{RET}
973Search the change history for a specified pattern.
971@end table 974@end table
972 975
973@kindex C-x v l 976@kindex C-x v l
@@ -1103,6 +1106,13 @@ defined by Diff mode (@pxref{Diff Mode}).
1103 1106
1104This command is currently available only with Git and Mercurial (hg). 1107This command is currently available only with Git and Mercurial (hg).
1105 1108
1109@findex vc-log-search
1110The command @code{vc-log-search} allows searching for a pattern in the
1111log of changes. It prompts for a pattern (a regular expression), and
1112displays all entries in the change history whose log messages match
1113the pattern. When invoked with a prefix argument, the command will
1114also prompt for a specific VCS shell command to run for this purpose.
1115
1106@node VC Undo 1116@node VC Undo
1107@subsection Undoing Version Control Actions 1117@subsection Undoing Version Control Actions
1108 1118
@@ -2001,6 +2011,11 @@ Perform interactive query-replace on references that match
2001@var{pattern} (@code{xref-query-replace-in-results}), replacing 2011@var{pattern} (@code{xref-query-replace-in-results}), replacing
2002the match with @var{replacement}. @xref{Identifier Search}. 2012the match with @var{replacement}. @xref{Identifier Search}.
2003 2013
2014@item g
2015@findex xref-revert-buffer
2016Refresh the contents of the @file{*xref*} buffer
2017(@code{xref-revert-buffer}.
2018
2004@findex xref-quit 2019@findex xref-quit
2005@item q 2020@item q
2006Quit the window showing the @file{*xref*} buffer (@code{xref-quit}). 2021Quit the window showing the @file{*xref*} buffer (@code{xref-quit}).
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 1c0f8534275..b9eb0a5852d 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -258,7 +258,11 @@ option has the value @code{allow-unsigned}, and a usable OpenPGP
258configuration is found, signed packages will be checked, but you can 258configuration is found, signed packages will be checked, but you can
259still install a package that is not signed. If you use some archives 259still install a package that is not signed. If you use some archives
260that do not sign their packages, you can add them to the list 260that do not sign their packages, you can add them to the list
261@code{package-unsigned-archives}. 261@code{package-unsigned-archives}. (If the value is
262@code{allow-unsigned} and no usable OpenPGP is found, this option is
263treated as if its value was @code{nil}.) If the value is @code{t}, at
264least one signature must be valid; if the value is @code{all}, all of
265them must be valid.
262 266
263 For more information on cryptographic keys and signing, 267 For more information on cryptographic keys and signing,
264@pxref{Top,, GnuPG, gnupg, The GNU Privacy Guard Manual}. 268@pxref{Top,, GnuPG, gnupg, The GNU Privacy Guard Manual}.
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index c0aaf6eda92..aa21312039a 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -168,10 +168,14 @@ matches that begin after it.
168the one you expected to find: the @samp{FOO} you were aiming for 168the one you expected to find: the @samp{FOO} you were aiming for
169occurs later in the buffer. In this event, type another @kbd{C-s} 169occurs later in the buffer. In this event, type another @kbd{C-s}
170(@code{isearch-repeat-forward}) to move to the next occurrence of the 170(@code{isearch-repeat-forward}) to move to the next occurrence of the
171search string. You can repeat this any number of times. If you 171search string, or @kbd{C-r} (@code{isearch-repeat-backward}) to move
172overshoot, you can cancel some @kbd{C-s} commands with @key{DEL}. 172to the previous occurrence. You can repeat these commands any number
173Similarly, each @kbd{C-r} (@code{isearch-repeat-backward}) in a 173of times. Alternatively, you can supply a numeric prefix argument of
174backward incremental search repeats the backward search. 174@var{n} to @kbd{C-s} and @kbd{C-r} to find the @var{n}th next or
175previous occurrence. If you overshoot, you can cancel some @kbd{C-s}
176commands with @key{DEL}. Similarly, each @kbd{C-r}
177(@code{isearch-repeat-backward}) in a backward incremental search
178repeats the backward search.
175 179
176@cindex lazy search highlighting 180@cindex lazy search highlighting
177 If you pause for a little while during incremental search, Emacs 181 If you pause for a little while during incremental search, Emacs
@@ -251,14 +255,18 @@ that conveniently.
251 @kbd{C-w} (@code{isearch-yank-word-or-char}) appends the next 255 @kbd{C-w} (@code{isearch-yank-word-or-char}) appends the next
252character or word at point to the search string. This is an easy way 256character or word at point to the search string. This is an easy way
253to search for another occurrence of the text at point. (The decision 257to search for another occurrence of the text at point. (The decision
254of whether to copy a character or a word is heuristic.) 258of whether to copy a character or a word is heuristic.) With a prefix
259numeric argument of @var{n}, append the next @var{n} characters or
260words.
255 261
256@kindex C-M-w @r{(Incremental search)} 262@kindex C-M-w @r{(Incremental search)}
257@findex isearch-yank-symbol-or-char 263@findex isearch-yank-symbol-or-char
258 @kbd{C-M-w} (@code{isearch-yank-symbol-or-char}) appends the next 264 @kbd{C-M-w} (@code{isearch-yank-symbol-or-char}) appends the next
259character or symbol at point to the search string. This is an easy way 265character or symbol at point to the search string. This is an easy way
260to search for another occurrence of the symbol at point. (The decision 266to search for another occurrence of the symbol at point. (The decision
261of whether to copy a character or a symbol is heuristic.) 267of whether to copy a character or a symbol is heuristic.) With a prefix
268numeric argument of @var{n}, append the next @var{n} characters or
269symbols.
262 270
263@kindex M-s C-e @r{(Incremental search)} 271@kindex M-s C-e @r{(Incremental search)}
264@findex isearch-yank-line 272@findex isearch-yank-line
@@ -270,10 +278,12 @@ end of a line, it appends the next line. With a prefix argument
270@kindex C-M-z @r{(Incremental search)} 278@kindex C-M-z @r{(Incremental search)}
271@findex isearch-yank-until-char 279@findex isearch-yank-until-char
272 Similarly, @kbd{C-M-z} (@code{isearch-yank-until-char}) appends to 280 Similarly, @kbd{C-M-z} (@code{isearch-yank-until-char}) appends to
273the search string everything from point until the next occurence of 281the search string everything from point until the next occurrence of
274a specified character (not including that character). This is especially 282a specified character (not including that character). This is especially
275useful for keyboard macros, for example in programming languages or 283useful for keyboard macros, for example in programming languages or
276markup languages in which that character marks a token boundary. 284markup languages in which that character marks a token boundary. With
285a prefix numeric argument of @var{n}, the command appends everything
286from point to the @var{n}th occurrence of the specified character.
277 287
278@kindex C-y @r{(Incremental search)} 288@kindex C-y @r{(Incremental search)}
279@kindex M-y @r{(Incremental search)} 289@kindex M-y @r{(Incremental search)}
@@ -481,6 +491,16 @@ remove the highlighting, type @kbd{M-s h u} (@code{unhighlight-regexp}).
481including a list of special key bindings. These key bindings are part 491including a list of special key bindings. These key bindings are part
482of the keymap @code{isearch-mode-map} (@pxref{Keymaps}). 492of the keymap @code{isearch-mode-map} (@pxref{Keymaps}).
483 493
494@cindex incremental search, go to first or last occurrence
495@kindex M-s M->
496@kindex M-s M-<
497 When incremental search is active, typing @kbd{M-s M->} will go to
498the last occurrence of the search string, and @kbd{M-s M-<} will go to
499the first occurrence. With a prefix numeric argument of @var{n},
500these commands will go to the @var{n}th occurrence of the search
501string counting from the beginning or end of the buffer,
502respectively.
503
484@node Not Exiting Isearch 504@node Not Exiting Isearch
485@subsection Not Exiting Incremental Search 505@subsection Not Exiting Incremental Search
486 506
@@ -530,7 +550,9 @@ commands like @kbd{C-v}, @kbd{M-v}, and @kbd{C-l} (@pxref{Scrolling}).
530This applies only to calling these commands via their bound key 550This applies only to calling these commands via their bound key
531sequences---typing @kbd{M-x} will still exit the search. You can give 551sequences---typing @kbd{M-x} will still exit the search. You can give
532prefix arguments to these commands in the usual way. This feature 552prefix arguments to these commands in the usual way. This feature
533won't let you scroll the current match out of visibility, however. 553normally won't let you scroll the current match out of visibility; but
554if you customize @code{isearch-allow-scroll} to the special value
555@code{unlimited}, that restriction is lifted.
534 556
535 The @code{isearch-allow-scroll} feature also affects some other 557 The @code{isearch-allow-scroll} feature also affects some other
536commands, such as @kbd{C-x 2} (@code{split-window-below}) and 558commands, such as @kbd{C-x 2} (@code{split-window-below}) and
@@ -739,15 +761,18 @@ Search backward for @var{symbol}, nonincrementally.
739@findex isearch-forward-symbol-at-point 761@findex isearch-forward-symbol-at-point
740 To begin a forward incremental symbol search, type @kbd{M-s _} (or 762 To begin a forward incremental symbol search, type @kbd{M-s _} (or
741@kbd{M-s .} if the symbol to search is near point). If incremental 763@kbd{M-s .} if the symbol to search is near point). If incremental
742search is not already active, this runs the command 764search is not already active, @kbd{M-s _} runs the command
743@code{isearch-forward-symbol}. If incremental search is already 765@code{isearch-forward-symbol} and @kbd{M-s .} runs the command
744active, @kbd{M-s _} switches to a symbol search, preserving the 766@code{isearch-forward-symbol-at-point}. With a numeric prefix
745direction of the search and the current search string; you can disable 767argument of @var{n}, @kbd{M-s .} will search for the @var{n}the next
746symbol search by typing @kbd{M-s _} again. In incremental symbol 768occurrence of the symbol at point; negative values of @var{n} search
747search, while you are typing the search string, only the beginning 769backwards. If incremental search is already active, @kbd{M-s _}
748of the search string is required to match the beginning of a symbol, 770switches to a symbol search, preserving the direction of the search
749and @samp{Pending} appears in the search prompt until you use a search 771and the current search string; you can disable symbol search by typing
750repeating key like @kbd{C-s}. 772@kbd{M-s _} again. In incremental symbol search, while you are typing
773the search string, only the beginning of the search string is required
774to match the beginning of a symbol, and @samp{Pending} appears in the
775search prompt until you use a search repeating key like @kbd{C-s}.
751 776
752 To begin a nonincremental symbol search, type @kbd{M-s _ @key{RET}} 777 To begin a nonincremental symbol search, type @kbd{M-s _ @key{RET}}
753for a forward search, or @kbd{M-s _ C-r @key{RET}} or a backward 778for a forward search, or @kbd{M-s _ C-r @key{RET}} or a backward
@@ -1955,17 +1980,32 @@ highlighting:
1955 1980
1956@table @code 1981@table @code
1957@item lazy-highlight-initial-delay 1982@item lazy-highlight-initial-delay
1983@vindex lazy-highlight-initial-delay
1958Time in seconds to wait before highlighting visible matches. 1984Time in seconds to wait before highlighting visible matches.
1959 1985
1960@item lazy-highlight-interval 1986@item lazy-highlight-interval
1987@vindex lazy-highlight-interval
1961Time in seconds between highlighting successive matches. 1988Time in seconds between highlighting successive matches.
1962 1989
1963@item lazy-highlight-max-at-a-time 1990@item lazy-highlight-max-at-a-time
1991@vindex lazy-highlight-max-at-a-time
1964The maximum number of matches to highlight before checking for input. 1992The maximum number of matches to highlight before checking for input.
1965A large number can take some time to highlight, so if you want to 1993A large number can take some time to highlight, so if you want to
1966continue searching and type @kbd{C-s} or @kbd{C-r} during that time, 1994continue searching and type @kbd{C-s} or @kbd{C-r} during that time,
1967Emacs will not respond until it finishes highlighting all those 1995Emacs will not respond until it finishes highlighting all those
1968matches. Thus, smaller values make Emacs more responsive. 1996matches. Thus, smaller values make Emacs more responsive.
1997
1998@item isearch-lazy-count
1999@vindex isearch-lazy-count
2000Show the current match number and the total number of matches in the
2001search prompt.
2002
2003@item lazy-count-prefix-format
2004@itemx lazy-count-suffix-format
2005@vindex lazy-count-prefix-format
2006@vindex lazy-count-suffix-format
2007These two variables determine the format of showing the current and
2008the total number of matches for @code{isearch-lazy-count}.
1969@end table 2009@end table
1970 2010
1971@vindex search-nonincremental-instead 2011@vindex search-nonincremental-instead
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index 53e9a4bb584..2c5a8463992 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -542,6 +542,16 @@ Reference Manual}), and cannot exceed the size of the containing frame.
542@node Window Convenience 542@node Window Convenience
543@section Convenience Features for Window Handling 543@section Convenience Features for Window Handling
544 544
545@findex global-tab-line-mode
546@cindex tab line
547 The command @code{global-tab-line-mode} toggles the display of a
548@dfn{tab line} on the top screen line of each window. The tab line
549shows special buttons (``tabs'') for each buffer that was displayed in
550a window, and allows switching to any of these buffers by clicking the
551corresponding button. You can add a tab by clicking on the @kbd{+}
552icon and delete a tab by clicking on the @kbd{x} icon of a tab. The
553mouse wheel on the tab line scrolls the tabs horizontally.
554
545@findex winner-mode 555@findex winner-mode
546@vindex winner-dont-bind-my-keys 556@vindex winner-dont-bind-my-keys
547@vindex winner-ring-size 557@vindex winner-ring-size
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 64c06c23867..b19feaf977f 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -427,6 +427,13 @@ the build-time context. This also has the side-effect that the
427@xref{Building Emacs}. 427@xref{Building Emacs}.
428@end table 428@end table
429 429
430@item :local @var{value}
431@kindex local@r{, @code{defcustom} keyword}
432If the @var{value} is @code{t}, mark @var{option} as automatically
433buffer-local; if the value is @code{permanent}, also set @var{option}s
434@code{permanent-local} property to @code{t}. @xref {Creating
435Buffer-Local}.
436
430@item :risky @var{value} 437@item :risky @var{value}
431@kindex risky@r{, @code{defcustom} keyword} 438@kindex risky@r{, @code{defcustom} keyword}
432Set the variable's @code{risky-local-variable} property to 439Set the variable's @code{risky-local-variable} property to
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi
index 4542db97306..26d26bed8ae 100644
--- a/doc/lispref/hooks.texi
+++ b/doc/lispref/hooks.texi
@@ -110,6 +110,10 @@ Function to call to quit the current buffer.
110@item change-major-mode-hook 110@item change-major-mode-hook
111@xref{Creating Buffer-Local}. 111@xref{Creating Buffer-Local}.
112 112
113@item comint-password-function
114This abnormal hook permits a derived mode to supply a password for the
115underlying command interpreter without prompting the user.
116
113@item command-line-functions 117@item command-line-functions
114@xref{Command-Line Arguments}. 118@xref{Command-Line Arguments}.
115 119
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 8ff329bdacb..813bf814394 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1171,6 +1171,8 @@ the second example.
1171@end group 1171@end group
1172@end example 1172@end example
1173 1173
1174The @var{keymap} argument can also be a list of keymaps.
1175
1174Unlike @code{read-key-sequence}, this function does not modify the 1176Unlike @code{read-key-sequence}, this function does not modify the
1175specified events in ways that discard information (@pxref{Key Sequence 1177specified events in ways that discard information (@pxref{Key Sequence
1176Input}). In particular, it does not convert letters to lower case and 1178Input}). In particular, it does not convert letters to lower case and
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index 939ad5c85a1..3127354ee2e 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -316,11 +316,11 @@ and returns the result. @var{x1} and @var{x2} must be floating point.
316@end defun 316@end defun
317 317
318@defun logb x 318@defun logb x
319This function returns the binary exponent of @var{x}. More 319This function returns the binary exponent of @var{x}. More precisely,
320precisely, if @var{x} is finite and nonzero, the value is the 320if @var{x} is finite and nonzero, the value is the logarithm base 2 of
321logarithm base 2 of @math{|x|}, rounded down to an integer. 321@math{|x|}, rounded down to an integer. If @var{x} is zero or
322If @var{x} is zero, infinite, or a NaN, the value is minus infinity, 322infinite, the value is infinity; if @var{x} is a NaN, the value is a
323plus infinity, or a NaN respectively. 323NaN.
324 324
325@example 325@example
326(logb 10) 326(logb 10)
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 600639f244f..08c3e519ebe 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -740,7 +740,8 @@ The default is @code{t}, meaning display in the echo area.
740@defvar print-quoted 740@defvar print-quoted
741If this is non-@code{nil}, that means to print quoted forms using 741If this is non-@code{nil}, that means to print quoted forms using
742abbreviated reader syntax, e.g., @code{(quote foo)} prints as 742abbreviated reader syntax, e.g., @code{(quote foo)} prints as
743@code{'foo}, and @code{(function foo)} as @code{#'foo}. 743@code{'foo}, and @code{(function foo)} as @code{#'foo}. The default
744is @code{t}.
744@end defvar 745@end defvar
745 746
746@defvar print-escape-newlines 747@defvar print-escape-newlines
diff --git a/etc/NEWS b/etc/NEWS
index cdd94271c9e..e630bb71fec 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -24,12 +24,14 @@ applies, and please also update docstrings as needed.
24 24
25* Installation Changes in Emacs 27.1 25* Installation Changes in Emacs 27.1
26 26
27---
27** Emacs now uses GMP, the GNU Multiple Precision library. 28** Emacs now uses GMP, the GNU Multiple Precision library.
28By default, if 'configure' does not find a suitable libgmp, it 29By default, if 'configure' does not find a suitable libgmp, it
29arranges for the included mini-gmp library to be built and used. 30arranges for the included mini-gmp library to be built and used.
30The new 'configure' option '--without-libgmp' uses mini-gmp even if a 31The new 'configure' option '--without-libgmp' uses mini-gmp even if a
31suitable libgmp is available. 32suitable libgmp is available.
32 33
34---
33** Emacs can now use HarfBuzz as its shaping engine. 35** Emacs can now use HarfBuzz as its shaping engine.
34The new configure option '--with-harfbuzz' adds support for the 36The new configure option '--with-harfbuzz' adds support for the
35HarfBuzz text shaping engine. It is on by default; use './configure 37HarfBuzz text shaping engine. It is on by default; use './configure
@@ -42,48 +44,19 @@ supported ones, so the font backends that use older shaping engines
42enabled by default; they can be enabled via the 'font-backend' frame 44enabled by default; they can be enabled via the 'font-backend' frame
43parameter or via X resources. 45parameter or via X resources.
44 46
45** The new configure option '--with-json' adds support for JSON using 47---
46the Jansson library. It is on by default; use './configure 48** The new configure option '--with-json' adds native support for JSON.
47--with-json=no' to build without Jansson support. The new JSON 49This uses the Jansson library. The option is on by default; use
48functions 'json-serialize', 'json-insert', 'json-parse-string', and 50'./configure --with-json=no' to build without Jansson support. The
49'json-parse-buffer' are typically much faster than their Lisp 51new JSON functions 'json-serialize', 'json-insert',
50counterparts from json.el. 52'json-parse-string', and 'json-parse-buffer' are typically much faster
53than their Lisp counterparts from json.el.
51 54
55---
52** The configure option '--with-cairo' is no longer experimental. 56** The configure option '--with-cairo' is no longer experimental.
53This builds Emacs with Cairo drawing, and supports built-in printing 57This builds Emacs with Cairo drawing, and supports built-in printing
54when Emacs is built with GTK+. 58when Emacs is built with GTK+. Some severe bugs in this build were
55 59fixed, and we can therefore offer this to users without caveats.
56** Emacs no longer defaults to using ImageMagick to display images,
57due to security and stability concerns. To override the default, use
58'configure --with-imagemagick'.
59
60** Several configure options now accept an option-argument 'ifavailable'.
61For example, './configure --with-xpm=ifavailable' now configures Emacs
62to attempt to use libxpm but to continue building even if libxpm is
63absent. The other affected options are '--with-gif', '--with-gnutls',
64'--with-jpeg', '--with-png', and '--with-tiff'.
65
66** The etags program now uses the C library's regular expression matcher
67when possible, and a compatible regex substitute otherwise. This will
68let developers maintain Emacs's own regex code without having to also
69support other programs. The new configure option '--without-included-regex'
70forces etags to use the C library's regex matcher even if the regex
71substitute ordinarily would be used to work around compatibility problems.
72
73** Emacs has been ported to the '-fcheck-pointer-bounds' option of GCC.
74This causes Emacs to check bounds of some arrays addressed by its
75internal pointers, which can be helpful when debugging the Emacs
76interpreter or modules that it uses. If your platform supports it you
77can enable it when configuring, e.g., './configure CFLAGS="-g3 -O2
78-mmpx -fcheck-pointer-bounds"' on Intel MPX platforms.
79
80** Emacs now normally uses a C pointer type instead of a C integer
81type to implement Lisp_Object, which is the fundamental machine word
82type internal to the Emacs Lisp interpreter. This change aims to
83catch typos and supports '-fcheck-pointer-bounds'. The 'configure'
84option '--enable-check-lisp-object-type' is therefore no longer as
85useful and so is no longer enabled by default in developer builds,
86to reduce differences between developer and production builds.
87 60
88+++ 61+++
89** Emacs now uses a "portable dumper" instead of unexec. 62** Emacs now uses a "portable dumper" instead of unexec.
@@ -100,20 +73,21 @@ non-default '.pdmp' file to load the state from; see the node "Initial
100Options" in the Emacs manual for more information. 73Options" in the Emacs manual for more information.
101 74
102An Emacs started via a dump file can create a new dump file only if it 75An Emacs started via a dump file can create a new dump file only if it
103was invoked with the '-batch' option. 76was invoked with the '-batch' option. (This is a temporary
77limitation; we plan on lifting it in a future release.)
104 78
105Although the portable dumper has been tested, it may have a bug on 79Although the portable dumper has been tested, it may have a bug on
106unusual platforms. If you require traditional unexec dumping you can 80unusual platforms. If you require traditional unexec dumping you can
107use the configure-time option '--with-dumping=unexec'; however, please 81use the configure-time option '--with-dumping=unexec'; however, please
108file a bug report describing the situation, as unexec dumping is 82file a bug report describing the situation, as unexec dumping is
109deprecated. 83deprecated, and we plan on removing it in some future release.
110 84
111+++ 85---
112** The new configure option '--enable-checking=structs' attempts to 86** The new configure option '--enable-checking=structs' attempts to
113check that the portable dumper code has been updated to match the last 87check that the portable dumper code has been updated to match the last
114change to one of the data structures that it relies on. 88change to one of the data structures that it relies on.
115 89
116+++ 90---
117** The configure options '--enable-checking=conslist' and 91** The configure options '--enable-checking=conslist' and
118'--enable-checking=xmallocoverrun' have been withdrawn. The former 92'--enable-checking=xmallocoverrun' have been withdrawn. The former
119made Emacs irredeemably slow, and the latter made it crash. Neither 93made Emacs irredeemably slow, and the latter made it crash. Neither
@@ -121,7 +95,46 @@ option was useful with modern debugging tools such as AddressSanitizer.
121(See etc/DEBUG for the details of using the modern replacements of the 95(See etc/DEBUG for the details of using the modern replacements of the
122removed configure options.) 96removed configure options.)
123 97
124+++ 98---
99** Emacs no longer defaults to using ImageMagick to display images.
100This is due to security and stability concerns with ImageMagick. To
101override the default, use 'configure --with-imagemagick'.
102
103---
104** Several configure options now accept an option-argument 'ifavailable'.
105For example, './configure --with-xpm=ifavailable' now configures Emacs
106to attempt to use libxpm but to continue building even if libxpm is
107absent. The other affected options are '--with-gif', '--with-gnutls',
108'--with-jpeg', '--with-png', and '--with-tiff'.
109
110---
111** The 'etags' program now uses the C library's regular expression matcher.
112If it's possible, 'etags' will use the regexp matcher from the
113system's standard C library, otherwise it will be linked with a
114compatible regex substitute. This lets developers maintain Emacs's
115own regex code without having to also support other programs. The new
116configure option '--without-included-regex' forces 'etags' to use the C
117library's regex matcher even if the regex substitute ordinarily would
118be used to work around compatibility problems.
119
120---
121** Emacs has been ported to the '-fcheck-pointer-bounds' option of GCC.
122This causes Emacs to check bounds of some arrays addressed by its
123internal pointers, which can be helpful when debugging the Emacs
124interpreter or modules that it uses. If your platform supports it you
125can enable it when configuring, e.g., './configure CFLAGS="-g3 -O2
126-mmpx -fcheck-pointer-bounds"' on Intel MPX platforms.
127
128---
129** Emacs now normally uses a C pointer type instead of a C integer
130type to implement Lisp_Object, which is the fundamental machine word
131type internal to the Emacs Lisp interpreter. This change aims to
132catch typos and supports '-fcheck-pointer-bounds'. The 'configure'
133option '--enable-check-lisp-object-type' is therefore no longer as
134useful and so is no longer enabled by default in developer builds,
135to reduce differences between developer and production builds.
136
137---
125** The distribution tarball now has test cases; 'make check' runs them. 138** The distribution tarball now has test cases; 'make check' runs them.
126This is intended mostly to help developers. 139This is intended mostly to help developers.
127 140
@@ -129,10 +142,13 @@ This is intended mostly to help developers.
129** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3 142** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3
130builds respectively. 143builds respectively.
131 144
145---
132** New make target 'help' shows a summary of common make targets. 146** New make target 'help' shows a summary of common make targets.
133 147
134** Emacs now builds with dynamic module support by default. Pass 148---
135'--without-modules' to 'configure' to disable dynamic module support. 149** Emacs now builds with dynamic module support by default.
150Pass '--without-modules' to 'configure' to disable dynamic module
151support.
136 152
137 153
138* Startup Changes in Emacs 27.1 154* Startup Changes in Emacs 27.1
@@ -203,6 +219,55 @@ the new version of the file again.)
203* Changes in Emacs 27.1 219* Changes in Emacs 27.1
204 220
205+++ 221+++
222** Emacs now supports resizing and rotating images without ImageMagick.
223All modern systems support this feature. (On GNU and Unix systems,
224Cairo drawing or the XRender extension to X11 is required for this to
225be available; the configure script will test for it and, if found,
226enable scaling.)
227
228The new function 'image-transforms-p' can be used to test whether any
229given frame supports these capabilities.
230
231+++
232** The Network Security Manager now allows more fine-grained control
233of what checks to run via the 'network-security-protocol-checks'
234user option.
235
236+++
237** TLS connections have their security tightened by default.
238Most of the checks for outdated, believed-to-be-weak TLS algorithms
239and ciphers are now switched on by default. (In addition, several new
240TLS weaknesses are now warned about.) By default, the NSM will
241flag connections using these weak algorithms and ask users whether to
242allow them. To get the old behavior back (where certificates are
243checked for validity, but no warnings about weak cryptography are
244issued), you can either set 'network-security-protocol-checks' to nil,
245or adjust the elements in that user option to only happen on the 'high'
246security level (assuming you use the 'medium' level).
247
248---
249** New user option 'nsm-trust-local-network'.
250Allows skipping Network Security Manager checks for hosts on your
251local subnet(s). It defaults to nil. Usually, there should be no
252need to set this non-nil, and doing that risks opening your local
253network connections to attacks. So be sure you know what you are
254doing before changing the value.
255
256+++
257** Native GnuTLS connections can now use client certificates.
258Previously, this support was only available when using the external
259'gnutls-cli' command. Call 'open-network-stream' with
260':client-certificate t' to trigger looking up of per-server
261certificates via 'auth-source'.
262
263+++
264** New user option 'network-stream-use-client-certificates'.
265When non-nil, 'open-network-stream' performs lookups of client
266certificates using 'auth-source' as if ':client-certificate t' were
267specified if there is no explicit ':client-certificate' parameter.
268Defaults to nil.
269
270+++
206** 'next/previous-multiframe-window' have been renamed. 271** 'next/previous-multiframe-window' have been renamed.
207The new names are as follows: 272The new names are as follows:
208 273
@@ -215,14 +280,14 @@ compatibility.
215** emacsclient 280** emacsclient
216 281
217+++ 282+++
218*** emacsclient now supports an 'EMACS_SOCKET_NAME' environment variable. 283*** emacsclient now supports the 'EMACS_SOCKET_NAME' environment variable.
219The command-line argument '--socket-name' overrides it. 284The command-line argument '--socket-name' overrides it.
220(The same behavior as for the pre-existing 'EMACS_SERVER_FILE' variable.) 285(The same behavior as for the pre-existing 'EMACS_SERVER_FILE' variable.)
221 286
222+++ 287+++
223*** Emacs and emacsclient now default to "$XDG_RUNTIME_DIR/emacs" 288*** Emacs and emacsclient now default to "$XDG_RUNTIME_DIR/emacs".
224as the directory for client/server sockets, if Emacs is running 289This is used as the directory for client/server sockets, if Emacs is
225on a platform or environment that sets the 'XDG_RUNTIME_DIR' 290running on a platform or environment that sets the 'XDG_RUNTIME_DIR'
226environment variable to indicate where session sockets should go. 291environment variable to indicate where session sockets should go.
227To get the old, less-secure behavior, you can set the 292To get the old, less-secure behavior, you can set the
228'EMACS_SOCKET_NAME' environment variable to an appropriate value. 293'EMACS_SOCKET_NAME' environment variable to an appropriate value.
@@ -315,45 +380,6 @@ such as 'libxml-parse-html-region') traversal function has been added:
315that match. 380that match.
316 381
317+++ 382+++
318** The Network Security Manager now allows more fine-grained control
319of what checks to run via the 'network-security-protocol-checks'
320user option.
321
322+++
323** TLS connections have their security tightened by default.
324Most of the checks for outdated, believed-to-be-weak TLS algorithms
325and ciphers are now switched on by default. (In addition, several new
326TLS weaknesses are now warned about.) By default, the NSM will
327flag connections using these weak algorithms and ask users whether to
328allow them. To get the old behavior back (where certificates are
329checked for validity, but no warnings about weak cryptography are
330issued), you can either set 'network-security-protocol-checks' to nil,
331or adjust the elements in that user option to only happen on the 'high'
332security level (assuming you use the 'medium' level).
333
334---
335** New user option 'nsm-trust-local-network'.
336Allows skipping Network Security Manager checks for hosts on your
337local subnet(s). It defaults to nil. Usually, there should be no
338need to set this non-nil, and doing that risks opening your local
339network connections to attacks. So be sure you know what you are
340doing before changing the value.
341
342+++
343** Native GnuTLS connections can now use client certificates.
344Previously, this support was only available when using the external
345'gnutls-cli' command. Call 'open-network-stream' with
346':client-certificate t' to trigger looking up of per-server
347certificates via 'auth-source'.
348
349+++
350** New user option 'network-stream-use-client-certificates'.
351When non-nil, 'open-network-stream' performs lookups of client
352certificates using 'auth-source' as if ':client-certificate t' were
353specified if there is no explicit ':client-certificate' parameter.
354Defaults to nil.
355
356+++
357** New function 'fill-polish-nobreak-p', to be used in 'fill-nobreak-predicate'. 383** New function 'fill-polish-nobreak-p', to be used in 'fill-nobreak-predicate'.
358It blocks line breaking after a one-letter word, also in the case when 384It blocks line breaking after a one-letter word, also in the case when
359this word is preceded by a non-space, but non-alphanumeric character. 385this word is preceded by a non-space, but non-alphanumeric character.
@@ -382,7 +408,8 @@ The Sami input methods include: 'norwegian-sami-prefix',
382'skolt-sami-prefix', and 'kildin-sami-prefix'. 408'skolt-sami-prefix', and 'kildin-sami-prefix'.
383 409
384+++ 410+++
385** In Japanese environments that do not specify encodings and are not 411** Japanese environments use UTF-8 by default.
412In Japanese environments that do not specify encodings and are not
386based on MS-Windows, the default encoding is now utf-8 instead of 413based on MS-Windows, the default encoding is now utf-8 instead of
387japanese-iso-8bit. 414japanese-iso-8bit.
388 415
@@ -475,6 +502,7 @@ grep hits (this used to be controlled by 'compilation-search-path').
475directories searched for byte-compiler error messages (this used to 502directories searched for byte-compiler error messages (this used to
476be controlled by 'compilation-search-path'). 503be controlled by 'compilation-search-path').
477 504
505---
478** Multicolor fonts such as "Noto Color Emoji" can be displayed on 506** Multicolor fonts such as "Noto Color Emoji" can be displayed on
479Emacs configured with Cairo drawing and linked with cairo >= 1.16.0. 507Emacs configured with Cairo drawing and linked with cairo >= 1.16.0.
480 508
@@ -542,6 +570,13 @@ if so, 'backup-by-copying-when-mismatch' will be forced on.
542* Editing Changes in Emacs 27.1 570* Editing Changes in Emacs 27.1
543 571
544+++ 572+++
573** When asked to visit a large file, Emacs now offers visiting it literally.
574Previously, Emacs would only ask for confirmation before visiting
575large files. Now it also offers a third alternative: to visit the
576file literally, as in 'find-file-literally', which speeds up
577navigation and editing of large files.
578
579+++
545** 'zap-to-char' now uses history of characters you used to zap to. 580** 'zap-to-char' now uses history of characters you used to zap to.
546'zap-to-char' uses the new 'read-char-from-minibuffer' function to allow 581'zap-to-char' uses the new 'read-char-from-minibuffer' function to allow
547navigating through the history of characters that have been input. 582navigating through the history of characters that have been input.
@@ -552,6 +587,12 @@ where inputting the character again may involve many keystrokes.
552** 'save-some-buffers' now has a new action in the prompt: 'C-f' will 587** 'save-some-buffers' now has a new action in the prompt: 'C-f' will
553exit the command and switch to the buffer currently being asked about. 588exit the command and switch to the buffer currently being asked about.
554 589
590---
591** More commands support noncontiguous rectangular regions, namely
592'upcase-dwim', 'downcase-dwim', 'capitalize-dwim', 'capitalize-region',
593'upcase-initials-region', 'replace-string', 'replace-regexp', and
594'delimit-columns-region'.
595
555+++ 596+++
556** The new 'amalgamating-undo-limit' variable can be used to control 597** The new 'amalgamating-undo-limit' variable can be used to control
557how many changes should be amalgamated when using the 'undo' command. 598how many changes should be amalgamated when using the 'undo' command.
@@ -600,19 +641,6 @@ tables which do not have any non-system abbrevs to save.
600interface that's more like functions like 'search-forward'. 641interface that's more like functions like 'search-forward'.
601 642
602--- 643---
603** More commands support noncontiguous rectangular regions, namely
604'upcase-dwim', 'downcase-dwim', 'capitalize-dwim', 'capitalize-region',
605'upcase-initials-region', 'replace-string', 'replace-regexp', and
606'delimit-columns-region'.
607
608+++
609** When asked to visit a large file, Emacs now offers visiting it literally.
610Previously, Emacs would only ask for confirmation before visiting
611large files. Now it also offers a third alternative: to visit the
612file literally, as in 'find-file-literally', which speeds up
613navigation and editing of large files.
614
615---
616** 'add-dir-local-variable' now uses dotted pair notation syntax to 644** 'add-dir-local-variable' now uses dotted pair notation syntax to
617write alists of variables to ".dir-locals.el". This is the same 645write alists of variables to ".dir-locals.el". This is the same
618syntax that you can see in the example of a ".dir-locals.el" file in 646syntax that you can see in the example of a ".dir-locals.el" file in
@@ -642,6 +670,11 @@ If the region is active, the command joins all the lines in the
642region. When there's no active region, the command works on the 670region. When there's no active region, the command works on the
643current and the previous or the next line, as before. 671current and the previous or the next line, as before.
644 672
673+++
674** You can now change the font size with the mouse wheel.
675Scroling the mouse wheel with the Ctrl key pressed will now act the
676same as the 'C-x C-+' and 'C-x C--' commands.
677
645 678
646* Changes in Specialized Modes and Packages in Emacs 27.1 679* Changes in Specialized Modes and Packages in Emacs 27.1
647 680
@@ -795,6 +828,7 @@ at the end of the active minibuffer.
795+++ 828+++
796*** 'y-or-n-p' now uses the minibuffer to read 'y' or 'n' answer. 829*** 'y-or-n-p' now uses the minibuffer to read 'y' or 'n' answer.
797 830
831---
798*** Some commands that previously used 'read-char-choice' now read 832*** Some commands that previously used 'read-char-choice' now read
799a character using the minibuffer by 'read-char-from-minibuffer'. 833a character using the minibuffer by 'read-char-from-minibuffer'.
800 834
@@ -827,9 +861,11 @@ back, customize 'follow-hide-ghost-cursors' to nil.
827 861
828** Windmove 862** Windmove
829 863
830*** 'windmove-create-window' when non-nil makes a new window on moving off 864---
831the edge of the frame. 865*** 'windmove-create-window' when non-nil makes a new window.
866This happens upon moving off the edge of the frame.
832 867
868---
833*** Windmove supports directional window display and selection. 869*** Windmove supports directional window display and selection.
834The new command 'windmove-display-default-keybindings' binds default 870The new command 'windmove-display-default-keybindings' binds default
835keys with provided modifiers (by default, Shift-Meta) to the commands 871keys with provided modifiers (by default, Shift-Meta) to the commands
@@ -843,6 +879,7 @@ display the buffer in the same window, for example, 'S-M-0 C-h e'
843displays the "*Messages*" buffer in the same window. 'S-M-t C-h C-n' 879displays the "*Messages*" buffer in the same window. 'S-M-t C-h C-n'
844displays NEWS in a new tab. 880displays NEWS in a new tab.
845 881
882---
846*** Windmove also supports directional window deletion. 883*** Windmove also supports directional window deletion.
847The new command 'windmove-delete-default-keybindings' binds default 884The new command 'windmove-delete-default-keybindings' binds default
848keys with provided prefix (by default, 'C-x') and modifiers (by default, 885keys with provided prefix (by default, 'C-x') and modifiers (by default,
@@ -852,13 +889,15 @@ With a prefix arg 'C-u', also kills the buffer in that window.
852With 'M-0', deletes the selected window and selects the window 889With 'M-0', deletes the selected window and selects the window
853that was in the specified direction. 890that was in the specified direction.
854 891
892---
855*** New command 'windmove-swap-states-in-direction' binds default keys 893*** New command 'windmove-swap-states-in-direction' binds default keys
856to the commands that swap the states of the selected window with the 894to the commands that swap the states of the selected window with the
857window in the specified direction. 895window in the specified direction.
858 896
859*** Windmove code no longer used is now obsolete. That includes the 897---
860user option 'windmove-window-distance-delta' and the functions 898*** Windmove code no longer used is now obsolete.
861'windmove-coord-add', 'windmove-constrain-to-range', 899That includes the user option 'windmove-window-distance-delta' and the
900functions 'windmove-coord-add', 'windmove-constrain-to-range',
862'windmove-constrain-around-range', 'windmove-frame-edges', 901'windmove-constrain-around-range', 'windmove-frame-edges',
863'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement', 902'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement',
864'windmove-reference-loc' and 'windmove-other-window-loc'. 903'windmove-reference-loc' and 'windmove-other-window-loc'.
@@ -878,9 +917,11 @@ The mode is automatically enabled in files that start with the
878+++ 917+++
879*** 'next-file' is now an obsolete alias of 'tags-next-file'. 918*** 'next-file' is now an obsolete alias of 'tags-next-file'.
880 919
920---
881*** 'tags-loop-revert-buffers' is an obsolete alias of 921*** 'tags-loop-revert-buffers' is an obsolete alias of
882'fileloop-revert-buffers'. 922'fileloop-revert-buffers'.
883 923
924+++
884*** The 'tags-loop-continue' function along with the 925*** The 'tags-loop-continue' function along with the
885'tags-loop-operate' and 'tags-loop-scan' variables are now obsolete; 926'tags-loop-operate' and 'tags-loop-scan' variables are now obsolete;
886use the new 'fileloop-initialize' and 'fileloop-continue' functions 927use the new 'fileloop-initialize' and 'fileloop-continue' functions
@@ -906,9 +947,10 @@ permissions of such files with a special face 'dired-set-id'.
906*** New command 'dired-create-empty-file'. 947*** New command 'dired-create-empty-file'.
907 948
908+++ 949+++
909*** New command and keystroke 'dired-number-of-marked-files' bound to 950*** New command 'dired-number-of-marked-files'.
910'* N'. 951It is by default bound to '* N'.
911 952
953---
912*** The marking commands now report how many files were marked by the 954*** The marking commands now report how many files were marked by the
913command itself, not how many files are marked in total. 955command itself, not how many files are marked in total.
914 956
@@ -925,19 +967,22 @@ directories in the destination.
925*** 'dired-dwim-target' can be customized to prefer either the next window, 967*** 'dired-dwim-target' can be customized to prefer either the next window,
926or one of the most recently visited windows with a Dired buffer. 968or one of the most recently visited windows with a Dired buffer.
927 969
970+++
928*** When the new user option 'dired-vc-rename-file' is non-nil, 971*** When the new user option 'dired-vc-rename-file' is non-nil,
929Dired performs file renaming using underlying version control system. 972Dired performs file renaming using underlying version control system.
930 973
974---
975*** Zstandard compression is now supported for 'dired-do-compress' and
976'dired-do-compress-to'.
977
931** Find-Dired 978** Find-Dired
932 979
980---
933*** New user option 'find-dired-refine-function'. 981*** New user option 'find-dired-refine-function'.
934The default value is 'find-dired-sort-by-filename'. 982The default value is 'find-dired-sort-by-filename'.
935 983
936*** New sorting options for the user option 'find-ls-option'.
937
938--- 984---
939*** Zstandard compression is now supported for 'dired-do-compress' and 985*** New sorting options for the user option 'find-ls-option'.
940'dired-do-compress-to'.
941 986
942** Change Logs and VC 987** Change Logs and VC
943 988
@@ -951,11 +996,13 @@ script. The default is nil.
951*** New command 'log-edit-generate-changelog-from-diff', bound to 'C-c C-w'. 996*** New command 'log-edit-generate-changelog-from-diff', bound to 'C-c C-w'.
952This generates ChangeLog entries from the VC fileset diff. 997This generates ChangeLog entries from the VC fileset diff.
953 998
999---
954*** 'vc-dir' now shows a button allowing you to hide the stash list. 1000*** 'vc-dir' now shows a button allowing you to hide the stash list.
955Controlled by user option 'vc-git-show-stash'. Default t means show 1001Controlled by user option 'vc-git-show-stash'. Default t means show
956the entire list as before. An integer value limits the list length 1002the entire list as before. An integer value limits the list length
957(but still allows you to show the entire list via the button). 1003(but still allows you to show the entire list via the button).
958 1004
1005+++
959*** Recording ChangeLog entries doesn't require an actual file. 1006*** Recording ChangeLog entries doesn't require an actual file.
960If a ChangeLog file doesn't exist, and if the new user option 1007If a ChangeLog file doesn't exist, and if the new user option
961'add-log-dont-create-changelog-file' is non-nil (which is the 1008'add-log-dont-create-changelog-file' is non-nil (which is the
@@ -965,27 +1012,32 @@ still be used if it exists.) Set the user option to nil to get the
965previous behavior of always creating a buffer that visits a ChangeLog 1012previous behavior of always creating a buffer that visits a ChangeLog
966file. 1013file.
967 1014
1015---
968*** New user option 'vc-find-revision-no-save'. 1016*** New user option 'vc-find-revision-no-save'.
969With non-nil, 'vc-find-revision' doesn't write the created buffer to file. 1017With non-nil, 'vc-find-revision' doesn't write the created buffer to file.
970 1018
971--- 1019---
972*** 'vc-dir-ignore' now takes a prefix argument to ignore all marked files. 1020*** 'vc-dir-ignore' now takes a prefix argument to ignore all marked files.
973 1021
1022---
974*** New user option 'vc-git-grep-template'. 1023*** New user option 'vc-git-grep-template'.
975This new user option allows customizing the default arguments passed to 1024This new user option allows customizing the default arguments passed to
976'git-grep' when 'vc-git-grep' is used. 1025'git-grep' when 'vc-git-grep' is used.
977 1026
1027---
978*** Command 'vc-git-stash' now respects marks in the "*vc-dir*" buffer. 1028*** Command 'vc-git-stash' now respects marks in the "*vc-dir*" buffer.
979When some files are marked, only those are stashed. 1029When some files are marked, only those are stashed.
980When no files are marked, all modified files are stashed, as before. 1030When no files are marked, all modified files are stashed, as before.
981 1031
982*** 'vc-git-stash' has now been bound to the 'C' keystroke in the 1032---
983stash headers. 1033*** 'vc-git-stash' is now bound to 'C' in the stash headers.
984 1034
1035--
985*** Some stash keybindings are now available in the stash button. 1036*** Some stash keybindings are now available in the stash button.
986'vc-git-stash' and 'vc-git-stash-snapshot' can now be run using 'C' 1037'vc-git-stash' and 'vc-git-stash-snapshot' can now be run using 'C'
987and 'S' respectively, including when there are no stashes. 1038and 'S' respectively, including when there are no stashes.
988 1039
1040---
989*** The new hook 'vc-retrieve-tag-hook' runs after retrieving a tag. 1041*** The new hook 'vc-retrieve-tag-hook' runs after retrieving a tag.
990 1042
991--- 1043---
@@ -1013,8 +1065,8 @@ for a revision.
1013*** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions 1065*** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions
1014and compares their entire trees. 1066and compares their entire trees.
1015 1067
1016*** New user option 'vc-hg-revert-switches' specifies switches to pass 1068*** New user option 'vc-hg-revert-switches'.
1017to Hg revert. 1069It specifies switches to pass to Hg's 'revert' command.
1018 1070
1019*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase') 1071*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase')
1020print diffs and logs between the merge base (common ancestor) of two 1072print diffs and logs between the merge base (common ancestor) of two
@@ -1026,6 +1078,7 @@ buffers will delete the marked files (or if no files are marked, the
1026file under point). This command does not notify the VC backend, and 1078file under point). This command does not notify the VC backend, and
1027is mostly useful for unregistered files. 1079is mostly useful for unregistered files.
1028 1080
1081+++
1029*** New command 'vc-log-search' asks for a pattern, searches it 1082*** New command 'vc-log-search' asks for a pattern, searches it
1030in the revision log, and displays matched log entries in the 1083in the revision log, and displays matched log entries in the
1031log buffer. For example, 'M-x vc-log-search RET bug#36644 RET' 1084log buffer. For example, 'M-x vc-log-search RET bug#36644 RET'
@@ -1042,6 +1095,7 @@ ID, and shows its log entry together with the diffs introduced by the
1042revision's commit. (For some less capable VCSes, only the log entry 1095revision's commit. (For some less capable VCSes, only the log entry
1043is shown.) 1096is shown.)
1044 1097
1098---
1045*** 'C-x v =' can now mimic Magit's diff format. 1099*** 'C-x v =' can now mimic Magit's diff format.
1046Set the new user option 'diff-font-lock-prettify' to t for that, see 1100Set the new user option 'diff-font-lock-prettify' to t for that, see
1047below under "Diff mode". 1101below under "Diff mode".
@@ -1072,6 +1126,7 @@ Fragments of source in Diff hunks are now by default highlighted
1072according to the appropriate major mode. Customize the new user 1126according to the appropriate major mode. Customize the new user
1073option 'diff-font-lock-syntax' to nil to disable this. 1127option 'diff-font-lock-syntax' to nil to disable this.
1074 1128
1129---
1075*** File headers can be shortened, mimicking Magit's diff format. 1130*** File headers can be shortened, mimicking Magit's diff format.
1076To enable it, set the new user option 'diff-font-lock-prettify' to t. 1131To enable it, set the new user option 'diff-font-lock-prettify' to t.
1077On GUI frames, this option also displays the insertion and deletion 1132On GUI frames, this option also displays the insertion and deletion
@@ -1093,16 +1148,20 @@ start of a sentence or at '(point-min)', else '@ref'.
1093 1148
1094** Browse-url 1149** Browse-url
1095 1150
1151---
1096*** The function 'browse-url-emacs' can now visit a URL in selected window. 1152*** The function 'browse-url-emacs' can now visit a URL in selected window.
1097It now treats the optional 2nd argument to mean that the URL should be 1153It now treats the optional 2nd argument to mean that the URL should be
1098shown in the currently selected window. 1154shown in the currently selected window.
1099 1155
1156---
1100*** A new function, 'browse-url-add-buttons' can be used to add clickable 1157*** A new function, 'browse-url-add-buttons' can be used to add clickable
1101links to most ordinary special-mode buffers that display text that 1158links to most ordinary special-mode buffers that display text that
1102have URLs embedded. 'browse-url-button-regexp' controls what's 1159have URLs embedded. 'browse-url-button-regexp' controls what's
1103considered a button. 1160considered a button.
1104 1161
1105*** A new user option, 'browse-url-secondary-browser-function', has been added. 1162---
1163*** New user option 'browse-url-secondary-browser-function'.
1164It can be set to a function that invokes an alternative browser.
1106 1165
1107** Comint 1166** Comint
1108 1167
@@ -1131,6 +1190,7 @@ end.
1131*** 'comint-run' can now accept a list of switches to pass to the program. 1190*** 'comint-run' can now accept a list of switches to pass to the program.
1132'C-u M-x comint-run' will prompt for the switches interactively. 1191'C-u M-x comint-run' will prompt for the switches interactively.
1133 1192
1193+++
1134*** Abnormal hook 'comint-password-function' has been added. 1194*** Abnormal hook 'comint-password-function' has been added.
1135This hook permits a derived mode to supply a password for the 1195This hook permits a derived mode to supply a password for the
1136underlying command interpreter without prompting the user. For 1196underlying command interpreter without prompting the user. For
@@ -1146,6 +1206,7 @@ if it had been supplied on the command line.
1146 1206
1147** SQL 1207** SQL
1148 1208
1209---
1149*** SQL Indent Minor Mode 1210*** SQL Indent Minor Mode
1150SQL Mode now supports the ELPA 'sql-indent' package for assisting 1211SQL Mode now supports the ELPA 'sql-indent' package for assisting
1151sophisticated SQL indenting rules. Note, however, that SQL is not 1212sophisticated SQL indenting rules. Note, however, that SQL is not
@@ -1158,16 +1219,19 @@ prefer to rely upon existing Emacs facilities for formatting code but
1158the 'sql-indent' package provides facilities to aid more casual SQL 1219the 'sql-indent' package provides facilities to aid more casual SQL
1159developers layout queries and complex expressions. 1220developers layout queries and complex expressions.
1160 1221
1222---
1161**** 'sql-use-indent-support' (default t) enables SQL indention support. 1223**** 'sql-use-indent-support' (default t) enables SQL indention support.
1162The 'sql-indent' package from ELPA must be installed to get the 1224The 'sql-indent' package from ELPA must be installed to get the
1163indentation support in 'sql-mode' and 'sql-interactive-mode'. 1225indentation support in 'sql-mode' and 'sql-interactive-mode'.
1164 1226
1227---
1165**** 'sql-mode-hook' and 'sql-interactive-mode-hook' changed. 1228**** 'sql-mode-hook' and 'sql-interactive-mode-hook' changed.
1166Both hook variables have had 'sql-indent-enable' added to their 1229Both hook variables have had 'sql-indent-enable' added to their
1167default values. If you have existing customizations to these 1230default values. If you have existing customizations to these
1168variables, you should make sure that the new default entry is 1231variables, you should make sure that the new default entry is
1169included. 1232included.
1170 1233
1234---
1171*** Connection Wallet 1235*** Connection Wallet
1172Database passwords can now by stored in NETRC or JSON data files that 1236Database passwords can now by stored in NETRC or JSON data files that
1173may optionally be encrypted. When establishing an interactive session 1237may optionally be encrypted. When establishing an interactive session
@@ -1200,9 +1264,11 @@ emulator in line mode.
1200You should instead set properties on known diagnostic symbols, like 1264You should instead set properties on known diagnostic symbols, like
1201':error' and ':warning', as demonstrated in the Flymake manual. 1265':error' and ':warning', as demonstrated in the Flymake manual.
1202 1266
1267+++
1203*** New user option 'flymake-start-on-save-buffer'. 1268*** New user option 'flymake-start-on-save-buffer'.
1204Control whether Flymake starts checking the buffer on save. 1269Control whether Flymake starts checking the buffer on save.
1205 1270
1271---
1206*** Flymake and backend functions may exchange hints about buffer changes. 1272*** Flymake and backend functions may exchange hints about buffer changes.
1207This enables more efficient backends. See the docstring of 1273This enables more efficient backends. See the docstring of
1208'flymake-diagnostic-functions' or the Flymake manual for details. 1274'flymake-diagnostic-functions' or the Flymake manual for details.
@@ -1213,15 +1279,19 @@ use 'post-self-insert-hook' to check on newline.
1213 1279
1214** Ruby 1280** Ruby
1215 1281
1282---
1216*** The Rubocop Flymake diagnostic function will only run Lint cops if 1283*** The Rubocop Flymake diagnostic function will only run Lint cops if
1217it can't find the config file. 1284it can't find the config file.
1218 1285
1286---
1219*** Rubocop is called with 'bundle exec' if Gemfile mentions it. 1287*** Rubocop is called with 'bundle exec' if Gemfile mentions it.
1220 1288
1289---
1221*** New command 'ruby-find-library-file' bound to 'C-c C-f'. 1290*** New command 'ruby-find-library-file' bound to 'C-c C-f'.
1222 1291
1223** Package 1292** Package
1224 1293
1294---
1225*** Warn if "footer line" is missing, but still install package. 1295*** Warn if "footer line" is missing, but still install package.
1226package.el used to refuse to install a package without the so-called 1296package.el used to refuse to install a package without the so-called
1227"footer line", which appears at the very end of the file: 1297"footer line", which appears at the very end of the file:
@@ -1236,7 +1306,8 @@ Note that versions of Emacs older than 27.1 will not only refuse to
1236install packages without such a line -- they will be unable to parse 1306install packages without such a line -- they will be unable to parse
1237package data. It is therefore recommended to keep this line. 1307package data. It is therefore recommended to keep this line.
1238 1308
1239*** Change of 'package-check-signature' for packages with multiple sigs 1309+++
1310*** Change of 'package-check-signature' for packages with multiple sigs.
1240In previous Emacsen, 't' checked that all signatures are valid. 1311In previous Emacsen, 't' checked that all signatures are valid.
1241Now 't' only checks that at least one signature is valid and the new 'all' 1312Now 't' only checks that at least one signature is valid and the new 'all'
1242value needs to be used if you want to enforce that all signatures 1313value needs to be used if you want to enforce that all signatures
@@ -1248,9 +1319,11 @@ changed slightly: If a usable OpenPGP configuration can't be found
1248(for instance, if gpg isn't installed), it now has the same meaning as 1319(for instance, if gpg isn't installed), it now has the same meaning as
1249nil. 1320nil.
1250 1321
1322---
1251*** New function 'package-get-version' lets packages query their own version. 1323*** New function 'package-get-version' lets packages query their own version.
1252Example use in auctex.el: '(defconst auctex-version (package-get-version))' 1324Example use in auctex.el: '(defconst auctex-version (package-get-version))'
1253 1325
1326---
1254*** New 'package-quickstart' feature. 1327*** New 'package-quickstart' feature.
1255When 'package-quickstart' is non-nil, package.el precomputes a big 1328When 'package-quickstart' is non-nil, package.el precomputes a big
1256autoloads file so that activation of packages can be done much faster, 1329autoloads file so that activation of packages can be done much faster,
@@ -1260,6 +1333,7 @@ It also causes user options like 'package-user-dir' and
1260is run rather than at startup so you don't need to set them in your 1333is run rather than at startup so you don't need to set them in your
1261early init file. 1334early init file.
1262 1335
1336---
1263*** New function 'package-activate-all'. 1337*** New function 'package-activate-all'.
1264 1338
1265+++ 1339+++
@@ -1326,17 +1400,20 @@ where it was invoked.
1326--- 1400---
1327*** New xref faces 'xref-file-header', 'xref-line-number', 'xref-match'. 1401*** New xref faces 'xref-file-header', 'xref-line-number', 'xref-match'.
1328 1402
1403---
1329*** New user option 'xref-show-definitions-function'. 1404*** New user option 'xref-show-definitions-function'.
1330It encapsulates the logic pertinent to showing the result of 1405It encapsulates the logic pertinent to showing the result of
1331'xref-find-definitions'. The user can change it to customize its 1406'xref-find-definitions'. The user can change it to customize its
1332behavior and the display of results. 1407behavior and the display of results.
1333 1408
1409---
1334*** Search results show the buffer even for one hit. 1410*** Search results show the buffer even for one hit.
1335The search-type Xref commands (e.g. 'xref-find-references' or 1411The search-type Xref commands (e.g. 'xref-find-references' or
1336'project-find-regexp') now show the results buffer even when there is 1412'project-find-regexp') now show the results buffer even when there is
1337only one hit. This can be altered by changing 1413only one hit. This can be altered by changing
1338'xref-show-xrefs-function'. 1414'xref-show-xrefs-function'.
1339 1415
1416+++
1340*** Xref buffers support refreshing the search results. 1417*** Xref buffers support refreshing the search results.
1341A new command 'xref-revert-buffer' is bound to 'g'. 1418A new command 'xref-revert-buffer' is bound to 'g'.
1342 1419
@@ -1355,9 +1432,11 @@ completion facilities.
1355 1432
1356** Ecomplete 1433** Ecomplete
1357 1434
1435---
1358*** The ecomplete sorting has changed to a decay-based algorithm. 1436*** The ecomplete sorting has changed to a decay-based algorithm.
1359This can be controlled by the new 'ecomplete-sort-predicate' user option. 1437This can be controlled by the new 'ecomplete-sort-predicate' user option.
1360 1438
1439---
1361*** The 'ecompleterc' file is now placed in "~/.emacs.d/ecompleterc" by default. 1440*** The 'ecompleterc' file is now placed in "~/.emacs.d/ecompleterc" by default.
1362Of course it will still find it if you have it in "~/.ecompleterc". 1441Of course it will still find it if you have it in "~/.ecompleterc".
1363 1442
@@ -1385,9 +1464,8 @@ deleted by any IMAP client (rather than just those that have been
1385deleted by Gnus). 1464deleted by Gnus).
1386 1465
1387+++ 1466+++
1388*** New user option 'gnus-use-atomic-windows' makes Gnus window layouts 1467*** New user option 'gnus-use-atomic-windows' makes Gnus window layouts atomic.
1389atomic. See the "Atomic Windows" section of the Elisp manual for 1468See the "Atomic Windows" section of the Elisp manual for details.
1390details.
1391 1469
1392+++ 1470+++
1393*** There's a new value for 'gnus-article-date-headers', 1471*** There's a new value for 'gnus-article-date-headers',
@@ -1409,6 +1487,7 @@ server variable to non-nil.
1409*** A prefix argument to 'gnus-summary-limit-to-score' will limit reverse. 1487*** A prefix argument to 'gnus-summary-limit-to-score' will limit reverse.
1410Limit to articles with score at below. 1488Limit to articles with score at below.
1411 1489
1490---
1412*** The function 'gnus-score-find-favorite-words' has been renamed 1491*** The function 'gnus-score-find-favorite-words' has been renamed
1413from 'gnus-score-find-favourite-words'. 1492from 'gnus-score-find-favourite-words'.
1414 1493
@@ -1472,6 +1551,7 @@ The user option to use instead to alter text to be sent is now
1472 1551
1473** EUDC 1552** EUDC
1474 1553
1554---
1475*** XEmacs support has been removed. 1555*** XEmacs support has been removed.
1476 1556
1477** eww/shr 1557** eww/shr
@@ -1518,6 +1598,7 @@ of 'browse-url-secondary-browser-function'.
1518 1598
1519** Htmlfontify 1599** Htmlfontify
1520 1600
1601+++
1521*** The functions 'hfy-color', 'hfy-color-vals' and 1602*** The functions 'hfy-color', 'hfy-color-vals' and
1522'hfy-fallback-color-values' and the variables 'hfy-fallback-color-map' 1603'hfy-fallback-color-values' and the variables 'hfy-fallback-color-map'
1523and 'hfy-rgb-txt-color-map' have been renamed from names that used 1604and 'hfy-rgb-txt-color-map' have been renamed from names that used
@@ -1533,9 +1614,11 @@ restored when the file is visited.
1533 1614
1534** Smtpmail 1615** Smtpmail
1535 1616
1617---
1536*** Authentication mechanisms can be added via external packages, by 1618*** Authentication mechanisms can be added via external packages, by
1537defining new 'cl-defmethod' of 'smtpmail-try-auth-method'. 1619defining new 'cl-defmethod' of 'smtpmail-try-auth-method'.
1538 1620
1621+++
1539*** To always force smtpmail to send credentials over on the first 1622*** To always force smtpmail to send credentials over on the first
1540attempt when communicating with the SMTP server(s), the 1623attempt when communicating with the SMTP server(s), the
1541'smtpmail-servers-requiring-authorization' user option can be used. 1624'smtpmail-servers-requiring-authorization' user option can be used.
@@ -1547,7 +1630,10 @@ user option says how many times to retry.
1547 1630
1548** Footnote mode 1631** Footnote mode
1549 1632
1633---
1550*** Support Hebrew-style footnotes 1634*** Support Hebrew-style footnotes
1635
1636---
1551*** Footnote text lines are now aligned. 1637*** Footnote text lines are now aligned.
1552Can be controlled via the new user option 'footnote-align-to-fn-text'. 1638Can be controlled via the new user option 'footnote-align-to-fn-text'.
1553 1639
@@ -1588,7 +1674,8 @@ and 'python-nav-end-of-statement' to the inferior Python process.
1588** Help 1674** Help
1589 1675
1590--- 1676---
1591*** Description of variables and functions give an estimated first release. 1677*** Descriptions of variables and functions give an estimated first release
1678where the variable or function appeared in Emacs.
1592 1679
1593--- 1680---
1594*** Output format of 'C-h l' ('view-lossage') has changed. 1681*** Output format of 'C-h l' ('view-lossage') has changed.
@@ -1614,6 +1701,7 @@ as a single mode.
1614 1701
1615** Search and Replace 1702** Search and Replace
1616 1703
1704+++
1617*** Isearch supports a prefix argument for 'C-s' ('isearch-repeat-forward') 1705*** Isearch supports a prefix argument for 'C-s' ('isearch-repeat-forward')
1618and 'C-r' ('isearch-repeat-backward'). With a prefix argument, these 1706and 'C-r' ('isearch-repeat-backward'). With a prefix argument, these
1619commands repeat the search for the specified occurrence of the search string. 1707commands repeat the search for the specified occurrence of the search string.
@@ -1623,6 +1711,7 @@ This makes possible also to use a prefix argument for 'M-s .'
1623Also a prefix argument is supported for 'isearch-yank-until-char', 1711Also a prefix argument is supported for 'isearch-yank-until-char',
1624'isearch-yank-word-or-char', 'isearch-yank-symbol-or-char'. 1712'isearch-yank-word-or-char', 'isearch-yank-symbol-or-char'.
1625 1713
1714+++
1626*** To go to the first/last occurrence of the current search string 1715*** To go to the first/last occurrence of the current search string
1627is possible now with new commands 'isearch-beginning-of-buffer' and 1716is possible now with new commands 'isearch-beginning-of-buffer' and
1628'isearch-end-of-buffer' bound to 'M-s M-<' and 'M-s M->' in Isearch. 1717'isearch-end-of-buffer' bound to 'M-s M-<' and 'M-s M->' in Isearch.
@@ -1631,12 +1720,14 @@ counting from the beginning/end of the buffer. This complements
1631'C-s'/'C-r' that searches for the next Nth relative occurrence 1720'C-s'/'C-r' that searches for the next Nth relative occurrence
1632with a numeric argument. 1721with a numeric argument.
1633 1722
1723+++
1634*** 'isearch-lazy-count' shows the current match number and total number 1724*** 'isearch-lazy-count' shows the current match number and total number
1635of matches in the Isearch prompt. User options 1725of matches in the Isearch prompt. User options
1636'lazy-count-prefix-format' and 'lazy-count-suffix-format' define the 1726'lazy-count-prefix-format' and 'lazy-count-suffix-format' define the
1637format of the current and the total number of matches in the prompt's 1727format of the current and the total number of matches in the prompt's
1638prefix and suffix respectively. 1728prefix and suffix respectively.
1639 1729
1730---
1640*** 'lazy-highlight-buffer' highlights matches in the full buffer. 1731*** 'lazy-highlight-buffer' highlights matches in the full buffer.
1641It is useful in combination with 'lazy-highlight-cleanup' customized to nil 1732It is useful in combination with 'lazy-highlight-cleanup' customized to nil
1642to leave matches highlighted in the whole buffer after exiting isearch. 1733to leave matches highlighted in the whole buffer after exiting isearch.
@@ -1669,6 +1760,7 @@ to extend the search string by yanking text that ends at the new
1669position after moving point in the current buffer. 'shift' extends 1760position after moving point in the current buffer. 'shift' extends
1670the search string by motion commands while holding down the shift key. 1761the search string by motion commands while holding down the shift key.
1671 1762
1763+++
1672*** 'isearch-allow-scroll' provides new option 'unlimited' to allow 1764*** 'isearch-allow-scroll' provides new option 'unlimited' to allow
1673scrolling any distance off screen. 1765scrolling any distance off screen.
1674 1766
@@ -1732,8 +1824,8 @@ To clear all breakpoints in the current form, the 'U' command in
1732 1824
1733--- 1825---
1734*** Re-instrumenting a function with Edebug will now try to preserve 1826*** Re-instrumenting a function with Edebug will now try to preserve
1735previously-set breakpoints. If the code has changed substantially, 1827previously-set breakpoints. However, if the code has changed
1736this may not be possible. 1828substantially, this may not be possible.
1737 1829
1738+++ 1830+++
1739*** New command 'edebug-remove-instrumentation'. 1831*** New command 'edebug-remove-instrumentation'.
@@ -1764,6 +1856,7 @@ been instrumented by Edebug.
1764 1856
1765** Enhanced xterm support 1857** Enhanced xterm support
1766 1858
1859---
1767*** New user option 'xterm-set-window-title' controls whether Emacs sets 1860*** New user option 'xterm-set-window-title' controls whether Emacs sets
1768the XTerm window title. This feature is experimental and is disabled 1861the XTerm window title. This feature is experimental and is disabled
1769by default. 1862by default.
@@ -1778,6 +1871,7 @@ The abbreviation can be disabled by the new user option
1778'grep-find-abbreviate'. The new command 1871'grep-find-abbreviate'. The new command
1779'grep-find-toggle-abbreviation' toggles it interactively. 1872'grep-find-toggle-abbreviation' toggles it interactively.
1780 1873
1874---
1781*** 'grep-find-use-xargs' is now customizable with sorting options. 1875*** 'grep-find-use-xargs' is now customizable with sorting options.
1782 1876
1783** ERT 1877** ERT
@@ -1797,7 +1891,7 @@ the Elisp manual for documentation of the new mode and its commands.
1797--- 1891---
1798*** Gamegrid now determines its default glyph size based on display 1892*** Gamegrid now determines its default glyph size based on display
1799dimensions, instead of always using 16 pixels. As a result, Tetris, 1893dimensions, instead of always using 16 pixels. As a result, Tetris,
1800Snake and Pong are more playable on HiDPI displays. 1894Snake and Pong are better playable on HiDPI displays.
1801 1895
1802--- 1896---
1803*** 'gamegrid-add-score' can now sort scores from lower to higher. 1897*** 'gamegrid-add-score' can now sort scores from lower to higher.
@@ -1836,6 +1930,7 @@ default, and not just the opening element.
1836 1930
1837** Eshell 1931** Eshell
1838 1932
1933---
1839*** TAB completion uses the standard 'completion-at-point' rather than 1934*** TAB completion uses the standard 'completion-at-point' rather than
1840'pcomplete'. Its UI is slightly different but can be customized to 1935'pcomplete'. Its UI is slightly different but can be customized to
1841behave similarly, e.g. Pcomplete's default cycling can be obtained 1936behave similarly, e.g. Pcomplete's default cycling can be obtained
@@ -1858,6 +1953,7 @@ To restore the old behavior, use
1858*** The function 'eshell-uniquify-list' has been renamed from 1953*** The function 'eshell-uniquify-list' has been renamed from
1859'eshell-uniqify-list'. 1954'eshell-uniqify-list'.
1860 1955
1956---
1861*** The function 'eshell/kill' is now able to handle signal switches. 1957*** The function 'eshell/kill' is now able to handle signal switches.
1862Previously 'eshell/kill' would fail if provided a kill signal to send 1958Previously 'eshell/kill' would fail if provided a kill signal to send
1863to the process. It now accepts signals specified either by name or by 1959to the process. It now accepts signals specified either by name or by
@@ -1890,11 +1986,13 @@ Customize the new user option 'shell-command-prompt-show-cwd' to enable it.
1890 1986
1891** Pcomplete 1987** Pcomplete
1892 1988
1989---
1893*** The 'pcomplete' command is now obsolete. 1990*** The 'pcomplete' command is now obsolete.
1894The Pcomplete functionality can be obtained via 'completion-at-point' 1991The Pcomplete functionality can be obtained via 'completion-at-point'
1895instead, by adding 'pcomplete-completions-at-point' to 1992instead, by adding 'pcomplete-completions-at-point' to
1896'completion-at-point-functions'. 1993'completion-at-point-functions'.
1897 1994
1995---
1898*** The function 'pcomplete-uniquify-list' has been renamed from 1996*** The function 'pcomplete-uniquify-list' has been renamed from
1899'pcomplete-uniqify-list'. 1997'pcomplete-uniqify-list'.
1900 1998
@@ -1908,6 +2006,7 @@ To recover the previous behavior, set new user option
1908--- 2006---
1909*** The Secret Service backend supports the ':create' key now. 2007*** The Secret Service backend supports the ':create' key now.
1910 2008
2009---
1911*** ".authinfo" and ".netrc" files now use a new mode: 'authinfo-mode'. 2010*** ".authinfo" and ".netrc" files now use a new mode: 'authinfo-mode'.
1912This is just like 'fundamental-mode', except that it hides passwords 2011This is just like 'fundamental-mode', except that it hides passwords
1913under a "****" display property. When the cursor moves to this text, 2012under a "****" display property. When the cursor moves to this text,
@@ -1989,18 +2088,21 @@ names of buffers shown by the windows of a window configuration.
1989** The options.el library has been removed. 2088** The options.el library has been removed.
1990It was obsolete since Emacs 22.1, replaced by customize. 2089It was obsolete since Emacs 22.1, replaced by customize.
1991 2090
2091---
1992** The tls.el and starttls.el libraries are now marked obsolete. 2092** The tls.el and starttls.el libraries are now marked obsolete.
1993Use of built-in libgnutls based functionality (described in the Emacs 2093Use of built-in libgnutls based functionality (described in the Emacs
1994GnuTLS manual) is recommended instead. 2094GnuTLS manual) is recommended instead.
1995 2095
1996** Message 2096** Message
1997 2097
2098---
1998*** Completion of email addresses can use the standard completion UI. 2099*** Completion of email addresses can use the standard completion UI.
1999This is controlled by 'message-expand-name-standard-ui'. 2100This is controlled by 'message-expand-name-standard-ui'.
2000With the standard UI the different sources (ecomplete, bbdb, and eudc) 2101With the standard UI the different sources (ecomplete, bbdb, and eudc)
2001are matched together and try to obey 'completion-styles'. 2102are matched together and try to obey 'completion-styles'.
2002It should work for other completion front ends like Company. 2103It should work for other completion front ends like Company.
2003 2104
2105---
2004*** 'message-mode' now supports highlighting citations of different depths. 2106*** 'message-mode' now supports highlighting citations of different depths.
2005This can be customized via the new user option 2107This can be customized via the new user option
2006'message-cite-level-function' and the new 'message-cited-text-*' faces. 2108'message-cite-level-function' and the new 'message-cited-text-*' faces.
@@ -2053,6 +2155,7 @@ It now applies to epg functions as well as epa functions.
2053been removed. Use 'encode-coding-string', 'decode-coding-string', and 2155been removed. Use 'encode-coding-string', 'decode-coding-string', and
2054'select-safe-coding-system' instead. 2156'select-safe-coding-system' instead.
2055 2157
2158---
2056*** 'epg-context' structure supports now 'sender' slot. 2159*** 'epg-context' structure supports now 'sender' slot.
2057The value of the new 'sender' slot (if a string) is used to set gpg's 2160The value of the new 'sender' slot (if a string) is used to set gpg's
2058'--sender' option. This feature is used by 2161'--sender' option. This feature is used by
@@ -2067,6 +2170,7 @@ The value of the new 'sender' slot (if a string) is used to set gpg's
2067If this option is non-nil, messages appended to an output file by the 2170If this option is non-nil, messages appended to an output file by the
2068'rmail-output' command have their Deleted flag reset. 2171'rmail-output' command have their Deleted flag reset.
2069 2172
2173---
2070*** The command 'rmail-summary-by-senders' with an empty argument 2174*** The command 'rmail-summary-by-senders' with an empty argument
2071selects the messages to summarize with a regexp that matches the 2175selects the messages to summarize with a regexp that matches the
2072sender of the current message. 2176sender of the current message.
@@ -2079,7 +2183,7 @@ This is handy in Lisp programs that run on a non-main thread and want
2079to signal the main thread, e.g., when they encounter an error. 2183to signal the main thread, e.g., when they encounter an error.
2080 2184
2081+++ 2185+++
2082*** 'thread-join' returns the result of the finished thread now. 2186*** 'thread-join' now returns the result of the finished thread.
2083 2187
2084+++ 2188+++
2085*** 'thread-signal' does not propagate errors to the main thread. 2189*** 'thread-signal' does not propagate errors to the main thread.
@@ -2288,6 +2392,7 @@ name, too.
2288 2392
2289** Autorevert 2393** Autorevert
2290 2394
2395+++
2291*** New user option 'auto-revert-avoid-polling' for saving power. 2396*** New user option 'auto-revert-avoid-polling' for saving power.
2292When set to a non-nil value, buffers in Auto Revert mode are no longer 2397When set to a non-nil value, buffers in Auto Revert mode are no longer
2293polled for changes periodically. This reduces the power consumption 2398polled for changes periodically. This reduces the power consumption
@@ -2295,6 +2400,7 @@ of an idle Emacs, but may fail on some network file systems; set
2295'auto-revert-notify-exclude-dir-regexp' to match files where 2400'auto-revert-notify-exclude-dir-regexp' to match files where
2296notification is not supported. The default value is nil. 2401notification is not supported. The default value is nil.
2297 2402
2403+++
2298*** New variable 'buffer-auto-revert-by-notification' 2404*** New variable 'buffer-auto-revert-by-notification'
2299A major mode can declare that notification on the buffer's default 2405A major mode can declare that notification on the buffer's default
2300directory is sufficient to know when updates are required, by setting 2406directory is sufficient to know when updates are required, by setting
@@ -2332,6 +2438,7 @@ a sensor for every decryption.
2332*** 'bookmark-file' and 'bookmark-old-default-file' are now obsolete 2438*** 'bookmark-file' and 'bookmark-old-default-file' are now obsolete
2333aliases of 'bookmark-default-file'. 2439aliases of 'bookmark-default-file'.
2334 2440
2441---
2335*** New user option 'bookmark-watch-bookmark-file'. 2442*** New user option 'bookmark-watch-bookmark-file'.
2336When non-nil, watch whether the bookmark file has changed on disk. 2443When non-nil, watch whether the bookmark file has changed on disk.
2337 2444
@@ -2342,8 +2449,10 @@ version 19.34, released in 1996, and will no longer be automatically
2342converted to the new bookmark file format. 2449converted to the new bookmark file format.
2343 2450
2344The following functions are now declared obsolete: 2451The following functions are now declared obsolete:
2345bookmark-grok-file-format-version, bookmark-maybe-upgrade-file-format, 2452'bookmark-grok-file-format-version',
2346bookmark-upgrade-file-format-from-0, bookmark-upgrade-version-0-alist 2453'bookmark-maybe-upgrade-file-format',
2454'bookmark-upgrade-file-format-from-0', and
2455'bookmark-upgrade-version-0-alist'.
2347 2456
2348--- 2457---
2349** The mantemp.el library is now marked obsolete. 2458** The mantemp.el library is now marked obsolete.
@@ -2390,11 +2499,13 @@ and 'gravatar-force-default'.
2390 2499
2391** ada-mode 2500** ada-mode
2392 2501
2502---
2393*** The built-in ada-mode is now deleted. The GNU ELPA package is a 2503*** The built-in ada-mode is now deleted. The GNU ELPA package is a
2394good replacement, even in very large source files. 2504good replacement, even in very large source files.
2395 2505
2396** time-stamp 2506** time-stamp
2397 2507
2508---
2398*** New '%5z' conversion for 'time-stamp-format' gives time zone offset. 2509*** New '%5z' conversion for 'time-stamp-format' gives time zone offset.
2399Specifying '%5z' in 'time-stamp-format' or 'time-stamp-pattern' 2510Specifying '%5z' in 'time-stamp-format' or 'time-stamp-pattern'
2400expands to the time zone offset, e.g., '+0100'. The time zone used is 2511expands to the time zone offset, e.g., '+0100'. The time zone used is
@@ -2404,6 +2515,7 @@ Because this feature is new in Emacs 27.1, do not use it in the local
2404variables section of any file that might be edited by an older version 2515variables section of any file that might be edited by an older version
2405of Emacs. 2516of Emacs.
2406 2517
2518---
2407*** Some conversions recommended for 'time-stamp-format' have changed. 2519*** Some conversions recommended for 'time-stamp-format' have changed.
2408The new documented/recommended %-conversions are closer to those 2520The new documented/recommended %-conversions are closer to those
2409used by 'format-time-string' and are compatible at least as far back 2521used by 'format-time-string' and are compatible at least as far back
@@ -2426,7 +2538,10 @@ if you set 'time-stamp-format' or 'time-stamp-pattern' with a
2426file-local variable, you may need to update the value. 2538file-local variable, you may need to update the value.
2427 2539
2428** mode-local 2540** mode-local
2541---
2429*** Declare 'define-overload' and 'define-child-mode' as obsolete. 2542*** Declare 'define-overload' and 'define-child-mode' as obsolete.
2543
2544---
2430*** Rename several internal functions to use a 'mode-local-' prefix. 2545*** Rename several internal functions to use a 'mode-local-' prefix.
2431 2546
2432** CC Mode 2547** CC Mode
@@ -2443,7 +2558,7 @@ default comment style (block or line); then set the user option
2443** Tab Bars 2558** Tab Bars
2444 2559
2445+++ 2560+++
2446*** Tab Bar mode 2561*** Tab Bar mode.
2447The new command 'tab-bar-mode' enables the tab bar at the top of each 2562The new command 'tab-bar-mode' enables the tab bar at the top of each
2448frame, where you can use tabs to switch between named persistent 2563frame, where you can use tabs to switch between named persistent
2449window configurations. 2564window configurations.
@@ -2466,6 +2581,7 @@ The user option 'tab-bar-position' specifies where to show the tab bar.
2466Read the new Info node "(emacs) Tab Bars" for full description 2581Read the new Info node "(emacs) Tab Bars" for full description
2467of all related features. 2582of all related features.
2468 2583
2584+++
2469*** Tab Line mode 2585*** Tab Line mode
2470The new command 'global-tab-line-mode' enables the tab line above each 2586The new command 'global-tab-line-mode' enables the tab line above each
2471window, which you can use to switch buffers in the window. Selecting 2587window, which you can use to switch buffers in the window. Selecting
@@ -2476,6 +2592,7 @@ a repeat count. Clicking on the plus icon adds a new buffer to the
2476window-local tab line of buffers. Using the mouse wheel on the tab 2592window-local tab line of buffers. Using the mouse wheel on the tab
2477line scrolls tabs. 2593line scrolls tabs.
2478 2594
2595+++
2479** fileloop.el lets one setup multifile operations like search&replace. 2596** fileloop.el lets one setup multifile operations like search&replace.
2480 2597
2481+++ 2598+++
@@ -2538,9 +2655,11 @@ the hook may have specified higher/lower depths. This makes it
2538possible to control the ordering of functions more precisely, as was 2655possible to control the ordering of functions more precisely, as was
2539already possible in 'add-function' and 'advice-add'. 2656already possible in 'add-function' and 'advice-add'.
2540 2657
2658---
2541** In 'compilation-error-regexp-alist' the old undocumented feature 2659** In 'compilation-error-regexp-alist' the old undocumented feature
2542where 'line' could be a function of 2 arguments has been dropped. 2660where 'line' could be a function of 2 arguments has been dropped.
2543 2661
2662---
2544** 'define-fringe-bitmap' is always defined, even when Emacs is built 2663** 'define-fringe-bitmap' is always defined, even when Emacs is built
2545without any GUI support. 2664without any GUI support.
2546 2665
@@ -2560,8 +2679,10 @@ default applied immediately.
2560The variable 'custom--inhibit-theme-enable' controls this behavior; 2679The variable 'custom--inhibit-theme-enable' controls this behavior;
2561its default value changed in Emacs 27.1. 2680its default value changed in Emacs 27.1.
2562 2681
2682---
2563** The REPETITIONS argument of 'benchmark-run' can now also be a variable. 2683** The REPETITIONS argument of 'benchmark-run' can now also be a variable.
2564 2684
2685---
2565** Interpretation of relative 'HOME' directory has changed. 2686** Interpretation of relative 'HOME' directory has changed.
2566If "$HOME" is set to a relative file name, 'expand-file-name' now 2687If "$HOME" is set to a relative file name, 'expand-file-name' now
2567interprets it relative to the directory where Emacs was started, not 2688interprets it relative to the directory where Emacs was started, not
@@ -2569,17 +2690,19 @@ relative to the 'default-directory' of the current buffer. We recommend
2569always setting "$HOME" to an absolute file name, so that its meaning is 2690always setting "$HOME" to an absolute file name, so that its meaning is
2570independent of where Emacs was started. 2691independent of where Emacs was started.
2571 2692
2693---
2572** 'file-name-absolute-p' no longer considers "~foo" to be an absolute 2694** 'file-name-absolute-p' no longer considers "~foo" to be an absolute
2573file name if there is no user named "foo". 2695file name if there is no user named "foo".
2574 2696
2697+++
2575** The FILENAME argument to 'file-name-base' is now mandatory and no 2698** The FILENAME argument to 'file-name-base' is now mandatory and no
2576longer defaults to 'buffer-file-name'. 2699longer defaults to 'buffer-file-name'.
2577 2700
2578+++ 2701+++
2579** File metadata primitives now signal an error if I/O, access, or 2702** File metadata primitives now signal an error if I/O, access, or
2580other serious errors prevent them from determining the result. 2703other serious errors prevent them from determining the result.
2581Formerly, these functions often (though not always) returned nil. 2704Formerly, these functions often (though not always) silently returned
2582For example, if there is an access error, I/O error or low-level 2705nil. For example, if there is an access error, I/O error or low-level
2583integer overflow when getting the attributes of a file F, 2706integer overflow when getting the attributes of a file F,
2584'(file-attributes F)' now signals an error instead of returning nil. 2707'(file-attributes F)' now signals an error instead of returning nil.
2585These functions still behave as before if the only problem is that the 2708These functions still behave as before if the only problem is that the
@@ -2595,19 +2718,23 @@ them through 'format' first. Even that is discouraged: for ElDoc
2595support, you should set 'eldoc-documentation-function' instead of 2718support, you should set 'eldoc-documentation-function' instead of
2596calling 'eldoc-message' directly. 2719calling 'eldoc-message' directly.
2597 2720
2721---
2598** Old-style backquotes now generate an error. 2722** Old-style backquotes now generate an error.
2599They have been generating warnings for a decade. To interpret 2723They have been generating warnings for a decade. To interpret
2600old-style backquotes as new-style, bind the new variable 2724old-style backquotes as new-style, bind the new variable
2601'force-new-style-backquotes' to t. 2725'force-new-style-backquotes' to t.
2602 2726
2727---
2603** Defining a Common Lisp structure using 'cl-defstruct' or 2728** Defining a Common Lisp structure using 'cl-defstruct' or
2604'cl-struct-define' whose name clashes with a builtin type (e.g., 2729'cl-struct-define' whose name clashes with a builtin type (e.g.,
2605'integer' or 'hash-table') now signals an error. 2730'integer' or 'hash-table') now signals an error.
2606 2731
2732---
2607** When formatting a floating-point number as an octal or hexadecimal 2733** When formatting a floating-point number as an octal or hexadecimal
2608integer, Emacs now signals an error if the number is too large for the 2734integer, Emacs now signals an error if the number is too large for the
2609implementation to format. 2735implementation to format.
2610 2736
2737+++
2611** 'logb' now returns infinity when given an infinite or zero argument, 2738** 'logb' now returns infinity when given an infinite or zero argument,
2612and returns a NaN when given a NaN. Formerly, it returned an extreme 2739and returns a NaN when given a NaN. Formerly, it returned an extreme
2613fixnum for such arguments. 2740fixnum for such arguments.
@@ -2652,6 +2779,7 @@ default-directory-alist, dired-default-directory,
2652dired-default-directory-alist, dired-enable-local-variables, 2779dired-default-directory-alist, dired-enable-local-variables,
2653dired-hack-local-variables, dired-local-variables-file, dired-omit-here-always. 2780dired-hack-local-variables, dired-local-variables-file, dired-omit-here-always.
2654 2781
2782+++
2655** Garbage collection no longer treats miscellaneous objects specially; 2783** Garbage collection no longer treats miscellaneous objects specially;
2656they are now allocated like any other pseudovector. As a result, the 2784they are now allocated like any other pseudovector. As a result, the
2657'garbage-collect' and 'memory-use-count' functions no longer return a 2785'garbage-collect' and 'memory-use-count' functions no longer return a
@@ -2682,6 +2810,7 @@ The global value of 'indent-line-function', which defaults to
2682To get back the old behavior, add a function to 'text-mode-hook' which 2810To get back the old behavior, add a function to 'text-mode-hook' which
2683performs '(setq-local indent-line-function #'indent-relative)'. 2811performs '(setq-local indent-line-function #'indent-relative)'.
2684 2812
2813---
2685** 'make-process' no longer accepts a non-nil ':stop' key. This has 2814** 'make-process' no longer accepts a non-nil ':stop' key. This has
2686never worked reliably, and now causes an error. 2815never worked reliably, and now causes an error.
2687 2816
@@ -2719,6 +2848,7 @@ pointer is over. To change this behavior, you can customize the user
2719option 'mouse-wheel-follow-mouse'. Note that this will also affect 2848option 'mouse-wheel-follow-mouse'. Note that this will also affect
2720scrolling. 2849scrolling.
2721 2850
2851+++
2722** Mouse scroll up and down with control key modifier also works on images 2852** Mouse scroll up and down with control key modifier also works on images
2723where it scales the image under the mouse pointer. 2853where it scales the image under the mouse pointer.
2724 2854
@@ -2730,102 +2860,6 @@ position pointed to by the argument POS) is not in a symbol.
2730* Lisp Changes in Emacs 27.1 2860* Lisp Changes in Emacs 27.1
2731 2861
2732+++ 2862+++
2733** New macro 'benchmark-progn'.
2734This macro works like 'progn', but messages how long it takes to
2735evaluate the body forms. The value of the last form is the return
2736value.
2737
2738+++
2739** New function 'read-char-from-minibuffer'.
2740This function works like 'read-char', but uses 'read-from-minibuffer'
2741to read a character, so it maintains a history that can be navigated
2742via usual minibuffer keystrokes 'M-p'/'M-n'.
2743
2744** New variables 'set-message-function' and 'clear-message-function'
2745can be used to specify functions to show and clear messages that
2746normally are displayed in the echo area.
2747
2748** 'setq-local' can now set an arbitrary number of variables, which
2749makes the syntax more like 'setq'.
2750
2751** 'reveal-mode' can now also be used for more than to toggle between
2752invisible and visible: It can also toggle 'display' properties in
2753overlays. This is only done on 'display' properties that have the
2754'reveal-toggle-invisible' property set.
2755
2756+++
2757** 'process-contact' now takes an optional NO-BLOCK argument to allow
2758not waiting for a process to be set up.
2759
2760---
2761** New variable 'read-process-output-max' controls sub-process throughput.
2762This variable determines how many bytes can be read from a sub-process
2763in one read operation. The default, 4096 bytes, was previously a
2764hard-coded constant. Setting it to a larger value might enhance
2765throughput of reading from sub-processes that produces vast
2766(megabytes) amounts of data in one go.
2767
2768+++
2769** The new user option 'quit-window-hook' is now run first when
2770executing the 'quit-window' command.
2771
2772** The user options 'help-enable-completion-auto-load',
2773'help-enable-auto-load' and 'vhdl-project-auto-load', as well as the
2774function 'vhdl-auto-load-project' have been renamed to have "autoload"
2775without the hyphen in their names. Obsolete aliases from the old
2776names have been added.
2777
2778+++
2779** Buttons (created with 'make-button' and related functions) can
2780now use the 'button-data' property. If present, the data in this
2781property will be passed on to the 'action' function instead of the
2782button itself in 'button-activate'.
2783
2784** 'defcustom' now takes a ':local' keyword that can be either t or
2785'permanent', which mean that the variable should be automatically
2786buffer-local. 'permanent' also sets the variable's 'permanent-local'
2787property.
2788
2789+++
2790** The new macro 'with-suppressed-warnings' can be used to suppress
2791specific byte-compile warnings.
2792
2793+++
2794** The new macro 'ignore-error' is like 'ignore-errors', but takes a
2795specific error condition, and will only ignore that condition. (This
2796can also be a list of conditions.)
2797
2798---
2799** The new function 'byte-compile-info-message' can be used to output
2800informational messages that look pleasing during the Emacs build.
2801
2802---
2803** New 'help-fns-describe-variable-functions' hook.
2804Makes it possible to add metadata information to 'describe-variable'.
2805
2806** i18n (internationalization)
2807
2808*** ngettext can be used now to return the right plural form
2809according to the given numeric value.
2810
2811+++
2812** 'inhibit-null-byte-detection' is renamed to 'inhibit-nul-byte-detection'.
2813
2814+++
2815** 'self-insert-command' takes the char to insert as (optional) argument.
2816
2817** 'lookup-key' can take a list of keymaps as argument.
2818
2819+++
2820** 'condition-case' now accepts 't' to match any error symbol.
2821
2822+++
2823** New function 'proper-list-p'.
2824Given a proper list as argument, this predicate returns its length;
2825otherwise, it returns nil. 'format-proper-list-p' is now an obsolete
2826alias for the new function.
2827
2828+++
2829** Emacs Lisp integers can now be of arbitrary size. 2863** Emacs Lisp integers can now be of arbitrary size.
2830Emacs uses the GNU Multiple Precision (GMP) library to support 2864Emacs uses the GNU Multiple Precision (GMP) library to support
2831integers whose size is too large to support natively. The integers 2865integers whose size is too large to support natively. The integers
@@ -2936,6 +2970,117 @@ doing computations on a decoded time structure), 'make-decoded-time'
2936filled out), and 'encoded-time-set-defaults' (which fills in nil 2970filled out), and 'encoded-time-set-defaults' (which fills in nil
2937elements as if it's midnight January 1st, 1970) have been added. 2971elements as if it's midnight January 1st, 1970) have been added.
2938 2972
2973+++
2974*** In the DST slot, 'encode-time' and 'parse-time-string' now return -1
2975if it is not known whether daylight saving time is in effect.
2976Formerly they were inconsistent: 'encode-time' returned t in this
2977situation, whereas 'parse-time-string' returned nil. Now they
2978consistently use use nil to mean that DST is not in effect, and use -1
2979to mean that it is not known whether DST is in effect.
2980
2981+++
2982** New macro 'benchmark-progn'.
2983This macro works like 'progn', but messages how long it takes to
2984evaluate the body forms. The value of the last form is the return
2985value.
2986
2987+++
2988** New function 'read-char-from-minibuffer'.
2989This function works like 'read-char', but uses 'read-from-minibuffer'
2990to read a character, so it maintains a history that can be navigated
2991via usual minibuffer keystrokes 'M-p'/'M-n'.
2992
2993---
2994** New variables 'set-message-function' and 'clear-message-function'
2995can be used to specify functions to show and clear messages that
2996normally are displayed in the echo area.
2997
2998+++
2999** 'setq-local' can now set an arbitrary number of variables, which
3000makes the syntax more like 'setq'.
3001
3002---
3003** 'reveal-mode' can now also be used for more than to toggle between
3004invisible and visible: It can also toggle 'display' properties in
3005overlays. This is only done on 'display' properties that have the
3006'reveal-toggle-invisible' property set.
3007
3008+++
3009** 'process-contact' now takes an optional NO-BLOCK argument to allow
3010not waiting for a process to be set up.
3011
3012---
3013** New variable 'read-process-output-max' controls sub-process throughput.
3014This variable determines how many bytes can be read from a sub-process
3015in one read operation. The default, 4096 bytes, was previously a
3016hard-coded constant. Setting it to a larger value might enhance
3017throughput of reading from sub-processes that produces vast
3018(megabytes) amounts of data in one go.
3019
3020+++
3021** The new user option 'quit-window-hook' is now run first when
3022executing the 'quit-window' command.
3023
3024** The user options 'help-enable-completion-auto-load',
3025'help-enable-auto-load' and 'vhdl-project-auto-load', as well as the
3026function 'vhdl-auto-load-project' have been renamed to have "autoload"
3027without the hyphen in their names. Obsolete aliases from the old
3028names have been added.
3029
3030+++
3031** Buttons (created with 'make-button' and related functions) can
3032now use the 'button-data' property. If present, the data in this
3033property will be passed on to the 'action' function instead of the
3034button itself in 'button-activate'.
3035
3036+++
3037** 'defcustom' now takes a ':local' keyword that can be either t or
3038'permanent', which mean that the variable should be automatically
3039buffer-local. 'permanent' also sets the variable's 'permanent-local'
3040property.
3041
3042+++
3043** The new macro 'with-suppressed-warnings' can be used to suppress
3044specific byte-compile warnings.
3045
3046+++
3047** The new macro 'ignore-error' is like 'ignore-errors', but takes a
3048specific error condition, and will only ignore that condition. (This
3049can also be a list of conditions.)
3050
3051---
3052** The new function 'byte-compile-info-message' can be used to output
3053informational messages that look pleasing during the Emacs build.
3054
3055---
3056** New 'help-fns-describe-variable-functions' hook.
3057Makes it possible to add metadata information to 'describe-variable'.
3058
3059** i18n (internationalization)
3060
3061---
3062*** ngettext can be used now to return the right plural form
3063according to the given numeric value.
3064
3065+++
3066** 'inhibit-null-byte-detection' is renamed to 'inhibit-nul-byte-detection'.
3067
3068+++
3069** 'self-insert-command' takes the char to insert as (optional) argument.
3070
3071+++
3072** 'lookup-key' can take a list of keymaps as argument.
3073
3074+++
3075** 'condition-case' now accepts 't' to match any error symbol.
3076
3077+++
3078** New function 'proper-list-p'.
3079Given a proper list as argument, this predicate returns its length;
3080otherwise, it returns nil. 'format-proper-list-p' is now an obsolete
3081alias for the new function.
3082
3083---
2939** 'define-minor-mode' automatically documents the meaning of ARG. 3084** 'define-minor-mode' automatically documents the meaning of ARG.
2940 3085
2941+++ 3086+++
@@ -3013,7 +3158,7 @@ See the section "(elisp) Window Hooks" in the Elisp manual for a
3013detailed explanation of the new behavior. 3158detailed explanation of the new behavior.
3014 3159
3015+++ 3160+++
3016** Making scroll bar and fringe settings persistent for windows. 3161** Scroll bar and fringe settings can now be made persistent for windows.
3017The functions 'set-window-scroll-bars' and 'set-window-fringes' now 3162The functions 'set-window-scroll-bars' and 'set-window-fringes' now
3018have a new optional argument that makes the settings they produce 3163have a new optional argument that makes the settings they produce
3019reliably survive subsequent invocations of 'set-window-buffer'. 3164reliably survive subsequent invocations of 'set-window-buffer'.
@@ -3056,6 +3201,7 @@ A 'window' entry can now also specify a reference window for
3056** New function 'string-distance' to calculate the Levenshtein distance 3201** New function 'string-distance' to calculate the Levenshtein distance
3057between two strings. 3202between two strings.
3058 3203
3204+++
3059** 'print-quoted' now defaults to t, so if you want to see 3205** 'print-quoted' now defaults to t, so if you want to see
3060'(quote x)' instead of 'x you will have to bind it to nil where applicable. 3206'(quote x)' instead of 'x you will have to bind it to nil where applicable.
3061 3207
@@ -3081,12 +3227,14 @@ titled "Allow '&rest' or '&optional' without following variable
3081(Bug#29165)" for a full listing of which arglists are accepted across 3227(Bug#29165)" for a full listing of which arglists are accepted across
3082versions. 3228versions.
3083 3229
3230---
3084** Internal parsing commands now use 'syntax-ppss' and disregard 3231** Internal parsing commands now use 'syntax-ppss' and disregard
3085'open-paren-in-column-0-is-defun-start'. This affects mostly things like 3232'open-paren-in-column-0-is-defun-start'. This affects mostly things like
3086'forward-comment', 'scan-sexps', and 'forward-sexp' when parsing backward. 3233'forward-comment', 'scan-sexps', and 'forward-sexp' when parsing backward.
3087The new variable 'comment-use-syntax-ppss' can be set to nil to recover 3234The new variable 'comment-use-syntax-ppss' can be set to nil to recover
3088the old behavior if needed. 3235the old behavior if needed.
3089 3236
3237---
3090** The 'server-name' and 'server-socket-dir' variables are set when a 3238** The 'server-name' and 'server-socket-dir' variables are set when a
3091socket has been passed to Emacs. 3239socket has been passed to Emacs.
3092 3240
@@ -3131,6 +3279,7 @@ depending on X's significand.
3131If the optional third argument is non-nil, 'make-string' will produce 3279If the optional third argument is non-nil, 'make-string' will produce
3132a multibyte string even if its second argument is an ASCII character. 3280a multibyte string even if its second argument is an ASCII character.
3133 3281
3282---
3134** '(format "%d" X)' no longer mishandles a floating-point number X that 3283** '(format "%d" X)' no longer mishandles a floating-point number X that
3135does not fit in a machine integer. 3284does not fit in a machine integer.
3136 3285
@@ -3139,14 +3288,7 @@ does not fit in a machine integer.
3139This is the International EBCDIC encoding, also available as aliases 3288This is the International EBCDIC encoding, also available as aliases
3140'ebcdic-int' and 'cp038'. 3289'ebcdic-int' and 'cp038'.
3141 3290
3142+++ 3291---
3143** In the DST slot, 'encode-time' and 'parse-time-string' now return -1
3144if it is not known whether daylight saving time is in effect.
3145Formerly they were inconsistent: 'encode-time' returned t in this
3146situation, whereas 'parse-time-string' returned nil. Now they
3147consistently use use nil to mean that DST is not in effect, and use -1
3148to mean that it is not known whether DST is in effect.
3149
3150** New JSON parsing and serialization functions 'json-serialize', 3292** New JSON parsing and serialization functions 'json-serialize',
3151'json-insert', 'json-parse-string', and 'json-parse-buffer'. These 3293'json-insert', 'json-parse-string', and 'json-parse-buffer'. These
3152are implemented in C using the Jansson library. 3294are implemented in C using the Jansson library.
@@ -3174,6 +3316,7 @@ into the buffer.
3174It's a simple convenience function for looking up MIME types based on 3316It's a simple convenience function for looking up MIME types based on
3175file name extensions. 3317file name extensions.
3176 3318
3319---
3177*** The default way the list of possible external viewers for MIME 3320*** The default way the list of possible external viewers for MIME
3178types is sorted and chosen has changed. Earlier, the most specific 3321types is sorted and chosen has changed. Earlier, the most specific
3179viewer was chosen, even if there was a general override in "~/.mailcap". 3322viewer was chosen, even if there was a general override in "~/.mailcap".
@@ -3185,6 +3328,7 @@ method back, set 'mailcap-prefer-mailcap-viewers' to nil.
3185 3328
3186** URL 3329** URL
3187 3330
3331---
3188*** The 'file:' handler no longer looks for "index.html" in 3332*** The 'file:' handler no longer looks for "index.html" in
3189directories if you ask it for a "file:///dir" URL. Since this is a 3333directories if you ask it for a "file:///dir" URL. Since this is a
3190low-level library, such decisions (if they are to be made at all) are 3334low-level library, such decisions (if they are to be made at all) are
@@ -3197,15 +3341,18 @@ web browser Netscape, and is no longer relevant.
3197 3341
3198** Image mode 3342** Image mode
3199 3343
3344---
3200*** New library Exif. 3345*** New library Exif.
3201An Exif library has been added that can parse JPEG files and output 3346An Exif library has been added that can parse JPEG files and output
3202data about creation times and orientation and the like. 3347data about creation times and orientation and the like.
3203'exif-parse-file' and 'exif-parse-buffer' are the main interface 3348'exif-parse-file' and 'exif-parse-buffer' are the main interface
3204functions. 3349functions.
3205 3350
3351---
3206*** 'image-mode' now uses this library to automatically rotate images 3352*** 'image-mode' now uses this library to automatically rotate images
3207according to the orientation in the Exif data, if any. 3353according to the orientation in the Exif data, if any.
3208 3354
3355---
3209*** New library image-converter. 3356*** New library image-converter.
3210If you need to view exotic image formats for which Emacs doesn't have 3357If you need to view exotic image formats for which Emacs doesn't have
3211native support, customize the new user option 3358native support, customize the new user option
@@ -3213,10 +3360,12 @@ native support, customize the new user option
3213GraphicsMagick, ImageMagick or 'ffmpeg' installed, they will then be 3360GraphicsMagick, ImageMagick or 'ffmpeg' installed, they will then be
3214used to convert images automatically before displaying them. 3361used to convert images automatically before displaying them.
3215 3362
3363---
3216*** 'auto-mode-alist' now includes many of the types typically 3364*** 'auto-mode-alist' now includes many of the types typically
3217supported by the external image converters, like WEPB, BMP and ICO. 3365supported by the external image converters, like WEPB, BMP and ICO.
3218These now default to using 'image-mode'. 3366These now default to using 'image-mode'.
3219 3367
3368---
3220*** 'imagemagick-types-inhibit' disables using ImageMagick by default. 3369*** 'imagemagick-types-inhibit' disables using ImageMagick by default.
3221'image-mode' started using ImageMagick by default for all images 3370'image-mode' started using ImageMagick by default for all images
3222some years back. It now respects 'imagemagick-types-inhibit' as a way 3371some years back. It now respects 'imagemagick-types-inhibit' as a way
@@ -3242,20 +3391,25 @@ With a prefix argument, 'image-rotate' now rotates the image at point
3242 3391
3243** Modules 3392** Modules
3244 3393
3394---
3245*** The function 'load' now behaves correctly when loading modules. 3395*** The function 'load' now behaves correctly when loading modules.
3246Specifically, it puts the module name into 'load-history', prints 3396Specifically, it puts the module name into 'load-history', prints
3247loading messages if requested, and protects against recursive loads. 3397loading messages if requested, and protects against recursive loads.
3248 3398
3399+++
3249*** New module environment function 'process_input' to process user 3400*** New module environment function 'process_input' to process user
3250input while module code is running. 3401input while module code is running.
3251 3402
3403+++
3252*** New module environment functions 'make_time' and 'extract_time' to 3404*** New module environment functions 'make_time' and 'extract_time' to
3253convert between timespec structures and Emacs Lisp time values. 3405convert between timespec structures and Emacs Lisp time values.
3254 3406
3407+++
3255*** New module environment functions 'make_big_integer' and 3408*** New module environment functions 'make_big_integer' and
3256'extract_big_integer' to create and extract arbitrary-size integer 3409'extract_big_integer' to create and extract arbitrary-size integer
3257values. 3410values.
3258 3411
3412+++
3259*** emacs-module.h now defines a macro 'EMACS_MAJOR_VERSION' that expands 3413*** emacs-module.h now defines a macro 'EMACS_MAJOR_VERSION' that expands
3260to the major version of the latest Emacs supported by the header. 3414to the major version of the latest Emacs supported by the header.
3261 3415
@@ -3281,16 +3435,6 @@ buffer's 'default-directory' and invoke that file name handler to make
3281the process. That way 'make-process' can start remote processes. 3435the process. That way 'make-process' can start remote processes.
3282 3436
3283+++ 3437+++
3284** Emacs now supports resizing and rotating images without ImageMagick.
3285All modern systems support this feature. (On GNU and Unix systems,
3286Cairo drawing or the XRender extension to X11 is required for this to
3287be available; the configure script will test for it and, if found,
3288enable scaling.)
3289
3290The new function 'image-transforms-p' can be used to test whether any
3291given frame supports these capabilities.
3292
3293+++
3294** '(locale-info 'paper)' now returns the paper size on systems that support it. 3438** '(locale-info 'paper)' now returns the paper size on systems that support it.
3295This is currently supported on GNUish hosts and on modern versions of 3439This is currently supported on GNUish hosts and on modern versions of
3296MS-Windows. 3440MS-Windows.
@@ -3308,6 +3452,7 @@ returns a regexp that never matches anything, which is an identity for
3308this operation. Previously, the empty string was returned in this 3452this operation. Previously, the empty string was returned in this
3309case. 3453case.
3310 3454
3455+++
3311** New constant 'regexp-unmatchable' contains a never-matching regexp. 3456** New constant 'regexp-unmatchable' contains a never-matching regexp.
3312It is a convenient and readable way to specify a regexp that should 3457It is a convenient and readable way to specify a regexp that should
3313not match anything, and is as fast as any such regexp can be. 3458not match anything, and is as fast as any such regexp can be.