From: Paul Eggert Date: Sun, 1 Jan 2017 09:02:47 +0000 (-0800) Subject: Merge from origin/emacs-25 X-Git-Tag: emacs-26.0.90~968 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=61848d2da32bb889d714fcddcb7dfd6dfa1b502d;p=emacs.git Merge from origin/emacs-25 697167b ; Improve wording of previous change in variables.texi d7973e8 Document 'default-toplevel-value' and 'set-default-toplevel-v... 8b71826 Don't modify minibuffer variables globally 5b5e036 Revert to pre-25.1 behavior in ffap 19994a1 * lisp/ffap.el: Fix obsolete comment referencing ffap-bug. 3ace730 Attempt to fix 64-bit AIX build f69bd79 Clarify usage of 'ediff-cleanup-hook' (Bug#24675) c04ac8a Document that variable binding order is unspecified 272554a * lisp/desktop.el (desktop-buffers-not-to-save): Doc fix. 08de101 Fix M-x hints on Mac port 86a297a Work around reporting a dpi change in apply_xft_settings cf1f985 ; lisp/skeleton.el (skeleton-insert): Fix typo in last change 9e1209d Amend the version number of CC Mode 5.33 -> 5.32.99. Don't m... 88cdf14 Improve skeleton docstrings --- 61848d2da32bb889d714fcddcb7dfd6dfa1b502d diff --cc etc/NEWS index e2ada7c1be3,38975a7fa1e..5eb295ff02e --- a/etc/NEWS +++ b/etc/NEWS @@@ -15,422 -15,618 +15,429 @@@ NEWS.19, NEWS.18, and NEWS.1-17 for cha You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing C-u C-h C-n. - -* Changes in Emacs 25.2 -This is a bug-fix release with (almost) no new features. - ---- -** 'find-library', 'help-function-def' and 'help-variable-def' now run -'find-function-after-hook'. - -+++ -** New basic face 'fixed-pitch-serif', for a fixed-width font with serifs. -The 'Info-quoted' and 'tex-verbatim' faces now default to inheriting -from it. - ---- -** New variable 'use-default-font-for-symbols' for backward compatibility. -This variable allows to get back pre-Emacs 25 behavior whereby the -font for displaying symbol and punctuation characters was always -selected according to your fontset setup. Emacs 25 by default tries -to use the default face's font for such characters, disregarding the -fontsets if the default font supports these characters. Set this -variable to nil to disable the new behavior and get back the old -behavior. - -+++ -** 'electric-quote-mode' is no longer suppressed in a buffer whose -whose coding system cannot represent curved quote characters. -Instead, users can deal with the unrepresentable characters in the -usual way when they save the buffer. - ---- -** New variable 'inhibit-compacting-font-caches'. -Set this variable to a non-nil value to speed up display of characters -using large fonts, at the price of a larger memory footprint of the -Emacs session. +Temporary note: ++++ indicates that all necessary documentation updates are complete. + (This means all relevant manuals in doc/ AND lisp doc-strings.) +--- means no change in the manuals is needed. +When you add a new item, use the appropriate mark if you are sure it applies, + +++ + ** The version number of CC Mode has been changed from 5.33 to + 5.32.99, although the software itself hasn't changed. This aims to + reduce confusion with the standalone CC Mode 5.33 (available from + http://cc-mode.sourceforge.net), which is a more mature version than + the one in Emacs 25.2. + -* Installation Changes in Emacs 25.1 - -** Building Emacs now requires C99 or later. - -** Building Emacs now requires GNU make, version 3.81 or later. - -** New configure option --with-cairo. -This builds Emacs with Cairo drawing. As a side effect, it provides -support for built-in printing, when Emacs was built with GTK+. -The Emacs Cairo drawing is experimental and still has some known -display problems. We encourage more testing of this build and -reporting any problems you find, but it is not recommended for -production. - -** New configure option --with-modules. -This enables support for loading dynamic modules; see below. - -** By default, Emacs no longer works on IRIX. We expect that Emacs -users are not affected by this, as SGI stopped supporting IRIX in -December 2013. If you are affected, please send a bug report. You -should be able to work around the problem either by porting the Emacs -undumping code to GCC under IRIX, or by configuring --with-wide-int, -or by sticking with Emacs 24.4. - -** The Emacs garbage collector assumes GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. -The GC_MAKE_GCPROS_NOOPS stack-marking variant has been the default -since Emacs 24.4, and the other variants were undocumented and were -obstacles to maintenance and development. GC_MARK_STACK and its -related symbols have been removed from the C internals. - -** 'configure' now prefers gnustep-config when configuring GNUstep. -If gnustep-config is not available, the old heuristics are used. - -** 'configure' now prefers inotify to gfile for file notification, -unless gfile is explicitly requested via --with-file-notification='gfile'. +* Installation Changes in Emacs 26.1 -** 'configure' detects the kqueue file notification library on *BSD -and macOS machines. +** By default libgnutls is now required when building Emacs. +Use 'configure --with-gnutls=no' to build even when GnuTLS is missing. -** The configure option '--with-pkg-config-prog' has been removed. -Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to. +** GnuTLS version 2.12.2 or later is now required, instead of merely +version 2.6.6 or later. -** The configure option '--with-mmdf' has been removed. -It was no longer useful, as it relied on libraries that are no longer -supported, and its presence led to confusion during configuration. -This affects only the 'movemail' utility; Emacs itself can still -process MMDF-format files as before. +** The new option 'configure --enable-gcc-warnings=warn-only' causes +GCC to issue warnings without stopping the build. This behavior is +now the default in developer builds. As before, use +'--disable-gcc-warnings' to suppress GCC's warnings, and +'--enable-gcc-warnings' to stop the build if GCC issues warnings. -** The configure option '--enable-silent-rules' is now the default, -and silent rules are now quieter. To get the old behavior where -'make' chatters a lot, configure with '--disable-silent-rules' or -build with 'make V=1'. - -** The configure option '--with-gameuser' now allows you to specify a -group instead of a user if its argument is prefixed by ':' (a colon). -This will cause the game score files in "${localstatedir}/games/emacs" -to be owned by that group, and the helper program for updating them to -be installed setgid. The option now defaults to the 'games' group. - -** The 'grep-changelog' script (and its manual page) are no longer included. -It has no particular connection to Emacs and has not changed in years, -so if you want to use it, you can always take a copy from an older Emacs. - -** Emacs 25 comes with a new set of icons. -Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png. -The old Emacs logo icons are available as 'emacs23.png' in the same location. ++++ +** The Emacs server now has socket-launching support. This allows +socket based activation, where an external process like systemd can +invoke the Emacs server process upon a socket connection event and +hand the socket over to Emacs. Emacs uses this socket to service +emacsclient commands. This new functionality can be disabled with the +configure option '--disable-libsystemd'. -** New make target 'check-expensive' to run additional tests. -This includes all tests which run via "make check", plus additional -tests which take more time to perform. ++++ +** A systemd user unit file is provided. Use it in the standard way: +systemctl --user enable emacs +(If your Emacs is installed in a non-standard location, you may +need to copy the emacs.service file to eg ~/.config/systemd/user/) + +** New configure option '--disable-build-details' attempts to build an +Emacs that is more likely to be reproducible; that is, if you build +and install Emacs twice, the second Emacs is a copy of the first. +Deterministic builds omit the build date from the output of the +emacs-version and erc-cmd-SV functions, and the leave the following +variables nil: emacs-build-system, emacs-build-time, +erc-emacs-build-time. + +** Emacs no longer works on IRIX. We expect that Emacs users are not +affected by this, as SGI stopped supporting IRIX in December 2013. -* Startup Changes in Emacs 25.1 +* Startup Changes in Emacs 26.1 -** When Emacs is given a file as a command line argument and -'initial-buffer-choice' is non-nil, display both the file and -'initial-buffer-choice'. When Emacs is given more than one file and -'initial-buffer-choice' is non-nil, show 'initial-buffer-choice' -and '*Buffer List*'. This makes Emacs convenient to use from the -command line when 'initial-buffer-choice' is non-nil. - -** The value of 'initial-scratch-message' is now treated as a doc string -and can contain escape sequences for command keys, quotes, and the like. - -** The default height of GUI frames was enlarged. -This is so there's enough space in the initial window to display the -optional text about recovering crashes sessions, without losing the -splash image display. - - -* Changes in Emacs 25.1 - -** Xwidgets: a new feature for embedding native widgets inside Emacs buffers. -If you have gtk3 and webkitgtk3 installed, and Emacs was built with -xwidget support, you can access the embedded webkit browser with 'M-x -xwidget-webkit-browse-url'. This opens a new buffer with the embedded -browser. The buffer will have a new mode, 'xwidget-webkit-mode' -(similar to 'image-mode'), which supports the webkit widget. - -*** New functions for xwidget-webkit mode 'xwidget-webkit-insert-string', -'xwidget-webkit-adjust-size-dispatch', 'xwidget-webkit-back', -'xwidget-webkit-browse-url', 'xwidget-webkit-reload', -'xwidget-webkit-current-url', 'xwidget-webkit-scroll-backward', -'xwidget-webkit-scroll-forward', 'xwidget-webkit-scroll-down', -'xwidget-webkit-scroll-up'. - -** Emacs can now load shared/dynamic libraries (modules). -A dynamic Emacs module is a shared library that provides additional -functionality for use in Emacs Lisp programs, just like a package -written in Emacs Lisp would. The functions 'load', 'require', -'load-file', etc. were extended to load such modules, as they do with -Emacs Lisp packages. The new variable 'module-file-suffix' holds the -system-dependent value of the file-name extension ('.so' on Posix -hosts) of the module files. - -A module should export a C-callable function named -'emacs_module_init', which Emacs will call as part of the call to -'load' or 'require' which loads the module. It should also export a -symbol named 'plugin_is_GPL_compatible' to indicate that its code is -released under the GPL or compatible license; Emacs will refuse to -load modules that don't export such a symbol. - -If a module needs to call Emacs functions, it should do so through the -API defined and documented in the header file 'emacs-module.h'. Note -that any module that provides Lisp-callable functions will have to use -Emacs functions such as 'fset' and 'funcall', in order to register its -functions with the Emacs Lisp interpreter. - -Modules can create 'user-ptr' Lisp objects that embed pointers to C -structs defined by the module. This is useful for keeping around -complex data structures created by a module, to be passed back to the -module's functions. User-ptr objects can also have associated -"finalizers" -- functions to be run when the object is GC'ed; this is -useful for freeing any resources allocated for the underlying data -structure, such as memory, open file descriptors, etc. A new -predicate 'user-ptrp' returns non-nil if its argument is a 'user-ptr' -object. - -Loadable modules in Emacs are an experimental feature, and subject to -change in future releases. For that reason, their support is disabled -by default, and must be enabled by using the '--with-modules' option -at configure time. - -** Network security (TLS/SSL certificate validity and the like) is -added via the new Network Security Manager (NSM) and controlled via -the 'network-security-level' variable. - -** 'C-h l' now also lists the commands that were run. - -** 'x-select-enable-clipboard' is renamed 'select-enable-clipboard' -and 'x-select-enable-primary' is renamed 'select-enable-primary'. -Additionally they both now apply to all systems (macOS, GNUstep, -MS-Windows, you name it), with the proviso that on some systems (e.g., -MS-Windows) 'select-enable-primary' is ineffective since the system -doesn't have the equivalent of a primary selection. - -** New option 'switch-to-buffer-in-dedicated-window' allows you to -customize how 'switch-to-buffer' proceeds interactively when the -selected window is strongly dedicated to its buffer. - -** The option 'even-window-heights' has been renamed to -'even-window-sizes' and now handles window widths as well. - -** 'terpri' gets an optional arg ENSURE to conditionally output a newline. - -** 'insert-register' now leaves point after the inserted text -when called interactively. A prefix argument toggles this behavior. - -** The new variable 'term-file-aliases' replaces some files from lisp/term. -The function 'tty-run-terminal-initialization' consults this variable -when deciding what terminal-specific initialization code to run. - -** New variable 'system-configuration-features', listing some of the -main features that Emacs was compiled with. This is mainly intended -for use in Emacs bug reports. - -** A password is now hidden also when typed in batch mode. Another -hiding character but the default '.' can be used by let-binding the -variable 'read-hide-char'. - -** The Emacs pseudo-random number generator can be securely seeded. -On systems where Emacs can access the system entropy or some other -cryptographically secure random stream, it now uses that when 'random' -is called with its argument t. This allows cryptographically strong -random values; in particular, the Emacs server now uses this facility -to produce its authentication key. - -** New input methods: 'tamil-dvorak', 'programmer-dvorak' and 'probhat'. +** New option '--new-daemon'. This is the same as '--daemon', except +it runs in the foreground and does not fork. This is intended for +modern init systems such as systemd, which manage many of the traditional +aspects of daemon behavior themselves. '--old-daemon' is now an alias +for '--daemon'. -* Editing Changes in Emacs 25.1 +* Changes in Emacs 26.1 -** 'M-x' suggests shorthands and ignores obsolete commands for completion. - -** Changes in undo - -*** Successive single-char deletions are collapsed in the undo-log just like -successive char insertions. Which commands invoke this behavior is -controlled by the new 'undo-auto-amalgamate' function. See the node -"Undo" in the ELisp manual for more details. ++++ +** The new function 'mapbacktrace' applies a function to all frames of +the current stack trace. -*** The heuristic used to insert 'undo-boundary' after each command -has changed, so that if a command causes changes in more than just the -current buffer, Emacs now calls 'undo-boundary' in every buffer -affected by the command. ++++ +** Emacs now provides a limited form of concurrency with Lisp threads. +Concurrency in Emacs Lisp is "mostly cooperative", meaning that +Emacs will only switch execution between threads at well-defined +times: when Emacs waits for input, during blocking operations related +to threads (such as mutex locking), or when the current thread +explicitly yields. Global variables are shared among all threads, but +a 'let' binding is thread-local. Each thread also has its own current +buffer and its own match data. + +See the chapter "Threads" in the ELisp manual for full documentation +of these facilities. -** New command 'comment-line' bound to 'C-x C-;'. ++++ +** The new function 'file-name-case-insensitive-p' tests whether a +given file is on a case-insensitive filesystem. -** New and improved facilities for inserting Unicode characters ++++ +** The new user variable 'electric-quote-chars' provides a list +of curved quotes for 'electric-quote-mode', allowing user to choose +the types of quotes to be used. -*** Unicode names entered via 'C-x 8 RET' now use substring completion -by default. ++++ +** The new user variable 'dired-omit-case-fold' allows the user to +customize the case-sensitivity of dired-omit-mode. It defaults to +the same sensitivity as that of the filesystem for the corresponding +dired buffer. -*** 'C-x 8' now has shorthands for several chars, such as U+2010 -(HYPHEN), U+2011 (NON-BREAKING HYPHEN), and U+2012 (FIGURE DASH). As -before, you can type 'C-x 8 C-h' to list shorthands. ++++ +** Emacs now uses double buffering to reduce flicker when editing and +resizing graphical Emacs frames on the X Window System. This support +requires the DOUBLE-BUFFER extension, which major X servers have +supported for many years. -*** New minor mode 'electric-quote-mode' for using curved quotes as you -type. See also the new variable 'text-quoting-style'. +--- +The group 'wp', whose label was "text", is now deprecated. +Use the new group 'text', which inherits from 'wp', instead. -** New minor mode 'global-eldoc-mode' is enabled by default. ++++ +** The new function 'call-shell-region' executes a command in an +inferior shell with the buffer region as input. -** Emacs now uses "bracketed paste mode" on text terminals that support it. -Bracketed paste mode causes text terminals to wrap pasted text in special -escape sequences that allow Emacs to tell the difference between text -you type and text you paste from other applications. Emacs then -avoids interpreting each character in the pasted text as it does with -keyboard input, which results in a paste experience similar to that -under a window system, and significant performance improvements when -pasting large amounts of text. ++++ +** The new user option 'shell-command-dont-erase-buffer' controls +if the output buffer is erased between shell commands; if non-nil, +the output buffer is not erased; this variable also controls where +to set the point in the output buffer: beginning of the output, +end of the buffer or save the point. +When 'shell-command-dont-erase-buffer' is nil, the default value, +the behavior of 'shell-command', 'shell-command-on-region' and +'async-shell-command' is as usual. -Bracketed paste mode is disabled by default, so Emacs automatically -enables it at startup if the terminal supports it. ++++ +** The new user option 'mouse-select-region-move-to-beginning' +controls the position of point when double-clicking mouse-1 on the end +of a parenthetical grouping or string-delimiter: the default value nil +keeps point at the end of the region, setting it to non-nil moves +point to the beginning of the region. -** Emacs now supports the latest version of the UBA. -The Emacs implementation of the Unicode Bidirectional Algorithm (UBA) -was updated to support all the latest additions and changes introduced -in Unicode Standard versions 6.3, 7.0, and the latest Unicode 8.0. -This includes full support for directional isolates and the -Bidirectional Parentheses Algorithm (BPA) specified by these Unicode -standards. ++++ +** The new user option 'confirm-kill-processes' allows the user to +skip a confirmation prompt for killing subprocesses when exiting +Emacs. When set to t (the default), Emacs will prompt for +confirmation before killing subprocesses on exit, which is the same +behavior as before. -** You can access 'mouse-buffer-menu' ('C-down-mouse-1') using 'C-f10'. +--- +** 'find-library-name' will now fall back on looking at 'load-history' +to try to locate libraries that have been loaded with an explicit path +outside 'load-path'. -** New buffer-local 'electric-pair-local-mode'. ++++ +** Faces in 'minibuffer-prompt-properties' no longer overwrite properties +in the text in functions like 'read-from-minibuffer', but instead are +added to the end of the face list. This allows users to say things +like '(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'. -** New variable 'fast-but-imprecise-scrolling' inhibits -fontification during full screen scrolling operations, giving less -hesitant operation during auto-repeat of 'C-v', 'M-v' at the cost of -possible inaccuracies in the end position. ++++ +** The new variable 'extended-command-suggest-shorter' has been added +to control whether to suggest shorter 'M-x' commands or not. -** New documentation command 'describe-symbol'. -Works for functions, variables, faces, etc. It is bound to 'C-h o' by -default. +--- +** icomplete now respects 'completion-ignored-extensions'. -** New function 'custom-prompt-customize-unsaved-options' checks for -unsaved customizations and prompts user to customize (if found). It -is intended for adding to 'kill-emacs-query-functions'. ++++ +** Non-breaking hyphens are now displayed with the 'nobreak-hyphen' +face instead of the 'escape-glyph' face. -** The old 'C-x w' bindings in 'hi-lock-mode' are officially deprecated -in favor of the global 'M-s h' bindings introduced in Emacs 23.1. -They'll disappear soon. ++++ +** Approximations to quotes are now displayed with the new 'homoglyph' +face instead of the 'escape-glyph' face. - -* Changes in Specialized Modes and Packages in Emacs 25.1 +--- +** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt +part of minibuffers. -** Checkdoc +--- +** 'find-library' now takes a prefix argument to pop to a different +window. -*** New command 'checkdoc-package-keywords' checks if the -current package keywords are recognized. Set the new option -'checkdoc-package-keywords-flag' to non-nil to make -'checkdoc-current-buffer' call this function automatically. +--- +** 'process-attributes' on Darwin systems now returns more information. -*** New function 'checkdoc-file' checks for style errors. -It's meant for use together with 'compile': -emacs -batch --eval "(checkdoc-file \"subr.el\")" ++++ +** Several accessors for the value returned by 'file-attributes' +have been added. They are: 'file-attribute-type', +'file-attribute-link-number', 'file-attribute-user-id', +'file-attribute-group-id', 'file-attribute-access-time', +'file-attribute-modification-time', +'file-attribute-status-change-time', 'file-attribute-size', +'file-attribute-modes', 'file-attribute-inode-number', +'file-attribute-device-number' and 'file-attribute-collect'. -** Desktop ++++ +** The new function 'buffer-hash' computes a fast, non-consing hash of +a buffer's contents. -*** The desktop format version has been upgraded from 206 to 208. -Although Emacs 25.1 can read a version 206 desktop, earlier Emacsen -cannot read a version 208 desktop. To upgrade your desktop file, you -must explicitly request the upgrade, by 'C-u M-x desktop-save'. You are -recommended to do this as soon as you have firmly upgraded to Emacs -25.1 (or later). Should you ever need to downgrade your desktop file -to version 206, you can do this with 'C-u C-u M-x desktop-save'. +--- +** 'fill-paragraph' no longer marks the buffer as changed unless it +actually changed something. -*** 'desktop-restore-in-current-display' now defaults to t, not nil. -That is, Emacs by default now restores frames into the current display. +--- +** The locale language name 'ca' is now mapped to the language +environment 'Catalan', which has been added. -** New function 'bookmark-set-no-overwrite' bound to 'C-x r M'. -It raises an error if a bookmark of that name already exists, -unlike 'bookmark-set' which silently updates an existing bookmark. +--- +** 'align-regexp' has a separate history for its interactive argument. +'align-regexp' no longer shares its history with all other +history-less functions that use 'read-string'. -** Gnus ++++ +** The networking code has been reworked so that it's more +asynchronous than it was (when specifying :nowait t in +'make-network-process'). How asynchronous it is varies based on the +capabilities of the system, but on a typical GNU/Linux system the DNS +resolution, the connection, and (for TLS streams) the TLS negotiation +are all done without blocking the main Emacs thread. To get +asynchronous TLS, the TLS boot parameters have to be passed in (see +the manual for details). + +Certain process oriented functions (like 'process-datagram-address') +will block until socket setup has been performed. The recommended way +to deal with asynchronous sockets is to avoid interacting with them +until they have changed status to "run". This is most easily done +from a process sentinel. + +** 'make-network-process' and 'open-network-stream' sometimes allowed +:service to be an integer string (e.g., :service "993") and sometimes +required an integer (e.g., :service 993). This difference has been +eliminated, and integer strings work everywhere. + +** It is possible to disable attempted recovery on fatal signals. + +Two new variables support disabling attempts to recover from stack +overflow and to avoid automatic auto-save when Emacs is delivered a +fatal signal. 'attempt-stack-overflow-recovery', if set to 'nil', +will disable attempts to recover from C stack overflows; Emacs will +then crash as with any other fatal signal. +'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will +disable attempts to auto-save the session and shut down in an orderly +fashion when Emacs receives a fatal signal; instead, Emacs will +terminate immediately. Both variables are non-'nil' by default. +These variables are for users who would like to avoid the small +probability of data corruption due to techniques Emacs uses to recover +in these situations. -*** New user options 'mm-html-inhibit-images' and 'mm-html-blocked-images' -now control how mm-* functions fetch and display images in an HTML -message. Gnus still uses 'gnus-inhibit-images' and 'gnus-blocked-images' -for that purpose, i.e., binds mm-html- variables with those gnus- -variables, but other packages do not have to bind gnus- variables now. ++++ +** File local and directory local variables are now initialized each +time the major mode is set, not just when the file is first visited. +These local variables will thus not vanish on setting a major mode. -*** 'mm-inline-text-html-with-images' has been removed. -Use 'mm-html-inhibit-images' instead. Note that the value is opposite -in meaning. ++++ +** A second dir-local file (.dir-locals-2.el) is now accepted. +See the variable 'dir-locals-file-2' for more information. -** IMAP ++++ +** Connection-local variables can be used to specify local variables +with a value depending on the connected remote server. For details, +see the node "Connection Local Variables" in the ELisp manual. -*** 'imap-ssl-program' has been removed, and imap.el uses the internal -GnuTLS encryption functions if possible. +--- +** International domain names (IDNA) are now encoded via the new +puny.el library, so that one can visit web sites with non-ASCII URLs. -** JSON ++++ +** The new 'timer-list' command lists all active timers in a buffer, +where you can cancel them with the 'c' command. -*** 'json-encode-string' now only escapes the characters it has to. -Which means that the encoded strings can contain non-ASCII characters. ++++ +** The new function 'read-multiple-choice' prompts for multiple-choice +questions, with a handy way to display help texts. -*** 'json-pretty-print' and 'json-pretty-print-buffer' now maintain -the ordering of object keys by default. ++++ +** 'switch-to-buffer-preserve-window-point' now defaults to t. -*** New commands 'json-pretty-print-ordered' and -'json-pretty-print-buffer-ordered' pretty prints JSON objects with -object keys sorted alphabetically. ++++ +** The new variable 'debugger-stack-frame-as-list' allows displaying +all call stack frames in a Lisp backtrace buffer as lists. Both +debug.el and edebug.el have been updated to heed to this variable. -** Prettify Symbols mode ++++ +** The new variable 'x-ctrl-keysym' has been added to the existing +roster of X keysyms. It can be used in combination with another +variable of this kind to swap modifiers in Emacs. -*** Prettify Symbols mode supports custom composition predicates. By -overriding the default 'prettify-symbols-compose-predicate', modes can -specify in which contexts a symbol may be displayed as some Unicode -character. 'prettify-symbols-default-compose-p' is the default which -is suitable for most programming languages such as C or Lisp (but not -(La)TeX). +--- +** New input methods: 'cyrillic-tuvan', 'polish-prefix'. -*** Symbols can be unprettified while point is inside them. -New variable 'prettify-symbols-unprettify-at-point' configures this. ++++ +** File name quoting by adding the prefix "/:" is now possible for the +local part of a remote file name. Thus, if you have a directory named +"/~" on the remote host "foo", you can prevent it from being +substituted by a home directory by writing it as "/foo:/:/~/file". -** Enhanced xterm support + +* Editing Changes in Emacs 26.1 -*** The new variable 'xterm-screen-extra-capabilities' for configuring xterm. -This variable tells Emacs which advanced capabilities are available in -the xterm terminal emulator used to display Emacs text-mode frames. -The default is to check each capability, and use it if available. -(This variable was introduced in Emacs 24.1, but was not announced in -its NEWS.) ++++ +** New bindings for 'query-replace-map'. +'undo', undo the last replacement; bound to 'u'. +'undo-all', undo all replacements; bound to 'U'. -*** Killing text now also sets the CLIPBOARD/PRIMARY selection -in the surrounding GUI (using the OSC-52 escape sequence). This only works -if your xterm supports it and enables the 'allowWindowOps' options (disabled -by default at least in Debian, for security reasons). +** 'delete-trailing-whitespace' deletes whitespace after form feed. +In modes where form feed was treated as a whitespace character, +'delete-trailing-whitespace' would keep lines containing it unchanged. +It now deletes whitespace after the last form feed thus behaving the +same as in modes where the character is not whitespace. -Similarly, you can yank the CLIPBOARD/PRIMARY selection (using the OSC-52 -escape sequence) if your xterm has the feature enabled but for that you -additionally need to add 'getSelection' to 'xterm-extra-capabilities'. +** No more prompt about changed file when the file's content is unchanged. +Instead of only checking the modification time, Emacs now also checks +the file's actual content before prompting the user. -*** 'xterm-mouse-mode' now supports mouse-tracking (if your xterm supports it). + +* Changes in Specialized Modes and Packages in Emacs 26.1 -** The way to turn on and off 'save-place' mode has changed. -It is no longer sufficient to load the saveplace library and set -'save-place' non-nil. Instead, use the two new minor modes: -'save-place-mode' turns on saving last place in every file, and -'save-place-local-mode' does that only for the file in whose buffer it -is invoked. The 'save-place' variable is now an obsolete alias for -'save-place-mode', which replaces it, and 'toggle-save-place' is an -obsolete alias for the new 'save-place-local-mode' command. +** TeX: Add luatex and xetex as alternatives to pdftex -** ERC +** Electric-Buffer-menu -*** ERC can now hide message types by network or channel. -'erc-hide-list' will hide all messages of the specified type, while -'erc-network-hide-list' and 'erc-channel-hide-list' will only hide the -specified message types for the respective specified targets. ++++ +*** Key 'U' is bound to 'Buffer-menu-unmark-all' and key 'M-DEL' is +bound to 'Buffer-menu-unmark-all-buffers'. -*** Reconnection is now asynchronous. +** bs -*** Nick completion is now case-insensitive again after inadvertently -being made case-sensitive in Emacs 24.2. +--- +*** Two new commands 'bs-unmark-all', bound to 'U', and +'bs-unmark-previous', bound to . -** MPC +** Buffer-menu -*** New commands, key binds, and menu items. ++++ +*** Two new commands 'Buffer-menu-unmark-all', bound to 'U' and +'Buffer-menu-unmark-all-buffers', bound to 'M-DEL'. -**** '<' and '>' for navigating previous and next tracks in playlist +** Ibuffer -**** New play/pause command 'mpc-toggle-play' bound to 's' +--- +*** New filter commands `ibuffer-filter-by-basename', +`ibuffer-filter-by-file-extension', `ibuffer-filter-by-directory', +`ibuffer-filter-by-starred-name', `ibuffer-filter-by-modified' +and `ibuffer-filter-by-visiting-file'; bound respectively +to '/b', '/.', '//', '/*', '/i' and '/v'. -**** 'g' bound to new command 'mpc-seek-current' will navigate current -track. +--- +*** Two new commands 'ibuffer-filter-chosen-by-completion' +and `ibuffer-and-filter', the second bound to '/&'. -**** New commands 'mpc-toggle-{consume,repeat,single,shuffle}' for -toggling playback modes. +--- +*** The commands `ibuffer-pop-filter', `ibuffer-pop-filter-group', +`ibuffer-or-filter' and `ibuffer-filter-disable' have the alternative +bindings '/', '/S-', '/|' and '/DEL', respectively. -*** Now supports connecting to a UNIX domain socket. +--- +*** The data format specifying filters has been extended to allow +explicit logical 'and', and a more flexible form for logical 'not'. +See 'ibuffer-filtering-qualifiers' doc string for full details. -*** Looks at more image file names to use as album art. -Case-insensitively tries for .folder.png (freedesktop) and folder.jpg -(XP) in addition to cover.jpg. +--- +*** A new command 'ibuffer-copy-buffername-as-kill'; bound +to 'B'. -*** Searches in more locations for MPD configuration files. -MPD supports the XDG base directory specification since version 0.17.6. +--- +*** New command 'ibuffer-change-marks'; bound to '* c'. -** Midnight-mode +--- +*** A new command 'ibuffer-mark-by-locked' to mark +all locked buffers; bound to '% L'. -*** 'midnight-mode' is now a proper minor mode. +--- +*** A new option 'ibuffer-locked-char' to indicate +locked buffers; Ibuffer shows a new column displaying +'ibuffer-locked-char' for locked buffers. -*** clean-buffer-*-regexps can now specify buffers via predicate functions. +--- +*** A new command 'ibuffer-unmark-all-marks' to unmark +all buffers without asking confirmation; bound to +'U'; 'ibuffer-do-replace-regexp' bound to 'r'. -** package.el +--- +*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers +whose content matches a regexp; bound to '% g'. -*** New "external" package status. -An external package is any installed package that's not built-in and -not from 'package-user-dir', which usually means it's from an entry in -'package-directory-list'. They are treated much like built-in -packages, in that they cannot be deleted through the package menu and -are not considered for upgrades. +--- +*** Two new options 'ibuffer-never-search-content-name' and +'ibuffer-never-search-content-mode' used by +'ibuffer-mark-by-content-regexp'. -The effect is that a user can manually place a specific version of a -package inside 'package-directory-list' and the package menu will -always respect that. +** Browse-URL -*** If a package is available on multiple archives and one has higher -priority (as per 'package-archive-priorities') only that one is -listed. This can be configured with 'package-menu-hide-low-priority'. +*** Support for opening links to man pages in Man or WoMan mode. -*** 'package-menu-toggle-hiding' now toggles the hiding of packages. -This includes the above-mentioned low-priority packages, as well as -available packages whose version is lower than the currently installed -version (which were previously impossible to display). -This allows users to downgrade a package if a lower version is -available. +** Comint -*** When filtering the package menu, keywords starting with "arc:" or -"status:" represent package archive or status, respectively, instead -of actual keywords. +--- +*** New user option 'comint-move-point-for-matching-input' to control +where to place point after C-c M-r and C-c M-s. -*** Most functions which involve downloading information now take an -ASYNC argument. If it is non-nil, package.el performs the download(s) -asynchronously. +** Compilation mode -*** New variable 'package-menu-async' controls whether the -package-menu uses asynchronous downloads. +--- +*** Messages from CMake are now recognized. -*** 'package-install-from-buffer' and 'package-install-file' work on directories. -This follows the same rules as installing from a .tar file, except the --pkg file is optional. +** Dired -*** Packages which are dependencies of other packages cannot be deleted. -The FORCE argument to 'package-delete' overrides this. ++++ +*** A new option 'dired-always-read-filesystem' default to nil. +If non-nil, buffers visiting files are reverted before search them; +for instance, in 'dired-mark-files-containing-regexp' a non-nil value +of this option means the file is revisited in a temporary buffer; +this temporary buffer is the actual buffer searched: the original buffer +visiting the file is not modified. -*** New custom variable 'package-selected-packages' tracks packages -which were installed by the user (as opposed to installed as -dependencies). This variable can also be manually customized. ++++ +*** In wdired, when editing files to contain slash characters, +the resulting directories are automatically created. Whether to do +this is controlled by the 'wdired-create-parent-directories' variable. -*** New command 'package-install-selected-packages' installs all -packages from 'package-selected-packages' which are currently missing. ++++ +*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for +viewing HTML files and the like. -*** 'package-install' function now takes a DONT-SELECT argument. If -this function is called interactively or if DONT-SELECT is nil, add the -package being installed to 'package-selected-packages'. +** Edebug -*** New command 'package-autoremove' removes all packages which were -installed strictly as dependencies but are no longer needed. +*** Edebug can be prevented from pausing 1 second after reaching a +breakpoint (e.g. with "f" and "o") by customizing the new option +'edebug-sit-on-break'. -** Shell +** Eshell -When you invoke 'shell' interactively, the '*shell*' buffer will now -display in a new window. However, you can customize this behavior via -the 'display-buffer-alist' variable. For example, to get -the old behavior -- '*shell*' buffer displays in current window -- use -(add-to-list 'display-buffer-alist - '("^\\*shell\\*$" . (display-buffer-same-window))). - -** EIEIO -*** The ':protection' slot option is not obeyed any more. -*** The 'newname' argument to constructors is optional&deprecated. -If you need your objects to be named, do it by inheriting from 'eieio-named'. -*** The -list-p and -child-p functions are declared obsolete. -*** The variables are declared obsolete. -*** The variables are declared obsolete. -*** defgeneric and defmethod are declared obsolete. -Use the equivalent facilities from cl-generic.el instead. -*** 'constructor' is now an obsolete alias for 'make-instance'. -*** 'pcase' accepts a new UPattern 'eieio'. - -** ido - -*** New command 'ido-bury-buffer-at-head' bound to 'C-S-b'. -Bury the buffer at the head of 'ido-matches', analogous to how 'C-k' -kills the buffer at head. - -*** A prefix argument to 'ido-restrict-to-matches' will reverse its -meaning, and the list is restricted to those elements that do not -match the current input. - -** Minibuffer - -*** You can use and arrow keys to move through history by lines. -The new commands 'next-line-or-history-element' and -'previous-line-or-history-element', bound to and in the -minibuffer, allow by-line movement through minibuffer history, -similarly to an ordinary buffer. Only when point moves over -the bottom/top of the minibuffer it goes to the next/previous history -element. 'M-p' and 'M-n' still move directly to previous/next history -item as before. - -** Search and Replace - -*** 'isearch' and 'query-replace' can now perform character folding in matches. -This is analogous to case folding, but instead of disregarding case -variants, it disregards wider classes of distinctions between similar -characters. (Case folding is a special case of character folding.) -This means many characters in the search string will match entire -groups of characters instead of just themselves. - -For instance, the ASCII double quote character " will match all -variants of double quotes, and the letter 'a' will match all of its -accented cousins, even those composed of multiple characters, as well -as many other symbols like U+249C (PARENTHESIZED LATIN SMALL LETTER -A). - -Character folding is enabled by customizing 'search-default-mode' to -the value 'char-fold-to-regexp'. You can also toggle character -folding in the middle of a search by typing 'M-s ''. - -'query-replace' honors character folding if the new variable -'replace-char-fold' is customized to a non-nil value. - -*** New user option 'search-default-mode'. -This option specifies the default mode for Isearch. The default -value, nil specifies that Isearch does literal searches (however, -'case-fold-search' and 'isearch-lax-whitespace' may still be applied, -as in previous Emacs versions). - -*** New function 'char-fold-to-regexp' can be used -by searching commands to produce a regexp matching anything that -char-folds into STRING. - -*** The new 'M-s M-w' key binding uses eww to search the web for the -text in the region. The search engine to use for this is specified by -the customizable variable 'eww-search-prefix'. - -*** 'query-replace' history is enhanced. -When 'query-replace' reads the FROM string from the minibuffer, typing -'M-p' will now show previous replacements as "FROM SEP TO", where FROM -and TO are the original text and its replacement, and SEP is an arrow -string defined by the new variable 'query-replace-from-to-separator'. -To select a prior replacement, type 'M-p' until the desired -replacement appears in the minibuffer, and then exit the minibuffer by -typing RET. - -** Calc -*** If 'quick-calc' is called with a prefix argument, insert the -result of the calculation into the current buffer. - -** In Edebug, you can now set the initial mode with 'C-x C-a C-m'. -With this you can tell Edebug not to stop at the start of the first -instrumented function. - -** ElDoc - -*** New minor mode 'global-eldoc-mode'. -It is turned on by default, and affects '*scratch*' and other buffers -whose major mode supports Emacs Lisp. - -*** 'eldoc-documentation-function' now defaults to 'ignore'. - -*** 'describe-char-eldoc' displays information about character at point, -and can be used as a default value of 'eldoc-documentation-function'. It is -useful when, for example, one needs to distinguish various spaces - e.g., -U+00A0 (NO-BREAK SPACE), U+2002 (EN SPACE), and U+2009 (THIN SPACE) - while -using mono-spaced font. +*** 'eshell-input-filter's value is now a named function +'eshell-input-filter-default', and has a new custom option +'eshell-input-filter-initial-space' to ignore adding commands prefixed +with blank space to eshell history. ** eww