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