\f
* Installation Changes in Emacs 25.2
+** The new option 'configure --enable-gcc-warnings=warn-only' causes
+GCC to issue warnings without stopping the build. This behavior is
+now the default in developer builds. As before, use
+'--disable-gcc-warnings' to suppress GCC's warnings, and
+'--enable-gcc-warnings' to stop the build if GCC issues warnings.
+
+++
+** The Emacs server now has socket-launching support. This allows
+socket based activation, where an external process like systemd can
+invoke the Emacs server process upon a socket connection event and
+hand the socket over to Emacs. Emacs uses this socket to service
+emacsclient commands. This new functionality can be disabled with the
+configure option '--disable-libsystemd'.
+
** New configure option '--disable-build-details' attempts to build an
Emacs that is more likely to be reproducible; that is, if you build
and install Emacs twice, the second Emacs is a copy of the first.
\f
* Changes in Emacs 25.2
+---
+** `find-library-name' will now fall back on looking at `load-history'
+to try to locate libraries that have been loaded with an explicit path
+outside `load-path'.
+
++++
+** Faces in `minibuffer-prompt-properties' no longer overwrite properties
+in the text in functions like `read-from-minibuffer', but instead are
+added to the end of the face list. This allows users to say things
+like `(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'.
+
++++
+** The new variable `extended-command-suggest-shorter' has been added
+to control whether to suggest shorter `M-x' commands or not.
+
+---
+** icomplete now respects `completion-ignored-extensions'.
+
+++
-** A number of accessors for the value returned by 'file-attributes'
-has been added. They are: 'file-attribute-type',
+** Non-breaking hypens are now displayed with the `nobreak-hyphen'
+face instead of the `escape-glyph' face.
+
+---
+** `C-x h' (`mark-whole-buffer') will now avoid marking the prompt
+part of minibuffers.
+
+---
+** `find-library' now takes a prefix argument to pop to a different
+window.
+
+** `find-library', `help-function-def' and `help-variable-def' now run
+`find-function-after-hook'.
+
+---
+** 'process-attributes' on Darwin systems now returns more information.
+
++++
+** Several accessors for the value returned by 'file-attributes'
+have been added. They are: 'file-attribute-type',
'file-attribute-link-number', 'file-attribute-user-id',
'file-attribute-group-id', 'file-attribute-access-time',
'file-attribute-modification-time',
'file-attribute-status-change-time', 'file-attribute-size',
'file-attribute-modes', 'file-attribute-inode-number', and
-'file-attribute-device-number'
+'file-attribute-device-number'.
+++
-** The new function 'buffer-hash' has been added, and can be used to
-compute a fash, non-consing hash of the contents of a buffer.
-
-+++
-** The grep mode now has a command history that you can access via the
-`r' and `l' commands.
+** The new function 'buffer-hash' computes compute a fast, non-consing
+hash of a buffer's contents.
---
** 'fill-paragraph' no longer marks the buffer as changed unless it
environment 'Catalan', which has been added.
---
-** 'align-regexp' has a separate history for its interactive argument
+** 'align-regexp' has a separate history for its interactive argument.
'align-regexp' no longer shares its history with all other
-history-less functions that use 'read-string'
+history-less functions that use 'read-string'.
+++
** The networking code has been reworked so that it's more
required an integer (e.g., :service 993). This difference has been
eliminated, and integer strings work everywhere.
-** It is possible to disable attempted recovery on fatal signals
+** It is possible to disable attempted recovery on fatal signals.
-Two new variables allow to disable attempts to recover from stack
+Two new variables support disabling attempts to recover from stack
overflow and to avoid automatic auto-save when Emacs is delivered a
fatal signal. 'attempt-stack-overflow-recovery', if set to 'nil',
will disable attempts to recover from C stack overflows; Emacs will
probability of data corruption due to techniques Emacs uses to recover
in these situations.
++++
+** A second dir-local file (.dir-locals-2.el) is now accepted.
+See the variable 'dir-locals-file-2' for more information.
+
+---
+** International domain names (IDNA) are now encoded via the new
+puny.el library, so that one can visit web sites with non-ASCII URLs.
+
++++
+** The new 'timer-list' command lists all active timers in a buffer,
+where you can cancel them with the 'c' command.
+
++++
+** The new function 'read-multiple-choice' prompts for multiple-choice
+questions, with a handy way to display help texts.
+
\f
* Editing Changes in Emacs 25.2
++++
+** New bindings for 'query-replace-map'.
+'undo', undo the last replacement; bound to 'u'.
+'undo-all', undo all replacements; bound to 'U'.
+
\f
* Changes in Specialized Modes and Packages in Emacs 25.2
+** Compilation mode
+
+---
+*** Messages from CMake are now recognized.
+
+** Dired
+
++++
+*** In wdired, when editing files to contain slash characters,
+the resulting directories are automatically created. Whether to do
+this is controlled by the 'wdired-create-parent-directories' variable.
+
++++
+*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
+viewing HTML files and the like.
+
** eww
+++
*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
with the 'o' command from 'image-map'.
++++
+*** A new command 'C' ('eww-toggle-colors') can be used to toggle
+whether to use the HTML-specified colors or not. The user can also
+customize the 'shr-use-colors' variable.
+
+---
+*** Images that are being loaded are now marked with gray
+"placeholder" images of the size specified by the HTML. They are then
+replaced by the real images asynchronously, which will also now
+respect width/height HTML specs (unless they specify widths/heights
+bigger than the current window).
+
+** Images
+
++++
+*** Images are automatically scaled before displaying based on the
+'image-scaling-factor' variable (if Emacs supports scaling the images
+in question).
+
++++
+*** Images inserted with 'insert-image' and related functions get a
+keymap put into the text properties (or overlays) that span the
+image. This keymap binds keystrokes for manipulating size and
+rotation, as well as saving the image to a file. These commands are
+also available in 'image-mode'.
+
++++
+*** A new library for creating and manipulating SVG images has been
+added. See the "SVG Images" section in the lispref manual for
+details.
+
++++
+*** New setf-able function to access and set image parameters is
+provided: 'image-property'.
+
+++
** The commands that add ChangeLog entries now prefer a VCS root directory
for the ChangeLog file, if none already exists. Customize
---
** Support for non-string values of 'time-stamp-format' has been removed.
+** Message
+
+---
+*** 'message-use-idna' now defaults to t (because Emacs comes with
+built-in IDNA support now).
+
+---
+*** The 'message-valid-fqdn-regexp' variable has been removed, since
+there are now top-level domains added all the time. Message will no
+longer warn about sending emails to top-level domains it hasn't heard
+about.
+
+*** 'message-beginning-of-line' (bound to C-a) understands folded headers.
+In 'visual-line-mode' it will look for the true beginning of a header
+while in non-'visual-line-mode' it will move the point to the indented
+header's value.
+
** Tramp
+++
-*** New connection method "sg", which allows to edit files under
+*** New connection method "sg", which supports editing files under a
different group ID.
+++
*** Support for completing attribute values and bang-rules using the
'completion-at-point' command.
++++
+** Emacs now supports character name escape sequences in character and
+string literals. The syntax variants \N{character name} and
+\N{U+code} are supported.
+
++++
+** Prog mode has some support for multi-mode indentation.
+This allows better indentation support in modes that support multiple
+programming languages in the same buffer, like literate programming
+environments or ANTLR programs with embedded Python code.
+
+A major mode can provide indentation context for a sub-mode through
+the 'prog-indentation-context' variable. To support this, modes that
+provide indentation should use 'prog-widen' instead of 'widen' and
+'prog-first-column' instead of a literal zero. See the node
+"Mode-Specific Indent" in the ELisp manual for more details.
+
+** ERC
+
+*** New variable 'erc-default-port-tls' used to connect to TLS IRC
+servers.
+
+** URL
+
++++
+*** The new function 'url-cookie-delete-cookie' can be used to
+programmatically delete all cookies, or cookies from a specific
+domain.
+
++++
+*** `url-retrieve-synchronously' now takes an optional timeout parameter.
+
+---
+*** The URL package now support HTTPS over proxies supporting CONNECT.
+
++++
+*** 'url-user-agent' now defaults to 'default', and the User-Agent
+string is computed dynamically based on 'url-privacy-level'.
+
+** VC and related modes
+
+---
+*** The VC state indicator in the mode line now defaults to more
+colorful faces to make it more obvious to the user what the state is.
+See the 'vc-faces' customization group.
+
\f
* New Modes and Packages in Emacs 25.2
** Resizing a frame no longer runs 'window-configuration-change-hook'.
Put your function on 'window-size-change-functions' instead.
+** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
+mode to send the same escape sequences that xterm does. This makes
+things like forward-word in readline work.
+
+---
+** hideshow mode got four key bindings that are analogous to outline
+mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
+
+** The grep/rgrep/lgrep functions will now ask about saving files
+before running. This is controlled by the 'grep-save-buffers'
+variable.
+
\f
* Lisp Changes in Emacs 25.2
-** New var syntax-ppss-table to control the syntax-table used in syntax-ppss
+** New var syntax-ppss-table to control the syntax-table used in syntax-ppss.
** Autoload files can be generated without timestamps,
by setting 'autoload-timestamps' to nil.
+++
** New functions 'window-pixel-width-before-size-change' and
-'window-pixel-height-before-size-change' allow to detect which window
-changed size when 'window-size-change-functions' are run.
+'window-pixel-height-before-size-change' support detecting which
+window changed size when 'window-size-change-functions' are run.
+++
** New function 'display-buffer-reuse-mode-window' is an action function
(inhibit-same-window . nil)
(mode . Man-mode))))
+---
+** There is now a new variable 'flyspell-sort-corrections-function'
+that allows changing the way corrections are sorted.
+
+---
+** The new command 'fortune-message' has been added, which displays
+fortunes in the echo area.
+
+++
** New function 'func-arity' returns information about the argument list
-of an arbitrary function.
-This is a generalization of 'subr-arity' for functions that are not
-built-in primitives. We recommend using this new function instead of
-'subr-arity'.
+of an arbitrary function. This generalizes 'subr-arity' for functions
+that are not built-in primitives. We recommend using this new
+function instead of 'subr-arity'.
+++
** 'parse-partial-sexp' state has a new element. Element 10 is
non-nil when the last character scanned might be the first character
-of a two character construct, i.e. a comment delimiter or escaped
+of a two character construct, i.e., a comment delimiter or escaped
character. Its value is the syntax of that last character.
+++
is a list of currently open parenthesis positions, starting with the
outermost parenthesis.
+---
+** 'read-color' will now display the color names using the color itself
+as the background color.
+
+** The function 'redirect-debugging-output' now works on platforms
+other than GNU/Linux.
+
++++
+** The new function 'string-version-lessp' compares strings by
+interpreting consecutive runs of numerical characters as numbers, and
+compares their numerical values. According to this predicate,
+"foo2.png" is smaller than "foo12.png".
+
++++
+** The new function 'char-from-name' converts a Unicode name string
+to the corresponding character code.
+
++++
+** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
+Lisp object suitable for use with 'eq' and 'eql' correspondingly. If
+two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
+('sxhash-eql') on them will be the same.
+
++++
+** Function 'sxhash' has been renamed to 'sxhash-equal' for
+consistency with the new functions. For compatibility, 'sxhash'
+remains as an alias to 'sxhash-equal'.
+
++++
+** Time conversion functions that accept a time zone rule argument now
+allow it to be OFFSET or a list (OFFSET ABBR), where the integer
+OFFSET is a count of seconds east of Universal Time, and the string
+ABBR is a time zone abbreviation. The affected functions are
+'current-time-string', 'current-time-zone', 'decode-time',
+'format-time-string', and 'set-time-zone-rule'.
+
\f
* Changes in Emacs 25.2 on Non-Free Operating Systems
Windows 9X, the previous limitations, spelled out in the Emacs manual,
still apply.)
+** `convert-standard-filename' no longer mirrors slashes on MS-Windows.
+Previously, on MS-Windows this function converted slash characters in
+file names into backslashes. It no longer does that.
+
\f
* Installation Changes in Emacs 25.1
by default, and must be enabled by using the '--with-modules' option
at configure time.
-+++
-** A second dir-local file (.dir-locals-2.el) is now accepted.
-See the variable 'dir-locals-file-2' for more information.
-
+++
** Network security (TLS/SSL certificate validity and the like) is
added via the new Network Security Manager (NSM) and controlled via
the 'network-security-level' variable.
----
-** International domain names (IDNA) are now encoded via the new
-puny.el library, so that one can visit web sites with non-ASCII URLs.
-
+++
** C-h l now also lists the commands that were run.
-** The new M-s M-w key binding uses eww to search the web for the
-text in the region.
-
+++
-** The new 'timer-list' command lists all active timers in a buffer
-where you can cancel them with the 'c' command.
-
-** M-x suggests shorthands and ignores obsolete commands for completion.
-** x-select-enable-clipboard is renamed select-enable-clipboard.
-x-select-enable-primary and renamed select-enable-primary.
+** x-select-enable-clipboard is renamed select-enable-clipboard
+and x-select-enable-primary is renamed select-enable-primary.
Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
name it), with the proviso that on some systems (e.g. Windows)
select-enable-primary is ineffective since the system doesn't
** The option 'even-window-heights' has been renamed to
'even-window-sizes' and now handles window widths as well.
-+++
-** New function 'read-multiple-choice' use to prompt for
-multiple-choice questions, with a handy way to display help texts.
-
+++
** terpri gets an optional arg ENSURE to conditionally output a newline.
in favor of the global 'M-s h' bindings introduced in Emacs-23.1.
They'll disappear soon.
-+++
-** New bindings for 'query-replace-map'.
-'undo', undo the last replacement; bound to 'u'.
-'undo-all', undo all replacements; bound to 'U'.
-
\f
* Changes in Specialized Modes and Packages in Emacs 25.1
'json-pretty-print-buffer-ordered' pretty prints JSON objects with
object keys sorted alphabetically.
-+++
-** Prog mode has some support for multi-mode indentation.
-This allows better indentation support in modes that support multiple
-programming languages in the same buffer, like literate programming
-environments or ANTLR programs with embedded Python code.
-
-A major mode can provide indentation context for a sub-mode through
-the 'prog-indentation-context' variable. To support this, modes that
-provide indentation should use 'prog-widen' instead of 'widen' and
-'prog-first-column' instead of a literal zero. See the node
-"Mode-Specific Indent" in the ELisp manual for more details.
-
** Prettify Symbols mode
+++
'erc-network-hide-list' and 'erc-channel-hide-list' will only hide the
specified message types for the respective specified targets.
-*** New variable 'erc-default-port-tls' used to connect to TLS IRC
-servers.
-
---
*** Reconnection is now asynchronous.
whether to use variable-pitch fonts or not. The user can also
customize the 'shr-use-fonts' variable.
-+++
-*** A new command 'C' ('eww-toggle-colors') can be used to toggle
-whether to use the HTML-specified colors or not. The user can also
-customize the 'shr-use-colors' variable.
-
+++
*** A new command 'R' ('eww-readable') will try do identify the main
textual parts of a web page and display only that, leaving menus and
*** A new command 'D' ('eww-toggle-paragraph-direction') allows you to
toggle the paragraph direction between left-to-right and right-to-left.
----
-*** Images that are being loaded are now marked with grey
-"placeholder" images of the size specified by the HTML. They are then
-replaced by the real images asynchronously, which will also now
-respect width/height HTML specs (unless they specify widths/heights
-bigger than the current window).
-
---
*** You can now use several eww buffers in parallel by renaming eww
buffers you want to keep separate.
*** text/html messages that contain inline image parts will be
transformed into multipart/related messages before sending.
----
-*** The 'message-valid-fqdn-regexp' variable has been removed, since
-there are now top-level domains added all the time. Message will no
-longer warn about sending emails to top-level domains it hasn't heard
-about.
-
-*** 'message-beginning-of-line' (bound to C-a) understands folded headers.
-In 'visual-line-mode' it will look for the true beginning of a header
-while in non-'visual-line-mode' it will move the point to the indented
-header's value.
-
+++
** In Show Paren Mode, a parenthesis can be highlighted when point
stands inside it, and certain parens can be highlighted when point is
** If gpg2 exists on the system, it is now used as the default value
of 'epg-gpg-program' (instead of gpg).
-** Images
-
-+++
-*** Images are automatically scaled before displaying based on the
-'image-scaling-factor' variable (if Emacs supports scaling the images
-in question).
-
-+++
-*** Images inserted with 'insert-image' and related functions get a
-keymap put into the text properties (or overlays) that span the
-image. This keymap binds keystrokes for manipulating size and
-rotation, as well as saving the image to a file. These commands are
-also available in 'image-mode'.
-
-+++
-*** A new library for creating and manipulating SVG images has been
-added. See the "SVG Images" section in the lispref manual for
-details.
-
-+++
-*** New setf-able function to access and set image parameters is
-provided: 'image-property'.
-
-
** Lisp mode
---
plist will contain a :peer element that has the output of
'gnutls-peer-status' (if Emacs is built with GnuTLS support).
-+++
-*** The new function 'url-cookie-delete-cookie' can be used to
-programmatically delete all cookies, or cookies from a specific
-domain.
-
** Tramp
+++
outside Emacs (e.g., from the shell prompt), or if you switch the VC
back-end for the buffer's file, or remove it from version control.
----
-*** The VC state indicator in the mode line now defaults to more
-colorful faces to make it more obvious to the user what the state is.
-See the 'vc-faces' customization group.
-
+++
*** New option 'vc-annotate-background-mode' controls whether
the color range from 'vc-annotate-color-map' is applied to the
background or to the foreground.
+---
+*** New options for customizing encoding of Git commit log messages.
+The new user options 'vc-git-commits-coding-system' and
+'vc-git-log-output-coding-system' specify the encoding of log messages
+sent to Git when committing, and the decoding of log messages read
+from Git history commands. These options default to UTF-8; if
+customized, they should be consistent with the Git config variables
+i18n.commitEncoding and i18n.logOutputEncoding.
+('vc-git-commits-coding-system' existed previously, but was a
+variable, not a user option.)
+
+++
*** 'compare-windows' now compares text with the most recently selected window
instead of the next window. If you want the previous behavior of
"Copyright-paperwork-exempt: yes". Set 'log-edit-rewrite-tiny-change'
nil to disable this.
++++
+*** vc-mcvs.el has been removed.
+
---
** VHDL mode now supports VHDL'08.
'dired-compress-files-alist' variable.
+++
-*** In wdired, when editing files to contain slash characters,
-the resulting directories are automatically created. Whether
-to do this or not is controlled by the
-'wdired-create-parent-directories' variable.
-
-+++
-*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
-viewing HTML files and the like.
-
*** New user interface for the 'A' and 'Q' commands.
These keys, now bound to 'dired-do-find-regexp' and
'dired-do-find-regexp-and-replace', work similarly to 'xref-find-apropos'
*** As a consequence, the second arg of 'indirect-function' is now obsolete.
+++
-** Although comint, term, and compile still set the EMACS variable,
-this is now considered deprecated and will be removed in a future release.
+** M-x shell and M-x compile no longer set the EMACS environment variable.
+This avoids clashing when other programs use the variable for other purposes.
+Although M-x term still sets EMACS for compatibility with Bash 4.3 and earlier,
+this is deprecated and will be phased out when Bash 4.4 or later takes over.
Use the INSIDE_EMACS environment variable instead.
-** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
-mode to send the same escape sequences that xterm does. This makes
-things like forward-word in readline work.
-
----
-** hideshow mode got four key bindings that are analogous to outline
-mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
-
+++
** 'save-excursion' does not save&restore the mark any more.
Use 'save-mark-and-excursion' if you want the old behavior.
dynamically. Any third-party code that changes these templates should
be updated accordingly.
-+++
-** The grep/rgrep/lgrep functions will now ask about saving files
-before running. This is controlled by the 'grep-save-buffers'
-variable.
-
+++
** '(/ N)' is now equivalent to '(/ 1 N)' rather than to '(/ N 1)'.
The new behavior is compatible with Common Lisp and with XEmacs.
It should be placed right where the docstring would be, and FORM is then
evaluated (and should return a string) when the closure is built.
----
-** The new command 'fortune-message' has been added, which displays
-fortunes in the echo area.
-
+++
** define-inline provides a new way to define inlinable functions.
systems and for MS-Windows, for other systems they fall back to their
counterparts 'string-lessp' and 'string-equal'.
-+++
-** The new function 'string-version-lessp' compares strings by
-interpreting consecutive runs of numerical characters as numbers, and
-compares their numerical values. According to this predicate,
-"foo2.png" is smaller than "foo12.png".
-
---
*** The ls-lisp package uses 'string-collate-lessp' to sort file names.
The effect is that, on systems that use ls-lisp for Dired, the default
*** Time conversion functions now accept an optional ZONE argument
that specifies the time zone rules for conversion. ZONE is omitted or
nil for Emacs local time, t for Universal Time, 'wall' for system wall
-clock time, or a string as in 'set-time-zone-rule' for a time zone
-rule. The affected functions are 'current-time-string',
-'current-time-zone', 'decode-time', and 'format-time-string'. The
-function 'encode-time', which already accepted a simple time zone rule
-argument, has been extended to accept all the new forms.
+clock time, or a string as in the TZ environment variable. The
+affected functions are 'current-time-string', 'current-time-zone',
+'decode-time', and 'format-time-string'. The function 'encode-time',
+which already accepted a simple time zone rule argument, has been
+extended to accept all the new forms.
*** Incompatible change in the third argument of 'format-time-string'.
-Previously, any non-nil argument was interpreted as a UTC time zone.
-This is no longer true; packages that want UTC time zone should pass t
+Previously, any non-nil argument was interpreted as specifying Universal Time.
+This is no longer true; packages that want Universal Time should pass t
as the third argument.
*** Time-related functions now consistently accept numbers
** New possible value for 'system-type': 'nacl'.
This is used by Google's Native Client (NaCl).
----
-** 'read-color' will now display the color names using the color itself
-as the background color.
-
----
-** There is now a new variable 'flyspell-sort-corrections-function'
-that allows changing the way corrections are sorted.
-
** Miscellaneous name change
---
animation when entering and leaving fullscreen. For native OSX fullscreen
this has no effect.
+** On the OS X Cocoa ("Nextstep") port, multicolor font (such as color
+emoji) display is disabled. This feature was accidentally added when
+Emacs 24.4 included the new Core Text based font backend code that was
+originally implemented for a non-mainline port. This will be enabled
+again once it is also implemented in Emacs on free operating systems.
+
---
** The new function 'w32-application-type' returns the type of an
MS-Windows application given the name of its executable program file.