summaryrefslogtreecommitdiff
path: root/etc/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'etc/NEWS')
-rw-r--r--etc/NEWS647
1 files changed, 603 insertions, 44 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 80e0f31348a..7f66d1d57cc 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,6 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes.
-Copyright (C) 2017-2018 Free Software Foundation, Inc.
+Copyright (C) 2017-2019 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
@@ -41,6 +41,12 @@ functions 'json-serialize', 'json-insert', 'json-parse-string', and
'json-parse-buffer' are typically much faster than their Lisp
counterparts from json.el.
+** 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
@@ -63,19 +69,41 @@ 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.
-** Ibuffer
++++
+** 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.
----
-*** All mode filters can now accept a list of symbols.
-This means you can now easily filter several major modes, as well
-as a single mode.
+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).
-** Gnus
+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 nnimap backend now has support for IMAP namespaces.
-This feature can be enabled by setting the new 'nnimap-use-namespaces'
-server variable to non-nil.
+** 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.)
+
+---
+** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3
+builds respectively.
* Startup Changes in Emacs 27.1
@@ -144,9 +172,20 @@ 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.
+
+++
** The function 'read-passwd' uses '*' as default character to hide passwords.
+** 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.
+
---
** The new option 'tooltip-resize-echo-area' avoids truncating tooltip text
on GUI frames when tooltips are displayed in the echo area. Instead,
@@ -204,6 +243,13 @@ or adjust the elements in that variable to only happen on the 'high'
security level (assuming you use the 'medium' level).
+++
+** 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'.
+
++++
** 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.
@@ -221,6 +267,18 @@ regular expression was previously invalid, but is now accepted:
---
** New input methods 'hawaiian-postfix' and 'hawaiian-prefix'.
+---
+** 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'.
+
++++
+** 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.
+
+++
** New function 'exec-path'.
This function by default returns the value of the corresponding
@@ -247,6 +305,45 @@ when the last screen line in a window is not fully visible.
** New variable 'emacs-repository-branch'.
It reports the git branch from which Emacs was built.
++++
+** 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'.
+
+** 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.
+
+** Connection-local variables
+
++++
+*** Connection-local variables are applied by default like file-local
+and directory-local variables.
+
++++
+*** The macro 'with-connection-local-variables' has been renamed from
+'with-connection-local-profiles'. No argument 'profiles' needed any
+longer.
+
+---
+** New variable next-error-verbose controls when `next-error' outputs
+ a message about the error locus.
+
+---
+** New variable grep-search-path defines the directories searched for
+ grep hits (this used to be controlled by compilation-search-path).
+
+---
+** 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).
+
+** Multicolor fonts such as "Noto Color Emoji" can be displayed on
+Emacs configured with Cairo drawing and linked with cairo >= 1.16.0.
+
* Editing Changes in Emacs 27.1
@@ -305,9 +402,63 @@ 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.
++++
+** 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.
+
++++
+** 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.
+
++++
* Changes in Specialized Modes and Packages in Emacs 27.1
+** compile.el
+---
+*** In compilation-error-regexp-alist, 'line' (and 'end-line') can be functions
+
+** cl-lib
++++
+*** cl-defstruct has a new :noinline argument to prevent inlining its functions
+
+** doc-view-mode
+*** 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
@@ -333,18 +484,23 @@ 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
+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', deletes the selected window and selects
-the window that was in the specified direction.
+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'.
+*** New commands 'project-search' and 'project-query-replace-regexp'.
** Etags
@@ -352,11 +508,11 @@ The mode is automatically enabled in files that start with the
*** 'next-file' is now an obsolete alias of 'tags-next-file'.
*** 'tags-loop-revert-buffers' is an obsolete alias of
-'multifile-revert-buffers'.
+'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 'multifile-initialize' and 'multifile-continue' functions
+use the new 'fileloop-initialize' and 'fileloop-continue' functions
instead.
** bibtex
@@ -402,9 +558,33 @@ with conflicts existed in earlier versions of Emacs, but incorrectly
never detected a conflict due to invalid assumptions about cached
values.
++++
+*** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions
+and compares their entire trees.
+
+*** New user option 'vc-hg-revert-switches' specifies switches to pass
+to hg revert.
+
+*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase')
+print diffs and logs between the merge base (common ancestor) of two
+given revisions.
+
** Diff mode
-*** Hunks are now automatically refined by default.
-To disable it, set the new defcustom 'diff-font-lock-refine' to nil.
++++
+*** Hunks are now automatically refined by font-lock.
+To disable refinement, set the new defcustom 'diff-refine' to nil.
+To get back the old behavior where hunks are refined as you navigate
+through a diff, set 'diff-refine' to the symbol 'navigate'.
++++
+*** 'diff-auto-refine-mode' is deprecated in favor of 'diff-refine'.
+It is no longer enabled by default and binding it no longer has any
+effect.
+
++++
+*** Better syntax highlighting of Diff hunks.
+Fragments of source in Diff hunks are now by default highlighted
+according to the appropriate major mode. Customize the new option
+'diff-font-lock-syntax' to nil to disable this.
*** File headers can be shortened, mimicking Magit's diff format.
To enable it, set the new defcustom 'diff-font-lock-prettify' to t.
@@ -414,6 +594,15 @@ To enable it, set the new defcustom 'diff-font-lock-prettify' to t.
of the file under version control if point is on an old changed line,
or to the new revision of the file otherwise.
+** Texinfo
+
++++
+*** New function for inserting @pxref, @xref, or @ref commands.
+The function 'texinfo-insert-dwim-@ref', bound to 'C-c C-c r' by
+default, inserts one of three types of references based on the text
+surrounding point, namely @pxref near a parenthesis, @xref at the
+start of a sentence or at (point-min), else @ref.
+
** Browse-url
*** The function 'browse-url-emacs' can now visit a URL in selected window.
@@ -445,27 +634,45 @@ end.
** SQL
-*** Installation of 'sql-indent' from ELPA is strongly encouraged.
-This package support sophisticated rules for properly indenting SQL
-statements. SQL is not like other programming languages like C, Java,
-or Python where code is sparse and rules for formatting are fairly
-well established. Instead SQL is more like COBOL (from which it came)
-and code tends to be very dense and line ending decisions driven by
-syntax and line length considerations to make readable code.
-Experienced SQL developers may prefer to rely upon existing Emacs
-facilities for formatting code but the 'sql-indent' package provides
-facilities to aid more casual SQL developers layout queries and
-complex expressions.
-
-*** 'sql-use-indent-support' (default t) enables SQL indention support.
+*** SQL Indent Minor Mode
+
+SQL Mode now supports the ELPA 'sql-indent' package for assisting
+sophisticated SQL indenting rules. Note, however, that SQL is not
+like other programming languages like C, Java, or Python where code is
+sparse and rules for formatting are fairly well established. Instead
+SQL is more like COBOL (from which it came) and code tends to be very
+dense and line ending decisions driven by syntax and line length
+considerations to make readable code. Experienced SQL developers may
+prefer to rely upon existing Emacs facilities for formatting code but
+the 'sql-indent' package provides facilities to aid more casual SQL
+developers layout queries and complex expressions.
+
+**** 'sql-use-indent-support' (default t) enables SQL indention support.
The 'sql-indent' package from ELPA must be installed to get the
indentation support in 'sql-mode' and 'sql-interactive-mode'.
-*** 'sql-mode-hook' and 'sql-interactive-mode-hook' changed.
+**** 'sql-mode-hook' and 'sql-interactive-mode-hook' changed.
Both hook variables have had 'sql-indent-enable' added to their
-default values. If youhave existing customizations to these variables,
+default values. If you have existing customizations to these variables,
you should make sure that the new default entry is included.
+*** Connection Wallet
+
+Database passwords can now by stored in NETRC or JSON data files that
+may optionally be encrypted. When establishing an interactive session
+with the database via 'sql-connect' or a product specific function,
+like 'sql-mysql' or 'my-postgres', the password wallet will be
+searched for the password. The 'sql-product', 'sql-server',
+'sql-database', and the 'sql-username' will be used to identify the
+appropriate authorization. This eliminates the discouraged practice of
+embedding database passwords in your Emacs initialization.
+
+See the `auth-source' module for complete documentation on the file
+formats. By default, the wallet file is expected to be in the
+`user-emacs-directory', named 'sql-wallet' or '.sql-wallet', with
+'.json' (JSON) or no (NETRC) suffix. Both file formats can optionally
+be encrypted with GPG by adding an additional '.gpg' suffix.
+
** Term
---
@@ -485,6 +692,13 @@ Control whether Flymake starts checking the buffer on save.
This enables more efficient backends. See the docstring of
'flymake-diagnostic-functions' or the Flymake manual for details.
+** Ruby
+
+*** The Rubocop Flymake diagnostic function will only run Lint cops if
+it can't find the config file.
+
+*** Rubocop is called with 'bundle exec' if Gemfile mentions it.
+
** Package
*** New function 'package-get-version' lets packages query their own version.
@@ -521,6 +735,13 @@ mouse click event, and is intended to be bound to a mouse event.
Previously, setting 'xref-marker-ring-length' would only take effect
if set before 'xref.el' was loaded.
+---
+*** xref-find-definitions now sets the mark at the buffer position
+where it was invoked
+
+---
+*** New xref faces 'xref-file-header', 'xref-line-number', 'xref-match'
+
** Ecomplete
*** The ecomplete sorting has changed to a decay-based algorithm.
@@ -531,6 +752,17 @@ Of course it will still find it if you have it in ~/.ecompleterc
** Gnus
+---
+*** Gnus now maps imaps to 993 only on old MS-Windows versions.
+The nnimap backend used to do this unconditionally to work around
+problems on old versions of MS-Windows. This is now done only for
+Windows XP and older.
+
++++
+*** The nnimap backend now has support for IMAP namespaces.
+This feature can be enabled by setting the new 'nnimap-use-namespaces'
+server variable to non-nil.
+
+++
*** A prefix argument to 'gnus-summary-limit-to-score' will limit reverse.
Limit to articles with score at below.
@@ -572,6 +804,16 @@ and its value has been changed to Duck Duck Go.
** eww/shr
++++
+*** The 'eww' command can now create a new EWW buffer.
+Invoking the command with a prefix argument will cause it to create a
+new EWW buffer for the URL instead of reusing the default one.
+
++++
+*** The 'd' ('eww-download') command now falls back to current page's URL.
+If this command is invoked with no URL at point, it now downloads the
+current page instead of signaling an error.
+
*** When opening external links in eww/shr (typically with the
'C-u RET' keystroke on a link), the link will be flashed with the new
'shr-selected-link' face to give the user feedback that the command
@@ -582,6 +824,9 @@ has been executed.
If set, shr will not render tags with attribute 'aria-hidden="true"'.
This attribute is meant to tell screen readers to ignore a tag.
+---
+*** 'shr-tag-ol' now respects the ordered list 'start' attribute.
+
** Htmlfontify
*** The functions 'hfy-color', 'hfy-color-vals' and
@@ -642,6 +887,9 @@ directories in the destination.
** Help
---
+*** Description of variables and functions give an estimated first release
+
+---
*** Output format of 'C-h l' ('view-lossage') has changed.
For convenience, 'view-lossage' now displays the last keystrokes
and commands in the same format as the edit buffer of
@@ -658,6 +906,11 @@ can now be searched via 'C-s'.
---
*** New filter 'ibuffer-filter-by-process'; bound to '/E'.
+---
+*** All mode filters can now accept a list of symbols.
+This means you can now easily filter several major modes, as well
+as a single mode.
+
** Search and Replace
*** Isearch supports a prefix argument for 'C-s' ('isearch-repeat-forward')
@@ -712,6 +965,9 @@ and case-sensitivity together with search strings in the search ring.
---
*** Isearch now has its own tool-bar and menu-bar menu.
++++
+*** flush-lines prints and returns the number of deleted matching lines.
+
** Debugger
+++
@@ -750,7 +1006,7 @@ been instrumented by Edebug.
the XTerm window title. This feature is experimental and is disabled
by default.
-** grep
+** Grep
+++
*** rgrep, lgrep and zrgrep now hide part of the command line
@@ -812,6 +1068,11 @@ default, and not just the opening element.
** Eshell
+*** TAB completion uses the standard completion-at-point rather than pcomplete
+Its UI is slightly different but can be customized to behave similarly,
+e.g. Pcomplete's default cycling can be obtained with
+(setq completion-cycle-threshold 5).
+
---
*** Expansion of history event designators is disabled by default.
To restore the old behavior, use
@@ -839,7 +1100,18 @@ followed when Emacs writes the relevant history variables to the disk.
---
*** Program name completion inside remote shells works now as expected.
++++
+*** The variable 'shell-file-name' can be set now as connection-local
+variable for remote shells. It still defaults to "/bin/sh".
+
+** Single shell commands
+
+---
+*** 'shell-command-width' defines the number of display columns
+available for output of asynchronous or remote shell commands.
+
** Pcomplete
+
*** The function 'pcomplete-uniquify-list' has been renamed from
'pcomplete-uniqify-list'.
@@ -859,6 +1131,12 @@ or NextCloud hosted files and directories.
storages via the 'rclone' program. This feature is experimental.
+++
+*** New connection method "sudoedit", which allows to edit local files
+with different user credentials. Contrary to the "sudo" method, no
+session is run permanently in the background. This is for security
+reasons.
+
++++
*** Connection methods "obex" and "synce" are removed, because they
are obsoleted in GVFS.
@@ -876,7 +1154,8 @@ Tramp for some look-alike remote file names.
+++
*** For some connection methods, like "su" or "sudo", the host name in
-ad-hoc multi-hop file names must match the previous hop.
+ad-hoc multi-hop file names must match the previous hop. Default host
+names are adjusted to the host name from the previous hop.
+++
*** For the connection methods "sudo" and "doas" there exists a
@@ -991,10 +1270,133 @@ subexpression.
When there is no menu for a mode, display the mode name after the
indicator instead of just the indicator (which is sometimes cryptic).
+** rx
+
+---
+*** rx now handles raw bytes in character alternatives correctly,
+when given in a string. Previously, '(any "\x80-\xff")' would match
+characters U+0080...U+00FF. Now the expression matches raw bytes in
+the 128...255 range, as expected.
+
+** Frames
+
++++
+*** New command 'make-frame-on-monitor' makes a frame on the specified monitor.
+
++++
+*** New value of 'minibuffer' frame parameter 'child-frame'.
+This allows to create and parent immediately a minibuffer-only child
+frame when making a frame.
+
+---
+*** New predicates 'display-blink-cursor-p' and 'display-symbol-keys-p'.
+These predicates are to be preferred over 'display-graphic-p' when
+testing for blinking cursor capability and the capability to have
+symbols (e.g., [return], [tab], [backspace]) as keys respectively.
+
+** Tabulated List mode
+
++++
+*** New user options for tabulated list sort indicators.
+You can now customize which sorting indicator character to display
+near the current column in Tabulated Lists (see variables
+'tabulated-list-gui-sort-indicator-asc',
+'tabulated-list-gui-sort-indicator-desc',
+'tabulated-list-tty-sort-indicator-asc', and
+'tabulated-list-tty-sort-indicator-desc').
+
+** Text mode
+
++++
+*** 'text-mode-variant' is now obsolete, use 'derived-mode-p' instead.
+
+** CUA mode
+
+---
+*** New defcustom 'cua-rectangle-terminal-modifier-key'.
+This defcustom allows for the customization of the modifier key used
+in a terminal frame.
+
+** JS mode
+
+---
+*** JSX syntax is now automatically detected and enabled.
+If a file imports Facebook's 'React' library, or if the file uses the
+extension '.jsx', then various features supporting XML-like syntax
+will be supported in 'js-mode' and derivative modes. ('js-jsx-mode'
+no longer needs to be enabled.)
+
+---
+*** New defcustom 'js-jsx-detect-syntax' disables automatic detection.
+This is turned on by default.
+
+---
+*** New defcustom 'js-jsx-syntax' enables JSX syntax unconditionally.
+This is off by default.
+
+---
+*** New variable 'js-jsx-regexps' controls JSX detection.
+
+---
+*** JSX syntax is now highlighted like SGML.
+
+---
+*** JSX code is properly indented in many more scenarios.
+Previously, JSX indentation usually only worked when an element was
+wrapped in parenthesis (e.g. in a 'return' statement or a function
+call). It would also fail in many intricate cases. Now, indentation
+should work anywhere without parenthesis; many more intricacies are
+supported; and, indentation conventions align more closely with those
+of the React developer community (see 'js-jsx-align->-with-<'),
+otherwise still adhering to SGML conventions.
+
+---
+*** New defcustom 'js-jsx-align->-with-<' controls '>' indents.
+Commonly in JSX code, a '>' on its own line is indented at the same
+level as its opening '<'. This is the new default for JSX. This
+behavior is slightly different than that used by SGML in Emacs, where
+'>' is indented at the same level as attributes, which was also the
+old default for JSX.
+
+This is turned on by default. To get back the old default indentation
+behavior of aligning '>' with attributes, set 'js-jsx-align->-with-<'
+to nil.
+
+---
+*** Indentation uses 'js-indent-level' instead of 'sgml-basic-offset'.
+Since JSX is a syntax extension of JavaScript, it makes the most sense
+for JSX expressions to be indented the same number of spaces as other
+JS expressions. This is a breaking change, but it probably aligns
+with how you'd expect this indentation to behave. If you want JSX to
+be indented like JS, you won't need to change your config.
+
+The old behavior can be emulated by controlling JSX indentation
+independently of JS, by setting 'js-jsx-indent-level'.
+
+---
+*** New defcustom 'js-jsx-indent-level' for different JSX indentation.
+If you wish to indent JSX by a different number of spaces than JS, set
+this variable to the desired number.
+
+---
+*** New defcustom 'js-jsx-attribute-offset' for JSX attribute indents.
+
+---
+*** New variable 'js-syntactic-mode-name' controls mode name display.
+Previously, the mode name was simply 'JavaScript'. Now, when a syntax
+extension like JSX is enabled, the mode name is 'JavaScript[JSX]'.
+Set this variable to nil to disable the new behavior.
+
+---
+*** New function 'js-use-syntactic-mode-name' for deriving modes.
+Packages deriving from 'js-mode' with 'define-derived-mode' should
+call this function to add enabled syntax extensions to their mode
+name, too.
+
* New Modes and Packages in Emacs 27.1
-** multifile.el lets one setup multifile operations like search&replace.
+** fileloop.el lets one setup multifile operations like search&replace.
+++
** Emacs can now visit files in archives as if they were directories.
@@ -1021,6 +1423,9 @@ documentation of the new mode and its commands.
* Incompatible Lisp Changes in Emacs 27.1
+** In compilation-error-regexp-alist the old undocumented feature where 'line'
+could be a function of 2 arguments has been dropped.
+
** 'define-fringe-bitmap' is always defined, even when Emacs is built
without any GUI support.
@@ -1072,6 +1477,10 @@ old-style backquotes as new-style, bind the new variable
integer, Emacs now signals an error if the number is too large for the
implementation to format.
+** logb now returns infinity when given an infinite or zero argument,
+and returns a NaN when given a NaN. Formerly, it returned an extreme
+fixnum for such arguments.
+
---
** Some functions and variables obsolete since Emacs 22 have been removed:
archive-mouse-extract, assoc-ignore-case, assoc-ignore-representation,
@@ -1118,11 +1527,41 @@ they are now allocated like any other pseudovector. As a result, the
'misc' component, and the 'misc-objects-consed' variable has been
removed.
++++
+** Reversed character ranges are no longer permitted in rx.
+Previously, ranges where the starting character is greater than the
+ending character were silently omitted.
+For example, '(rx (any "@z-a" (?9 . ?0)))' would match '@' only.
+Now, such rx expressions generate an error.
+
++++
+** 'text-mode' no longer sets the value of 'indent-line-function'.
+The global value of 'indent-line-function', which defaults to
+'indent-relative', will no longer be reset locally when turning on
+'text-mode'.
+
+To get back the old behavior, add a function to 'text-mode-hook' which
+performs (setq-local indent-line-function #'indent-relative).
+
+** 'make-process' no longer accepts a non-nil ':stop' key. This has
+never worked reliably, and now causes an error.
+
* Lisp Changes in Emacs 27.1
+** New 'help-fns-describe-variable-functions' hook.
+Makes it possible to add metadata information to describe-variable.
+
+** i18n (internationalization)
+
+*** ngettext can be used now to return the right plural form
+according to the given numeric value.
+
++++
+** inhibit-null-byte-detection is renamed to inhibit-nul-byte-detection
+
+++
-** self-insert-command takes the char to insert as (optional) argument
+** 'self-insert-command' takes the char to insert as (optional) argument.
** 'lookup-key' can take a list of keymaps as argument.
@@ -1187,6 +1626,12 @@ floating-point operators do.
+++
** New function 'time-equal-p' compares time values for equality.
++++
+** 'format-time-string' supports a new conversion specifier flag '+'
+that acts like the '0' flag but also puts a '+' before nonnegative
+years containing more than four digits. This is for compatibility
+with POSIX.1-2017.
+
** 'define-minor-mode' automatically documents the meaning of ARG.
+++
@@ -1234,9 +1679,43 @@ displaying the same buffer. See the node "(elisp) Face Remapping"
of the Emacs Lisp Reference manual for more detail.
+++
-** Special handling of buffer-local 'window-size-change-functions'.
-A buffer-local value of this hook is now run only if at least one
-window showing the buffer has changed its size.
+** Window change functions have been redesigned.
+
+Hooks reacting to window changes run now only when redisplay detects
+that a change has actually occurred. Six hooks are now provided:
+'window-buffer-change-functions' (run after window buffers have
+changed), 'window-size-change-functions' (run after a window was
+assigned a new buffer or size), 'window-configuration-change-hook'
+(like the former but run also when a window was deleted),
+'window-selection-change-functions' (run when the selected window
+changed) and 'window-state-change-functions' and
+'window-state-change-hook' (run when any of the preceding ones is
+run). Applications can enforce running the latter two using the new
+function 'set-frame-window-state-change'. 'window-scroll-functions'
+are unaffected by these changes.
+
+In addition, a number of functions now allow the caller to detect what
+has changed since last redisplay: 'window-old-buffer' returns for any
+window the buffer it showed at that time. ‘old-selected-window’ and
+'old-selected-frame' return the window and frame that were selected
+during last redisplay. 'window-old-pixel-width' (renamed from
+'window-pixel-width-before-size-change'), 'window-old-pixel-height'
+(renamed from 'window-pixel-height-before-size-change'),
+'window-old-body-pixel-width' and 'window-old-body-pixel-height'
+return the total and body sizes of any window during last redisplay.
+
+See the section "(elisp) Window Hooks" in the Elisp manual for a
+detailed explanation of the new behavior.
+
++++
+*** New option 'resize-mini-frames'.
+This option allows to automatically resize minibuffer-only frames
+similarly to how minibuffer windows are resized on "normal" frames.
+
++++
+** New buffer display action alist entry 'dedicated'.
+Such an entry allows to specify the dedicated status of a window
+created by 'display-buffer'.
+++
** New buffer display action alist entry 'window-min-height'.
@@ -1255,10 +1734,10 @@ between two strings.
'(quote x)' instead of 'x you will have to bind it to nil where applicable.
+++
-** Numbers formatted via '%o' or '%x' may now be formatted as signed integers.
+** Numbers formatted via '%o' or '%x' are now formatted as signed integers.
This avoids problems in calls like '(read (format "#x%x" -1))', and is
-more compatible with bignums, a planned feature. To get this
-behavior, set the experimental variable 'binary-as-unsigned' to nil,
+more compatible with bignums. To get the traditional machine-dependent
+behavior, set the experimental variable 'binary-as-unsigned' to t,
and if the new behavior breaks your code please email
32252@debbugs.gnu.org. Because '%o' and '%x' can now format signed
integers, they now support the '+' and space flags.
@@ -1347,6 +1826,18 @@ are implemented in C using the Jansson library.
** New function 'ring-resize'.
'ring-resize' can be used to grow or shrink a ring.
++++
+** New function 'flatten-tree'.
+'flatten-list' is provided as an alias. These functions take a tree
+and 'flatten' it such that the result is a list of all the terminal
+nodes.
+
++++
+** 'zlib-decompress-region' can partially decompress corrupted data.
+If the new optional ALLOW-PARTIAL argument is passed, then the data
+that was decompressed successfully before failing will be inserted
+into the buffer.
+
** Mailcap
---
@@ -1376,6 +1867,13 @@ left to higher-level functions.
some years back. It now respects 'imagemagick-types-inhibit' as a way
to disable that.
+---
+*** Some image-mode variables are now buffer-local.
+The image parameters 'image-transform-rotation',
+'image-transform-scale' and 'image-transform-resize' are now declared
+buffer-local, so each buffer could have its own values for these
+parameters.
+
** The function 'load' now behaves correctly when loading modules.
Specifically, it puts the module name into 'load-history', prints
loading messages if requested, and protects against recursive loads.
@@ -1395,6 +1893,50 @@ un-obsoleting it.
+++
** New function 'group-name' returns a group name corresponding to GID.
++++
+** 'make-process' now takes a keyword argument ':file-handler'; if
+that is non-nil, it will look for a file name handler for the current
+buffer's 'default-directory' and invoke that file name handler to make
+the process. That way 'make-process' can start remote processes.
+
++++
+** Emacs now supports resizing (scaling) of images without ImageMagick.
+All modern systems are supported by this feature. (On GNU and Unix
+systems, Cairo drawing or the XRender extension to X11 is required for
+this to be available; the configure script will test for it and, if
+found, enable scaling.)
+
+The new function 'image-scaling-p' can be used to test whether any
+given frame supports resizing.
+
++++
+** (locale-info 'paper) now returns the paper size on systems that support it.
+This is currently supported on GNUish hosts and on modern versions of
+MS-Windows.
+
+** New module environment function 'process_input' to process user
+input while module code is running.
+
++++
+** The function 'regexp-opt' accepts an additional optional argument.
+By default, the regexp returned by 'regexp-opt' may match the strings
+in any order. If the new third argument is non-nil, the match is
+guaranteed to be performed in the order given, as if the strings were
+made into a regexp by joining them with '\|'.
+
++++
+** The function 'regexp-opt', when given an empty list of strings, now
+returns a regexp that never matches anything, which is an identity for
+this operation. Previously, the empty string was returned in this
+case.
+
+** New module environment functions 'make_time' and 'extract_time' to
+convert between timespec structures and Emacs Lisp time values.
+
+** New module environment functions 'make_big_integer' and
+'extract_big_integer' to create and extract arbitrary-size integer
+values.
+
* Changes in Emacs 27.1 on Non-Free Operating Systems
@@ -1428,6 +1970,23 @@ versions of MS-Windows. Set this variable to 50 if for some reason
you need the old behavior (and please report such situations to Emacs
developers).
+---
+** New variable 'w32-multibyte-code-page'.
+This variable holds the value of the multibyte code page used by the
+system. It is usually zero, which indicates that 'w32-ansi-code-page'
+is being used, except in Far Eastern locales. When this variable is
+non-zero, Emacs at startup sets 'locale-coding-system' to the
+corresponding encoding, instead of using 'w32-ansi-code-page'.
+
++++
+** On NS the behaviour of drag and drop can now be modified by use of
+modifier keys in line with Apples guidelines. This makes the drag and
+drop behaviour more consistent, as previously the sending application
+was able to 'set' modifiers without the knowledge of the user.
+
+** On NS multicolor font display is enabled again since it is also
+implemented in Emacs on free operating systems via Cairo drawing.
+
----------------------------------------------------------------------
This file is part of GNU Emacs.