otherwise leave it unmarked.
\f
-* Changes in Emacs 24.5
-
----
-** The default value of `history-length' has increased to 100.
+* Installation Changes in Emacs 25.1
+++
-** `redisplay-dont-pause' is declared as obsolete.
+** Building Emacs now requires C99 or later.
-\f
-* Changes in Specialized Modes and Packages in Emacs 24.5
+** Building Emacs now requires GNU make, version 3.81 or later.
-** Obsolete packages
+ +++
+ ** `call-process-shell-command' and `process-file-shell-command'
+ don't take "&rest args" any more.
+
+** By default, Emacs no longer works on IRIX. We expect that Emacs
+users are not affected by this, as SGI stopped supporting IRIX in
+December 2013. If you are affected, please send a bug report. You
+should be able to work around the problem either by porting the Emacs
+undumping code to GCC under IRIX, or by configuring --with-wide-int,
+or by sticking with Emacs 24.4.
+
+** 'configure' now prefers gnustep-config when configuring GNUstep.
+If gnustep-config is not available, the old heuristics are used.
+ ---
+ *** cc-compat.el
+
---
-*** crisp.el - moved to elpa.gnu.org.
+** The configure option `--with-pkg-config-prog' has been removed.
+Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
+
+** The configure option '--enable-silent-rules' is now the default,
+and silent rules are now quieter. To get the old behavior where
+'make' chatters a lot, configure with '--disable-silent-rules' or
+build with 'make V=1'.
---
-*** tpu-edt.el, ws-mode.el
-These emulations of old editors are believed to be no longer relevant
- - contact emacs-devel@gnu.org if you disagree.
+** The configure option '--with-gameuser' now allows to specify a
+group instead of a user if its argument is prefixed by ':' (a colon).
+This will cause the game score files in ${localstatedir}/games/emacs
+to be owned by that group, and the helper program for updating them to
+be installed setgid. The option now defaults to the 'games' group.
---
-*** vi.el, vip.el (try M-x viper instead)
+** The `grep-changelog' script (and its manual page) are no longer included.
+It has no particular connection to Emacs and has not changed in years,
+so if you want to use it, you can always take a copy from an older Emacs.
\f
-* Installation Changes in Emacs 24.4
-
-** Emacs can now be compiled with ACL (access control list) support.
-This happens by default if a suitable support library is found at
-build time, like libacl on GNU/Linux. To prevent this, use the
-configure option `--disable-acl'. See below for the features this provides.
-
-** Emacs can now be compiled with file notification support.
-This happens by default if a suitable system library is found at
-build time. To prevent this, use the configure option
-`--without-file-notification'. See below for file-notify features.
-This feature is not available for the Nextstep port.
-
-** Emacs can now be compiled with zlib support.
-This happens by default if zlib is present, which it normally is.
-To prevent this, use the configure option `--without-zlib'.
-This provides the function `zlib-decompress-region'; see below for details.
-
-** The configure option `--without-compress-info' has been generalized,
-and renamed to `--without-compress-install'. It now prevents compression
-of _any_ files during installation.
-
-** The configure option `--with-crt-dir' has been removed.
-It is no longer needed, as the crt*.o files are no longer linked specially.
-
-** Directories passed to configure option `--enable-locallisppath' are
-no longer created during installation.
-
-** Emacs for Nextstep (Mac OS X, GNUstep) can be built with ImageMagick support.
-This requires pkg-config to be available at build time.
+* Startup Changes in Emacs 25.1
\f
-* Startup Changes in Emacs 24.4
-
-** When initializing `load-path', an empty element in the EMACSLOADPATH
-environment variable (either leading, e.g., ":/foo"; trailing, e.g.,
-"/foo:"; or embedded, e.g., "/foo::/bar") is replaced with the default
-load-path (the one that would have been used if EMACSLOADPATH was unset).
-This makes it easier to _extend_ the load-path via EMACSLOADPATH
-(previously, EMACSLOADPATH had to specify the complete load-path,
-including the defaults). (In older versions of Emacs, an empty element
-was replaced by ".", so use an explicit "." now if that is what you want.)
+* Changes in Emacs 25.1
-** The -L option, which normally prepends its argument to load-path,
-will instead append, if the argument begins with `:' (or `;' on MS Windows;
-i.e., `path-separator').
+** New command `comment-line' bound to `C-x C-;'.
-** If you use either site-load.el or site-init.el to customize the dumped
-Emacs executable, any changes to `load-path' that these files make
-will no longer be present after dumping. To affect a permanent change
-to `load-path', use the `--enable-locallisppath' option of `configure'.
+** New function `custom-prompt-customize-unsaved-options' checks for
+unsaved customizations and prompts user to customize (if found).
-** The user option `initial-buffer-choice' can now specify a function
-to set up the initial buffer.
++++
+** 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.
-\f
-* Changes in Emacs 24.4
+** C-h l now also lists the commands that were run.
-** Support for ACLs (access control lists).
-This requires a suitable support library to be found at build time.
-On GNU/Linux, the POSIX ACL interface is used via libacl.
-On MS-Windows, the NT Security APIs are used to emulate the POSIX interface.
-ACLs are extended file attributes, used e.g. for finer-grained permissions.
-
-*** Emacs preserves the ACL entries of files when backing up.
-
-*** New functions `file-acl' and `set-file-acl' get and set file ACLs.
-
-** Support for menus on text-mode terminals.
-If the terminal supports a mouse, clicking on the menu bar, or on
-sensitive portions of the mode line or header line, will drop down the
-menu defined at that position. Likewise, clicking C-mouse-1, C-mouse-2, or
-C-mouse-3 on the text area will pop up the menus defined for those locations.
-
-If the text terminal does not support a mouse, you can activate the
-first menu-bar menu by typing F10, which invokes `menu-bar-open'.
-
-If you want the previous behavior, where F10 invoked `tmm-menubar',
-customize the option `tty-menu-open-use-tmm' to a non-nil value.
-(Typing M-` always invokes `tmm-menubar', even if `tty-menu-open-use-tmm'
-is nil.)
-
-** New option `load-prefer-newer' affects how the `load' function chooses
-the file to load. If this is non-nil, then when both .el and .elc
-versions of a file exist, and the caller did not explicitly specify
-which one to load, then the newer file is loaded. The default, nil,
-means to always load the .elc file.
-
-** Multi-monitor support
-
-*** New functions `display-monitor-attributes-list' and
-`frame-monitor-attributes' can be used to obtain information about
-each physical monitor on multi-monitor setups.
-
-*** The functions `display-pixel-width' and `display-pixel-height' now
-behave consistently among the platforms: they return the pixel width
-or height for all physical monitors associated with the given display
-as if they were on X. To get information for each physical
-monitor, use the new functions above. Similar notes also apply to
-`x-display-pixel-width', `x-display-pixel-height', `display-mm-width',
-`display-mm-height', `x-display-mm-width', and `x-display-mm-height'.
-
-** New function `zlib-decompress-region', which decompresses gzip- and
-zlib-format compressed data using built-in zlib support (if available).
-
-** The *Messages* buffer is created in `messages-buffer-mode',
-a new major mode, with read-only status. Any code that might create
-the *Messages* buffer should call the function `messages-buffer' to do
-so and set up the mode.
-
-** The cursor stops blinking after 10 blinks (by default) on X and Nextstep.
-You can change the default by customizing `blink-cursor-blinks'.
-
-** In keymaps where SPC scrolls forward, S-SPC now scrolls backward.
-This affects View mode, etc.
-
-** The default value of `make-backup-file-name-function' is no longer nil.
-Instead it defaults to a function that does what the nil value used to.
-
-** Help
-
-*** The command `apropos-variable' is renamed to `apropos-user-option'.
-`apropos-user-option' shows all user options, while `apropos-variable'
-shows all variables. When called with a universal prefix argument,
-the two commands swap their behaviors. When `apropos-do-all' is
-non-nil, they output the same results.
-
-*** The key `?' now describes prefix bindings, like `C-h'.
-
-*** The command `describe-function' has been extended for EIEIO.
-Running it on constructors will show a full description of the
-generated class. For generic functions, it will show all
-implementations together with links to the source. The old commands
-`describe-class', `describe-constructor' and `describe-generic' were
-removed.
-
-*** The function `quail-help' is no longer an interactive command.
-Use `C-h C-\' (`describe-input-method') instead.
-
-** Frame and window handling
-
-*** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
-bound to <f11> and M-<f10>, respectively.
-
-*** New hooks `focus-in-hook', `focus-out-hook'.
-These are normal hooks run when an Emacs frame gains or loses input focus.
-
-*** The function `window-in-direction' now takes additional arguments
-for specifying a reference point, wrapping the selection around frame
-borders, and specifying ways to select the minibuffer window.
-
-*** Emacs can now change frame sizes in units of pixels, rather than
-text rows or columns. When maximizing a frame or making it fullscreen,
-remaining extra pixels are no longer given to the minibuffer, the rightmost
-fringe, or other unusable space, but are distributed among the text
-areas of the frame's windows. If the new option `frame-resize-pixelwise'
-is non-nil, all frame size changes happen pixelwise and set the
-corresponding size hints for the window manager.
-
-*** Emacs can now change window sizes in units of pixels.
-Mouse-dragging a mode line or window divider now changes the size of
-adjacent windows pixelwise. If the new option `window-resize-pixelwise'
-is non-nil, functions like `balance-windows-area' and `fit-window-to-buffer'
-resize windows pixelwise. Most functions for changing or accessing
-window sizes now have an additional argument that allows changes to apply,
-or values to be returned, in pixels instead of lines/columns.
-
-*** The functions `window-body-height' and `window-body-width' now never
-count partially visible lines or columns if called with a nil PIXELWISE
-argument.
-
-*** Emacs can now draw dividers between adjacent windows. To put
-dividers between side-by-side/vertically stacked windows customize the
-frame parameters `right-divider-width' and `bottom-divider-width' to
-some positive integer. You can drag dividers with the mouse (they show
-a corresponding cursor when the mouse hovers over them). You can change
-the appearance of dividers by customizing the faces `window-divider',
-`window-divider-first-pixel', and `window-divider-last-pixel'. The last
-two are useful to provide a 3D effect, or to better distinguish dividers
-from surrounding display objects.
-
-*** New functions to return the pixel sizes of window components, namely
-`window-scroll-bar-width', `window-mode-line-height',
-`window-header-line-height', `window-right-divider-width', and
-`window-bottom-divider-width'.
+---
+** The new M-s M-w key binding uses eww to search the web for the
+text in the region.
-*** The new function `window-text-pixel-size' returns the size of the
-text of a window's buffer in pixels. This allows functions like
-`fit-frame-to-buffer' and `fit-window-to-buffer' to accurately fit a
-window to its buffer as it will be displayed.
-
-*** `fit-window-to-buffer' can now resize windows in both dimensions.
-This behavior is controlled by the new option
-`fit-window-to-buffer-horizontally'. The new option
-`fit-frame-to-buffer' allows you to fit the window's frame to its buffer.
-
-*** `fit-frame-to-buffer' now fits frames in both dimensions. The new
-options `fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes'
-control the size of the frame and its position on screen.
+** 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.
+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
+have the equivalent of a primary selection.
-*** Temp Buffer Resize Mode can now adjust the height and width of
-windows and frames. The new option `temp-buffer-max-width' allows you to
-control the width of temporary buffer windows. Moreover, if the new
-option `fit-frame-to-buffer' is non-nil and the buffer appears in the
-root window of a frame, Temp Buffer Resize Mode will try to adjust the
-width and/or height of the frame.
++++
+** terpri gets an optional arg ENSURE to conditionally output a newline.
-*** `split-window' is now a non-interactive function, not a command.
-As a command, it was a special case of `C-x 2' (`split-window-below'),
-and as such superfluous. After being reimplemented in Lisp, its
-interactive form was mistakenly retained.
++++
+** New macro `define-advice'.
-*** The functions `window-size' and `window-total-size' now have an
-optional argument to return a rounded size value.
+** `insert-register' now leaves point after the inserted text
+when called interactively. A prefix argument toggles this behavior.
-*** `window-state-put' now allows you to put a window state into internal
-windows too.
+** New var `truncate-string-ellipsis' to choose how to indicate truncation.
-*** New option `scroll-bar-adjust-thumb-portion'.
-Available only on X, this option allows you to control over-scrolling
-using the scroll bar (i.e., dragging the thumb down even when the end
-of the buffer is visible).
-
-*** New display actions functions for `display-buffer':
-
-**** `display-buffer-at-bottom' chooses or creates a window at the
-bottom of the selected frame.
-
-**** `display-buffer-no-window' to not display the buffer in a window.
-
-*** New display action alist entry `allow-no-window' to indicate the
-caller of `display-buffer' is ready to handle the case of not displaying
-the buffer in a window.
++++
+** The new variable `term-file-aliases' replaces some files from lisp/term.
+The function `tty-run-terminal-initialization' consults this variable
+when deciding what terminal-specific initialization code to run.
-*** `display-buffer-in-previous-window' is now a member of
-`display-buffer-fallback-action'.
-
-** Lisp evaluation
+---
+** New variable `system-configuration-features', listing some of the
+main features that Emacs was compiled with. This is mainly intended
+for use in Emacs bug reports.
-*** `eval-defun' on an already defined defcustom calls the :set function,
-if there is one.
-
-*** The commands `eval-expression' (`M-:'), `eval-last-sexp' (`C-x C-e'),
-and `eval-print-last-sexp' (`C-j' in Lisp Interaction mode) can take a
-zero prefix argument. This disables truncation of lists in the output,
-equivalent to setting `(eval-expression-)print-length' and
-`(eval-expression-)print-level' to nil. Additionally, it causes integers
-to be printed in other formats (octal, hexadecimal, and character).
-
-*** New hook `eval-expression-minibuffer-setup-hook' run by
-`eval-expression' on entering the minibuffer.
-
-** `cache-long-line-scans' is now non-nil, and renamed to `cache-long-scans',
-because it affects caching of paragraph scanning results as well.
-There is no reason to set this to nil except for debugging purposes.
-
-** `emacs-bzr-version' has been renamed to `emacs-repository-version',
-and works for git too, if you fetch the repository notes.
++++
+** A password is now hidden also when typed in batch mode. Another
+hiding character but the default `.' can be used by let-binding the
+variable `read-hide-char'.
+
+** The new functions `string-collate-lessp' and `string-collate-equalp'
+preserve the collation order as defined by the system's locale(1)
+environment. For the time being this is implemented for modern POSIX
+systems and for MS-Windows, for other systems they fall back to their
+counterparts `string-lessp' and `string-equal'.
+
+*** The ls-lisp package uses `string-collate-lessp' to sort file names.
+If you want the old, locale-independent sorting, customize the new
+option `ls-lisp-use-string-collate' to a nil value.
+
+*** The MS-Windows specific variable `w32-collate-ignore-punctuation',
+if set to a non-nil value, causes the above 2 functions to ignore
+symbol and punctuation characters when collating strings. This
+emulates the behavior of modern Posix platforms when the locale's
+codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
+MS-Windows doesn't support UTF-8 as codeset in its locales.
-** The default value of `comment-use-global-state' is now t,
-and this variable has been marked obsolete.
++++
+** The new function `bidi-find-overridden-directionality' allows to
+find characters whose directionality was, perhaps maliciously,
+overridden by directional override control characters. Lisp programs
+can use this to detect potential phishing of URLs and other links that
+exploits bidirectional display reordering.
-** `write-region-inhibit-fsync' now defaults to t in batch mode.
++++
+** The new function `buffer-substring-with-bidi-context' allows to
+copy a portion of a buffer into a different location while preserving
+the visual appearance both of the copied text and the text at
+destination, even when the copied text includes mixed bidirectional
+text and directional control characters.
-** The option `set-mark-default-inactive' has been deleted.
-This unfinished feature was introduced by accident in Emacs 23.1;
-simply disabling Transient Mark mode does the same thing.
+** New variable `ns-use-fullscreen-animation' controls animation for
+non-native NS fullscreen. The default is nil. Set to t to enable
+animation when entering and leaving fullscreen. For native OSX fullscreen
+this has no effect.
-\f
-* Editing Changes in Emacs 24.4
+** A new text property `inhibit-read-only' can be used in read-only
+buffers to allow certain parts of the text to be writable.
-** Indentation
+** A new function `directory-files-recursively' returns all matching
+files (recursively) under a directory.
-*** `electric-indent-mode' is now enabled by default.
-Typing RET reindents the current line and indents the new line.
-`C-j' inserts a newline but does not indent. In some programming modes,
-additional characters are electric (eg `{').
+** The new `directory-name-p' can be used to check whether a file
+name (as returned from, for instance, `file-name-all-completions' is
+a directory file name. It returns non-nil if the last character in
+the name is a forward slash.
-*** New buffer-local `electric-indent-local-mode'.
++++
+** New variable `fast-but-imprecise-scrolling' inhibits
+fontification during full screen scrolling operations, giving less
+hesitant operation during auto-repeat of C-v, M-v at the cost of
+possible inaccuracies in the end position.
-*** The behavior of `C-x TAB' (`indent-rigidly') has changed.
-When invoked without a prefix argument, it now activates a transient
-mode in which typing <left>, <right>, <S-left>, and <S-right> adjusts
-the text indentation in the region. Typing any other key resumes
-normal editing behavior.
+** The function `font-info' now returns more details about a font.
+In particular, it now returns the average width of the font's
+characters, which can be used for geometry-related calculations.
-*** `tab-stop-list' is now implicitly extended to infinity by repeating
-the last step. Its default value is changed to nil, which means a tab
-stop every `tab-width' columns.
+\f
+* Editing Changes in Emacs 25.1
-** Uniquify is enabled by default, with `post-forward-angle-brackets' style.
-In other words, if you visit two files that have the same base name,
-then rather than creating buffers basename and basename<2>,
-Emacs uses basename<dirA> and basename<dirB>. To change this,
-customize `uniquify-buffer-name-style'. Set it to nil for the old behavior.
+** Unicode names entered via C-x 8 RET now use substring completion by default.
-** New command `C-x SPC' (`rectangle-mark-mode') makes a rectangular region.
-Most commands are still unaware of it, but kill/yank do work on the rectangle.
+** New minor mode global-eldoc-mode is enabled by default.
-** New option `visual-order-cursor-movement'.
-If this is non-nil, cursor motion with arrow keys will follow the
-visual order of characters on the screen: <left> always moves to the
-left, <right> always moves to the right, disregarding the surrounding
-bidirectional context.
+** Emacs now supports "bracketed paste mode" when running on a terminal
+that supports it. This facility allows Emacs to understand pasted
+chunks of text as strings to be inserted, instead of interpreting each
+character in the pasted text as actual user input. This results in a
+paste experience similar to that under a window system, and significant
+performance improvements when pasting large amounts of text.
-** New command `delete-duplicate-lines'.
-This searches the region for identical lines, and removes all but one
-copy of each repeated line. The lines need not be sorted.
+** Emacs now supports the latest version of the UBA.
+The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
+was updated to support all the latest additions and changes introduced
+in Unicode Standard versions 6.3 and 7.0, and a few changes suggested
+for Unicode 8.0. This includes full support for directional isolates
+and the Bidirectional Parentheses Algorithm (BPA) specified by these
+Unicode standards.
-** New command `cycle-spacing' acts like a smarter `just-one-space'.
-When called in succession, it cycles between spacing conventions:
-one space, no spaces, original spacing.
+** You can access `mouse-buffer-menu' (C-down-mouse-1) using C-f10.
-** `blink-matching-paren' now only highlights the matching open-paren
-by default, instead of moving the cursor. Set this variable to `jump' to
-restore the old behavior.
+\f
+* Changes in Specialized Modes and Packages in Emacs 25.1
+** package.el
+*** `package-install-from-buffer' and `package-install-file' work on directories.
+This follows the same rules as installing from a .tar file, except the
+-pkg file is optional.
-** The new function `fill-single-char-nobreak-p' can stop fill from breaking
-a line after a one-letter word, which is an error in some typographical
-conventions. To use it, add it to the `fill-nobreak-predicate' hook.
+*** Packages which are dependencies of other packages cannot be deleted.
+The FORCE argument to `package-delete' overrides this.
-** Registers
+*** New custom variable `package-selected-packages' tracks packages
+which were installed by the user (as opposed to installed as
+dependencies). This variable can also be manually customized.
-*** All interactive commands that read a register (`copy-to-register', etc.)
-now display a temporary window after `register-preview-delay' seconds
-that summarizes existing registers. To disable this, set that option to nil.
-Interactive commands that read registers and want to make use of this
-should use `register-read-with-preview' to read register names.
+*** New command `package-install-user-selected-packages' installs all
+packages from `package-selected-packages' which are currently missing.
-*** New command `frameset-to-register' bound to `C-x r f', replacing
-`frame-configuration-to-register'. It offers similar functionality,
-plus enhancements like the ability to restore deleted frames.
-(`frame-configuration-to-register' still exists, but no longer has a
-key binding.)
+*** New command `package-autoremove' removes all packages which were
+installed strictly as dependencies but are no longer needed.
-*** New command `C-x C-k x' (`kmacro-to-register') stores keyboard
-macros in registers.
+** Shell
-\f
-* Changes in Specialized Modes and Packages in Emacs 24.4
+When you invoke `shell' interactively, the *shell* buffer will now
+display in a new window. However, you can customize this behavior via
+the `display-buffer-alist' variable. For example, to get
+the old behavior -- *shell* buffer displays in current window -- use
+(add-to-list 'display-buffer-alist
+ '("^\\*shell\\*$" . (display-buffer-same-window))).
-** Backtrace and debugger
-*** New Lisp debugger command `v' (`debugger-toggle-locals') toggles the
-display of local variables of the current stack frame.
+** EIEIO
+*** The `:protection' slot option is not obeyed any more.
+*** The `newname' argument to constructors is optional&deprecated.
+If you need your objects to be named, do it by inheriting from `eieio-named'.
+*** The <class>-list-p and <class>-child-p functions are declared obsolete.
+*** The <class> variables are declared obsolete.
+*** The <initarg> variables are declared obsolete.
+*** defgeneric and defmethod are declared obsolete.
+*** `constructor' is now an obsolete alias for `make-instance'.
+
+** ido
+*** New command `ido-bury-buffer-at-head' bound to C-S-b
+Bury the buffer at the head of `ido-matches', analogous to how C-k
+kills the buffer at head.
-*** The Lisp debugger's `e' command (`debugger-eval-expression') now includes
-the lexical environment when evaluating the code in the context at point
-(and so allows you to access lexical variables).
+** Minibuffer
-*** New minor mode `jit-lock-debug-mode' helps you debug code run via JIT Lock.
+*** You can use <up> and <down> keys to move point in the multi-line
+minibuffer just as in an ordinary buffer. Only when point moves over
+the bottom/top of the minibuffer it goes to the next/previous history
+element. The new commands bound to <up> and <down> in the minibuffer:
+`next-line-or-history-element' and `previous-line-or-history-element'.
-** Battery information can now be retrieved from BSD's `apm' utility.
+** Search and Replace
-** In the Buffer Menu, `M-s a C-o' shows matches for a regexp in marked buffers.
+*** Query-replace history is enhanced.
+When query-replace reads the FROM string from the minibuffer, typing
+`M-p' will now show previous replacements as "FROM SEP TO", where FROM
+and TO are the original text and its replacement, and SEP is an arrow
+string defined by the new variable `query-replace-from-to-separator'.
+To select a prior replacement, type `M-p' until the desired
+replacement appears in the minibuffer, and then exit the minibuffer by
+typing RET.
** Calc
++++
+*** If `quick-calc' is called with a prefix argument, insert the
+result of the calculation into the current buffer.
-*** Calc by default now uses the Gregorian calendar for all dates, and
-uses January 1, 1 AD as its day number 1. Previously Calc used the
-Julian calendar for dates before September 14, 1752, and it used
-December 31, 1 BC as its day number 1; the new scheme is more
-consistent with Calendar's calendrical system and day numbering.
-
-*** The new option `calc-gregorian-switch' lets you configure if
-(and when) Calc switches from the Julian to the Gregorian calendar.
+** ElDoc
+*** New minor mode `global-eldoc-mode'
+*** `eldoc-documentation-function' now defaults to `ignore'
+*** `describe-char-eldoc' displays information about character at point,
+and can be used as a default value of `eldoc-documentation-function'. It is
+useful when, for example, one needs to distinguish various spaces (e.g. ]Â [,
+] [, ] [, etc.) while using mono-spaced font.
-*** Support for ISO 8601 dates.
+** eww
-** Calendar and Diary
+---
+*** HTML can now be rendered using variable-width fonts.
-*** New faces `calendar-weekday-header', `calendar-weekend-header',
-and `calendar-month-header'.
++++
+*** A new command `F' (`eww-toggle-fonts') can be used to toggle
+whether to use variable-pitch fonts or not. The user can also
+customize the `shr-use-fonts' variable.
-*** New option `calendar-day-header-array'.
++++
+*** 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
+the like off the page.
-*** New variable `diary-from-outlook-function', used by the command
-`diary-from-outlook'.
+---
+*** You can now use several eww buffers in parallel by renaming eww
+buffers you want to keep separate.
-*** The variable `calendar-font-lock-keywords' is obsolete.
++++
+*** Partial state of the eww buffers (the URIs and the titles of the
+pages visited) is now preserved in the desktop file.
-** CEDET
++++
+*** `eww-after-render-hook' is now called after eww has rendered
+the data in the buffer.
-*** EDE
+---
+*** The `eww-reload' command now takes a prefix to not reload via
+the net, but just use the local copy of the HTML.
-**** The cpp-root project now supports executing a compile command.
-It can be set through the new :compile-command slot or the
-buffer-local variable `compile-command'.
++++
+*** The DOM shr and eww uses has been changed to the general Emacs
+xml.el/libxml2 DOM, and a new package dom.el has been added to
+interact with this DOM. See the Emacs Lisp manual for interface
+details.
-**** Better selection of include directories for the 'linux' project.
-Include directories now support out-of-tree build directories and
-target architecture auto-detection.
++++
+*** `mailcap-mime-data' is now consulted when displaying PDF files.
-*** Semantic
++++
+*** The new `S' command will list all eww buffers, and allow managing
+them.
-**** Improved detection of used namespaces in current scope in C++.
+---
+*** https pages with valid certificates have headers marked in green, while
+invalid certificates are marked in red.
-**** Parsing of default values for variables and function arguments in C/C++.
-They are also displayed by the summarize feature in the mode line.
+** Message mode
-**** Improved parsing of function pointers in C/C++.
-This also includes parsing of function pointers as function arguments.
+*** text/html messages that contain inline image parts will be
+transformed into multipart/related messages before sending.
-**** Parsing of C/C++ preprocessor macros that open new scope.
-For example, this enables parsing of macros that open new namespaces.
+** pcase
+*** New UPatterns `quote' and `app'.
+*** New UPatterns can be defined with `pcase-defmacro'.
++++
+*** New vector QPattern.
-**** Support for 'this' pointer in inline member functions in C++.
+** Lisp mode
+*** Strings after `:documentation' are highlighted as docstrings.
-** CFEngine mode
+** Rectangle editing
+*** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
+*** C-x C-x in rectangle-mark-mode now cycles through the four corners.
+*** `string-rectangle' provides on-the-fly preview of the result.
-*** Support for completion, ElDoc, and Flycheck has been added.
+** New font-lock functions font-lock-ensure and font-lock-flush, which
+should be used instead of font-lock-fontify-buffer when called from Elisp.
-*** The current CFEngine syntax is parsed from "cf-promises -s json".
-There is a fallback syntax available if you don't have cf-promises or
-if your version doesn't support that option. See option `cfengine-cf-promises'.
+** Macro `minibuffer-with-setup-hook' takes (:append FUN) to mean
+appending FUN to `minibuffer-setup-hook'.
** cl-lib
+*** New functions cl-fresh-line, cl-digit-char-p and cl-parse-integer.
-*** New macro `cl-tagbody'.
-This executes statements while allowing for control transfer to labels.
-
-*** letf is now just an alias for cl-letf.
-
-** CUA mode
-
-*** CUA mode now uses `delete-selection-mode' and `shift-select-mode'.
-Hence, you can now enable it independently from those modes, and from
-`transient-mark-mode'.
-
-*** `cua-highlight-region-shift-only' is now obsolete.
-You can disable `transient-mark-mode' to get the same result.
-
-*** CUA's rectangles can now be used without CUA by calling the command
-`cua-rectangle-mark-mode'.
-
-** Delete Selection mode can now be used without Transient Mark mode.
-
-** Desktop
-
-*** `desktop-save-mode' by default now auto-saves an existing desktop file
-after `desktop-auto-save-timeout'. To disable this, customize that option
-to nil (or zero).
-
-*** Desktop now saves and restores the frame/window configuration.
-To disable this, set `desktop-restore-frames' to nil.
-See also related options `desktop-restore-reuses-frames',
-`desktop-restore-in-current-display', and `desktop-restore-forces-onscreen'.
-
-** New Dired minor mode `dired-hide-details-mode' toggles whether details,
-such as file ownership or permissions, are visible in Dired buffers.
-See the new options `dired-hide-details-hide-symlink-targets' and
-`dired-hide-details-hide-information-lines' for customizing what to hide.
-
-** You can enable ElDoc inside the `eval-expression' minibuffer with:
- (add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)
-The results display in the mode line.
-
-** Electric Pair mode
-
-*** New option `electric-pair-preserve-balance', enabled by default.
-If non-nil, pairing/skipping only kicks in when that help the balance
-of parentheses and quotes; i.e., the buffer should end up at least as
-balanced as before.
-
-You can further control this behavior by adjusting the predicates
-stored in `electric-pair-inhibit-predicate' and `electric-pair-skip-self'.
-
-*** New option `electric-pair-delete-adjacent-pairs', enabled by default.
-In `electric-pair-mode', the commands `backward-delete-char' and
-`backward-delete-char-untabify' are now bound to electric variants
-that delete the closer when invoked between adjacent pairs.
-
-*** New option `electric-pair-open-newline-between-pairs', enabled by default.
-In `electric-pair-mode', inserting a newline between adjacent pairs
-opens an extra newline after point, which is indented if
-`electric-indent-mode' is also set.
-
-*** New option `electric-pair-skip-whitespace', enabled by default.
-This controls if skipping over closing delimiters should jump over any
-whitespace slack. Setting it to `chomp' makes it delete this
-whitespace. See also the variable `electric-pair-skip-whitespace-chars'.
-
-*** New variables control the pairing in strings and comments.
-You can customize `electric-pair-text-pairs' and
-`electric-pair-text-syntax-table' to tweak pairing behavior inside
-strings and comments.
-
-** New EPA option `epa-mail-aliases'.
-You can set this to a list of email address aliases that `epa-mail-encrypt'
-should use to find keys.
-
-** New ERC option `erc-accidental-paste-threshold-seconds'.
-If set to a number, this can be used to avoid accidentally pasting large
-amounts of data into the ERC input.
-
-** New ERT macro `skip-unless' allows skipping ERT tests.
-
-** Eshell
-
-*** `eshell' now supports visual subcommands and options.
-Eshell has been able to handle "visual" commands (interactive,
-non-line oriented commands such as top that require display
-capabilities not provided by eshell) by running them in an Emacs
-terminal emulator. See `eshell-visual-commands'.
-
-This feature has been extended to subcommands and options that make a
-usually line-oriented command a visual command. Typical examples are
-"git log" and "git <command> --help", which display their output in a
-pager by default. See `eshell-visual-subcommands' and `eshell-visual-options'.
-
-*** New Eshell-Tramp module.
-External su and sudo commands are now the default; the internal,
-Tramp-using variants can still be used by enabling the eshell-tramp module.
-
-** New F90 mode option `f90-smart-end-names'.
-
-** New option `gnutls-verify-error', if non-nil, means that Emacs
-should reject SSL/TLS certificates that GnuTLS determines as invalid.
-(This option defaults to nil at present, but this is expected to change
-in a future release.)
-
-** Hi-Lock
-
-*** New global command `M-s h .' (`highlight-symbol-at-point') highlights
-the symbol near point.
-
-*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands
-will cycle through faces in `hi-lock-face-defaults' without prompting.
-
-** Icomplete is now more similar to Ido.
-
-*** Icomplete by default now applies to all forms of minibuffer completion.
-The variable `icomplete-with-completion-tables' (now a user option)
-controls this. To restore the old behavior, set it back to
-'(internal-complete-buffer).
-
-*** You can navigate through and select completions using the keys
-from `icomplete-minibuffer-map'.
-
-*** The string that separates potential completions is now a customizable
-option (`icomplete-separator'). The default is " | " rather than ",".
-
-*** New face `icomplete-first-match'; and new options
-`icomplete-hide-common-prefix' and `icomplete-show-matches-on-no-input'.
-
-*** The option `icomplete-show-key-bindings' has been removed.
-
-** Ido
-
-*** An Ido user manual is now included.
-
-*** The option `ido-use-virtual-buffers' can now take the value `auto'.
-This means to use virtual buffers if the current ido input does not match
-an existing buffer.
-
-*** The variable `ido-decorations' can optionally have two new elements,
-which are the brackets to use around the sole remaining completion.
-
-** Image mode
-
-*** New commands `n' (`image-next-file') and `p' (`image-previous-file')
-visit the next image file and the previous image file in the same
-directory, respectively.
-
-*** New commands to show specific frames of multi-frame images.
-`f' (`image-next-frame') and `b' (`image-previous-frame') visit the
-next or previous frame. `F' (`image-goto-frame') shows a specific frame.
-
-*** New commands to speed up, slow down, or reverse animation.
-`a +' (`image-increase-speed') and `a -' (`image-decrease-speed') to
-speed up and slow down the animation. `a r' (`image-reverse-speed')
-to reverse it and `a 0' (`image-reset-speed') to reset it.
-
-*** The command `image-mode-fit-frame' deletes other windows.
-When toggling, it restores the frame's previous window configuration.
-It also has an optional frame argument, which can be used by Lisp
-callers to fit the image to a frame other than the selected frame.
-
-** New Imenu option `imenu-generic-skip-comments-and-strings'.
-
-** Info
-
-*** New Info face `info-index-match', used to highlight matches in index
-entries displayed by `Info-index-next', `Info-virtual-index' and
-`info-apropos'.
-
-*** The Info-edit command is obsolete. Editing Info nodes by hand
-has not been relevant for some time.
-
-** JS Mode
-
-*** New option `js-switch-indent-offset'.
-
-*** Better indentation of multiple-variable declarations.
-If a declaration spans several lines, variables on the following lines
-are lined up to the first one.
-
-*** Recognition and better indentation of continuations in array comprehensions.
-
-** MH-E has been updated to version 8.6 - see separate MH-E-NEWS file.
-
-** Octave mode
-
-*** Font locking for Texinfo comments and new keywords.
-
-*** Completion in Octave file buffers.
-
-*** ElDoc support.
-
-*** Jump to definition.
-
-*** Documentation lookup/search.
-
-** OPascal mode is the new name for Delphi mode
-
-*** All delphi-* variables and functions have been renamed to opascal-*.
-Obsolete aliases exist for those likely to have been used externally.
-
-*** The option `delphi-newline-always-indents' has been removed.
-Use `electric-indent-mode' instead.
-
-*** The TAB key runs the standard `indent-for-tab-command', not `delphi-tab'.
-
-** Package
-
-*** The package library now supports digital signing of packages.
-Maintainers of package archives should consider signing their packages
-to enhance security.
-
-**** If the user option `package-check-signature' is non-nil,
-Emacs tries to check package signatures at install time.
-The value `allow-unsigned' allows installation of unsigned packages.
-
-**** The user option `package-unsigned-archives' lists archives where
-Emacs will not try to check signatures.
-
-*** New option `package-pinned-packages'. This is useful if you have multiple
-archives enabled, with more than one offering a given package that you want.
-
-*** In the `list-packages' buffer, you can use `f' (`package-menu-filter')
-to filter the list of packages by a keyword.
-
-*** In the `describe-package' buffer, there are now buttons listing the
-keywords related to the package. Click on a button to see other packages
-related to that keyword.
-
-*** The format of `archive-contents' files, generated by package
-repositories, has changed to allow a new (fifth) element in the data
-vectors, containing an associative list with extra properties.
-(For example, `describe-package' uses the `:url' extra property to
-display a "Homepage" header.)
-
-** In Prolog mode, `prolog-use-smie' has been removed,
-along with the non-SMIE indentation code.
-
-** Python mode
-
-*** Out of the box support for CPython, iPython and readline based shells.
-**** `python-shell-completion-module-string-code' is no longer used.
-
-*** Automatic shell prompt detection. New user options:
-**** `python-shell-interpreter-interactive-arg'.
-**** `python-shell-prompt-detect-enabled'.
-**** `python-shell-prompt-detect-failure-warning'.
-**** `python-shell-prompt-input-regexps'.
-**** `python-shell-prompt-output-regexps'.
-
-*** Python shell support for remote hosts via tramp.
-
-*** Correct display of line numbers for code sent to the Python shell.
-
-** Remember
-
-*** The new command `remember-notes' creates a buffer that is saved on exit.
-You can use it as a more permanent *scratch* buffer.
-
-*** Remember can now store notes in separate files.
-To use this, add `remember-store-in-files' to the `remember-handler-functions'
-option. The files are saved in `remember-data-directory' using
-names specified by `remember-directory-file-name-format'.
-
-** Rmail
+** seq
+*** New seq library:
+The seq library adds sequence manipulation functions and macros that
+complement basic functions provided by subr.el. All functions are
+prefixed with `seq-' and work on lists, strings and vectors.
-*** Customize `rmail-mbox-format' to influence some minor aspects of
-how Rmail displays non-MIME messages.
+** Calendar and diary
-*** The `unrmail' command now converts from BABYL to mboxrd format,
-rather than mboxo. Customize `unrmail-mbox-format' to change this.
-
-** Ruby mode
-
-*** Improved syntax highlighting and indentation.
-
-*** New `electric-indent-mode' integration.
-
-*** New option `ruby-encoding-magic-comment-style'.
-
-*** New option `ruby-custom-encoding-magic-comment-template'.
-
-*** New option `ruby-align-to-stmt-keywords'.
-
-*** New option `ruby-align-chained-calls'.
-
-*** More Ruby file types have been added to `auto-mode-alist'.
-
-** Search and Replace
-
-*** New global command `M-s .' (`isearch-forward-symbol-at-point')
-starts a symbol (identifier) incremental search forward with the
-symbol found near point added to the search string initially.
-
-*** `C-x 8 RET' in Isearch mode reads a character by its Unicode name
-and adds it to the search string.
-
-*** `M-s i' in Isearch mode toggles whether search matches invisible text.
-
-*** `query-replace' skips invisible text when `search-invisible' is nil,
-and opens overlays with hidden text when `search-invisible' is `open'.
-
-*** A negative prefix argument of replacement commands replaces backward.
-`M-- M-%' replaces a string backward, `M-- C-M-%' replaces a regexp
-backward, `M-s w words M-- M-%' replaces a sequence of words backward.
-
-*** By default, prefix arguments do not now terminate Isearch mode.
-Set `isearch-allow-prefix' to nil to restore the old behavior.
-
-*** More Isearch commands accept prefix arguments, namely
-`isearch-printing-char', `isearch-quote-char', `isearch-yank-word',
-`isearch-yank-line'.
-
-*** Word search now matches whitespace at the beginning/end
-of the search string if it contains leading/trailing whitespace.
-In an incremental word search or when using a non-nil LAX argument
-of `word-search-regexp', the lax matching can also match part of
-the first word (in addition to the lax matching of the last word).
-The same rules are now applied to the symbol search, with the difference
-that it matches symbols, and non-symbol characters between symbols.
-
-** New SES command `ses-rename-cell' allows assignment of names to SES cells.
-
-** The shell.el option `explicit-bash-args' includes --noediting by default.
-All non-ancient Bash versions support this option.
-
-** Shell Script mode
-
-*** The SMIE indentation engine is now used by default - see `sh-use-smie'.
++++
+*** New commands to insert diary entries with Chinese dates:
+`diary-chinese-insert-anniversary-entry' `diary-chinese-insert-entry'
+`diary-chinese-insert-monthly-entry', `diary-chinese-insert-yearly-entry'.
-*** `sh-mode' now has its own setting for `add-log-current-defun-function'.
++++
+*** The calendar can now list and mark diary entries with Chinese dates.
+See `diary-chinese-list-entries' and `diary-chinese-mark-entries'.
-** SMIE
+---
+*** The option `calendar-mode-line-format' can now be nil,
+which means to do nothing special with the mode line in calendars.
-*** You can customize the SMIE indentation of a mode via `smie-config'.
-The command `smie-config-guess' can help you derive the appropriate
-indentation settings, if you provide it with an indented sample file.
-Use `smie-config-save' to save the result.
+---
+*** Many items obsolete since at least version 23.1 have been removed.
+The majority were function/variable/face aliases, too numerous to list here.
+The remainder were:
-*** You can customize the SMIE indentation of a file by adding an entry to
-the file's local variables of the form: `eval: (smie-config-local '(RULES))'.
+**** Functions `calendar-one-frame-setup', `calendar-only-one-frame-setup',
+`calendar-two-frame-setup', `european-calendar', `american-calendar'.
-*** New commands `smie-config-show-indent' and `smie-config-set-indent'.
+**** Hooks `cal-menu-load-hook', `cal-x-load-hook'.
-** SQL mode
+**** Macro `calendar-for-loop'.
-*** Improved login monitoring and appropriate response to login failures.
-New variable `sql-login-delay' defines maximum wait time for a connection.
+**** Variables `european-calendar-style', `diary-face', `hebrew-holidays-{1,4}'.
-*** Oracle support.
-SQL*Plus script placeholders are properly highlighted and identified
-in `sql-placeholders-filter'. When starting SQL*Plus, `sql-oracle-options'
-are passed before the logon parameter, as required. The default now
-includes `-L', to limit the number of logon attempts per invocation.
+**** The nil and list forms of `diary-display-function'.
-** New Term mode option `term-suppress-hard-newline'.
+** New ERT function `ert-summarize-tests-batch-and-exit'.
-** Todo mode has been rewritten and enhanced.
-The Todo mode user manual describes all commands and most user
-options. To support some of these features, a new file format is
-used, which is incompatible with the old format; however, you can
-convert old todo and done item files to the new format on initializing
-the first new todo file, or at any later time with the provided
-conversion command. The previous version of todo-mode.el has been
-renamed to otodo-mode.el and is now obsolete. New features include:
+---
+** `Info-fontify-maximum-menu-size' can be t for no limit.
-*** Support for multiple todo files and archive files of done items.
++++
+** `info-display-manual' can now be given a prefix argument which (any
+non-nil value) directs the command to limit the completion
+alternatives to currently visited manuals.
-*** Renaming, reordering, moving, merging, and deleting categories.
+---
+** ntlm.el has support for NTLM2.
-*** Sortable tabular summaries of categories and the item types they contain.
+---
+** The Rmail commands d, C-d and u now handle repeat counts to delete or
+undelete multiple messages.
-*** Cross-category lists of items filtered by specific criteria.
+** Rmail can now render HTML mail messages if your Emacs was built with
+libxml2 or if you have the Lynx browser installed. By default, Rmail
+will display the HTML version of a mail message that has both HTML and
+plain text parts, if display of HTML email is possible; customize the
+`rmail-mime-prefer-html' option to `nil' if you don't want that.
-*** More fine-grained interaction with the Emacs diary, by being able to
-decide for each todo item whether it appears in the Fancy Diary display.
+** SES now supports local printer functions; see `ses-define-local-printer'.
-*** Highly flexible new item insertion and item editing.
+** In sh-mode, you can now use `sh-shell' as a file-local variable to
+specify the type of shell in use (bash, csh, etc).
-*** Moving items between categories, storing done items in their category
-or in archive files, undoing or unarchiving done items.
+** TLS
+---
+*** Fatal TLS errors are now silent by default.
-*** Reprioritizing items by inputting a numerical priority.
+** URL
-*** Extensive customizability of operation and display, including many faces.
+*** The URL package accepts now the protocols "ssh", "scp" and "rsync".
+When `url-handler-mode' is enabled, file operations for these
+protocols as well as for "telnet" and "ftp" are passed to Tramp.
-** Trace
+*** The URL package allows customizing the `url-user-agent' string.
+The new `url-user-agent' variable can be customized to be a string or
+a function.
-*** `trace-function' and `trace-function-background' no longer prompt for
-the output buffer. Unless you use a prefix argument, they output to
-`trace-buffer'.
+*** The new interface variable `url-request-noninteractive' can be used
+to specify that we're running in a noninteractive context, and that
+we should not be queried about things like TLS certificate validity.
-*** With a prefix argument, `trace-function' and `trace-function-background'
-will prompt for a "context". This is a Lisp expression, whose value at the
-time the function is entered/exited is printed along with the function's
-name and arguments.
+*** If URL is used with a https connection, the first callback argument
+plist will contain a :peer element that has the output of
+`gnutls-peer-status' (if Emacs is built with GnuTLS support).
** Tramp