You can narrow news to a specific version by calling 'view-emacs-news'
with a prefix argument or by typing 'C-u C-h C-n'.
-\f
-* Installation Changes in Emacs 26.3
+Temporary note:
++++ indicates that all necessary documentation updates are complete.
+ (This means all relevant manuals in doc/ AND lisp doc-strings.)
+--- means no change in the manuals is needed.
+When you add a new item, use the appropriate mark if you are sure it applies,
\f
-* Startup Changes in Emacs 26.3
+* Installation Changes in Emacs 27.1
+
+** Emacs now uses GMP, the GNU Multiple Precision library.
+By default, if 'configure' does not find a suitable libgmp, it
+arranges for the included mini-gmp library to be built and used.
+The new 'configure' option '--without-libgmp' uses mini-gmp even if a
+suitable libgmp is available.
+
+** The new configure option '--with-json' adds support for JSON using
+the Jansson library. It is on by default; use './configure
+--with-json=no' to build without Jansson support. The new JSON
+functions 'json-serialize', 'json-insert', 'json-parse-string', and
+'json-parse-buffer' are typically much faster than their Lisp
+counterparts from json.el.
+
+** Emacs no longer defaults to using ImageMagick to display images,
+due to security and stability concerns. To override the default, use
+'configure --with-imagemagick'.
+
+** Several configure options now accept an option-argument 'ifavailable'.
+For example, './configure --with-xpm=ifavailable' now configures Emacs
+to attempt to use libxpm but to continue building even if libxpm is
+absent. The other affected options are '--with-gif', '--with-gnutls',
+'--with-jpeg', '--with-png', and '--with-tiff'.
+
+** The etags program now uses the C library's regular expression matcher
+when possible, and a compatible regex substitute otherwise. This will
+let developers maintain Emacs's own regex code without having to also
+support other programs. The new configure option '--without-included-regex'
+forces etags to use the C library's regex matcher even if the regex
+substitute ordinarily would be used to work around compatibility problems.
+
+** Emacs has been ported to the '-fcheck-pointer-bounds' option of GCC.
+This causes Emacs to check bounds of some arrays addressed by its
+internal pointers, which can be helpful when debugging the Emacs
+interpreter or modules that it uses. If your platform supports it you
+can enable it when configuring, e.g., './configure CFLAGS="-g3 -O2
+-mmpx -fcheck-pointer-bounds"' on Intel MPX platforms.
+
+** Emacs now normally uses a C pointer type instead of a C integer
+type to implement Lisp_Object, which is the fundamental machine word
+type internal to the Emacs Lisp interpreter. This change aims to
+catch typos and supports '-fcheck-pointer-bounds'. The 'configure'
+option '--enable-check-lisp-object-type' is therefore no longer as
+useful and so is no longer enabled by default in developer builds,
+to reduce differences between developer and production builds.
+
++++
+** Emacs now uses a "portable dumper" instead of unexec.
+This improves compatibility with memory allocation on modern systems,
+and in particular better supports the Address Space Layout
+Randomization (ASLR) feature, a security technique used by most modern
+operating systems.
+
+Portable dumping can be disabled at configure time via the configure
+option '--with-dumping=unexec' (but we don't recommend that, unless
+the portable dumping doesn't work on your system for some
+reason---please report such systems to the Emacs developers as bugs).
+
+When built with the portable dumping support (which is the default),
+Emacs looks for the 'emacs.pdmp' file, generated during the build, in
+its data directory at startup, and loads the dumped state from there.
+The new command-line argument '--dump-file=FILE' allows to specify a
+non-default '.pdmp' file to load the state from; see the node "Initial
+Options" in the Emacs manual for more information.
+
++++
+** The new configure option '--enable-checking=structs' attempts to
+check that the portable dumper code has been updated to match the last
+change to one of the data structures that it relies on.
+
++++
+** The configure options '--enable-checking=conslist' and
+'--enable-checking=xmallocoverrun' have been withdrawn. The former
+made Emacs irredeemably slow, and the latter made it crash. Neither
+option was useful with modern debugging tools such as AddressSanitizer.
+(See etc/DEBUG for the details of using the modern replacements of the
+removed configure options.)
+
++++
+** The distribution tarball now has test cases; 'make check' runs them.
+This is intended mostly to help developers.
+
+---
+** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3
+builds respectively.
\f
-* Changes in Emacs 26.3
+* Startup Changes in Emacs 27.1
+
++++
+** Emacs can now be configured using an early init file.
+The file is called 'early-init.el', in 'user-emacs-directory'. It is
+loaded very early in the startup process: before graphical elements
+such as the tool bar are initialized, and before the package manager
+is initialized. The primary purpose is to allow customizing how the
+package system is initialized given that initialization now happens
+before loading the regular init file (see below).
+
+We recommend against putting any customizations in this file that
+don't need to be set up before initializing installed add-on packages,
+because the early init file is read too early into the startup
+process, and some important parts of the Emacs session, such as
+'window-system' and other GUI features, are not yet set up, which could
+make some customization fail to work.
+
++++
+** Installed packages are now activated *before* loading the init file.
+This is part of a change intended to eliminate the behavior of
+package.el inserting a call to 'package-initialize' into the init
+file, which was previously done when Emacs was started. As a result
+of this change, it is no longer necessary to call 'package-initialize'
+in your init file.
+
+However, if your init file changes the values of 'package-load-list'
+or 'package-user-dir', or sets 'package-enable-at-startup' to nil then
+it won't work right without some adjustment:
+- You can move that code to the early init file (see above), so those
+ settings apply before Emacs tries to activate the packages.
+- You can use the new 'package-quickstart' so activation of packages
+ does not need to pay attention to 'package-load-list' or
+ 'package-user-dir' any more.
+
+---
+** Emacs now notifies systemd when startup finishes or shutdown begins.
+Units that are ordered after 'emacs.service' will only be started
+after Emacs has finished initialization and is ready for use.
+(If your Emacs is installed in a non-standard location and you copied the
+emacs.service file to eg "~/.config/systemd/user/", you will need to copy
+the new version of the file again.)
+ +++
+ ** New option 'help-enable-completion-auto-load'.
+ This allows disabling the new feature introduced in Emacs 26.1 which
+ loads files during completion of 'C-h f' and 'C-h v' according to
+ 'definition-prefixes'.
+
\f
-* Editing Changes in Emacs 26.3
+* Changes in Emacs 27.1
-\f
-* Changes in Specialized Modes and Packages in Emacs 26.3
+** emacsclient
-\f
-* New Modes and Packages in Emacs 26.3
++++
+*** emacsclient now supports the 'EMACS_SOCKET_NAME' environment variable.
+The behavior is identical to 'EMACS_SERVER_FILE', in that the
+command-line value specified via '--socket-name' will override the
+environment, and the natural default to 'TMPDIR', then "/tmp", continues
+to apply.
-\f
-* Incompatible Lisp Changes in Emacs 26.3
++++
+*** Emacs and emacsclient now default to "$XDG_RUNTIME_DIR/emacs"
+as the directory for client/server sockets, if Emacs is running
+under an X Window System desktop that sets the 'XDG_RUNTIME_DIR'
+environment variable to indicate where session sockets should go.
+To get the old, less-secure behavior, you can set the
+'EMACS_SOCKET_NAME' environment variable to an appropriate value.
+
+---
+*** When run by root, emacsclient no longer connects to non-root sockets.
+(Instead you can use Tramp methods to run root commands in a non-root Emacs.)
+
+---
+** Control of the threshold for using the 'distant-foreground' color.
+The threshold for color distance below which the 'distant-foreground'
+color of the face will be used instead of the foreground color can now
+be controlled via the new variable 'face-near-same-color-threshold'.
+The default value is 30000, as the previously hard-coded threshold.
-\f
-* Lisp Changes in Emacs 26.3
++++
+** The function 'read-passwd' uses "*" as default character to hide passwords.
-\f
-* Changes in Emacs 26.3 on Non-Free Operating Systems
+** Lexical binding is now used when evaluating interactive Elisp forms.
+More specifically, lexical-binding is now used for 'M-:', '--eval', as
+well as in the "*scratch*" and "*ielm*" buffers.
-\f
-* Installation Changes in Emacs 26.2
+---
+** The new option 'tooltip-resize-echo-area' avoids truncating tooltip text
+on GUI frames when tooltips are displayed in the echo area. Instead,
+it resizes the echo area as needed to accommodate the full tool-tip
+text.
-** Building Emacs with the '--with-xwidgets' option now requires WebKit2.
-To build Emacs with xwidgets support, you will need to install the
-webkit2gtk-4.0 package; version 2.12 or later is required.
-(This change was actually made in Emacs 26.1, but was not called out
-in its NEWS.)
+---
+** Show mode line tooltips only if the corresponding action applies.
+Customize the option 'mode-line-default-help-echo' to restore the old
+behavior where the tooltip text is also shown when the corresponding
+action does not apply.
-** Installing Emacs now installs the emacs-module.h file.
-The emacs-module.h file is now installed in the system-wide include
-directory as part of the Emacs installation. This allows to build
-Emacs modules outside of the Emacs source tree.
++++
+** New hook 'server-after-make-frame-hook'.
+This hook is a convenient place to perform initializations in daemon
+mode which require GUI features to be available. One example is
+restoration of the previous session using the desktop.el package: put
+the call to 'desktop-read' in this hook, if you want the GUI settings
+to be restored, or if desktop.el needs to interact with you during
+restoration of the session.
-\f
-* Changes in Emacs 26.2
++++
+** New function 'logcount' calculates an integer's Hamming weight.
-** Emacs is now compliant with the latest version 11.0 of the Unicode Standard.
++++
+** New function 'libxml-available-p'.
+This function returns non-nil if libxml support is both compiled in
+and available at run time. Lisp programs should use this function to
+detect built-in libxml support, instead of testing for that
+indirectly, e.g., by checking that functions like
+'libxml-parse-html-region' return nil.
-** New variable 'xft-ignore-color-fonts'.
-Default t means don't try to load color fonts when using Xft, as they
-often cause crashes. Set it to nil if you really need those fonts.
++++
+** 'libxml-parse-xml-region' and 'libxml-parse-html-region' take
+a parameter that's called DISCARD-COMMENTS, but it really only
+discards the top-level comment. Therefore this parameter is now
+obsolete, and the new utility function 'xml-remove-comments' can be
+used to remove comments before calling the libxml functions to parse
+the data.
-\f
-* Changes in Specialized Modes and Packages in Emacs 26.2
++++
+** The Network Security Manager now allows more fine-grained control
+of what checks to run via the 'network-security-protocol-checks'
+variable.
-** Dired
++++
+** TLS connections have their security tightened by default.
+Most of the checks for outdated, believed-to-be-weak TLS algorithms
+and ciphers are now switched on by default. By default, the NSM will
+flag connections using these weak algorithms and ask users whether to
+allow them. To get the old behavior back (where certificates are
+checked for validity, but no warnings about weak cryptography are
+issued), you can either set 'network-security-protocol-checks' to nil,
+or adjust the elements in that variable to only happen on the 'high'
+security level (assuming you use the 'medium' level).
-*** The 'Z' command on a directory name compresses all of its files.
-It produces a compressed '.tar.gz' archive with all the files in the
-directory and all of its subdirectories. For symmetry, 'Z' on a
-'.tar.gz' or a '.tgz' archive extracts all the archived files into the
-current directory; thus, typing 'Z' on a '.tar.gz' archive created by
-a previous 'Z' command will extract the archived files into a
-directory whose name is the archive name sans the '.tar.gz' extension.
-(This change was actually made in Emacs 25.1 but was only
-partially called out in its NEWS; 'tgz' handling was added in 26.1.)
++++
+** Native GnuTLS connections can now use client certificates.
+Previously, this support was only available when using the external
+'gnutls-cli' command. Call 'open-network-stream' with
+':client-certificate t' to trigger looking up of per-server
+certificates via 'auth-source'.
-** Ibuffer
++++
+** New function 'fill-polish-nobreak-p', to be used in 'fill-nobreak-predicate'.
+It blocks line breaking after a one-letter word, also in the case when
+this word is preceded by a non-space, but non-alphanumeric character.
-*** New toggle 'ibuffer-do-toggle-lock', bound to 'L'.
++++
+** The limit on repetitions in regexps has been raised to 2^16-1.
+It was previously limited to 2^15-1. For example, the following
+regular expression was previously invalid, but is now accepted:
-** Imenu
+ x\{32768\}
-*** The value for 'imenu-auto-rescan-maxout' has been increased to 600000.
+---
+** The German prefix and postfix input methods now support Capital sharp S.
-** Gnus
+---
+** New input methods 'hawaiian-postfix' and 'hawaiian-prefix'.
-*** Mailutils movemail will now be used if found at runtime.
-The default value of 'mail-source-movemail-program' is now "movemail".
-This ensures that the movemail program from GNU Mailutils will be used
-if found in 'exec-path', even if it was not found at build time. To
-use a different program, customize 'mail-source-movemail-program' to the
-absolute file name of the desired executable.
-
-** Shadowfile
-
-*** shadowfile.el has been rewritten to support Tramp file names.
-
-** Shell mode
-
-*** Shell mode buffers now have 'scroll-conservatively' set to 101.
-This is so as to better emulate the scrolling behavior of a text
-terminal when new output is added to the screen buffer. To get back
-the previous behavior, reset 'scroll-conservatively' to zero (or any
-other value you like) in a function and add it to 'shell-mode-hook'.
-(This change was actually made in Emacs 26.1, but was not called out
-in its NEWS.)
-
-** VC
-
-*** VC support for Mercurial was improved.
-Emacs now avoids invoking 'hg' as much as possible, for faster operation.
-(This and the following changes were actually made in Emacs 26.1, but
-were not called out in its NEWS.)
-
-**** New vc-hg options.
-The new option 'vc-hg-parse-hg-data-structures' controls whether vc-hg
-will try parsing the Mercurial data structures directly instead of
-running 'hg'; it defaults to t (set to nil if you want the pre-26.1
-behavior).
-The new option 'vc-hg-symbolic-revision-styles' controls how versions
-in a Mercurial repository are presented symbolically on the mode line.
-The new option 'vc-hg-use-file-version-for-mode-line-version' controls
-whether the version shown on the mode line is that of the visited file
-or of the repository working copy.
-
-**** Display of Mercurial revisions in the mode line has changed.
-Previously, the mode line displayed the local number (1, 2, 3, ...) of
-the revision. Starting with Emacs 26.1, the default has changed, and
-it now shows the global revision number, in the form of its changeset
-hash value. To get back the previous behavior, customize the new
-option 'vc-hg-symbolic-revision-styles' to the value '("{rev}")'.
+---
+** New input methods for several variants of the Sami language.
+The Sami input methods include: 'norwegian-sami-prefix',
+'bergsland-hasselbrink-sami-prefix', 'southern-sami-prefix',
+'ume-sami-prefix', 'northern-sami-prefix', 'inari-sami-prefix',
+'skolt-sami-prefix', and 'kildin-sami-prefix'.
-\f
-* Incompatible Lisp Changes in Emacs 26.2
++++
+** In Japanese environments that do not specify encodings and are not
+based on MS-Windows, the default encoding is now utf-8 instead of
+japanese-iso-8bit.
-** shadowfile config files have changed their syntax.
-Existing files "~/.emacs.d/shadows" and "~/.emacs.d/shadow_todo" must
-be removed prior using the changed 'shadow-*' commands.
++++
+** New function 'exec-path'.
+This function by default returns the value of the corresponding
+variable, but can optionally return the equivalent of 'exec-path'
+from a remote host.
-** 'thread-alive-p' has been renamed to 'thread-live-p'.
-The old name is an alias of the new name. Future Emacs version will
-obsolete it.
++++
+** The function 'executable-find' supports an optional argument REMOTE.
+This triggers to search the program on the remote host as indicated by
+'default-directory'.
-** 'while-no-input' does not return due to input from subprocesses.
-Input that arrived from subprocesses while some code executed inside
-the 'while-no-input' form injected an internal buffer-switch event
-that counted as input and would cause 'while-no-input' to return,
-perhaps prematurely. These buffer-switch events are now by default
-ignored by 'while-no-input'; if you need to get the old behavior,
-remove 'buffer-switch' from the list of events in
-'while-no-input-ignore-events'.
++++
+** New variable 'auto-save-no-message'.
+When set to t, no message will be shown when auto-saving (default
+value: nil).
-\f
-* Lisp Changes in Emacs 26.2
+---
+** The value of 'make-cursor-line-fully-visible' can now be a function.
+In addition to nil or non-nil, the value can now be a predicate
+function. Follow mode uses this to control scrolling of its windows
+when the last screen line in a window is not fully visible.
-** The new function 'read-answer' accepts either long or short answers
-depending on the new customizable variable 'read-answer-short'.
++++
+** New variable 'emacs-repository-branch'.
+It reports the git branch from which Emacs was built.
-** New function 'assoc-delete-all'.
-Like 'assq-delete-all', but uses 'equal' for comparison.
++++
+** New user option 'switch-to-buffer-obey-display-actions'.
+When non-nil, 'switch-to-buffer' uses 'pop-to-buffer-same-window' that
+respects display actions specified by 'display-buffer-alist' and
+'display-buffer-overriding-action'.
-** The function 'thing-at-point' behaves as before Emacs 26.1.
-The behavior of 'thing-at-point' when called with argument 'list' has
-changed in Emacs 26.1, in that it didn't consider text inside comments
-and strings as a potential list. This change is now reverted, and
-'thing-at-point' behaves like it did before Emacs 26.1.
+** New 'flex' completion style
+An implementation of popular "flx/fuzzy/scatter" completion which
+matches strings where the pattern appears as a subsequence. Put
+simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex'
+to 'completion-styles' or 'completion-category-overrides' to use it.
-** To cater to use cases where comments and strings are to be ignored
-when looking for a list, the function 'list-at-point' now takes an
-optional argument to do so.
+** Connection-local variables
-\f
-* Changes in Emacs 26.2 on Non-Free Operating Systems
++++
+*** Connection-local variables are applied by default like file-local
+and directory-local variables.
-** macOS features can now be detected at run-time as well as at
-build-time. See nextstep/INSTALL for details.
-(This change was actually made in Emacs 26.1, but was undocumented and
-not called out in its NEWS.)
++++
+*** The macro 'with-connection-local-variables' has been renamed from
+'with-connection-local-profiles'. No argument PROFILES needed any longer.
-\f
-* Installation Changes in Emacs 26.1
-
-** By default libgnutls is now required when building Emacs.
-Use 'configure --with-gnutls=no' to build even when GnuTLS is missing.
-
-** GnuTLS version 2.12.2 or later is now required, instead of merely
-version 2.6.6 or later.
-
-** The new option 'configure --with-mailutils' causes Emacs to rely on
-GNU Mailutils to retrieve email. It is recommended, and is the
-default if GNU Mailutils is installed. When '--with-mailutils' is not
-in effect, the Emacs build procedure by default continues to build and
-install a limited 'movemail' substitute that retrieves POP3 email only
-via insecure channels. To avoid this problem, use either
-'--with-mailutils' or '--without-pop' when configuring; '--without-pop'
-is the default on platforms other than native MS-Windows.
-
-** 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.
-
-** When GCC warnings are enabled, '--enable-check-lisp-object-type' is
-now enabled by default when configuring.
-
-** 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'.
-
-** A systemd user unit file is provided.
-Use it in the standard way: 'systemctl --user enable emacs'. (If your
-Emacs is installed in a non-standard location, you may need to copy
-the emacs.service file to eg ~/.config/systemd/user/)
-
-** 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.
-Deterministic builds omit the build date from the output of the
-'emacs-version' and 'erc-cmd-SV' functions, and the leave the
-following variables nil: 'emacs-build-system', 'emacs-build-time',
-'erc-emacs-build-time'.
-
-** Emacs can now be built with support for Little CMS.
-If the lcms2 library is installed, Emacs will enable features built on
-top of that library. The new configure option '--without-lcms2' can
-be used to build without lcms2 support even if it is installed. Emacs
-linked to Little CMS exposes color management functions in Lisp: the
-color metrics 'lcms-cie-de2000' and 'lcms-cam02-ucs', as well as
-functions for conversion to and from CIE CAM02 and CAM02-UCS.
-
-** The configure option '--with-gameuser' now defaults to 'no',
-as this appears to be the most common configuration in practice.
-When it is 'no', the shared game directory and the auxiliary program
-update-game-score are no longer needed and are not installed.
-
-** Emacs no longer works on IRIX. We expect that Emacs users are not
-affected by this, as SGI stopped supporting IRIX in December 2013.
+---
+** New variable 'next-error-verbose' controls when 'next-error' outputs
+a message about the error locus.
-\f
-* Startup Changes in Emacs 26.1
+---
+** New variable 'grep-search-path' defines the directories searched for
+grep hits (this used to be controlled by 'compilation-search-path').
-** New option '--fg-daemon'. This is the same as '--daemon', except
-it runs in the foreground and does not fork. This is intended for
-modern init systems such as systemd, which manage many of the traditional
-aspects of daemon behavior themselves. '--bg-daemon' is now an alias
-for '--daemon'.
+---
+** New variable 'emacs-lisp-compilation-search-path' defines the
+directories searched for byte-compiler error messages (this used to
+be controlled by 'compilation-search-path').
-** New option '--module-assertions'.
-When given this option, Emacs will perform expensive correctness
-checks when dealing with dynamic modules. This is intended for module
-authors that wish to verify that their module conforms to the module
-requirements. The option makes Emacs abort if a module-related
-assertion triggers.
+** Multicolor fonts such as "Noto Color Emoji" can be displayed on
+Emacs configured with Cairo drawing and linked with cairo >= 1.16.0.
+
++++
+** Emacs now optionally displays a fill column indicator.
-** Emacs now supports 24-bit colors on capable text terminals.
-Terminal is automatically initialized to use 24-bit colors if the
-required capabilities are found in terminfo. See the FAQ node
-"(efaq) Colors on a TTY" for more information.
+This is similar to what 'fill-column-indicator' package provides, but
+much faster and compatible with 'show-trailing-whitespace'.
-** Emacs now obeys the X resource "scrollBar" at startup.
-The effect is similar to that of "toolBar" resource on the tool bar.
+Customize the buffer-local variables 'display-fill-column-indicator'
+and 'display-fill-column-indicator-character' to activate the
+indicator.
+
+The indicator is not displayed at all in minibuffer windows and
+in tooltips, as it is not useful there.
+
+There are 2 new buffer local variables and 1 face to customize this
+mode they are described in the manual "(emacs) Display".
\f
-* Changes in Emacs 26.1
-
-** Option 'buffer-offer-save' can be set to new value, 'always'.
-When set to 'always', the command 'save-some-buffers' will always
-offer this buffer for saving.
-
-** Security vulnerability related to Enriched Text mode is removed.
-
-*** Enriched Text mode does not evaluate Lisp in 'display' properties.
-This feature allows saving 'display' properties as part of text.
-Emacs 'display' properties support evaluation of arbitrary Lisp forms
-as part of processing the property for display, so displaying Enriched
-Text could be vulnerable to executing arbitrary malicious Lisp code
-included in the text (e.g., sent as part of an email message).
-Therefore, execution of arbitrary Lisp forms in 'display' properties
-decoded by Enriched Text mode is now disabled by default. Customize
-the new option 'enriched-allow-eval-in-display-props' to a non-nil
-value to allow Lisp evaluation in decoded 'display' properties.
-
-This vulnerability was introduced in Emacs 21.1. To work around that
-in Emacs versions before 25.3, append the following to your ~/.emacs
-init file:
-
- (eval-after-load "enriched"
- '(defun enriched-decode-display-prop (start end &optional param)
- (list start end)))
-
-** Functions in 'write-contents-functions' can fully short-circuit the
-'save-buffer' process. Previously, saving a buffer that was not
-visiting a file would always prompt for a file name. Now it only does
-so if 'write-contents-functions' is nil (or all its functions return
-nil).
-
-** New variable 'executable-prefix-env' for inserting magic signatures.
-This variable affects the format of the interpreter magic number
-inserted by 'executable-set-magic'. If non-nil, the magic number now
-takes the form "#!/usr/bin/env interpreter", otherwise the value
-determined by 'executable-prefix', which is by default
-"#!/path/to/interpreter". By default, 'executable-prefix-env' is nil,
-so the default behavior is not changed.
-
-** The variable 'emacs-version' no longer includes the build number.
-This is now stored separately in a new variable, 'emacs-build-number'.
-
-** Emacs now provides a limited form of concurrency with Lisp threads.
-Concurrency in Emacs Lisp is "mostly cooperative", meaning that
-Emacs will only switch execution between threads at well-defined
-times: when Emacs waits for input, during blocking operations related
-to threads (such as mutex locking), or when the current thread
-explicitly yields. Global variables are shared among all threads, but
-a 'let' binding is thread-local. Each thread also has its own current
-buffer and its own match data.
-
-See the chapter "(elisp) Threads" in the ELisp manual for full
-documentation of these facilities.
-
-** The new user variable 'electric-quote-chars' provides a list
-of curved quotes for 'electric-quote-mode', allowing user to choose
-the types of quotes to be used.
-
-** The new user option 'electric-quote-context-sensitive' makes
-'electric-quote-mode' context sensitive. If it is non-nil, you can
-type an ASCII apostrophe to insert an opening or closing quote,
-depending on context. Emacs will replace the apostrophe by an opening
-quote character at the beginning of the buffer, the beginning of a
-line, after a whitespace character, and after an opening parenthesis;
-and it will replace the apostrophe by a closing quote character in all
-other cases.
-
-** The new variable 'electric-quote-inhibit-functions' controls when
-to disable electric quoting based on context. Major modes can add
-functions to this list; Emacs will temporarily disable
-'electric-quote-mode' whenever any of the functions returns non-nil.
-This can be used by major modes that derive from 'text-mode' but allow
-inline code segments, such as 'markdown-mode'.
-
-** The new user variable 'dired-omit-case-fold' allows the user to
-customize the case-sensitivity of dired-omit-mode. It defaults to
-the same sensitivity as that of the filesystem for the corresponding
-dired buffer.
-
-** Emacs now uses double buffering to reduce flicker when editing and
-resizing graphical Emacs frames on the X Window System. This support
-requires the DOUBLE-BUFFER extension, which major X servers have
-supported for many years. If your system has this extension, but an
-Emacs built with double buffering misbehaves on some displays you use,
-you can disable the feature by adding
-
- '(inhibit-double-buffering . t)
-
-to default-frame-alist. Or inject this parameter into the selected
-frame by evaluating this form:
-
- (modify-frame-parameters nil '((inhibit-double-buffering . t)))
-
-** The customization group 'wp', whose label was "text", is now
-deprecated. Use the new group 'text', which inherits from 'wp',
-instead.
+* Editing Changes in Emacs 27.1
-** The new function 'call-shell-region' executes a command in an
-inferior shell with the buffer region as input.
-
-** The new user option 'shell-command-dont-erase-buffer' controls
-if the output buffer is erased between shell commands; if non-nil,
-the output buffer is not erased; this variable also controls where
-to set the point in the output buffer: beginning of the output,
-end of the buffer or save the point.
-When 'shell-command-dont-erase-buffer' is nil, the default value,
-the behavior of 'shell-command', 'shell-command-on-region' and
-'async-shell-command' is as usual.
-
-** The new user option 'async-shell-command-display-buffer' controls
-whether the output buffer of an asynchronous command is shown
-immediately, or only when there is output.
-
-** New user option 'mouse-select-region-move-to-beginning'.
-This option controls the position of point when double-clicking
-mouse-1 on the end of a parenthetical grouping or string-delimiter:
-the default value nil keeps point at the end of the region, setting it
-to non-nil moves point to the beginning of the region.
-
-** New user option 'mouse-drag-and-drop-region'.
-This option allows you to drag the entire region of text to another
-place or another buffer. Its behavior is customizable via the new
-options 'mouse-drag-and-drop-region-cut-when-buffers-differ',
-'mouse-drag-and-drop-region-show-tooltip', and
-'mouse-drag-and-drop-region-show-cursor'.
-
-** The new user option 'confirm-kill-processes' allows the user to
-skip a confirmation prompt for killing subprocesses when exiting
-Emacs. When set to t (the default), Emacs will prompt for
-confirmation before killing subprocesses on exit, which is the same
-behavior as before.
-
-** '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'.
-
-** Non-breaking hyphens are now displayed with the 'nobreak-hyphen'
-face instead of the 'escape-glyph' face.
-
-** Approximations to quotes are now displayed with the new 'homoglyph'
-face instead of the 'escape-glyph' face.
-
-** New face 'header-line-highlight'.
-This face is the header-line analogue of 'mode-line-highlight'; it
-should be the preferred mouse-face for mouse-sensitive elements in the
-header line.
-
-** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
-part of minibuffers.
-
-** 'fill-paragraph' no longer marks the buffer as changed unless it
-actually changed something.
-
-** The locale language name 'ca' is now mapped to the language
-environment 'Catalan', which has been added.
-
-** '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'.
-
-** The networking code has been reworked so that it's more
-asynchronous than it was (when specifying :nowait t in
-'make-network-process'). How asynchronous it is varies based on the
-capabilities of the system, but on a typical GNU/Linux system the DNS
-resolution, the connection, and (for TLS streams) the TLS negotiation
-are all done without blocking the main Emacs thread. To get
-asynchronous TLS, the TLS boot parameters have to be passed in (see
-the manual for details).
-
-Certain process oriented functions (like 'process-datagram-address')
-will block until socket setup has been performed. The recommended way
-to deal with asynchronous sockets is to avoid interacting with them
-until they have changed status to "run". This is most easily done
-from a process sentinel.
-
-** 'make-network-process' and 'open-network-stream' sometimes allowed
-:service to be an integer string (e.g., :service "993") and sometimes
-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.
-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
-then crash as with any other fatal signal.
-'attempt-orderly-shutdown-on-fatal-signal', if set to nil, will
-disable attempts to auto-save the session and shut down in an orderly
-fashion when Emacs receives a fatal signal; instead, Emacs will
-terminate immediately. Both variables are non-nil by default.
-These variables are for users who would like to avoid the small
-probability of data corruption due to techniques Emacs uses to recover
-in these situations.
-
-** File local and directory local variables are now initialized each
-time the major mode is set, not just when the file is first visited.
-These local variables will thus not vanish on setting a major mode.
-
-** A second dir-local file (.dir-locals-2.el) is now accepted.
-See the doc string of 'dir-locals-file' for more information.
-
-** Connection-local variables can be used to specify local variables
-with a value depending on the connected remote server. For details,
-see the node "(elisp) Connection Local Variables" in the ELisp manual.
-
-** 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 'list-timers' command lists all active timers in a buffer,
-where you can cancel them with the 'c' command.
-
-** 'switch-to-buffer-preserve-window-point' now defaults to t.
-Applications that call 'switch-to-buffer' and want to show the buffer at
-the position of its point should use 'pop-to-buffer-same-window' in lieu
-of 'switch-to-buffer'.
-
-** The new variable 'debugger-stack-frame-as-list' allows displaying
-all call stack frames in a Lisp backtrace buffer as lists. Both
-debug.el and edebug.el have been updated to heed to this variable.
-
-** Values in call stack frames are now displayed using 'cl-prin1'.
-The old behavior of using 'prin1' can be restored by customizing the
-new option 'debugger-print-function'.
-
-** NUL bytes in text copied to the system clipboard are now replaced with "\0".
-
-** The new variable 'x-ctrl-keysym' has been added to the existing
-roster of X keysyms. It can be used in combination with another
-variable of this kind to swap modifiers in Emacs.
-
-** New input methods: 'cyrillic-tuvan', 'polish-prefix', 'uzbek-cyrillic'.
-
-** The 'dutch' input method no longer attempts to support Turkish too.
-Also, it no longer converts 'IJ' and 'ij' to the compatibility
-characters U+0132 LATIN CAPITAL LIGATURE IJ and U+0133 LATIN SMALL
-LIGATURE IJ.
-
-** File name quoting by adding the prefix "/:" is now possible for the
-local part of a remote file name. Thus, if you have a directory named
-"/~" on the remote host "foo", you can prevent it from being
-substituted by a home directory by writing it as "/foo:/:/~/file".
-
-** The new variable 'maximum-scroll-margin' allows having effective
-settings of 'scroll-margin' up to half the window size, instead of
-always restricting the margin to a quarter of the window.
-
-** Emacs can scroll horizontally using mouse, touchpad, and trackbar.
-You can enable this by customizing 'mouse-wheel-tilt-scroll'. If you
-want to reverse the direction of the scroll, customize
-'mouse-wheel-flip-direction'.
-
-** The default GnuTLS priority string now includes %DUMBFW.
-This is to avoid bad behavior in some firewalls, which causes the
-connection to be closed by the remote host.
-
-** Emacsclient changes
-
-*** Emacsclient has a new option '-u' / '--suppress-output'.
-This option suppresses display of return values from the server
-process.
-
-*** Emacsclient has a new option '-T' / '--tramp'.
-This helps with using a local Emacs session as the server for a remote
-emacsclient. With appropriate setup, one can now set the EDITOR
-environment variable on a remote machine to emacsclient, and
-use the local Emacs to edit remote files via Tramp. See the node
-"(emacs) emacsclient Options" in the user manual for the details.
-
-*** Emacsclient now accepts command-line options in ALTERNATE_EDITOR
-and '--alternate-editor'. For example, ALTERNATE_EDITOR="emacs -Q -nw".
-Arguments may be quoted "like this", so that for example an absolute
-path containing a space may be specified; quote escaping is not
-supported.
-
-** New user option 'dig-program-options' and extended functionality
-for DNS-querying functions 'nslookup-host', 'dns-lookup-host',
-and 'run-dig'. Each function now accepts an optional name server
-argument interactively (with a prefix argument) and non-interactively.
-
-** 'describe-key-briefly' now ignores mouse movement events.
-
-** The new variable 'eval-expression-print-maximum-character' prevents
-large integers from being displayed as characters by 'M-:' and similar
-commands.
-
-** Two new commands for finding the source code of Emacs Lisp
-libraries: 'find-library-other-window' and 'find-library-other-frame'.
-
-** The new variable 'display-raw-bytes-as-hex' allows you to change
-the display of raw bytes from octal to hex.
++++
+** New command 'make-empty-file'.
-** You can now provide explicit field numbers in format specifiers.
-For example, '(format "%2$s %1$s %2$s" "X" "Y")' produces "Y X Y".
+---
+** New variable 'x-wait-for-event-timeout'.
+This controls how long Emacs will wait for updates to the graphical
+state to take effect (making a frame visible, for example).
-** Emacs now supports optional display of line numbers in the buffer.
-This is similar to what 'linum-mode' provides, but much faster and
-doesn't usurp the display margin for the line numbers. Customize the
-buffer-local variable 'display-line-numbers' to activate this optional
-display. Alternatively, you can use the 'display-line-numbers-mode'
-minor mode or the global 'global-display-line-numbers-mode'. When
-using these modes, customize 'display-line-numbers-type' with the same
-value as you would use with 'display-line-numbers'.
++++
+** New user option 'electric-quote-replace-double'.
+This option controls whether '"' is replaced in 'electric-quote-mode',
+in addition to other quote characters. If non-nil, ASCII double-quote
+characters that quote text "like this" are replaced by double
+typographic quotes, “like this”, in text modes, and in comments in
+non-text modes.
+
+---
+** New user option 'flyspell-case-fold-duplications'.
+This option controls whether Flyspell mode considers consecutive words
+to be duplicates if they are not in the same case. If non-nil, the
+default, words are considered to be duplicates even if their letters'
+case does not match.
+
+---
+** 'write-abbrev-file' now includes special properties.
+'write-abbrev-file' now writes special properties like ':case-fixed'
+for abbrevs that have them.
-Line numbers are not displayed at all in minibuffer windows and in
-tooltips, as they are not useful there.
-
-Lisp programs can disable line-number display for a particular screen
-line by putting the 'display-line-numbers-disable' text property or
-overlay property on the first character of that screen line. This is
-intended for add-on packages that need a finer control of the display.
++++
+** 'write-abbrev-file' skips empty tables.
+'write-abbrev-file' now skips inserting a 'define-abbrev-table' form for
+tables which do not have any non-system abbrevs to save.
-Lisp programs that need to know how much screen estate is used up for
-line-number display in a window can use the new function
-'line-number-display-width'.
++++
+** The new functions and commands 'text-property-search-forward' and
+'text-property-search-backward' have been added. These provide an
+interface that's more like functions like 'search-forward'.
-'linum-mode' and all similar packages are henceforth becoming obsolete.
-Users and developers are encouraged to switch to this new feature
-instead.
+---
+** More commands support noncontiguous rectangular regions, namely
+'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp'.
-** The new user option 'arabic-shaper-ZWNJ-handling' controls how to
-handle ZWNJ in Arabic text rendering.
++++
+** When asked to visit a large file, Emacs now offers visiting it literally.
+Previously, Emacs would only ask for confirmation before visiting
+large files. Now it also offers a third alternative: to visit the
+file literally, as in 'find-file-literally', which speeds up
+navigation and editing of large files.
+
+---
+** 'add-dir-local-variable' now uses dotted pair notation syntax to
+write alists of variables to ".dir-locals.el". This is the same
+syntax that you can see in the example of a ".dir-locals.el" file in
+the node "(emacs) Directory Variables" of the user manual.
-\f
-* Editing Changes in Emacs 26.1
-
-** New variable 'column-number-indicator-zero-based'.
-Traditionally, in Column Number mode, the displayed column number
-counts from zero starting at the left margin of the window. This
-behavior is now controlled by 'column-number-indicator-zero-based'.
-If you would prefer for the displayed column number to count from one,
-you may set this variable to nil. (Behind the scenes, there is now a
-new mode line construct, '%C', which operates exactly as '%c' does
-except that it counts from one.)
-
-** New single-line horizontal scrolling mode.
-The 'auto-hscroll-mode' variable can now have a new special value,
-'current-line', which causes only the line where the cursor is
-displayed to be horizontally scrolled when lines are truncated on
-display and point moves outside the left or right window margin.
-
-** New mode line constructs '%o' and '%q', and user option
-'mode-line-percent-position'. '%o' displays the "degree of travel" of
-the window through the buffer. Unlike the default '%p', this
-percentage approaches 100% as the window approaches the end of the
-buffer. '%q' displays the percentage offsets of both the start and
-the end of the window, e.g. "5-17%". The new option
-'mode-line-percent-position' makes it easier to switch between '%p',
-'%P', and these new constructs.
-
-** Two new user options 'list-matching-lines-jump-to-current-line' and
-'list-matching-lines-current-line-face' to show the current line
-highlighted in *Occur* buffer.
-
-** The 'occur' command can now operate on the region.
-
-** New bindings for 'query-replace-map'.
-'undo', undo the last replacement; bound to 'u'.
-'undo-all', undo all replacements; bound to 'U'.
-
-** 'delete-trailing-whitespace' deletes whitespace after form feed.
-In modes where form feed was treated as a whitespace character,
-'delete-trailing-whitespace' would keep lines containing it unchanged.
-It now deletes whitespace after the last form feed thus behaving the
-same as in modes where the character is not whitespace.
-
-** Emacs no longer prompts about editing a changed file when the file's
-content is unchanged. Instead of only checking the modification time,
-Emacs now also checks the file's actual content before prompting the user.
-
-** Various casing improvements.
-
-*** 'upcase', 'upcase-region' et al. convert title case characters
-(such as Dz) into their upper case form (such as DZ).
-
-*** 'capitalize', 'upcase-initials' et al. make use of title-case forms
-of initial characters (correctly producing for example Džungla instead
-of incorrect DŽungla).
-
-*** Characters which turn into multiple ones when cased are correctly handled.
-For example, fi ligature is converted to FI when upper cased.
-
-*** Greek small sigma is correctly handled when at the end of the word.
-Strings such as ΌΣΟΣ are now correctly converted to Όσος when
-capitalized instead of incorrect Όσοσ (compare lowercase sigma at the
-end of the word).
-
-** Emacs can now auto-save buffers to visited files in a more robust
-manner via the new mode 'auto-save-visited-mode'. Unlike
-'auto-save-visited-file-name', this mode uses the normal saving
-procedure and therefore obeys saving hooks.
-'auto-save-visited-file-name' is now obsolete.
-
-** New behavior of 'mark-defun'.
-Prefix argument selects that many (or that many more) defuns.
-Negative prefix arg flips the direction of selection. Also,
-'mark-defun' between defuns correctly selects N following defuns (or
--N previous for negative arguments). Finally, comments preceding the
-defun are selected unless they are separated from the defun by a blank
-line.
-
-** New command 'replace-buffer-contents'.
-This command replaces the contents of the accessible portion of the
-current buffer with the contents of the accessible portion of a
-different buffer while keeping point, mark, markers, and text
-properties as intact as possible.
-
-** New commands 'apropos-local-variable' and 'apropos-local-value'.
-These are buffer-local versions of 'apropos-variable' and
-'apropos-value', respectively. They show buffer-local variables whose
-names and values, respectively, match a given pattern.
-
-** More user control of reordering bidirectional text for display.
-The two new variables, 'bidi-paragraph-start-re' and
-'bidi-paragraph-separate-re', allow customization of what exactly are
-paragraphs, for the purposes of bidirectional display.
++++
+** Network connections using 'local' can now use IPv6.
+'make-network-process' now uses the correct loopback address when
+asked to use ':host 'local' and ':family 'ipv6'.
-** New variable 'x-wait-for-event-timeout'.
-This controls how long Emacs will wait for updates to the graphical
-state to take effect (making a frame visible, for example).
++++
+** The new function 'replace-region-contents' replaces the current
+region using a given replacement-function in a non-destructive manner
+(in terms of 'replace-buffer-contents').
+
++++
+** The command 'replace-buffer-contents' now has two optional
+arguments mitigating performance issues when operating on huge
+buffers.
+
++++
+** The command 'delete-indentation' now operates on the active region.
+If the region is active, the command joins all the lines in the
+region. When there's no active region, the command works on the
+current and the previous or the next line, as before.
\f
-* Changes in Specialized Modes and Packages in Emacs 26.1
+* Changes in Specialized Modes and Packages in Emacs 27.1
-** Emacs 26.1 comes with Org v9.1.6.
-See the file ORG-NEWS for user-visible changes in Org.
+** compile.el
+---
+*** In 'compilation-error-regexp-alist', 'line' (and 'end-line') can
+be functions.
-** New function 'cl-generic-p'.
+** cl-lib.el
++++
+*** 'cl-defstruct' has a new ':noinline' argument to prevent inlining
+its functions.
+
+** doc-view.el
+*** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'.
+*** Added support for password-protected PDF files
+
+** Ido
+*** New user option 'ido-big-directories' to mark directories whose
+names match certain regular expressions as big. Ido won't attempt to
+list the contents of such directories when completing file names.
+
+** map.el
+*** Now also understands plists.
+*** Now defined via generic functions that can be extended via 'cl-defmethod'.
+*** Deprecate the 'map-put' macro in favor of a new 'map-put!' function.
+*** 'map-contains-key' now returns a boolean rather than the key.
+*** Deprecate the 'testfn' args of 'map-elt' and 'map-contains-key'.
+*** New generic function 'map-insert'.
+
++++
+** seq.el
+New convenience functions 'seq-first' and 'seq-rest' give easy access
+to respectively the first and all but the first elements of sequences.
+
+The new predicate function 'seq-contains-p' should be used instead of
+the now obsolete 'seq-contains'.
+
+---
+** Follow mode
+In the current follow group of windows, "ghost" cursors are no longer
+displayed in the non-selected follow windows. To get the old behavior
+back, customize 'follow-hide-ghost-cursors' to nil.
+
+** Windmove
+
+*** 'windmove-create-window' when non-nil makes a new window on moving off
+the edge of the frame.
+
+*** Windmove supports directional window display and selection.
+The new command 'windmove-display-default-keybindings' binds default
+keys with provided modifiers (by default, Shift-Meta) to the commands
+that display the next buffer in the window at the specified direction.
+This is like 'windmove-default-keybindings' that binds keys to commands
+that select the window in the specified direction, but additionally it
+displays the buffer from the next command in that window. For example,
+'S-M-right C-h i' displays the "*Info*" buffer in the right window,
+creating the window if necessary. A special key can be customized to
+display the buffer in the same window, for example, 'S-M-0 C-h e'
+displays the "*Messages*" buffer in the same window.
+
+*** Windmove also supports directional window deletion.
+The new command 'windmove-delete-default-keybindings' binds default
+keys with provided prefix (by default, 'C-x') and modifiers (by default,
+'Shift') to the commands that delete the window in the specified
+direction. For example, 'C-x S-down' deletes the window below.
+With a prefix arg 'C-u', also kills the buffer in that window.
+With 'M-0', deletes the selected window and selects the window
+that was in the specified direction.
+
+*** New command 'windmove-swap-states-in-direction' binds default keys
+to the commands that swap the states of the selected window with the
+window in the specified direction.
+
+** Octave mode
+The mode is automatically enabled in files that start with the
+'function' keyword.
+
+** project.el
+
+*** New commands 'project-search' and 'project-query-replace-regexp'.
+
+*** New customizable variable 'project-read-file-name-function'.
+
+** Etags
+
++++
+*** 'next-file' is now an obsolete alias of 'tags-next-file'.
+
+*** 'tags-loop-revert-buffers' is an obsolete alias of
+'fileloop-revert-buffers'.
+
+*** The 'tags-loop-continue' function along with the
+'tags-loop-operate' and 'tags-loop-scan' variables are now obsolete;
+use the new 'fileloop-initialize' and 'fileloop-continue' functions
+instead.
+
+** bibtex
+
+---
+*** New commands 'bibtex-next-entry' and 'bibtex-previous-entry'.
+In 'bibtex-mode-map', 'forward-paragraph' and 'backward-paragraph' are
+remapped to these, respectively.
** Dired