NEWS 127 KB
 Glenn Morris committed Apr 12, 2007 1 GNU Emacs NEWS -- history of user-visible changes.  Glenn Morris committed Feb 11, 2007 2   Paul Eggert committed Dec 31, 2018 3 Copyright (C) 2017-2019 Free Software Foundation, Inc.  Glenn Morris committed Feb 11, 2007 4 See the end of the file for license conditions.  Dave Love committed Oct 03, 1999 5   Michael Albinus committed Nov 13, 2018 6 7 Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. If possible, use 'M-x report-emacs-bug'.  Kim F. Storm committed Jun 04, 2006 8   Eli Zaretskii committed Sep 16, 2017 9 This file is about changes in Emacs version 27.  Kim F. Storm committed Jun 04, 2006 10   Paul Eggert committed Oct 15, 2015 11 See file HISTORY for a list of GNU Emacs versions and release dates.  Glenn Morris committed Oct 20, 2017 12 13 See files NEWS.26, NEWS.25, ..., NEWS.18, and NEWS.1-17 for changes in older Emacs versions.  Kim F. Storm committed Jun 04, 2006 14   Paul Eggert committed Mar 14, 2016 15 You can narrow news to a specific version by calling 'view-emacs-news'  Michael Albinus committed Nov 13, 2018 16 with a prefix argument or by typing 'C-u C-h C-n'.  Glenn Morris committed Jun 12, 2007 17   Paul Eggert committed Sep 10, 2016 18 Temporary note:  Robert Pluim committed Sep 02, 2019 19 +++ indicates that all relevant manuals in doc/ have been updated.  Paul Eggert committed Sep 10, 2016 20 --- means no change in the manuals is needed.  Robert Pluim committed Sep 02, 2019 21 22 When you add a new item, use the appropriate mark if you are sure it applies, and please also update docstrings as needed.  Eli Zaretskii committed Oct 01, 2016 23   Michael Albinus committed Nov 25, 2015 24   Eli Zaretskii committed Sep 16, 2017 25 * Installation Changes in Emacs 27.1  Paul Eggert committed Mar 07, 2016 26   Paul Eggert committed Aug 12, 2018 27 28 29 ** 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.  Michael Albinus committed Nov 13, 2018 30 The new 'configure' option '--without-libgmp' uses mini-gmp even if a  Paul Eggert committed Aug 12, 2018 31 suitable libgmp is available.  Tom Tromey committed Jul 12, 2018 32   Eli Zaretskii committed Jun 07, 2019 33 34 ** Emacs can now use HarfBuzz as its shaping engine. The new configure option '--with-harfbuzz' adds support for the  Paul Eggert committed Dec 13, 2018 35 HarfBuzz text shaping engine. It is on by default; use './configure  YAMAMOTO Mitsuharu committed May 05, 2019 36 37 --without-harfbuzz' to build without it. The HarfBuzz text shaping is available via new font backend drivers 'xfthb' and 'ftcrhb' for Xft  Eli Zaretskii committed May 31, 2019 38 and Cairo drawings, respectively, and via the 'harfbuzz' backend on  Eli Zaretskii committed Jun 01, 2019 39 40 41 42 43 MS-Windows. The Harfbuzz text shaping is preferred to the previously supported ones, so the font backends that use older shaping engines (FLT on GNU and Unix systems and Uniscribe on MS-Windows) are not enabled by default; they can be enabled via the 'font-backend' frame parameter or via X resources.  Paul Eggert committed Dec 13, 2018 44   Philipp Stephani committed Dec 10, 2017 45 ** The new configure option '--with-json' adds support for JSON using  Michael Albinus committed Nov 13, 2018 46 the Jansson library. It is on by default; use './configure  Philipp Stephani committed Dec 10, 2017 47 48 49 50 51 --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.  Michael Albinus committed Jul 28, 2019 52 ** The configure option '--with-cairo' is no longer experimental.  Paul Eggert committed Jun 19, 2019 53 54 55 This builds Emacs with Cairo drawing, and supports built-in printing when Emacs is built with GTK+.  Paul Eggert committed May 13, 2019 56 57 58 59 ** Emacs no longer defaults to using ImageMagick to display images, due to security and stability concerns. To override the default, use 'configure --with-imagemagick'.  Paul Eggert committed Mar 25, 2019 60 61 ** Several configure options now accept an option-argument 'ifavailable'. For example, './configure --with-xpm=ifavailable' now configures Emacs  Michael Albinus committed May 06, 2019 62 63 64 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'.  Paul Eggert committed Mar 25, 2019 65   Paul Eggert committed Aug 05, 2018 66 67 68 69 70 71 72 ** 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.  Michael Albinus committed Nov 13, 2018 73 ** Emacs has been ported to the '-fcheck-pointer-bounds' option of GCC.  Paul Eggert committed Dec 12, 2017 74 75 76 77 78 79 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.  Paul Eggert committed Jan 01, 2018 80 81 82 ** 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  Michael Albinus committed Nov 13, 2018 83 84 catch typos and supports '-fcheck-pointer-bounds'. The 'configure' option '--enable-check-lisp-object-type' is therefore no longer as  Paul Eggert committed Dec 17, 2017 85 86 87 useful and so is no longer enabled by default in developer builds, to reduce differences between developer and production builds.  Eli Zaretskii committed Jan 16, 2019 88 89 90 91 92 93 94 95 96 97 98 99 100 +++ ** 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. 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.  Daniel Colascione committed Jan 15, 2019 101   Paul Eggert committed Jul 23, 2019 102 An Emacs started via a dump file can create a new dump file only if it  Michael Albinus committed Jul 28, 2019 103 was invoked with the '-batch' option.  Paul Eggert committed Jul 23, 2019 104 105 106 107 108 109 110  Although the portable dumper has been tested, it may have a bug on unusual platforms. If you require traditional unexec dumping you can use the configure-time option '--with-dumping=unexec'; however, please file a bug report describing the situation, as unexec dumping is deprecated.  Paul Eggert committed Apr 10, 2019 111 112 113 114 115 +++ ** 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.  Paul Eggert committed Apr 21, 2019 116 +++  Paul Eggert committed Apr 21, 2019 117 118 119 ** 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  Eli Zaretskii committed Apr 22, 2019 120 121 122 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.)  Paul Eggert committed Apr 21, 2019 123   Paul Eggert committed May 16, 2019 124 125 126 127 +++ ** The distribution tarball now has test cases; 'make check' runs them. This is intended mostly to help developers.  Alexander Gramiak committed Apr 14, 2019 128 129 130 131 --- ** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3 builds respectively.  Stefan Kangas committed Aug 29, 2019 132 133 ** New make target 'help' shows a summary of common make targets.  Philipp Stephani committed Oct 14, 2019 134 135 136 ** Emacs now builds with dynamic module support by default. Pass '--without-modules' to 'configure' to disable dynamic module support.  Glenn Morris committed Jan 06, 2016 137   Eli Zaretskii committed Sep 16, 2017 138 * Startup Changes in Emacs 27.1  Eli Zaretskii committed Jul 22, 2017 139   Paul Eggert committed Aug 27, 2019 140 141 +++ ** Emacs now uses the XDG convention for init files.  Michael Albinus committed Oct 16, 2019 142 For example, it looks for init.el in "~/.config/emacs/init.el", and  Eli Zaretskii committed Aug 28, 2019 143 144 similarly for other init files.  Michael Albinus committed Oct 16, 2019 145 The XDG_CONFIG_HOME environment variable (which defaults to "~/.config")  Eli Zaretskii committed Aug 28, 2019 146 147 specifies the parent directory of these and other configuration files, and will override their traditional locations (the home directory,  Michael Albinus committed Oct 16, 2019 148 "~/.emacs.d", etc.).  Eli Zaretskii committed Aug 28, 2019 149 150 151 152 153 154  Emacs will still look for init files in their traditional locations if XDG_CONFIG_HOME does not exist, so invoking Emacs with XDG_CONFIG_HOME='/nowhere' might be useful if your new-location init files are scrambled, or if you want to force Emacs to ignore files under XDG_CONFIG_HOME for some other reason.  Paul Eggert committed Aug 27, 2019 155   Radon Rosborough committed Feb 17, 2018 156 157 158 159 160 161 162 163 164 +++ ** 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).  Eli Zaretskii committed Jun 12, 2018 165 166 167 168 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  Michael Albinus committed Nov 16, 2018 169 'window-system' and other GUI features, are not yet set up, which could  Eli Zaretskii committed Jun 12, 2018 170 171 make some customization fail to work.  Radon Rosborough committed Feb 17, 2018 172 +++  Stefan Monnier committed Mar 26, 2018 173 ** Installed packages are now activated *before* loading the init file.  Stefan Kangas committed Oct 22, 2019 174 175 176 177 178 179 180 181 As a result of this change, it is no longer necessary to call 'package-initialize' in your init file. Previously, a call to 'package-initialize' was automatically inserted into the init file when Emacs was started. This call can now safely be removed. Alternatively, if you want to ensure that your init file is still compatible with earlier versions of Emacs, change it to:  Stefan Kangas committed Nov 02, 2019 182 (when (< emacs-major-version 27)  Stefan Kangas committed Oct 22, 2019 183  (package-initialize))  Stefan Monnier committed Mar 26, 2018 184   Michael Albinus committed May 06, 2019 185 186 187 188 189 190 191 192 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.  Radon Rosborough committed Feb 17, 2018 193   Lucas Werkmeister committed Jul 25, 2018 194 195 196 197 198 --- ** 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  Michael Albinus committed Nov 13, 2018 199 emacs.service file to eg "~/.config/systemd/user/", you will need to copy  Lucas Werkmeister committed Jul 25, 2018 200 201 the new version of the file again.)  Eli Zaretskii committed Jan 05, 2016 202   Eli Zaretskii committed Sep 16, 2017 203 * Changes in Emacs 27.1  Reuben Thomas committed Aug 30, 2017 204   Stefan Kangas committed Nov 06, 2019 205 206 207 208 209 210 211 212 213 214 +++ ** 'next/previous-multiframe-window' have been renamed. The new names are as follows: 'next-multiframe-window' -> 'next-window-any-frame' 'previous-multiframe-window' -> 'previous-window-any-frame' The old function names are maintained as aliases for backward compatibility.  Glenn Morris committed Nov 13, 2018 215 216 ** emacsclient  Daniel Pittman committed Oct 27, 2018 217 +++  Glenn Morris committed Jul 14, 2019 218 219 220 *** emacsclient now supports an 'EMACS_SOCKET_NAME' environment variable. The command-line argument '--socket-name' overrides it. (The same behavior as for the pre-existing 'EMACS_SERVER_FILE' variable.)  Daniel Pittman committed Oct 27, 2018 221   Paul Eggert committed Dec 01, 2018 222 +++  Michael Albinus committed May 06, 2019 223 *** Emacs and emacsclient now default to "\$XDG_RUNTIME_DIR/emacs"  Paul Eggert committed Dec 01, 2018 224 as the directory for client/server sockets, if Emacs is running  Paul Eggert committed Nov 20, 2019 225 on a platform or environment that sets the 'XDG_RUNTIME_DIR'  Paul Eggert committed Dec 01, 2018 226 environment variable to indicate where session sockets should go.  Paul Eggert committed Dec 06, 2018 227 To get the old, less-secure behavior, you can set the  Michael Albinus committed May 06, 2019 228 'EMACS_SOCKET_NAME' environment variable to an appropriate value.  Paul Eggert committed Dec 01, 2018 229   Glenn Morris committed Nov 13, 2018 230 231 232 233 --- *** 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.)  Robert Pluim committed Nov 23, 2019 234 235 236 237 238 +++ ** New user option 'what-cursor-show-names'. When non-nil, 'what-cursor-position' will show the name of the character in addition to the decimal/hex/octal representation. Default nil.  Robert Pluim committed Nov 19, 2019 239 +++  Robert Pluim committed Jul 16, 2018 240 241 242 ** New function 'network-lookup-address-info'. This does IPv4 and/or IPv6 address lookups on hostnames.  Robert Pluim committed Nov 26, 2019 243 244 245 246 247 +++ ** 'network-interface-list' can now return IPv4 and IPv6 addresses. IPv4 and IPv6 addresses are now returned by default if available, optionally including netmask/broadcast address information.  Federico Tedin committed Mar 01, 2019 248 249 250 251 252 253 254 --- ** 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.  Tino Calancha committed Jul 29, 2018 255 +++  Michael Albinus committed May 06, 2019 256 ** The function 'read-passwd' uses "*" as default character to hide passwords.  Tino Calancha committed Jul 29, 2018 257   Michael Albinus committed May 06, 2019 258 259 260 ** 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.  Stefan Monnier committed Apr 25, 2019 261   Eli Zaretskii committed Oct 07, 2017 262 ---  Michael Albinus committed Oct 16, 2019 263 264 265 266 ** The new user 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.  Eli Zaretskii committed Oct 07, 2017 267   Martin Rudalics committed Jan 18, 2018 268 ---  Michael Albinus committed Nov 13, 2018 269 ** Show mode line tooltips only if the corresponding action applies.  Michael Albinus committed Oct 16, 2019 270 271 272 Customize the user 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.  Martin Rudalics committed Jan 18, 2018 273   Eli Zaretskii committed Mar 10, 2018 274 275 276 277 278 279 280 281 282 +++ ** 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.  Lars Ingebrigtsen committed Aug 18, 2019 283 284 285 286 287 +++ ** The functions 'set-frame-height' and 'set-frame-width' are now commands, and will set the currently selected frame to the height/ width specified by the numeric prefix.  Mark Oteiza committed Sep 30, 2017 288 289 290 +++ ** New function 'logcount' calculates an integer's Hamming weight.  Robert Pluim committed Nov 03, 2017 291 292 293 294 295 296 297 298 +++ ** 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.  Lars Ingebrigtsen committed Apr 14, 2018 299 +++  Michael Albinus committed May 06, 2019 300 ** 'libxml-parse-xml-region' and 'libxml-parse-html-region' take  Lars Ingebrigtsen committed Apr 14, 2018 301 302 a parameter that's called DISCARD-COMMENTS, but it really only discards the top-level comment. Therefore this parameter is now  Paul Eggert committed Apr 26, 2018 303 obsolete, and the new utility function 'xml-remove-comments' can be  Lars Ingebrigtsen committed Apr 14, 2018 304 305 306 used to remove comments before calling the libxml functions to parse the data.  Lars Ingebrigtsen committed Sep 27, 2019 307 308 309 310 311 312 +++ ** A new DOM (the XML/HTML document structure returned by functions such as 'libxml-parse-html-region') traversal function has been added: 'dom-search', which takes a DOM and a predicate and returns all nodes that match.  Lars Ingebrigtsen committed Jun 24, 2018 313 314 +++ ** The Network Security Manager now allows more fine-grained control  Michael Albinus committed Oct 20, 2018 315 of what checks to run via the 'network-security-protocol-checks'  Michael Albinus committed Oct 16, 2019 316 user option.  Lars Ingebrigtsen committed Jun 24, 2018 317   Lars Ingebrigtsen committed Jun 24, 2018 318 +++  Eli Zaretskii committed Jul 08, 2018 319 320 ** TLS connections have their security tightened by default. Most of the checks for outdated, believed-to-be-weak TLS algorithms  Lars Ingebrigtsen committed Aug 23, 2019 321 322 and ciphers are now switched on by default. (In addition, several new TLS weaknesses are now warned about.) By default, the NSM will  Eli Zaretskii committed Jul 08, 2018 323 324 325 326 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,  Michael Albinus committed Oct 16, 2019 327 or adjust the elements in that user option to only happen on the 'high'  Eli Zaretskii committed Jul 08, 2018 328 security level (assuming you use the 'medium' level).  Lars Ingebrigtsen committed Jun 24, 2018 329   Robert Pluim committed Sep 02, 2019 330 331 332 333 334 335 336 337 --- ** New user option 'nsm-trust-local-network'. Allows skipping Network Security Manager checks for hosts on your local subnet(s). It defaults to nil. Usually, there should be no need to set this non-nil, and doing that risks opening your local network connections to attacks. So be sure you know what you are doing before changing the value.  Robert Pluim committed Jan 24, 2019 338 339 340 +++ ** Native GnuTLS connections can now use client certificates. Previously, this support was only available when using the external  Michael Albinus committed May 06, 2019 341 'gnutls-cli' command. Call 'open-network-stream' with  Robert Pluim committed Jan 24, 2019 342 343 344 ':client-certificate t' to trigger looking up of per-server certificates via 'auth-source'.  Robert Pluim committed Nov 05, 2019 345 346 347 348 +++ ** New user option 'network-stream-use-client-certificates'. When non-nil, 'open-network-stream' performs lookups of client certificates using 'auth-source' as if ':client-certificate t' were  Robert Pluim committed Nov 23, 2019 349 350 specified iff there is no explicit ':client-certificate' parameter. Defaults to nil.  Robert Pluim committed Nov 05, 2019 351   Marcin Borkowski committed Jan 15, 2018 352 353 354 355 356 +++ ** 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.  Noam Postavsky committed Jan 26, 2018 357 358 359 360 361 362 363 +++ ** 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: x\{32768\}  Eli Zaretskii committed Mar 29, 2018 364 365 366 --- ** The German prefix and postfix input methods now support Capital sharp S.  Bob Newell committed Sep 20, 2018 367 ---  Michael Albinus committed Nov 13, 2018 368 ** New input methods 'hawaiian-postfix' and 'hawaiian-prefix'.  Bob Newell committed Sep 20, 2018 369   Nick Drozd committed Jul 14, 2019 370 371 372 --- ** New input methods 'georgian-qwerty' and 'georgian-nuskhuri'.  Eli Zaretskii committed Mar 15, 2019 373 374 375 376 377 378 379 --- ** 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'.  Paul Eggert committed Jan 09, 2019 380 381 382 383 384 +++ ** 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.  Michael Albinus committed Jun 20, 2018 385 +++  Eli Zaretskii committed Jun 20, 2018 386 387 ** New function 'exec-path'. This function by default returns the value of the corresponding  Michael Albinus committed Oct 16, 2019 388 user option, but can optionally return the equivalent of 'exec-path'  Eli Zaretskii committed Jun 20, 2018 389 from a remote host.  Michael Albinus committed Jun 20, 2018 390 391  +++  Eli Zaretskii committed Jun 20, 2018 392 393 ** The function 'executable-find' supports an optional argument REMOTE. This triggers to search the program on the remote host as indicated by  Michael Albinus committed Jun 20, 2018 394 395 'default-directory'.  Federico Tedin committed Aug 11, 2018 396 +++  Michael Albinus committed Oct 16, 2019 397 ** New user option 'auto-save-no-message'.  Federico Tedin committed Aug 11, 2018 398 399 400 When set to t, no message will be shown when auto-saving (default value: nil).  Eli Zaretskii committed Sep 30, 2018 401 402 403 404 405 406 --- ** 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.  Michael Albinus committed Nov 10, 2018 407 408 409 410 +++ ** New variable 'emacs-repository-branch'. It reports the git branch from which Emacs was built.  Juri Linkov committed Dec 21, 2018 411 412 +++ ** New user option 'switch-to-buffer-obey-display-actions'.  Michael Albinus committed Dec 22, 2018 413 414 415 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'.  Juri Linkov committed Dec 21, 2018 416   Martin Rudalics committed Nov 26, 2019 417 418 419 420 421 422 423 424 425 426 +++ ** The option 'switch-to-visible-buffer' is now obsolete. Customize 'switch-to-prev-buffer-skip' instead. +++ ** New option 'switch-to-prev-buffer-skip'. This option allows to specify the set of buffers that may be shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more stringently than the now obsolete 'switch-to-visible-buffer'.  João Távora committed Feb 14, 2019 427 ** New 'flex' completion style  Eli Zaretskii committed Aug 03, 2019 428 An implementation of popular "flex/fuzzy/scatter" completion which  João Távora committed Feb 14, 2019 429 430 431 432 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.  Stefan Monnier committed Nov 21, 2019 433 434 ** The 'completion-common-part' face is now visible by default.  Jimmy Aguilar Mena committed Oct 14, 2019 435 +++  Jimmy Aguilar Mena committed Oct 14, 2019 436 ** New face attribute ':extend' to control face extension at EOL.  Eli Zaretskii committed Oct 14, 2019 437 438 The new face attribute ':extend' controls whether to use the face for displaying the empty space beyond end of line (EOL) till the edge of  Juri Linkov committed Oct 19, 2019 439 the window. By default, this attribute is non-nil only for 'region',  Eli Zaretskii committed Nov 25, 2019 440 441 442 443 444 445 446 447 448 'secondary-selection', 'hl-line' and some faces of Diff and Ediff modes; any other face that crosses end of line will not affect the display of the empty space at EOL. This is to make Emacs behave more like other GUI applications with respect to displaying faces that cross line boundaries. Themes that redefine faces should add a non-nil ':extend' attribute to the above-mentioned faces, to keep the behavior of the default face definitions.  Jimmy Aguilar Mena committed Oct 14, 2019 449   Michael Albinus committed Mar 09, 2019 450 451 452 453 454 455 456 457 ** 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  Michael Albinus committed May 06, 2019 458 'with-connection-local-profiles'. No argument PROFILES needed any longer.  Michael Albinus committed Mar 09, 2019 459   Stephen Leake committed Apr 11, 2019 460 ---  Michael Albinus committed Oct 16, 2019 461 462 ** New user option 'next-error-verbose' controls when 'next-error' outputs a message about the error locus.  Stephen Leake committed Apr 25, 2019 463 464  ---  Michael Albinus committed Oct 16, 2019 465 ** New user option 'grep-search-path' defines the directories searched for  Michael Albinus committed May 06, 2019 466 grep hits (this used to be controlled by 'compilation-search-path').  Stephen Leake committed Apr 25, 2019 467 468  ---  Michael Albinus committed Oct 16, 2019 469 ** New user option 'emacs-lisp-compilation-search-path' defines the  Michael Albinus committed May 06, 2019 470 471 directories searched for byte-compiler error messages (this used to be controlled by 'compilation-search-path').  Stephen Leake committed Apr 11, 2019 472   YAMAMOTO Mitsuharu committed Apr 27, 2019 473 474 475 ** Multicolor fonts such as "Noto Color Emoji" can be displayed on Emacs configured with Cairo drawing and linked with cairo >= 1.16.0.  Jimmy Aguilar Mena committed May 05, 2019 476 +++  Jimmy Aguilar Mena committed May 05, 2019 477 478 ** Emacs now optionally displays a fill column indicator.  Jimmy Aguilar Mena committed May 05, 2019 479 This is similar to what 'fill-column-indicator' package provides, but  Michael Albinus committed May 06, 2019 480 much faster and compatible with 'show-trailing-whitespace'.  Jimmy Aguilar Mena committed May 05, 2019 481   Michael Albinus committed Oct 16, 2019 482 Customize the buffer-local user options 'display-fill-column-indicator'  Jimmy Aguilar Mena committed May 05, 2019 483 484 485 and 'display-fill-column-indicator-character' to activate the indicator.  Jimmy Aguilar Mena committed May 05, 2019 486 The indicator is not displayed at all in minibuffer windows and  Jimmy Aguilar Mena committed May 05, 2019 487 488 489 in tooltips, as it is not useful there. There are 2 new buffer local variables and 1 face to customize this  Jimmy Aguilar Mena committed May 05, 2019 490 mode they are described in the manual "(emacs) Display".  Jimmy Aguilar Mena committed May 05, 2019 491   Noam Postavsky committed Jun 03, 2019 492 493 494 +++ ** 'progress-reporter-update' accepts a suffix string to display.  Stephen Leake committed Jul 17, 2019 495 ---  Michael Albinus committed Oct 16, 2019 496 497 ** New user option 'xref-file-name-display' controls the display of file names in xref buffers.  Eli Zaretskii committed Jul 25, 2019 498   Michael Albinus committed Oct 16, 2019 499 ** New user option 'byte-count-to-string-function'.  Mattias Engdegård committed Aug 02, 2019 500 It is used for displaying file sizes and disk space in some cases.  Noam Postavsky committed Jun 03, 2019 501   Pip Cet committed Jul 27, 2019 502 503 504 505 506 507 +++ ** Emacs now interprets RGB triplets like HTML, SVG, and CSS do. The X convention previously used differed slightly, particularly for RGB triplets with a single hexadecimal digit per component.  Stefan Kangas committed Aug 20, 2019 508 509 510 --- ** The toolbar now shows the equivalent key binding in its tooltips.  Juri Linkov committed Nov 28, 2019 511 512 513 514 --- ** The File menu-bar menu was re-arranged: Print menu items moved to submenu, and also added the new entries for tabs.  Stefan Kangas committed Oct 04, 2019 515 516 517 518 519 --- ** 'scroll-lock-mode' is now bound to the 'Scroll_Lock' key globally. Note that this key binding will not work on MS-Windows systems if 'w32-scroll-lock-modifier' is non-nil.  Alan Mackenzie committed Oct 19, 2019 520 521 522 523 524 --- ** 'global-set-key', called interactively, now no longer downcases a key binding with an upper case letter - if you can type it, you can bind it.  Glenn Morris committed Jan 06, 2016 525   Eli Zaretskii committed Sep 16, 2017 526 * Editing Changes in Emacs 27.1  Eli Zaretskii committed Jul 17, 2017 527   Lars Ingebrigtsen committed Oct 14, 2019 528 +++  Eli Zaretskii committed Oct 14, 2019 529 ** 'zap-to-char' now uses history of characters you used to zap to.  Juri Linkov committed Oct 30, 2019 530 'zap-to-char' uses the new 'read-char-from-minibuffer' function to allow  Lars Ingebrigtsen committed Oct 14, 2019 531 532 533 534 navigating through the history of characters that have been input. This is mostly useful for characters that have complex input methods where inputting the character again may involve many keystrokes.  Lars Ingebrigtsen committed Oct 13, 2019 535 536 537 538 +++ ** 'save-some-buffers' now has a new action in the prompt: 'C-f' will exit the command and switch to the buffer currently being asked about.  Lars Ingebrigtsen committed Oct 11, 2019 539 540 541 542 +++ ** The new 'amalgamating-undo-limit' variable can be used to control how many changes should be amalgamated when using the 'undo' command.  Lars Ingebrigtsen committed Aug 17, 2019 543 544 545 546 547 --- ** The 'newline-and-indent' command (commonly bound to 'RET' in many modes) now takes an optional numeric argument to specify how many times is should insert newlines (and indent).  Tino Calancha committed Aug 02, 2018 548 549 550 +++ ** New command 'make-empty-file'.  Noam Postavsky committed Sep 29, 2017 551 552 553 554 555 --- ** 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).  Philipp Stephani committed Oct 01, 2017 556 +++  Eli Zaretskii committed Dec 22, 2017 557 558 559 560 ** 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  Eli Zaretskii committed Jan 13, 2018 561 562 typographic quotes, “like this”, in text modes, and in comments in non-text modes.  Philipp Stephani committed Oct 01, 2017 563   Reuben Thomas committed Sep 10, 2018 564 565 566 567 568 569 570 --- ** 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.  Allen Li committed Feb 17, 2018 571 572 573 574 575 --- ** 'write-abbrev-file' now includes special properties. 'write-abbrev-file' now writes special properties like ':case-fixed' for abbrevs that have them.  Allen Li committed Sep 29, 2018 576 +++  Allen Li committed Oct 12, 2018 577 578 579 ** '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.  Allen Li committed Sep 29, 2018 580   Lars Ingebrigtsen committed Apr 17, 2018 581 +++  Paul Eggert committed Apr 26, 2018 582 583 ** The new functions and commands 'text-property-search-forward' and 'text-property-search-backward' have been added. These provide an  Michael Albinus committed Nov 13, 2018 584 interface that's more like functions like 'search-forward'.  Lars Ingebrigtsen committed Apr 17, 2018 585   Juri Linkov committed Apr 23, 2018 586 587 --- ** More commands support noncontiguous rectangular regions, namely  Juri Linkov committed Sep 22, 2019 588 'upcase-dwim', 'downcase-dwim', 'capitalize-dwim', 'capitalize-region',  Paul Eggert committed Sep 22, 2019 589 590 'upcase-initials-region', 'replace-string', 'replace-regexp', and 'delimit-columns-region'.  Juri Linkov committed Apr 23, 2018 591   Eli Zaretskii committed Jun 16, 2018 592 593 594 595 596 597 598 +++ ** 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.  Juri Linkov committed Sep 27, 2018 599 ---  Michael Albinus committed Nov 13, 2018 600 601 602 603 ** '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.  Juri Linkov committed Sep 27, 2018 604   Robert Pluim committed Feb 04, 2019 605 +++  Michael Albinus committed May 06, 2019 606 ** Network connections using 'local' can now use IPv6.  Robert Pluim committed Feb 04, 2019 607 'make-network-process' now uses the correct loopback address when  Michael Albinus committed May 06, 2019 608 asked to use ':host 'local' and ':family 'ipv6'.  Robert Pluim committed Feb 04, 2019 609   Tassilo Horn committed Feb 23, 2019 610 +++  Michael Albinus committed May 06, 2019 611 ** The new function 'replace-region-contents' replaces the current  Tassilo Horn committed Feb 23, 2019 612 region using a given replacement-function in a non-destructive manner  Michael Albinus committed May 06, 2019 613 (in terms of 'replace-buffer-contents').  Tassilo Horn committed Feb 23, 2019 614 615  +++  Michael Albinus committed May 06, 2019 616 ** The command 'replace-buffer-contents' now has two optional  Tassilo Horn committed Feb 23, 2019 617 618 619 arguments mitigating performance issues when operating on huge buffers.  Mattias Engdegård committed Nov 27, 2019 620 621 622 +++ ** Dragging 'C-M-mouse-1' now marks rectangular regions.  Basil L. Contovounesios committed May 01, 2019 623 +++  Eli Zaretskii committed Mar 22, 2019 624 625 626 627 ** 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.  Łukasz Stelmach committed Mar 22, 2019 628   João Távora committed Dec 04, 2019 629 630 631 632 633 634 635 --- ** New customizable variable 'jit-lock-antiblink-grace'. When typing strings, this helps avoid "blinking", an oscillation between string and non-string fontification. The variable holds a number of seconds (default is 2) before a potentially unwanted fontification starts. Set to nil to get back the old behavior.  Michael Albinus committed Nov 25, 2015 636   Eli Zaretskii committed Sep 16, 2017 637 * Changes in Specialized Modes and Packages in Emacs 27.1  Karl Chen committed Oct 24, 2016 638   Lars Ingebrigtsen committed Nov 03, 2019 639 640 641 642 643 --- ** New HTML mode skeleton 'html-id-anchor'. This new command (which inserts an _ skeleton) is bound to 'C-c C-c #'.  Lars Ingebrigtsen committed Oct 30, 2019 644 645 646 647 648 649 +++ ** New command 'font-lock-refontify'. This is an interactive convenience function to be used when developing font locking for a mode. It recomputes the font locking data and then re-fontifies the buffer.  Lars Ingebrigtsen committed Oct 14, 2019 650 651 --- ** The 'C' command in 'tar-mode' will now preserve the timestamp of  Michael Albinus committed Oct 16, 2019 652 the extracted file if the new user option 'tar-copy-preserve-time' is  Lars Ingebrigtsen committed Oct 14, 2019 653 654 non-nil.  Lars Ingebrigtsen committed Aug 25, 2019 655 656 657 658 --- ** 'autoconf-mode' is now used instead of 'm4-mode' for the acinclude.m4/aclocal.m4/acsite.m4 files.  Lars Ingebrigtsen committed Aug 23, 2019 659 ---  Lars Ingebrigtsen committed Aug 25, 2019 660 661 ** On GNU/Linux, 'M-x battery' will now list all batteries, no matter what they're named, and the 'battery-linux-sysfs-regexp' variable has  Lars Ingebrigtsen committed Aug 23, 2019 662 663 been removed.  Lars Ingebrigtsen committed Aug 15, 2019 664 665 666 ** The 'list-processes' command now includes port numbers in the network connection information (in addition to the host name).  Lars Ingebrigtsen committed Aug 25, 2019 667 ** The 'cl' package is now officially deprecated in favor of 'cl-lib'.  Stefan Monnier committed Aug 06, 2019 668   Juanma Barranquero committed Sep 26, 2019 669 670 671 672 673 --- ** desktop *** When called interactively with a prefix arg 'C-u', 'desktop-read' now prompts the user for the directory containing the desktop file.  Juanma Barranquero committed Oct 06, 2019 674 675 +++ ** display-line-numbers-mode  Juanma Barranquero committed Oct 09, 2019 676   Juanma Barranquero committed Oct 06, 2019 677 *** New faces 'line-number-major-tick' and 'line-number-minor-tick',  Michael Albinus committed Oct 16, 2019 678 and user options 'display-line-numbers-major-tick' and  Juanma Barranquero committed Oct 06, 2019 679 680 681 'display-line-numbers-minor-tick' can be used to highlight the line numbers of lines multiple of certain numbers.  Michael Albinus committed Oct 16, 2019 682 *** New variable 'display-line-numbers-offset', when non-zero, adds  Juanma Barranquero committed Oct 09, 2019 683 684 an offset to absolute line numbers.  Thierry Volpiatto committed Jun 27, 2019 685 686 +++ ** winner  Michael Albinus committed Oct 16, 2019 687 *** A new user option, 'winner-boring-buffers-regexp', has been added.  Thierry Volpiatto committed Jun 27, 2019 688   Aaron S. Hawley committed Jun 27, 2019 689 ** table  Michael Albinus committed Jul 28, 2019 690 ** 'table-generate-source' and friends now support outputting wiki and  Aaron S. Hawley committed Jun 27, 2019 691 692 mediawiki format tables.  Emilio C. Lopes committed Jun 25, 2019 693 694 --- ** telnet-mode  Michael Albinus committed Jul 28, 2019 695 *** Reverting a buffer in 'telnet-mode' will restart a closed connection.  Emilio C. Lopes committed Jun 25, 2019 696   Phil Sainty committed Jun 25, 2019 697 698 699 ** goto-addr *** A way to more conveniently specify what URI address schemes that should be ignored have been added via the  Michael Albinus committed Jul 28, 2019 700 'goto-address-uri-schemes-ignored' variable.  Phil Sainty committed Jun 25, 2019 701   Eli Zaretskii committed Jun 25, 2019 702 +++  Stefan Monnier committed Jun 24, 2019 703 ** tex-mode  Stefan Monnier committed Jun 25, 2019 704 *** 'latex-noindent-commands' controls indentation of certain commands.  Michael Albinus committed Oct 16, 2019 705 You can use this new user option to control indentation of arguments of  Stefan Monnier committed Jun 25, 2019 706 \emph, \footnote, and similar commands.  Stefan Monnier committed Jun 24, 2019 707   Stefan Monnier committed Jun 21, 2019 708 ** byte compiler  Michael Albinus committed Jul 28, 2019 709 *** 'byte-compile-dynamic' is now obsolete.  Stefan Monnier committed Jun 21, 2019 710 711 712 713 This is because on the one hand it suffers from various misbehaviors in corner cases that have plagued it for years, and on the other experiments indicated that it doesn't bring any measurable benefit.  Lars Ingebrigtsen committed Oct 01, 2019 714 715 716 717 718 --- *** The 'g' keystroke in *Compile-Log* buffers has been bound to a new command that will recompile the file previously compiled with 'M-x byte-compile-file' and the like.  Stefan Monnier committed Apr 03, 2019 719 720 ** compile.el ---  Michael Albinus committed May 06, 2019 721 722 *** In 'compilation-error-regexp-alist', 'line' (and 'end-line') can be functions.  Alan Mackenzie committed Aug 25, 2019 723 724 725 726 727 +++ *** 'compilation-context-lines' can now take the value t; this is like nil, but instead of scrolling the current line to the top of the screen when there is no left fringe, it inserts a visible arrow before column zero.  Lars Ingebrigtsen committed Oct 10, 2019 728 ---  Michael Albinus committed Oct 16, 2019 729 730 731 *** The new 'compilation-transform-file-match-alist' user option can be used to transform file name matches compilation output, and remove known false positives being recognised as warnings/errors.  Stefan Monnier committed Apr 03, 2019 732   Michael Albinus committed May 06, 2019 733 ** cl-lib.el  Eli Zaretskii committed Apr 02, 2019 734 +++  Michael Albinus committed May 06, 2019 735 736 *** 'cl-defstruct' has a new ':noinline' argument to prevent inlining its functions.  Stefan Monnier committed Apr 02, 2019 737   Stefan Monnier committed Jul 29, 2019 738 +++  Michael Albinus committed Oct 16, 2019 739 *** 'cl-defstruct' slots accept a ':documentation' property.  Stefan Monnier committed Jul 29, 2019 740   Lars Ingebrigtsen committed Jul 28, 2019 741 ---  Michael Albinus committed Jul 28, 2019 742 *** 'cl-values-list' will now signal an error if its argument isn't a list.  Lars Ingebrigtsen committed Jul 28, 2019 743   Michael Albinus committed May 06, 2019 744 745 ** doc-view.el *** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'.  Federico Tedin committed Feb 04, 2019 746 *** Added support for password-protected PDF files  Stefan Monnier committed Jan 23, 2019 747   Michael Albinus committed Oct 16, 2019 748 749 *** A new user option 'doc-view-pdftotext-program-args' has been added to allow controlling how the conversion to text is done.  Lars Ingebrigtsen committed Sep 29, 2019 750   Philipp Stephani committed Apr 19, 2019 751 752 753 754 755 ** 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.  Juri Linkov committed Jun 03, 2019 756 757 ** Minibuffer  Juri Linkov committed Nov 09, 2019 758 759 760 *** Scrolling and recentering commands in the minibuffer are invoked on the original window (that was selected before activating the minibuffer).  Lars Ingebrigtsen committed Oct 01, 2019 761 +++  Michael Albinus committed Oct 16, 2019 762 *** A new user option, 'minibuffer-beginning-of-buffer-movement', has  Lars Ingebrigtsen committed Oct 01, 2019 763 764 765 766 been introduced to allow controlling how the 'M-<' command works in the minibuffer. If non-nil, point will move to the end of the prompt (if point is after the end of the prompt).  Juri Linkov committed Jun 03, 2019 767 768 769 770 --- *** Minibuffer now uses 'minibuffer-message' to display error messages at the end of the active minibuffer.  Juri Linkov committed Nov 27, 2019 771 772 773 774 +++ *** The function 'message' now displays the message at the end of the minibuffer when the minibuffer is active.  Juri Linkov committed Nov 10, 2019 775 776 777 +++ *** 'y-or-n-p' now uses the minibuffer to read 'y' or 'n' answer.  Juri Linkov committed Nov 10, 2019 778 779 780 *** Some commands that previously used read-char-choice now read a character using the minibuffer by read-char-from-minibuffer.  Stefan Monnier committed Dec 11, 2018 781 ** map.el  Michael Albinus committed Dec 22, 2018 782 783 *** Now also understands plists. *** Now defined via generic functions that can be extended via 'cl-defmethod'.  Stefan Monnier committed Dec 11, 2018 784 *** Deprecate the 'map-put' macro in favor of a new 'map-put!' function.  Stefan Monnier committed Dec 17, 2018 785 *** 'map-contains-key' now returns a boolean rather than the key.  Stefan Monnier committed Dec 11, 2018 786 *** Deprecate the 'testfn' args of 'map-elt' and 'map-contains-key'.  Stefan Monnier committed Dec 17, 2018 787 *** New generic function 'map-insert'.  Stefan Monnier committed Dec 11, 2018 788   NicolasPetton committed Jan 02, 2019 789 +++  Eli Zaretskii committed Oct 26, 2019 790 *** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'  Andrea Corallo committed Oct 11, 2019 791   NicolasPetton committed Jan 02, 2019 792 793 794 795 ** 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.  NicolasPetton committed Mar 21, 2019 796 797 798 The new predicate function 'seq-contains-p' should be used instead of the now obsolete 'seq-contains'.  Alan Mackenzie committed Oct 19, 2018 799 800 801 802 --- ** 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  Michael Albinus committed Nov 16, 2018 803 back, customize 'follow-hide-ghost-cursors' to nil.  Alan Mackenzie committed Oct 19, 2018 804   Glenn Morris committed Jun 16, 2019 805 806 807 +++ ** New variable 'warning-fill-column' for 'display-warning'.  Juri Linkov committed Nov 08, 2018 808 809 ** Windmove  Juri Linkov committed Nov 25, 2018 810 811 812 *** 'windmove-create-window' when non-nil makes a new window on moving off the edge of the frame.  Juri Linkov committed Nov 16, 2018 813 *** Windmove supports directional window display and selection.  Michael Albinus committed Nov 16, 2018 814 815 The new command 'windmove-display-default-keybindings' binds default keys with provided modifiers (by default, Shift-Meta) to the commands  Juri Linkov committed Nov 16, 2018 816 that display the next buffer in the window at the specified direction.  Michael Albinus committed Nov 16, 2018 817 This is like 'windmove-default-keybindings' that binds keys to commands  Juri Linkov committed Nov 16, 2018 818 819 that select the window in the specified direction, but additionally it displays the buffer from the next command in that window. For example,  Michael Albinus committed May 06, 2019 820 'S-M-right C-h i' displays the "*Info*" buffer in the right window,  Juri Linkov committed Nov 16, 2018 821 822 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'  Juri Linkov committed Dec 05, 2019 823 824 displays the "*Messages*" buffer in the same window. 'S-M-t C-h C-n' displays NEWS in a new tab.  Juri Linkov committed Nov 16, 2018 825   Juri Linkov committed Nov 25, 2018 826 827 *** Windmove also supports directional window deletion. The new command 'windmove-delete-default-keybindings' binds default  Michael Albinus committed Dec 22, 2018 828 829 keys with provided prefix (by default, 'C-x') and modifiers (by default, 'Shift') to the commands that delete the window in the specified  Juri Linkov committed Nov 25, 2018 830 direction. For example, 'C-x S-down' deletes the window below.  Juri Linkov committed Dec 21, 2018 831 With a prefix arg 'C-u', also kills the buffer in that window.  Michael Albinus committed Dec 22, 2018 832 With 'M-0', deletes the selected window and selects the window  Juri Linkov committed Dec 21, 2018 833 that was in the specified direction.  Juri Linkov committed Nov 08, 2018 834   Juri Linkov committed Feb 27, 2019 835 836 837 838 *** 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.  Juanma Barranquero committed Oct 25, 2019 839 840 841 842 843 844 845 *** Windmove code no longer used is now obsolete. That includes the user option 'windmove-window-distance-delta' and the functions 'windmove-coord-add', 'windmove-constrain-to-range', 'windmove-constrain-around-range', 'windmove-frame-edges', 'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement', 'windmove-reference-loc' and 'windmove-other-window-loc'.  Stefan Monnier committed Oct 15, 2018 846 847 848 849 ** Octave mode The mode is automatically enabled in files that start with the 'function' keyword.  Stefan Monnier committed Sep 22, 2018 850 ** project.el  Juri Linkov committed May 14, 2019 851   Dmitry Gutov committed Feb 14, 2019 852 *** New commands 'project-search' and 'project-query-replace-regexp'.  Stefan Monnier committed Sep 22, 2018 853   Michael Albinus committed Oct 16, 2019 854 *** New user option 'project-read-file-name-function'.  Juri Linkov committed May 14, 2019 855   Stefan Monnier committed Sep 22, 2018 856 ** Etags  Michael Albinus committed Nov 16, 2018 857   Stefan Monnier committed Sep 22, 2018 858 +++  Michael Albinus committed Nov 16, 2018 859 860 861 *** 'next-file' is now an obsolete alias of 'tags-next-file'. *** 'tags-loop-revert-buffers' is an obsolete alias of  Dmitry Gutov committed Feb 07, 2019 862 'fileloop-revert-buffers'.  Michael Albinus committed Nov 16, 2018 863 864 865  *** The 'tags-loop-continue' function along with the 'tags-loop-operate' and 'tags-loop-scan' variables are now obsolete;  Dmitry Gutov committed Feb 07, 2019 866 use the new 'fileloop-initialize' and 'fileloop-continue' functions  Michael Albinus committed Nov 16, 2018 867 instead.  Stefan Monnier committed Sep 22, 2018 868   Alexander Gramiak committed Jun 24, 2019 869 870 871 +++ *** etags is now able to read Zstandard-compressed files.  Alex Branham committed Aug 27, 2018 872 ** bibtex  Michael Albinus committed Nov 16, 2018 873 874  ---  Alex Branham committed Aug 27, 2018 875 *** New commands 'bibtex-next-entry' and 'bibtex-previous-entry'.  Michael Albinus committed Nov 16, 2018 876 In 'bibtex-mode-map', 'forward-paragraph' and 'backward-paragraph' are  Alex Branham committed Aug 27, 2018 877 878 remapped to these, respectively.  Tino Calancha committed Aug 02, 2018 879 880 ** Dired  Lars Ingebrigtsen committed Oct 14, 2019 881 ---  Eli Zaretskii committed Oct 14, 2019 882 883 *** On systems that support suid/guid files, Dired now fontifies the permissions of such files with a special face 'dired-set-id'.  Lars Ingebrigtsen committed Oct 14, 2019 884   Michael Albinus committed Nov 16, 2018 885 +++  Tino Calancha committed Aug 02, 2018 886 887 *** New command 'dired-create-empty-file'.  Lars Ingebrigtsen committed Jun 25, 2019 888 +++  Michael Albinus committed Jul 28, 2019 889 890 *** New command and keystroke 'dired-number-of-marked-files' bound to '* N'.  Lars Ingebrigtsen committed Jun 25, 2019 891   Drew Adams committed Jun 25, 2019 892 893 894 *** The marking commands now report how many files were marked by the command itself, not how many files are marked in total.  Lars Ingebrigtsen committed Jul 28, 2019 895 ---  Juri Linkov committed Aug 05, 2019 896 *** A new face, 'dired-special', is used to highlight sockets, named  Lars Ingebrigtsen committed Jul 28, 2019 897 898 pipes, block devices and character devices.  Juri Linkov committed Oct 27, 2019 899 900 901 902 903 904 +++ *** The new user option 'dired-create-destination-dirs' controls whether 'dired-do-copy' and 'dired-rename-file' should create non-existent directories in the destination. +++  Juri Linkov committed Nov 12, 2019 905 906 *** 'dired-dwim-target' can be customized to prefer either the next window, or one of the most recently visited windows with a Dired buffer.  Juri Linkov committed Oct 27, 2019 907   Juri Linkov committed Nov 07, 2019 908 909 910 *** When the new user option 'dired-vc-rename-file' is non-nil, Dired performs file renaming using underlying version control system.  Roland Winkler committed Jun 11, 2019 911 912 ** Find-Dired  Michael Albinus committed Oct 16, 2019 913 *** New user option 'find-dired-refine-function'.  Roland Winkler committed Jun 11, 2019 914 915 The default value is 'find-dired-sort-by-filename'.  Michael Albinus committed Oct 16, 2019 916 *** New sorting options for the user option 'find-ls-option'.  Juri Linkov committed Jun 20, 2019 917   Alexander Gramiak committed Jun 24, 2019 918 919 920 921 --- *** Zstandard compression is now supported for 'dired-do-compress' and 'dired-do-compress-to'.  João Távora committed Jul 21, 2018 922 923 ** Change Logs and VC  Eli Zaretskii committed Oct 26, 2019 924 925 926 927 928 929 --- *** New user option 'vc-tor'. When non-nil, this option causes the VC commands to communicate with the repository via Tor's proxy, using the 'torsocks' wrapper script. The default is nil.  Noam Postavsky committed Aug 03, 2019 930 +++  Michael Albinus committed Oct 16, 2019 931 *** New command 'log-edit-generate-changelog-from-diff', bound to 'C-c C-w'.  Noam Postavsky committed Aug 03, 2019 932 933 This generates ChangeLog entries from the VC fileset diff.  Robert Pluim committed Oct 21, 2019 934 935 936 937 938 *** 'vc-dir' now shows a button allowing you to hide the stash list. Controlled by user option 'vc-git-show-stash'. Default t means show the entire list as before. An integer value limits the list length (but still allows you to show the entire list via the button).  Eli Zaretskii committed Jul 21, 2018 939 *** Recording ChangeLog entries doesn't require an actual file.  Michael Albinus committed Oct 16, 2019 940 If a ChangeLog file doesn't exist, and if the new user option  Eli Zaretskii committed Jul 21, 2018 941 942 943 'add-log-dont-create-changelog-file' is non-nil (which is the default), commands such as 'C-x 4 a' will add log entries to a suitable named temporary buffer. (An existing ChangeLog file will  Michael Albinus committed Oct 16, 2019 944 still be used if it exists.) Set the user option to nil to get the  Eli Zaretskii committed Jul 21, 2018 945 946 previous behavior of always creating a buffer that visits a ChangeLog file.  João Távora committed Jul 21, 2018 947   Michael Albinus committed Oct 16, 2019 948 *** New user option 'vc-find-revision-no-save'.  Juri Linkov committed Nov 14, 2018 949 950 With non-nil, 'vc-find-revision' doesn't write the created buffer to file.  Wolfgang Scherer committed Sep 15, 2019 951 ---  Michael Albinus committed Oct 16, 2019 952 *** 'vc-dir-ignore' now takes a prefix argument to ignore all marked files.  Wolfgang Scherer committed Sep 15, 2019 953   Michael Albinus committed Oct 16, 2019 954 955 *** New user option 'vc-git-grep-template'. This new user option allows customizing the default arguments passed to  Michael Albinus committed Nov 16, 2018 956 'git-grep' when 'vc-git-grep' is used.  Federico Tedin committed Sep 04, 2018 957   Michael Albinus committed May 06, 2019 958 *** Command 'vc-git-stash' now respects marks in the "*vc-dir*" buffer.  Sam Steingold committed Sep 30, 2018 959 960 961 When some files are marked, only those are stashed. When no files are marked, all modified files are stashed, as before.  Lars Ingebrigtsen committed Oct 30, 2019 962 963 964 *** 'vc-git-stash' has now been bound to the 'C' keystroke in the stash headers.  Robert Pluim committed Oct 31, 2019 965 966 967 968 *** Some stash keybindings are now available in the stash button. 'vc-git-stash' and 'vc-git-stash-snapshot' can now be run using 'C' and 'S' respectively, including when there are no stashes.  Charles A. Roelli committed Oct 08, 2018 969 970 *** The new hook 'vc-retrieve-tag-hook' runs after retrieving a tag.  Eli Zaretskii committed Nov 03, 2018 971 972 973 --- *** 'vc-hg' now invokes 'smerge-mode' when visiting files. Code that attempted to invoke 'smerge-mode' when visiting an Hg file  Daniel Pittman committed Nov 03, 2018 974 975 976 977 with conflicts existed in earlier versions of Emacs, but incorrectly never detected a conflict due to invalid assumptions about cached values.  Eli Zaretskii committed Nov 21, 2019 978 979 980 981 982 +++ *** The Hg (Mercurial) back-end now supports 'vc-region-history'. The 'C-x v h' command now works in buffers that visit files controlled by Hg.  Andrii Kolomoiets committed Nov 30, 2019 983 984 985 986 987 988 989