diff options
Diffstat (limited to 'etc')
74 files changed, 4535 insertions, 2783 deletions
diff --git a/etc/CALC-NEWS b/etc/CALC-NEWS index 07167c95661..d00f136f917 100644 --- a/etc/CALC-NEWS +++ b/etc/CALC-NEWS @@ -10,18 +10,9 @@ Originally written by: San Jose CA 95134 daveg@synaptics.com, uunet!synaptx!daveg -Currently maintained by: +Calc was maintained for many years by: Jay Belanger <jay.p.belanger@gmail.com> -I am anxious to hear about your experiences using Calc. Send mail to -"jay.p.belanger@gmail.com". A bug report is most useful if you include the -exact input and output that occurred, any modes in effect (such as the -current precision), and so on. If you find Calc is difficult to operate -in any way, or if you have other suggestions, don't hesitate to let me -know. If you find errors (including simple typos) in the manual, let me -know. Even if you find no bugs at all I would love to hear your opinions. - - Summary of changes to "Calc" ------- -- ------- -- ---- diff --git a/etc/CENSORSHIP b/etc/CENSORSHIP deleted file mode 100644 index cd779e4915c..00000000000 --- a/etc/CENSORSHIP +++ /dev/null @@ -1,8 +0,0 @@ -Censoring my Software - -Note added March 2014: - -This file is obsolete and will be removed in future. -Please update any references to use - -<https://www.gnu.org/philosophy/censoring-emacs.html> diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1 index 24b8b39ec1c..4317cfcb038 100644 --- a/etc/ChangeLog.1 +++ b/etc/ChangeLog.1 @@ -3395,7 +3395,7 @@ * MORE.STUFF: Update some links, remove some dead ones. -2007-04-04 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> +2007-04-04 Sławomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> * emacs.py (format_exception): New function. (eexecfile): Use it instead of traceback.print_exception. @@ -3770,7 +3770,7 @@ (section{TODO Items and Checkboxes}): Checkbox keys moved to this section, added documentation for the key `C-c #'. -2006-11-05 Slawomir Nowaczyk <slawek@cs.lth.se> +2006-11-05 Sławomir Nowaczyk <slawek@cs.lth.se> * emacs.py (eargs): Provide eldoc message for builtin types. Make sure eargs always outputs sentinel, to avoid Emacs freeze. @@ -3861,7 +3861,7 @@ (eimport): Use __main__ rather than `emacs' namespace. (modpath): New fun. -2006-08-20 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> +2006-08-20 Sławomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> * emacs.py (eexecfile): Use the __main__ rather than `emacs' namespace. @@ -4122,7 +4122,7 @@ Stefan Monnier <monnier@iro.umontreal.ca>. * pl-refcard.tex (section{Info}): Ditto. Translation suggested by - Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>. + Sławomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>. * cs-refcard.tex (section{Info}): Use `s' instead of `M-s'. Entry for `i' is not translated yet. @@ -4854,7 +4854,7 @@ * NEWS: Lots of clarifications and cleanups. -2005-05-05 Slawomir Nowaczyk <slawek@cs.lth.se> +2005-05-05 Sławomir Nowaczyk <slawek@cs.lth.se> * TUTORIAL.pl: Updated header. @@ -5777,7 +5777,7 @@ * ps-prin0.ps: Changed comment version (6.0). -2000-08-24 Wlodzimierz Bzyl <matwb@univ.gda.pl> +2000-08-24 Włodzimierz Bzyl <matwb@univ.gda.pl> * survival.tex: New file. @@ -5852,7 +5852,7 @@ * refcard.bit: Removed. -2000-04-10 Wlodzimierz Bzyl <matwb@monika.univ.gda.pl> +2000-04-10 Włodzimierz Bzyl <matwb@monika.univ.gda.pl> * refcard-pl.ps: New file. * refcard-pl.tex: New file. diff --git a/etc/DEBUG b/etc/DEBUG index 377cfcfc8f7..836e820e4a4 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -12,24 +12,21 @@ debugging techniques. *** Configuring Emacs for debugging It is best to configure and build Emacs with special options that will -make the debugging easier. Here's the configure-time options we +make the debugging easier. Here are the configure-time options we recommend (they are in addition to any other options you might need, such as --prefix): ./configure --enable-checking='yes,glyphs' --enable-check-lisp-object-type \ CFLAGS='-O0 -g3' -The CFLAGS value is important: debugging optimized code can be very -hard. (If the problem only happens with optimized code, you may need -to enable optimizations. If that happens, try using -Og first, -instead of -O2, as the former will disable some optimizations that -make debugging some code exceptionally hard.) +The -O0 flag is important, as debugging optimized code can be hard. +If the problem happens only with optimized code, you may need to +enable optimizations. If that happens, try using -Og first instead of +-O2, as -Og disables some optimizations that make debugging some code +exceptionally hard. -Modern versions of GCC support more elaborate debug info that is -available by just using the -g3 compiler switch. Try using -gdwarf-4 -in addition to -g3, and if that fails, try -gdwarf-3. This is -especially important if you have to debug optimized code. More info -about this is available below; search for "analyze failed assertions". +Older versions of GCC may need more than just the -g3 flag. For more, +search for "analyze failed assertions" below. The 2 --enable-* switches are optional. They don't have any effect on debugging with GDB, but will compile additional code that might catch @@ -160,9 +157,10 @@ If you attached the debugger to a running Emacs, type "continue" into the *gud-emacs* buffer and press RET. Many variables you will encounter while debugging are Lisp objects. -These are displayed as integer values (or structures, if you used the -"--enable-check-lisp-object-type" option at configure time) that are -hard to interpret, especially if they represent long lists. You can +These are normally displayed as opaque pointers or integers that are +hard to interpret, especially if they represent long lists. +(They are instead displayed as structures containing these opaque +values, if --enable-check-lisp-object-type is in effect.) You can use the 'pp' command to display them in their Lisp form. That command displays its output on the standard error stream, which you can redirect to a file using "M-x redirect-debugging-output". @@ -183,20 +181,15 @@ Good luck! ** When you are trying to analyze failed assertions or backtraces, it is essential to compile Emacs with flags suitable for debugging. -With GCC 4.8 or later, you can invoke 'make' with CFLAGS="-Og -g3". -With older GCC or non-GCC compilers, you can use CFLAGS="-O0 -g3". +Although CFLAGS="-O0 -g3" often suffices with modern compilers, +you may benefit further by using CFLAGS="-O0 -g3 -gdwarf-4", replacing +"4" by the highest version of DWARF that your compiler supports; +this is especially important for GCC versions older than 4.8. With GCC and higher optimization levels such as -O2, the -fno-omit-frame-pointer and -fno-crossjumping options are often essential. The latter prevents GCC from using the same abort call for all assertions in a given function, rendering the stack backtrace useless for identifying the specific failed assertion. -Some versions of GCC support recent versions of the DWARF standard for -debugging info, but default to older versions; for example, they could -support -gdwarf-4 compiler option (for DWARF v4), but default to -version 2 of the DWARF standard. For best results in debugging -abilities, find out the highest version of DWARF your GCC can support, -and use the corresponding -gdwarf-N switch instead of just -g (you -will still need -g3, as in "-gdwarf-4 -g3"). ** It is a good idea to run Emacs under GDB (or some other suitable debugger) *all the time*. Then, when Emacs crashes, you will be able @@ -841,7 +834,7 @@ the machine where you started GDB and use the debugger from there. ** Debugging problems which happen in GC The array 'last_marked' (defined on alloc.c) can be used to display up -to 500 last objects marked by the garbage collection process. +to the 512 most-recent objects marked by the garbage collection process. Whenever the garbage collector marks a Lisp object, it records the pointer to that object in the 'last_marked' array, which is maintained as a circular buffer. The variable 'last_marked_index' holds the @@ -922,41 +915,97 @@ setting the new-console option before running Emacs under GDB: (gdb) set new-console 1 (gdb) run -** Running Emacs built with malloc debugging packages +** Running Emacs with undefined-behavior sanitization -If Emacs exhibits bugs that seem to be related to use of memory -allocated off the heap, it might be useful to link Emacs with a -special debugging library, such as Electric Fence (a.k.a. efence) or -GNU Checker, which helps find such problems. +Building Emacs with undefined-behavior sanitization can help find +several kinds of low-level problems in C code, including: -Emacs compiled with such packages might not run without some hacking, -because Emacs replaces the system's memory allocation functions with -its own versions, and because the dumping process might be -incompatible with the way these packages use to track allocated -memory. Here are some of the changes you might find necessary: + * Out-of-bounds access of many (but not all) arrays. + * Signed integer overflow, e.g., (INT_MAX + 1). + * Integer shifts by a negative or wider-than-word value. + * Misaligned pointers and pointer overflow. + * Loading a bool or enum value that is out of range for its type. + * Passing NULL to or returning NULL from a function requiring nonnull. + * Passing a size larger than the corresponding array to memcmp etc. + * Passing invalid values to some builtin functions, e.g., __builtin_clz (0). + * Reaching __builtin_unreachable calls (in Emacs, 'eassume' failure). - - Edit configure, to set system_malloc and CANNOT_DUMP to "yes". +To use UndefinedBehaviorSanitizer with GCC and similar compilers, +append '-fsanitize=undefined' to CFLAGS, either when running +'configure' or running 'make'. When supported, you can also specify +'bound-strict' and 'float-cast-overflow'. For example: - - Configure with a different --prefix= option. If you use GCC, - version 2.7.2 is preferred, as some malloc debugging packages - work a lot better with it than with 2.95 or later versions. + ./configure \ + CFLAGS='-O0 -g3 -fsanitize=undefined,bounds-strict,float-cast-overflow' - - Type "make" then "make -k install". +You may need to append '-static-libubsan' to CFLAGS if your version of +GCC is installed in an unusual location. - - If required, invoke the package-specific command to prepare - src/temacs for execution. +When using GDB to debug an executable with undefined-behavior +sanitization, the GDB command: - - cd ..; src/temacs + (gdb) rbreak ^__ubsan_handle_ -(Note that this runs 'temacs' instead of the usual 'emacs' executable. -This avoids problems with dumping Emacs mentioned above.) +will let you gain control when an error is detected and before +UndefinedBehaviorSanitizer outputs to stderr or terminates the +program. -Some malloc debugging libraries might print lots of false alarms for -bitfields used by Emacs in some data structures. If you want to get -rid of the false alarms, you will have to hack the definitions of -these data structures on the respective headers to remove the ':N' -bitfield definitions (which will cause each such field to use a full -int). +** Running Emacs with address sanitization + +Building Emacs with address sanitization can help debug memory-use +problems, such as freeing the same object twice. To use +AddressSanitizer with GCC and similar compilers, append +'-fsanitize=address' to CFLAGS, either when running 'configure' or +running 'make'. Configure, build and run Emacs with +ASAN_OPTIONS='detect_leaks=0' in the environment to suppress +diagnostics of minor memory leaks in Emacs. For example: + + export ASAN_OPTIONS='detect_leaks=0' + ./configure CFLAGS='-O0 -g3 -fsanitize=address' + make + src/emacs + +You may need to append '-static-libasan' to CFLAGS if your version of +GCC is installed in an unusual location. + +When using GDB to debug an executable with address sanitization, the +GDB command: + + (gdb) rbreak ^__asan_report_ + +will let you gain control when an error is detected and before +AddressSanitizer outputs to stderr or terminates the program. + +Address sanitization is incompatible with undefined-behavior +sanitization, unfortunately. Address sanitization is also +incompatible with the --with-dumping=unexec option of 'configure'. + +** Running Emacs under Valgrind + +Valgrind <http://valgrind.org/> is free software that can be useful +when debugging low-level Emacs problems. Unlike GCC sanitizers, +Valgrind does not need you to compile Emacs with special debugging +flags, so it can be helpful in investigating problems that vanish when +Emacs is recompiled with debugging enabled. However, by default +Valgrind generates many false alarms with Emacs, and you will need to +maintain a suppressions file to suppress these false alarms and use +Valgrind effectively. For example, you might invoke Valgrind this +way: + + valgrind --suppressions=valgrind.supp ./emacs + +where valgrind.supp contains groups of lines like the following, which +suppresses some Valgrind false alarms during Emacs garbage collection: + + { + Fgarbage_collect Cond - conservative garbage collection + Memcheck:Cond + ... + fun:Fgarbage_collect + } + +Unfortunately Valgrind suppression files tend to be system-dependent, +so you will need to keep one around that matches your system. ** How to recover buffer contents from an Emacs core dump file diff --git a/etc/FTP b/etc/FTP deleted file mode 100644 index ebd2695da17..00000000000 --- a/etc/FTP +++ /dev/null @@ -1,9 +0,0 @@ -For information about how to download GNU Emacs, please see: -<https://www.gnu.org/software/emacs/> - -For general GNU software downloading, please see -<https://www.gnu.org/order/ftp.html> - -Note added January 2014: -This file is obsolete and will be removed in future. -Please update any links to use the above URLs. diff --git a/etc/GNU b/etc/GNU deleted file mode 100644 index f8078d41cd3..00000000000 --- a/etc/GNU +++ /dev/null @@ -1,8 +0,0 @@ -The GNU Manifesto - -Note added March 2014: - -This file is obsolete and will be removed in future. -Please update any references to use - info node `(emacs)Manifesto' -instead. diff --git a/etc/GNUS-NEWS b/etc/GNUS-NEWS deleted file mode 100644 index a8b03857bd2..00000000000 --- a/etc/GNUS-NEWS +++ /dev/null @@ -1,316 +0,0 @@ -GNUS NEWS -- history of user-visible changes. - -Copyright (C) 1999-2019 Free Software Foundation, Inc. -See the end of the file for license conditions. - -Please send Gnus bug reports to bugs@gnus.org. -For older news, see Gnus info node "New Features". - - -* Supported Emacs versions The following Emacs versions are supported by No -Gnus: - -** Emacs 22 and up -** XEmacs 21.4 -** XEmacs 21.5 -** SXEmacs - - -* Installation changes - -** Upgrading from previous (stable) version if you have used No Gnus. - -If you have tried No Gnus (the unstable Gnus branch leading to this -release) but went back to a stable version, be careful when upgrading to -this version. In particular, you will probably want to remove the -'~/News/marks' directory (perhaps selectively), so that flags are read -from your '~/.newsrc.eld' instead of from the stale marks file, where -this release will store flags for nntp. See a later entry for more -information about nntp marks. Note that downgrading isn't safe in -general. - -** Incompatibility when switching from Emacs 23 to Emacs 22 In Emacs 23, -Gnus uses Emacs's new internal coding system 'utf-8-emacs' for saving -articles drafts and '~/.newsrc.eld'. These files may not be read -correctly in Emacs 22 and below. If you want to use Gnus across -different Emacs versions, you may set 'mm-auto-save-coding-system' to -'emacs-mule'. - -** Lisp files are now installed in '.../site-lisp/gnus/' by default. It -defaulted to '.../site-lisp/' formerly. In addition to this, the new -installer issues a warning if other Gnus installations which will shadow -the latest one are detected. You can then remove those shadows manually -or remove them using 'make remove-installed-shadows'. - -** The installation directory name is allowed to have spaces and/or tabs. - - -* New packages and libraries within Gnus - -** New version of 'nnimap' - -'nnimap' has been reimplemented in a mostly-compatible way. See the Gnus -manual for a description of the new interface. In particular, -'nnimap-inbox' and the client side split method has changed. - -** Gnus includes the Emacs Lisp SASL library. - -This provides a clean API to SASL mechanisms from within Emacs. The user -visible aspects of this, compared to the earlier situation, include -support for DIGEST-MD5 and NTLM. *Note Emacs SASL: (sasl)Top. - -** ManageSieve connections uses the SASL library by default. - -The primary change this brings is support for DIGEST-MD5 and NTLM, when -the server supports it. - -** Gnus includes a password cache mechanism in password.el. - -It is enabled by default (see 'password-cache'), with a short timeout of -16 seconds (see 'password-cache-expiry'). If PGG is used as the PGP back -end, the PGP passphrase is managed by this mechanism. Passwords for -ManageSieve connections are managed by this mechanism, after querying the -user about whether to do so. - -** Using EasyPG with Gnus When EasyPG, is available, Gnus will use it -instead of PGG. EasyPG is an Emacs user interface to GNU Privacy Guard. - *Note EasyPG Assistant user's manual: (epa)Top. EasyPG is included in -Emacs 23 and available separately as well. - - -* Changes in group mode - -** Symbols like 'gcc-self' now have the same precedence rules in -'gnus-parameters' as other "real" variables: The last match wins instead -of the first match. - -** Old intermediate incoming mail files ('Incoming*') are deleted after a -couple of days, not immediately. *Note Mail Source Customization::. -(New in Gnus 5.10.10 / No Gnus 0.8) - - -* Changes in summary and article mode - -** There's now only one variable that determines how HTML is rendered: -'mm-text-html-renderer'. - -** Gnus now supports sticky article buffers. Those are article buffers that -are not reused when you select another article. *Note Sticky Articles::. - -** Gnus can selectively display 'text/html' articles with a WWW browser with -'K H'. *Note MIME Commands::. - -** International host names (IDNA) can now be decoded inside article bodies -using 'W i' ('gnus-summary-idna-message'). This requires that GNU Libidn -(<https://www.gnu.org/software/libidn/>) has been installed. - -** The non-ASCII group names handling has been much improved. The back ends -that fully support non-ASCII group names are now 'nntp', 'nnml', and -'nnrss'. Also the agent, the cache, and the marks features work with -those back ends. *Note Non-ASCII Group Names::. - -** Gnus now displays DNS master files sent as text/dns using dns-mode. - -** Gnus supports new limiting commands in the Summary buffer: '/ r' -('gnus-summary-limit-to-replied') and '/ R' -('gnus-summary-limit-to-recipient'). *Note Limiting::. - -** You can now fetch all ticked articles from the server using 'Y t' -('gnus-summary-insert-ticked-articles'). *Note Summary Generation -Commands::. - -** Gnus supports a new sort command in the Summary buffer: 'C-c C-s C-t' -('gnus-summary-sort-by-recipient'). *Note Summary Sorting::. - -** S/MIME now features LDAP user certificate searches. You need to -configure the server in 'smime-ldap-host-list'. - -** URLs inside OpenPGP headers are retrieved and imported to your PGP key -ring when you click on them. - -** Picons can be displayed right from the textual address, see -'gnus-picon-style'. *Note Picons::. - -** ANSI SGR control sequences can be transformed using 'W A'. - -ANSI sequences are used in some Chinese hierarchies for highlighting -articles ('gnus-article-treat-ansi-sequences'). - -** Gnus now MIME decodes articles even when they lack "MIME-Version" header. -This changes the default of 'gnus-article-loose-mime'. - -** 'gnus-decay-scores' can be a regexp matching score files. For example, -set it to '\\.ADAPT\\'' and only adaptive score files will be decayed. - *Note Score Decays::. - -** Strings prefixing to the 'To' and 'Newsgroup' headers in summary lines -when using 'gnus-ignored-from-addresses' can be customized with -'gnus-summary-to-prefix' and 'gnus-summary-newsgroup-prefix'. *Note To -From Newsgroups::. - -** You can replace MIME parts with external bodies. See -'gnus-mime-replace-part' and 'gnus-article-replace-part'. *Note MIME -Commands::, *note Using MIME::. - -** The option 'mm-fill-flowed' can be used to disable treatment of -format=flowed messages. Also, flowed text is disabled when sending -inline PGP signed messages. *Note Flowed text: (emacs-mime)Flowed text. -(New in Gnus 5.10.7) - -** Now the new command 'S W' ('gnus-article-wide-reply-with-original') for a -wide reply in the article buffer yanks a text that is in the active -region, if it is set, as well as the 'R' -('gnus-article-reply-with-original') command. Note that the 'R' command -in the article buffer no longer accepts a prefix argument, which was used -to make it do a wide reply. *Note Article Keymap::. - -** The new command 'C-h b' ('gnus-article-describe-bindings') used in the -article buffer now shows not only the article commands but also the real -summary commands that are accessible from the article buffer. - - -* Changes in Message mode - -** Gnus now defaults to saving all outgoing messages in per-month nnfolder -archives. - -** Gnus now supports the "hashcash" client puzzle anti-spam mechanism. Use -'(setq message-generate-hashcash t)' to enable. *Note Hashcash::. - -** You can now drag and drop attachments to the Message buffer. See -'mml-dnd-protocol-alist' and 'mml-dnd-attach-options'. *Note MIME: -(message)MIME. - -** The option 'message-yank-empty-prefix' now controls how empty lines are -prefixed in cited text. *Note Insertion Variables: (message)Insertion -Variables. - -** Gnus uses narrowing to hide headers in Message buffers. The 'References' -header is hidden by default. To make all headers visible, use '(setq -message-hidden-headers nil)'. *Note Message Headers: (message)Message -Headers. - -** You can highlight different levels of citations like in the article -buffer. See 'gnus-message-highlight-citation'. - -** 'auto-fill-mode' is enabled by default in Message mode. See -'message-fill-column'. *Note Message Headers: (message)Various Message -Variables. - -** You can now store signature files in a special directory named -'message-signature-directory'. - -** The option 'message-citation-line-format' controls the format of the -"Whomever writes:" line. You need to set -'message-citation-line-function' to -'message-insert-formatted-citation-line' as well. - - -* Changes in Browse Server mode - -** Gnus' sophisticated subscription methods are now available in Browse -Server buffers as well using the variable -'gnus-browse-subscribe-newsgroup-method'. - - -* Changes in back ends - -** The nntp back end stores article marks in '~/News/marks'. - -The directory can be changed using the (customizable) variable -'nntp-marks-directory', and marks can be disabled using the (back end) -variable 'nntp-marks-is-evil'. The advantage of this is that you can -copy '~/News/marks' (using rsync, scp or whatever) to another Gnus -installation, and it will realize what articles you have read and marked. -The data in '~/News/marks' has priority over the same data in -'~/.newsrc.eld'. - -** You can import and export your RSS subscriptions from OPML files. *Note -RSS::. - -** IMAP identity (RFC 2971) is supported. - -By default, Gnus does not send any information about itself, but you can -customize it using the variable 'nnimap-id'. - -** The 'nnrss' back end now supports multilingual text. Non-ASCII group -names for the 'nnrss' groups are also supported. *Note RSS::. - -** Retrieving mail with POP3 is supported over SSL/TLS and with StartTLS. - -** The nnml back end allows other compression programs beside 'gzip' for -compressed message files. *Note Mail Spool::. - -** The nnml back end supports group compaction. - -This feature, accessible via the functions 'gnus-group-compact-group' ('G -z' in the group buffer) and 'gnus-server-compact-server' ('z' in the -server buffer) renumbers all articles in a group, starting from 1 and -removing gaps. As a consequence, you get a correct total article count -(until messages are deleted again). - - -* Appearance - -** The tool bar has been updated to use GNOME icons. You can also customize -the tool bars: 'M-x customize-apropos RET -tool-bar$' should get you -started. (Only for Emacs, not in XEmacs.) - -** The tool bar icons are now (de)activated correctly in the group buffer, -see the variable 'gnus-group-update-tool-bar'. Its default value depends -on your Emacs version. - -** You can change the location of XEmacs's toolbars in Gnus buffers. See -'gnus-use-toolbar' and 'message-use-toolbar'. - - -* Miscellaneous changes - -** New user option 'gnus-rcvstore-options' provides a way to -specify additional options when saving messages to an MH folder. - -** Having edited the select-method for the foreign server in the server -buffer is immediately reflected to the subscription of the groups which -use the server in question. For instance, if you change -'nntp-via-address' into 'bar.example.com' from 'foo.example.com', Gnus -will connect to the news host by way of the intermediate host -'bar.example.com' from next time. - -** The 'all.SCORE' file can be edited from the group buffer using 'W e'. - -** You can set 'gnus-mark-copied-or-moved-articles-as-expirable' to a -non-'nil' value so that articles that have been read may be marked as -expirable automatically when copying or moving them to a group that has -auto-expire turned on. The default is 'nil' and copying and moving of -articles behave as before; i.e., the expirable marks will be unchanged -except that the marks will be removed when copying or moving articles to -a group that has not turned auto-expire on. *Note Expiring Mail::. - -** NoCeM support has been removed. - -** Carpal mode has been removed. - -* For older news, see Gnus info node "New Features". - ----------------------------------------------------------------------- - -This file is part of GNU Emacs. - -GNU Emacs is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -GNU Emacs is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. - - -Local variables: -mode: outline -paragraph-separate: "[ ]*$" -end: diff --git a/etc/HELLO b/etc/HELLO index ae52e94b065..a56a73bc1d2 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -1,99 +1,127 @@ +Content-Type: text/enriched +Text-Width: 70 + This is a list of ways to say hello in various languages. It is not intended to be comprehensive, but to demonstrate some of the character sets that Emacs supports. + Non-ASCII examples: - Europe: ,A!(BHola!, Gr,A|_(B Gott, Hyv,Add(B p,Ad(Biv,Add(B, Tere ,Au(Bhtust, Bon,Cu(Bu - Cze,B6f(B!, Dobr,B}(B den, ,L7T`PRabRcYbU(B!, ,FCei\(B ,Fsar(B, $,1J2J0J;J0J@JOJ=J1J0(B - Africa: $(3!A!,!>(B - Middle/Near East: ,Hylem(B, $,1-g.$-s.1.$-g.%(B $,1-y.$.*.#.%(B - South Asia: $,19h9n9x:-9d:'(B, $,15h5n5x6-5d6'(B, $,1?(?.?8?M>u?>?0(B, $,1@H@N@X@m@5@^@P@"(B, $,1;6;A;#;?;,;G(B, - $,1AFAzB4AvB=B AqB*(B, $,1<U<C<5<m<5<N<m(B, $,1=h=n=x>-=U=~=p=B(B, $(7"7"!#C!;"E"S"G!;"7"2"[!;"D"["#"G!>(B - South East Asia: $,1\'\f\:\V\4\?\]\:(B, (1JP:R-4U(B, $,1H9H$HZHYH"H<HLH5HK(B, ,TJGQJ4U$CQ:(B, Ch,1`(Bo b,1U(Bn - East Asia: $ADc:C(B, $(0*/=((B, $B$3$s$K$A$O(B, $(C>H3gGO<<?d(B - Misc: E,C6(Bo,C~(Ban,Cx(Bo ,Cf(Biu,C<(Ba,C}(Bde, $,2(3(1('('(5(B, $,1x (B p $,1x((B world $,1s"(B hello p $,2!a(B - CJK variety: GB($AT*Fx(B,$A?*7"(B), BIG5($(0&x86(B,$(0DeBv(B), JIS($B855$(B,$B3+H/(B), KSC($(Cj*Q((B,$(CKR[!(B) - Unicode charset: E$,1 E(Bo$,1 }(Ban$,1 =(Bo $,1 )(Biu$,1 U(Ba$,1!-(Bde, $,1&s'5'9',(B $,1'C'1'B(B, $,1-),|,u,}(B, $,1(7(T(`(P(R(a(b(R(c(Y(b(U(B! + Europe: <x-charset><param>latin-iso8859-1</param>¡Hola!, Grüß Gott, Hyvää päivää,</x-charset><x-charset><param>latin-iso8859-15</param> Tere õhtust,</x-charset><x-charset><param>latin-iso8859-3</param> Bonġu + Cześć!,</x-charset><x-charset><param>latin-iso8859-2</param> Dobrý den,</x-charset><x-charset><param>cyrillic-iso8859-5</param> Здравствуйте!,</x-charset><x-charset><param>greek-iso8859-7</param> Γειά σας,</x-charset><x-charset><param>mule-unicode-0100-24ff</param> გამარჯობა</x-charset> + Africa:<x-charset><param>mule-unicode-0100-24ff</param> </x-charset><x-charset><param>ethiopic</param>ሠላም</x-charset> + Middle/Near East:<x-charset><param>hebrew-iso8859-8</param> שלום,</x-charset><x-charset><param>mule-unicode-0100-24ff</param> السّلام عليكم</x-charset> + South Asia:<x-charset><param>mule-unicode-0100-24ff</param> નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ଶୁଣିବେ, + ආයුබෝවන්, வணக்கம், నమస్కారం,</x-charset><x-charset><param>tibetan</param> བཀྲ་ཤིས་བདེ་ལེགས༎</x-charset> + South East Asia:<x-charset><param>mule-unicode-0100-24ff</param> ជំរាបសួរ,</x-charset><x-charset><param>lao</param> ສະບາຍດີ,</x-charset><x-charset><param>mule-unicode-0100-24ff</param> မင်္ဂလာပါ,</x-charset><x-charset><param>thai-tis620</param> สวัสดีครับ,</x-charset><x-charset><param>vietnamese-viscii-lower</param> </x-charset><x-charset><param>vietnamese-viscii-upper</param>C</x-charset><x-charset><param>vietnamese-viscii-lower</param>hào bạn</x-charset> + East Asia:<x-charset><param>chinese-gb2312</param> 你好,</x-charset><x-charset><param>chinese-big5-1</param> 早晨,</x-charset><x-charset><param>japanese-jisx0208</param> こんにちは,</x-charset><x-charset><param>korean-ksc5601</param> 안녕하세요</x-charset> + Misc:<x-charset><param>latin-iso8859-3</param> Eĥoŝanĝo ĉiuĵaŭde,</x-charset><x-charset><param>mule-unicode-2500-33ff</param> ⠓⠑⠇⠇⠕,</x-charset><x-charset><param>mule-unicode-0100-24ff</param> ∀ p ∈ world • hello p </x-charset><x-charset><param>mule-unicode-2500-33ff</param>□</x-charset> + CJK variety:<x-charset><param>chinese-gb2312</param> GB(元气,开发),</x-charset><x-charset><param>chinese-big5-1</param> BIG5(元氣,開發),</x-charset><x-charset><param>japanese-jisx0208</param> JIS(元気,開発),</x-charset><x-charset><param>korean-ksc5601</param> KSC(元氣,開發)</x-charset> + Unicode charset:<x-charset><param>unicode</param> Eĥoŝanĝo ĉiuĵaŭde, Γειά σας, שלום, Здравствуйте!</x-charset> + LANGUAGE (NATIVE NAME) HELLO ---------------------- ----- -Amharic ($,1O M[MmN{(B) $,1M`MKM](B -Arabic ($,1-g.$-y-q-h.*.1-i(B) $,1-g.$-s.1.$-g.%(B $,1-y.$.*.#.%(B -Armenian ($,1+p+a+u+e, +e+v(B) $,1+2+a, ,'(B $,1+q+e+f(B -Bengali ($,17,7>6b727>(B) $,17(7.787M6u7>70(B -Braille $,2(3(1('('(5(B -Burmese ($,1H9H\H4HZH9HL(B) $,1H9H$HZHYH"H<HLH5HK(B -C printf ("Hello, world!\n"); -Czech (,Bh(Be,B9(Btina) Dobr,A}(B den -Danish (dansk) Hej / Goddag / Hall,Ax(Bj +<x-charset><param>mule-unicode-0100-24ff</param>Amharic (አማርኛ) ሠላም +Arabic (العربيّة) السّلام عليكم +Armenian (հայերեն) Բարև ձեզ +Bengali (বাংলা) নমস্কার +</x-charset><x-charset><param>mule-unicode-2500-33ff</param>Braille ⠓⠑⠇⠇⠕ +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Burmese (မြန်မာ) မင်္ဂလာပါ +</x-charset>C printf ("Hello, world!\n"); +<x-charset><param>unicode</param>Cherokee (ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ) ᎣᏏᏲ / ᏏᏲ +Comanche /kəˈmæntʃiː/ Haa marʉ́awe + +Cree (ᓀᐦᐃᔭᐍᐏᐣ) ᑕᓂᓯ / ᐙᒋᔮ + +</x-charset><x-charset><param>latin-iso8859-2</param>Czech (čeština) Dobrý den +</x-charset><x-charset><param>latin-iso8859-1</param>Danish (dansk) Hej / Goddag / Halløj Dutch (Nederlands) Hallo / Dag +</x-charset><x-charset><param>unicode</param>Efik /ˈɛfɪk/ Mɔkɔm + Emacs emacs --no-splash -f view-hello-file -English /$(O+S,0!,D?$(O*y(Bl,0!$(O*h(B/ Hello -Esperanto Saluton (E,C6(Bo,C~(Ban,Cx(Bo ,Cf(Biu,C<(Ba,C}(Bde) -Estonian (eesti keel) Tere p,Ad(Bevast / Tere ,Au(Bhtust -Finnish (suomi) Hei / Hyv,Add(B p,Ad(Biv,Add(B -French (fran,Ag(Bais) Bonjour / Salut -Georgian ($,1JEJ0J@J7J5J4J:J8(B) $,1J2J0J;J0J@JOJ=J1J0(B -German (Deutsch) Guten Tag / Gr,A|_(B Gott -Greek (,Fekkgmij\(B) ,FCei\(B ,Fsar(B -Greek, ancient ($,1p1,Fkkgmij^(B) ,FO$,1pv,Fk](B ,Fte(B ,Fja$,1q6(B ,Fl]ca(B ,Fwa$,1r6,Fqe(B -Gujarati ($,19W:!9\9p9~9d: (B) $,19h9n9x:-9d:'(B -Hebrew ($,1-",q-(,y-*(B) ,Hylem(B -Hungarian (magyar) Sz,Bi(Bp j,Bs(B napot! -Hindi ($,15y55B5f6 (B) $,15h5n5x6-5d6'(B / $,15h5n5x6-5U5~5p(B $,16D(B -Italian (italiano) Ciao / Buon giorno -Javanese (Jawa) System.out.println("Sugeng siang!"); -Kannada ($,1>u?(?M?(?!(B) $,1?(?.?8?M>u?>?0(B -Khmer ($,1\7\V\?\V\!\r\8\b\:(B) $,1\'\f\:\V\4\?\]\:(B -Lao ((1>RJRERG(B) (1JP:R-4U(B / (1"mcKib*!4U(B -Malayalam ($,1@N@R@O@^@S@"(B) $,1@H@N@X@m@5@^@P@"(B -Maltese (il-Malti) Bon,Cu(Bu / Sa,C11(Ba -Mathematics $,1x (B p $,1x((B world $,1s"(B hello p $,2!a(B -Mongolian (,L\^]S^[(B ,Lem[(B) ,LAPY](B ,LQPY]P(B ,Lcc(B? -Norwegian (norsk) Hei / God dag -Oriya ($,1:s;\;?:f(B) $,1;6;A;#;?;,;G(B -Polish (j,Bj(Bzyk polski) Dzie,Bq(B dobry! / Cze,B6f(B! -Russian (,L`caaZXY(B) ,L7T`P$(O+Z,LRabRcYbU(B! -Sinhala ($,1B#B2ABB$A}(B) $,1AFAzB4AvB=B AqB*(B -Slovak (sloven,Bh(Bina) Dobr,A}(B de,Br(B -Slovenian (sloven,B9h(Bina) Pozdravljeni! -Spanish (espa,Aq(Bol) ,A!(BHola! -Swedish (svenska) Hej / Goddag / Hall,Ae(B -Tamil ($,1<D<N<_<T<m(B) $,1<U<C<5<m<5<N<m(B -Telugu ($,1=d>&=r>!=W>!(B) $,1=h=n=x>-=U=~=p=B(B -Thai (,T@RIRd7B(B) ,TJGQJ4U$CQ:(B / ,TJGQJ4U$hP(B -Tibetan ($(7"7"]"2!;"G#!"2!;(B) $(7"7"!#C!;"E"S"G!;"7"2"[!;"D"["#"G!>(B -Tigrigna ($,1NUP-MmN{(B) $,1MpMKM[NU(B -Turkish (T,A|(Brk,Ag(Be) Merhaba -Ukrainian (,LcZ`Pw]alZP(B) ,L2vbPn(B -Vietnamese (ti,1*(Bng Vi,1.(Bt) Ch,A`(Bo b,1U(Bn - -Japanese ($BF|K\8l(B) $B$3$s$K$A$O(B / (I:]FAJ(B -Chinese ($AVPND(B,$AFUM(;0(B,$A::So(B) $ADc:C(B -Cantonese ($(0GnM$(B,$(0N]0*Hd(B) $(0*/=((B, $(0+$)p(B -Korean ($(CGQ1[(B) $(C>H3gGO<<?d(B / $(C>H3gGO=J4O1n(B - - + +Emoji 👋 +</x-charset>English <x-charset><param>ipa</param>/ˈɪŋɡlɪʃ/</x-charset> Hello +<x-charset><param>latin-iso8859-3</param>Esperanto Saluton (Eĥoŝanĝo ĉiuĵaŭde) +</x-charset><x-charset><param>latin-iso8859-15</param>Estonian (eesti keel) Tere päevast / Tere õhtust +</x-charset><x-charset><param>latin-iso8859-1</param>Finnish (suomi) Hei / Hyvää päivää +French (français) Bonjour / Salut +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Georgian (ქართველი) გამარჯობა +</x-charset><x-charset><param>latin-iso8859-1</param>German (Deutsch) Guten Tag / Grüß Gott +</x-charset><x-charset><param>greek-iso8859-7</param>Greek (ελληνικά) Γειά σας +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Greek, ancient (ἑλληνική) Οὖλέ τε καὶ μέγα χαῖρε +Gujarati (ગુજરાતી) નમસ્તે +</x-charset><x-charset><param>hebrew-iso8859-8</param>Hebrew (עברית) שלום +</x-charset><x-charset><param>latin-iso8859-2</param>Hungarian (magyar) Szép jó napot! +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Hindi (हिंदी) नमस्ते / नमस्कार । +</x-charset><x-charset><param>unicode</param>Inuktitut (ᐃᓄᒃᑎᑐᑦ) ᐊᐃ + +</x-charset><x-charset><param>latin-iso8859-1</param>Italian (italiano) Ciao / Buon giorno +</x-charset>Javanese (Jawa) System.out.println("Sugeng siang!"); +<x-charset><param>mule-unicode-0100-24ff</param>Kannada (ಕನ್ನಡ) ನಮಸ್ಕಾರ +Khmer (ភាសាខ្មែរ) ជំរាបសួរ +</x-charset><x-charset><param>lao</param>Lao (ພາສາລາວ) ສະບາຍດີ / ຂໍໃຫ້ໂຊກດີ +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Malayalam (മലയാളം) നമസ്കാരം +</x-charset><x-charset><param>unicode</param>Maldivian (ދިވެހި) އައްސަލާމު ޢަލައިކުމް / ކިހިނެހް؟ + +</x-charset><x-charset><param>latin-iso8859-3</param>Maltese (il-Malti) Bonġu / Saħħa +</x-charset><x-charset><param>unicode</param>Mathematics ∀ p ∈ world • hello p □ +</x-charset><x-charset><param>cyrillic-iso8859-5</param>Mongolian (монгол хэл) Сайн байна уу? +</x-charset><x-charset><param>latin-iso8859-1</param>Norwegian (norsk) Hei / God dag +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Oriya (ଓଡ଼ିଆ) ଶୁଣିବେ +</x-charset><x-charset><param>latin-iso8859-2</param>Polish (język polski) Dzień dobry! / Cześć! +</x-charset><x-charset><param>cyrillic-iso8859-5</param>Russian (русский) Здра́вствуйте! +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Sinhala (සිංහල) ආයුබෝවන් +</x-charset><x-charset><param>latin-iso8859-2</param>Slovak (slovenčina) Dobrý deň +Slovenian (slovenščina) Pozdravljeni! +Spanish (espa</x-charset><x-charset><param>latin-iso8859-1</param>ñol) ¡Hola! +Swedish (svenska) Hej / Goddag / Hallå +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Tamil (தமிழ்) வணக்கம் +Telugu (తెలుగు) నమస్కారం +</x-charset><x-charset><param>thai-tis620</param>Thai (ภาษาไทย) สวัสดีครับ / สวัสดีค่ะ +</x-charset><x-charset><param>tibetan</param>Tibetan (བོད་སྐད་) བཀྲ་ཤིས་བདེ་ལེགས༎ +</x-charset><x-charset><param>mule-unicode-0100-24ff</param>Tigrigna (ትግርኛ) ሰላማት +</x-charset><x-charset><param>latin-iso8859-9</param>Turkish (Türkçe) Merhaba +</x-charset><x-charset><param>cyrillic-iso8859-5</param>Ukrainian (українська) Вітаю +</x-charset><x-charset><param>vietnamese-viscii-lower</param>Vietnamese (tiếng </x-charset><x-charset><param>vietnamese-viscii-upper</param>V</x-charset><x-charset><param>vietnamese-viscii-lower</param>iệt) </x-charset><x-charset><param>vietnamese-viscii-upper</param>Chào bạn + +</x-charset> + +<x-charset><param>japanese-jisx0208</param>Japanese (日本語) こんにちは</x-charset> <x-charset><param>katakana-jisx0201</param>/ コンニチハ +</x-charset><x-charset><param>chinese-gb2312</param>Chinese (中文,普通话,汉语) 你好 +</x-charset><x-charset><param>chinese-big5-1</param>Cantonese (粵語,廣東話) 早晨, 你好 +</x-charset><x-charset><param>korean-ksc5601</param>Korean (한글) 안녕하세요 / 안녕하십니까 + +</x-charset> + +<x-charset><param>unicode</param> + Copyright (C) 2001-2019 Free Software Foundation, Inc. + This file is part of GNU Emacs. + GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License -along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. +along with GNU Emacs. If not, see <<https://www.gnu.org/licenses/>. + ;;; Local Variables: ;;; tab-width: 32 ;;; bidi-display-reordering: t -;;; coding: iso-2022-7bit -;;; End: +;;; coding: utf-8 +;;; End:</x-charset> diff --git a/etc/LINUX-GNU b/etc/LINUX-GNU deleted file mode 100644 index 0f45e15ac1d..00000000000 --- a/etc/LINUX-GNU +++ /dev/null @@ -1,8 +0,0 @@ -Linux and the GNU system - -Note added March 2014: - -This file is obsolete and will be removed in future. -Please update any references to use - -<https://www.gnu.org/gnu/linux-and-gnu.html> diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF deleted file mode 100644 index e3f2c1664c5..00000000000 --- a/etc/MORE.STUFF +++ /dev/null @@ -1,8 +0,0 @@ -More Neat Stuff for your Emacs - -Note added January 2014: - -This file is obsolete and will be removed in future. -Please update any links to use - info node `(efaq)Packages that do not come with Emacs' -instead. @@ -1,28 +1,157 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2016-2019 Free Software Foundation, Inc. +Copyright (C) 2017-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. If possible, use 'M-x report-emacs-bug'. -This file is about changes in Emacs version 26. +This file is about changes in Emacs version 27. See file HISTORY for a list of GNU Emacs versions and release dates. -See files NEWS.25, NEWS.24, ..., NEWS.18, and NEWS.1-17 for changes +See files NEWS.26, NEWS.25, ..., NEWS.18, and NEWS.1-17 for changes 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'. @@ -31,1899 +160,1962 @@ 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 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 '--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'. +** 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. -** 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. +This is similar to what 'fill-column-indicator' package provides, but +much faster and compatible with 'show-trailing-whitespace'. -** 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. +Customize the buffer-local variables 'display-fill-column-indicator' +and 'display-fill-column-indicator-character' to activate the +indicator. -** Emacs now obeys the X resource "scrollBar" at startup. -The effect is similar to that of "toolBar" resource on the tool bar. +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 + ++++ +** New command 'make-empty-file'. -** 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 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). -** 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 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. -** 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'. ++++ +** '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. -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. ++++ +** 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'. -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'. +--- +** More commands support noncontiguous rectangular regions, namely +'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp'. -'linum-mode' and all similar packages are henceforth becoming obsolete. -Users and developers are encouraged to switch to this new feature -instead. ++++ +** 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. -** The new user option 'arabic-shaper-ZWNJ-handling' controls how to -handle ZWNJ in Arabic text rendering. ++++ +** 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'. - -* 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. ++++ +** 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'). -** 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 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. + +** cl-lib.el ++++ +*** 'cl-defstruct' has a new ':noinline' argument to prevent inlining +its functions. -** New function 'cl-generic-p'. +** 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 -*** You can answer 'all' in 'dired-do-delete' to delete recursively all -remaining directories without more prompts. ++++ +*** New command 'dired-create-empty-file'. -*** Dired supports wildcards in the directory part of the file names. +** Change Logs and VC -*** You can now use '`?`' in 'dired-do-shell-command'. -It gets replaced by the current file name, like ' ? '. +*** Recording ChangeLog entries doesn't require an actual file. +If a ChangeLog file doesn't exist, and if the new variable +'add-log-dont-create-changelog-file' is non-nil (which is the +default), commands such as 'C-x 4 a' will add log entries to a +suitable named temporary buffer. (An existing ChangeLog file will +still be used if it exists.) Set the variable to nil to get the +previous behavior of always creating a buffer that visits a ChangeLog +file. -*** A new option 'dired-always-read-filesystem' defaulting to nil. -If non-nil, buffers visiting files are reverted before they are -searched; 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 customizable variable 'vc-find-revision-no-save'. +With non-nil, 'vc-find-revision' doesn't write the created buffer to file. -*** Users can now customize mouse clicks in Dired in a more flexible way. -The new command 'dired-mouse-find-file' can be bound to a mouse click -and used to visit files/directories in Dired in the selected window. -The new command 'dired-mouse-find-file-other-frame' similarly visits -files/directories in another frame. You can write your own commands -that invoke 'dired-mouse-find-file' with non-default optional -arguments, to tailor the effects of mouse clicks on file names in -Dired buffers. +*** New customizable variable 'vc-git-grep-template'. +This new variable allows customizing the default arguments passed to +'git-grep' when 'vc-git-grep' is used. -*** 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. +*** Command 'vc-git-stash' now respects marks in the "*vc-dir*" buffer. +When some files are marked, only those are stashed. +When no files are marked, all modified files are stashed, as before. -*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for -viewing HTML files and the like. +*** The new hook 'vc-retrieve-tag-hook' runs after retrieving a tag. -*** New variable 'dired-clean-confirm-killing-deleted-buffers' -controls whether Dired asks to kill buffers visiting deleted files and -directories. The default is t, so Dired asks for confirmation, to -keep previous behavior. +--- +*** 'vc-hg' now invokes 'smerge-mode' when visiting files. +Code that attempted to invoke 'smerge-mode' when visiting an Hg file +with conflicts existed in earlier versions of Emacs, but incorrectly +never detected a conflict due to invalid assumptions about cached +values. -** html2text is now marked obsolete. ++++ +*** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions +and compares their entire trees. -** smerge-refine-regions can refine regions in separate buffers. +*** New user option 'vc-hg-revert-switches' specifies switches to pass +to Hg revert. -** Info menu and index completion uses substring completion by default. -This can be customized via the 'info-menu' category in -'completion-category-overrides'. +*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase') +print diffs and logs between the merge base (common ancestor) of two +given revisions. -** The ancestor buffer is shown by default in 3-way merges. -A new option 'ediff-show-ancestor' and a new toggle -'ediff-toggle-show-ancestor'. +** Diff mode ++++ +*** Hunks are now automatically refined by font-lock. +To disable refinement, set the new user option 'diff-refine' to nil. +To get back the old behavior where hunks are refined as you navigate +through a diff, set 'diff-refine' to the symbol 'navigate'. -** TeX: Add luatex and xetex as alternatives to pdftex. ++++ +*** 'diff-auto-refine-mode' is deprecated in favor of 'diff-refine'. +It is no longer enabled by default and binding it no longer has any +effect. -** Electric-Buffer-menu ++++ +*** Better syntax highlighting of Diff hunks. +Fragments of source in Diff hunks are now by default highlighted +according to the appropriate major mode. Customize the new option +'diff-font-lock-syntax' to nil to disable this. -*** Key 'U' is bound to 'Buffer-menu-unmark-all' and key 'M-DEL' is -bound to 'Buffer-menu-unmark-all-buffers'. +*** File headers can be shortened, mimicking Magit's diff format. +To enable it, set the new user option 'diff-font-lock-prettify' to t. -** hideshow mode got four key bindings that are analogous to outline -mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e'. ++++ +*** Prefix arg of 'diff-goto-source' means jump to the old revision +of the file under version control if point is on an old changed line, +or to the new revision of the file otherwise. -** bs +** Texinfo -*** Two new commands 'bs-unmark-all', bound to 'U', and -'bs-unmark-previous', bound to <backspace>. ++++ +*** New function for inserting '@pxref', '@xref', or '@ref' commands. +The function 'texinfo-insert-dwim-@ref', bound to 'C-c C-c r' by +default, inserts one of three types of references based on the text +surrounding point, namely '@pxref' near a parenthesis, '@xref' at the +start of a sentence or at '(point-min)', else '@ref'. -** Buffer-menu +** Browse-url -*** Two new commands 'Buffer-menu-unmark-all', bound to 'U' and -'Buffer-menu-unmark-all-buffers', bound to 'M-DEL'. +*** The function 'browse-url-emacs' can now visit a URL in selected window. +It now treats the optional 2nd argument to mean that the URL should be +shown in the currently selected window. -** Checkdoc +** Comint -*** 'checkdoc-arguments-in-order-flag' now defaults to nil. ++++ +*** 'send-invisible' is now an obsolete alias for 'comint-send-invisible'. +Also, 'shell-strip-ctrl-m' is declared obsolete. -** Gnus ++++ +*** 'C-c .' ('comint-insert-previous-argument') no longer interprets '&'. +This feature caused problems when '&&' was present in the previous +command. Since this command emulates 'M-.' in Bash and zsh, neither +of which treats '&' specially, the feature was removed for +compatibility with these shells. -*** The ~/.newsrc file will now only be saved if the native select -method is an NNTP select method. ++++ +*** 'comint-insert-previous-argument' can now count arguments from the end. +By default, invoking 'C-c .' with a numeric argument N would copy the +Nth argument, counting from the first one. But if the new option +'comint-insert-previous-argument-from-end' is non-nil, it will copy +the Nth argument counting from the last one. Thus 'C-c .' can now +better emulate 'M-.' in both Bash and zsh, since the former counts +from the beginning of the arguments, while the latter counts from the +end. + +** SQL + +*** SQL Indent Minor Mode +SQL Mode now supports the ELPA 'sql-indent' package for assisting +sophisticated SQL indenting rules. Note, however, that SQL is not +like other programming languages like C, Java, or Python where code is +sparse and rules for formatting are fairly well established. Instead +SQL is more like COBOL (from which it came) and code tends to be very +dense and line ending decisions driven by syntax and line length +considerations to make readable code. Experienced SQL developers may +prefer to rely upon existing Emacs facilities for formatting code but +the 'sql-indent' package provides facilities to aid more casual SQL +developers layout queries and complex expressions. + +**** 'sql-use-indent-support' (default t) enables SQL indention support. +The 'sql-indent' package from ELPA must be installed to get the +indentation support in 'sql-mode' and 'sql-interactive-mode'. + +**** 'sql-mode-hook' and 'sql-interactive-mode-hook' changed. +Both hook variables have had 'sql-indent-enable' added to their +default values. If you have existing customizations to these variables, +you should make sure that the new default entry is included. + +*** Connection Wallet +Database passwords can now by stored in NETRC or JSON data files that +may optionally be encrypted. When establishing an interactive session +with the database via 'sql-connect' or a product specific function, +like 'sql-mysql' or 'my-postgres', the password wallet will be +searched for the password. The 'sql-product', 'sql-server', +'sql-database', and the 'sql-username' will be used to identify the +appropriate authorization. This eliminates the discouraged practice of +embedding database passwords in your Emacs initialization. + +See the 'auth-source' module for complete documentation on the file +formats. By default, the wallet file is expected to be in the +'user-emacs-directory', named 'sql-wallet' or '.sql-wallet', with +'.json' (JSON) or no (NETRC) suffix. Both file formats can optionally +be encrypted with GPG by adding an additional '.gpg' suffix. -*** A new command for sorting articles by readedness marks has been -added: 'C-c C-s C-m C-m'. +** Term -*** In 'message-citation-line-format' the '%Z' format is now the time -zone name instead of the numeric form. The '%z' format continues to -be the numeric form. The new behavior is compatible with -'format-time-string'. +--- +*** 'term-read-noecho' is now obsolete, use 'read-passwd' instead. -** Ibuffer +** Flymake -*** New command 'ibuffer-jump'. ++++ +*** The variable 'flymake-diagnostic-types-alist' is obsolete. +You should instead set properties on known diagnostic symbols, like +':error' and ':warning', as demonstrated in the Flymake manual. -*** 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'. +*** New customizable variable 'flymake-start-on-save-buffer'. +Control whether Flymake starts checking the buffer on save. -*** Two new commands 'ibuffer-filter-chosen-by-completion' -and 'ibuffer-and-filter', the second bound to '/&'. +*** Flymake and backend functions may exchange hints about buffer changes. +This enables more efficient backends. See the docstring of +'flymake-diagnostic-functions' or the Flymake manual for details. -*** The commands 'ibuffer-pop-filter', 'ibuffer-pop-filter-group', -'ibuffer-or-filter' and 'ibuffer-filter-disable' have the alternative -bindings '/<up>', '/S-<up>', '/|' and '/DEL', respectively. ++++ +*** 'flymake-start-syntax-check-on-newline' is now obsolete, +use 'post-self-insert-hook' to check on newline. -*** 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. +** Ruby -*** A new command 'ibuffer-copy-buffername-as-kill'; bound -to 'B'. +*** The Rubocop Flymake diagnostic function will only run Lint cops if +it can't find the config file. -*** New command 'ibuffer-change-marks'; bound to '* c'. +*** Rubocop is called with 'bundle exec' if Gemfile mentions it. -*** A new command 'ibuffer-mark-by-locked' to mark -all locked buffers; bound to '% L'. +*** New command 'ruby-find-library-file' bound to 'C-c C-f'. -*** A new option 'ibuffer-locked-char' to indicate -locked buffers; Ibuffer shows a new column displaying -'ibuffer-locked-char' for locked buffers. +** Package -*** A new command 'ibuffer-unmark-all-marks' to unmark -all buffers without asking confirmation; bound to -'U'; 'ibuffer-do-replace-regexp' bound to 'r'. +*** Change of 'package-check-signature' for packages with multiple sigs +In previous Emacsen, 't' checked that all signatures are valid. +Now 't' only checks that at least one signature is valid and the new 'all' +value needs to be used if you want to enforce that all signatures +are valid. This only affects packages with multiple signatures. -*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers -whose content matches a regexp; bound to '% g'. +*** New function 'package-get-version' lets packages query their own version. +Example use in auctex.el: '(defconst auctex-version (package-get-version))' -*** Two new options 'ibuffer-never-search-content-name' and -'ibuffer-never-search-content-mode' used by -'ibuffer-mark-by-content-regexp'. +*** New 'package-quickstart' feature. +When 'package-quickstart' is non-nil, package.el precomputes a big +autoloads file so that activation of packages can be done much faster, +which can speed up your startup significantly. +It also causes variables like 'package-user-dir' and +'package-load-list' to be consulted when 'package-quickstart-refresh' +is run rather than at startup so you don't need to set them in your +early init file. -** Browse-URL +*** New function 'package-activate-all'. -*** Support for opening links to man pages in Man or WoMan mode. +** Info -** Comint +--- +*** Info can now follow 'file://' protocol URLs. +The 'file://' URLs in Info documents can now be followed by passing +them to the 'browse-url' function, like the other protocols: ftp, +http, and https. This allows to have references to local HTML files, +for example. -*** 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'. +** Xref -*** New user option 'comint-terminfo-terminal'. -This option allows control of the value of the TERM environment -variable Emacs puts into the environment of the Comint mode and its -derivatives, such as Shell mode and Compilation Shell minor-mode. The -default is "dumb", for compatibility with previous behavior. ++++ +*** New command 'xref-find-definitions-at-mouse'. +This command finds definitions of the identifier at the place of a +mouse click event, and is intended to be bound to a mouse event. -** Compilation mode ++++ +*** Changing 'xref-marker-ring-length' works after 'xref.el' is loaded. +Previously, setting 'xref-marker-ring-length' would only take effect +if set before 'xref.el' was loaded. -*** Messages from CMake are now recognized. +--- +*** 'xref-find-definitions' now sets the mark at the buffer position +where it was invoked. -*** The number of errors, warnings, and informational messages is now -displayed in the mode line. These are updated as compilation -proceeds. +--- +*** New xref faces 'xref-file-header', 'xref-line-number', 'xref-match'. -** Grep +*** New variable 'xref-show-definitions-function'. +It encapsulates the logic pertinent to showing the result of +'xref-find-definitions'. The user can change it to customize its +behavior and the display of results. -*** Grep commands will now use GNU grep's '--null' option if -available, which allows distinguishing the filename from contents if -they contain colons. This can be controlled by the new custom option -'grep-use-null-filename-separator'. +*** Search results show the buffer even for one hit. +The search-type Xref commands (e.g. 'xref-find-references' or +'project-find-regexp') now show the results buffer even when there is +only one hit. This can be altered by changing +'xref-show-xrefs-function'. -*** The grep/rgrep/lgrep functions will now ask about saving files -before running. This is controlled by the 'grep-save-buffers' -variable. +*** Xref buffers support refreshing the search results. +A new command 'xref-revert-buffer' is bound to 'g'. -** Edebug +** Ecomplete -*** 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'. +*** The ecomplete sorting has changed to a decay-based algorithm. +This can be controlled by the new 'ecomplete-sort-predicate' variable. -*** New customizable option 'edebug-max-depth'. -This allows you to enlarge the maximum recursion depth when -instrumenting code. +*** The 'ecompleterc' file is now placed in '~/.emacs.d/ecompleterc' by default. +Of course it will still find it if you have it in '~/.ecompleterc'. -*** 'edebug-prin1-to-string' now aliases 'cl-prin1-to-string'. -This means edebug output is affected by variables 'cl-print-readably' -and 'cl-print-compiled'. To completely restore the previous printing -behavior, use +** Gnus - (fset 'edebug-prin1-to-string #'prin1-to-string) +--- +*** Gnus now maps imaps to 993 only on old MS-Windows versions. +The nnimap backend used to do this unconditionally to work around +problems on old versions of MS-Windows. This is now done only for +Windows XP and older. -** Eshell ++++ +*** The nnimap backend now has support for IMAP namespaces. +This feature can be enabled by setting the new 'nnimap-use-namespaces' +server variable to non-nil. + ++++ +*** A prefix argument to 'gnus-summary-limit-to-score' will limit reverse. +Limit to articles with score at below. + +*** The function 'gnus-score-find-favorite-words' has been renamed +from 'gnus-score-find-favourite-words'. + +--- +*** Gmane has been removed as an nnir backend, since Gmane no longer +has a search engine. + ++++ +*** Splitting mail on common mailing list headers has been added. +See the concept index in the Gnus manual for the 'match-list' entry. -*** '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. ++++ +*** nil is no longer an allowed value for 'mm-text-html-renderer'. + ++++ +*** A new Gnus summary mode command, 'S A' +('gnus-summary-attach-article') can be used to attach the current +article(s) to a pre-existing Message buffer, or create a new Message +buffer with the article(s) attached. + +--- +*** New option 'nnir-notmuch-filter-group-names-function'. +This option controls whether and how to use Gnus search groups as +'path:' search terms to 'notmuch'. + +** erc + +--- +*** 'erc-button-google-url' has been renamed to 'erc-button-search-url' +and its value has been changed to Duck Duck Go. ** EUDC -*** Backward compatibility support for BBDB versions less than 3 -(i.e., BBDB 2.x) is deprecated and will likely be removed in the next -major release of Emacs. Users of BBDB 2.x should plan to upgrade to -BBDB 3.x. +*** XEmacs support has been removed. -** eww +** eww/shr -*** New 'M-RET' command for opening a link at point in a new eww buffer. ++++ +*** The 'eww' command can now create a new EWW buffer. +Invoking the command with a prefix argument will cause it to create a +new EWW buffer for the URL instead of reusing the default one. -*** A new 's' command for switching to another eww buffer via the minibuffer. ++++ +*** The 'd' ('eww-download') command now falls back to current page's URL. +If this command is invoked with no URL at point, it now downloads the +current page instead of signaling an error. -*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision -with the 'o' command from 'image-map'. +*** When opening external links in eww/shr (typically with the +'C-u RET' keystroke on a link), the link will be flashed with the new +'shr-selected-link' face to give the user feedback that the command +has been executed. -*** A new command 'C' ('eww-toggle-colors') can be used to toggle -whether to use the HTML-specified colors or not. The user can also -customize the 'shr-use-colors' variable. ++++ +*** New option 'shr-discard-aria-hidden'. +If set, shr will not render tags with attribute 'aria-hidden="true"'. +This attribute is meant to tell screen readers to ignore a tag. -*** Images that are being loaded are now marked with gray -"placeholder" images of the size specified by the HTML. They are then -replaced by the real images asynchronously, which will also now -respect width/height HTML specs (unless they specify widths/heights -bigger than the current window). +--- +*** 'shr-tag-ol' now respects the ordered list 'start' attribute. -*** The 'w' command on links is now 'shr-maybe-probe-and-copy-url'. -'shr-copy-url' now only copies the url at point; users who wish to -avoid accidentally accessing remote links may rebind 'w' and 'u' in -'eww-link-keymap' to it. +** Htmlfontify -** Ido +*** The functions 'hfy-color', 'hfy-color-vals' and +'hfy-fallback-color-values' and the variables 'hfy-fallback-color-map' +and 'hfy-rgb-txt-color-map' have been renamed from names that used +'colour' instead of 'color'. -*** The commands 'find-alternate-file-other-window', -'dired-other-window', 'dired-other-frame', and -'display-buffer-other-window' are now remapped to Ido equivalents if -Ido mode is active. ++++ +** Enriched mode supports the 'charset' text property. +You can add or modify the 'charset' text properties of text using the +'Edit->Text Properties->Special Properties' menu, or by invoking the +'facemenu-set-charset' command. Documents in Enriched mode will be +saved with the charset properties, and those properties will be +restored when the file is visited. -** Images +** Smtpmail -*** Images are automatically scaled before displaying based on the -'image-scaling-factor' variable (if Emacs supports scaling the images -in question). +Authentication mechanisms can be added via external packages, by +defining new 'cl-defmethod' of 'smtpmail-try-auth-method'. -*** It's now possible to specify aspect-ratio preserving combinations -of :width/:max-height and :height/:max-width keywords. In either -case, the "max" keywords win. (Previously some combinations would, -depending on the aspect ratio of the image, just be ignored and in -other instances this would lead to the aspect ratio not being -preserved.) +** Footnote mode -*** Images inserted with 'insert-image' and related functions get a -keymap put into the text properties (or overlays) that span the -image. This keymap binds keystrokes for manipulating size and -rotation, as well as saving the image to a file. These commands are -also available in 'image-mode'. +*** Support Hebrew-style footnotes +*** Footnote text lines are now aligned. +Can be controlled via the new variable 'footnote-align-to-fn-text'. -*** A new library for creating and manipulating SVG images has been -added. See the "(elisp) SVG Images" section in the ELisp reference -manual for details. +** CSS mode -*** New setf-able function to access and set image parameters is -provided: 'image-property'. +--- +*** A new command 'css-cycle-color-format' for cycling between color +formats (e.g. "black" => "#000000" => "rgb(0, 0, 0)") has been added, +bound to 'C-c C-f'. -*** New commands 'image-scroll-left' and 'image-scroll-right' -for 'image-mode' that complement 'image-scroll-up' and -'image-scroll-down': they have the same prefix arg behavior and stop -at image boundaries. +--- +*** CSS mode, SCSS mode, and Less CSS mode now have support for Imenu. -** Image-Dired +** SGML mode -*** Now provides a minor mode 'image-dired-minor-mode' which replaces -the function 'image-dired-setup-dired-keybindings'. +--- +*** 'sgml-quote' now handles double quotes and apostrophes +when escaping text and in addition all numeric entities when +unescaping text. -*** Thumbnail generation is now asynchronous. -The number of concurrent processes is limited by the variable -'image-dired-queue-active-limit'. +** Python mode -*** 'image-dired-thumbnail-storage' has a new option 'standard-large' -for generating 256x256 thumbnails according to the Thumbnail Managing -Standard. +--- +*** Python mode supports three different font lock decoration levels. +The maximum level is used by default; customize +'font-lock-maximum-decoration' to tone down the decoration. -*** Inherits movement keys from 'image-mode' for viewing full images. -This includes the usual char, line, and page movement commands. +** Dired -*** All the -options types have been changed to argument lists -instead of shell command strings. This change affects -'image-dired-cmd-create-thumbnail-options', -'image-dired-cmd-create-temp-image-options', -'image-dired-cmd-rotate-thumbnail-options', -'image-dired-cmd-rotate-original-options', -'image-dired-cmd-write-exif-data-options', -'image-dired-cmd-read-exif-data-options', and introduces -'image-dired-cmd-pngnq-options', 'image-dired-cmd-pngcrush-options', -'image-dired-cmd-create-standard-thumbnail-options'. ++++ +*** The new user option 'dired-create-destination-dirs' controls whether +'dired-do-copy' and 'dired-rename-file' should create non-existent +directories in the destination. -*** Recognizes more tools by default, including pngnq-s9 and OptiPNG. +** Help -*** 'find-file' and related commands now work on thumbnails and -displayed images, providing a default argument of the original file name -via an addition to 'file-name-at-point-functions'. +--- +*** Description of variables and functions give an estimated first release. -** The default 'Info-default-directory-list' no longer checks some obsolete -directory suffixes (gnu, gnu/lib, gnu/lib/emacs, emacs, lib, lib/emacs) -when searching for info directories. +--- +*** Output format of 'C-h l' ('view-lossage') has changed. +For convenience, 'view-lossage' now displays the last keystrokes +and commands in the same format as the edit buffer of +'edit-last-kbd-macro'. This makes it possible to copy the lines from +the buffer generated by 'view-lossage' to the "*Edit Macro*" buffer +created by 'edit-last-kbd-macro', and to save the macro by 'C-c C-c'. -** The commands that add ChangeLog entries now prefer a VCS root directory -for the ChangeLog file, if none already exists. Customize -'change-log-directory-files' to nil for the old behavior. +--- +*** The list of help commands produced by 'C-h C-h' ('help-for-help') +can now be searched via 'C-s'. -** Support for non-string values of 'time-stamp-format' has been removed. +** Ibuffer -** Message +--- +*** New filter 'ibuffer-filter-by-process'; bound to '/E'. + +--- +*** All mode filters can now accept a list of symbols. +This means you can now easily filter several major modes, as well +as a single mode. + +** Search and Replace + +*** Isearch supports a prefix argument for 'C-s' ('isearch-repeat-forward') +and 'C-r' ('isearch-repeat-backward'). With a prefix argument, these +commands repeat the search for the specified occurrence of the search string. +A negative argument repeats the search in the opposite direction. +This makes possible also to use a prefix argument for 'M-s .' +('isearch-forward-symbol-at-point') to find the next Nth symbol. + +*** To go to the first/last occurrence of the current search string +is possible now with new commands 'isearch-beginning-of-buffer' and +'isearch-end-of-buffer' bound to 'M-s M-<' and 'M-s M->' in Isearch. +With a numeric argument, they go to the Nth absolute occurrence +counting from the beginning/end of the buffer. This complements +'C-s'/'C-r' that searches for the next Nth relative occurrence +with a numeric argument. + +*** 'isearch-lazy-count' shows the current match number and total number +of matches in the Isearch prompt. Customizable variables +'lazy-count-prefix-format' and 'lazy-count-suffix-format' define the +format of the current and the total number of matches in the prompt's +prefix and suffix respectively. + +*** 'lazy-highlight-buffer' highlights matches in the full buffer. +It is useful in combination with 'lazy-highlight-cleanup' customized to nil +to leave matches highlighted in the whole buffer after exiting isearch. +Also when 'lazy-highlight-buffer' prepares highlighting in the buffer, +navigation through the matches without flickering is more smooth. +'lazy-highlight-buffer-max-at-a-time' controls the number of matches to +highlight in one iteration while processing the full buffer. -*** 'message-use-idna' now defaults to t (because Emacs comes with -built-in IDNA support now). ++++ +*** New isearch bindings. -*** When sending HTML messages with embedded images, and you have -exiftool installed, and you rotate images with EXIF data (i.e., -JPEGs), the rotational information will be inserted into the outgoing -image in the message. (The original image will not have its -orientation affected.) +'C-M-w' in isearch changed from 'isearch-del-char' to the new function +'isearch-yank-symbol-or-char'. 'isearch-del-char' is now bound to +'C-M-d'. -*** The 'message-valid-fqdn-regexp' variable has been removed, since -there are now top-level domains added all the time. Message will no -longer warn about sending emails to top-level domains it hasn't heard -about. ++++ +*** New variable 'isearch-yank-on-move' provides options 't' and 'shift' +to extend the search string by yanking text that ends at the new +position after moving point in the current buffer. 'shift' extends +the search string by motion commands while holding down the shift key. -*** 'message-beginning-of-line' (bound to 'C-a') understands folded headers. -In 'visual-line-mode' it will look for the true beginning of a header -while in non-'visual-line-mode' it will move the point to the indented -header's value. +*** 'isearch-allow-scroll' provides new option 'unlimited' to allow +scrolling any distance off screen. -** Package +--- +*** Isearch now remembers the regexp-based search mode for words/symbols +and case-sensitivity together with search strings in the search ring. -*** The new variable 'package-gnupghome-dir' has been added to control -where the GnuPG home directory (used for signature verification) is -located and whether GnuPG's option '--homedir' is used or not. +--- +*** Isearch now has its own tool-bar and menu-bar menu. -*** Deleting a package no longer respects 'delete-by-moving-to-trash'. ++++ +*** 'flush-lines' prints and returns the number of deleted matching lines. -** Python +** Debugger -*** The new variable 'python-indent-def-block-scale' has been added. -It controls the depth of indentation of arguments inside multi-line -function signatures. ++++ +*** The Lisp Debugger is now based on 'backtrace-mode'. +Backtrace mode adds fontification and commands for changing the +appearance of backtrace frames. See the node "(elisp) Backtraces" in +the Elisp manual for documentation of the new mode and its commands. -** Tramp +** Edebug -*** The method part of remote file names is mandatory now. -A valid remote file name starts with "/method:host:" or -"/method:user@host:". ++++ +*** The runtime behavior of Edebug's instrumentation can be changed +using the new variables 'edebug-behavior-alist', +'edebug-after-instrumentation-function' and +'edebug-new-definition-function'. Edebug's behavior can be changed +globally or for individual definitions. -*** The new pseudo method "-" is a marker for the default method. -"/-::" is the shortest remote file name then. ++++ +*** Edebug's backtrace buffer now uses 'backtrace-mode'. +Backtrace mode adds fontification, links and commands for changing the +appearance of backtrace frames. See the node "(elisp) Backtraces" in +the Elisp manual for documentation of the new mode and its commands. -*** The command 'tramp-change-syntax' allows you to choose an -alternative remote file name syntax. +The binding of 'd' in Edebug's keymap is now 'edebug-pop-to-backtrace' +which replaces 'edebug-backtrace'. Consequently Edebug's backtrace +windows now behave like those of the Lisp Debugger and of ERT, in that +when they appear they will be the selected window. -*** New connection method "sg", which supports editing files under a -different group ID. +The new 'backtrace-goto-source' command, bound to 's', works in +Edebug's backtraces on backtrace frames whose source code has +been instrumented by Edebug. -*** New connection method "doas" for OpenBSD hosts. +** Enhanced xterm support -*** New connection method "gdrive", which allows access to Google -Drive onsite repositories. +*** New variable 'xterm-set-window-title' controls whether Emacs sets +the XTerm window title. This feature is experimental and is disabled +by default. -*** Gateway methods in Tramp have been removed. -Instead, the Tramp manual documents how to configure ssh and PuTTY -accordingly. +** Grep -*** Setting the "ENV" environment variable in -'tramp-remote-process-environment' enables reading of shell -initialization files. ++++ +*** 'rgrep', 'lgrep' and 'zrgrep' now hide part of the command line +that contains a list of ignored directories and files. +Clicking on the button with ellipsis unhides it. +The abbreviation can be disabled by the new option +'grep-find-abbreviate'. The new command +'grep-find-toggle-abbreviation' toggles it interactively. -*** Tramp is able now to send SIGINT to remote asynchronous processes. +** ERT -*** Variable 'tramp-completion-mode' is obsoleted. ++++ +*** New variable 'ert-quiet' allows to make ERT output in batch mode +less verbose by removing non-essential information. -** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'. ++++ +*** ERT's backtrace buffer now uses 'backtrace-mode'. +Backtrace mode adds fontification and commands for changing the +appearance of backtrace frames. See the node "(elisp) Backtraces" in +the Elisp manual for documentation of the new mode and its commands. -** JS mode +** Gamegrid -*** JS mode now sets 'comment-multi-line' to t. +--- +*** Gamegrid now determines its default glyph size based on display +dimensions, instead of always using 16 pixels. As a result, Tetris, +Snake and Pong are more playable on HiDPI displays. -*** New variable 'js-indent-align-list-continuation', when set to nil, -will not align continuations of bracketed lists, but will indent them -by the fixed width 'js-indent-level'. +** Filecache -** CSS mode +--- +*** Completing filenames in the minibuffer via 'C-TAB' now uses the +styles as configured by the variable 'completion-styles'. -*** Support for completing attribute values, at-rules, bang-rules, -HTML tags, classes and IDs using the 'completion-at-point' command. -Completion candidates for HTML classes and IDs are retrieved from open -HTML mode buffers. +** New macros 'thunk-let' and 'thunk-let*'. +These macros are analogue to 'let' and 'let*', but create bindings that +are evaluated lazily. -*** CSS mode now binds 'C-h S' to a function that will show -information about a CSS construct (an at-rule, property, pseudo-class, -pseudo-element, with the default being guessed from context). By -default the information is looked up on the Mozilla Developer Network, -but this can be customized using 'css-lookup-url-format'. +** next-error -*** CSS colors are fontified using the color they represent as the -background. For instance, #ff0000 would be fontified with a red -background. ++++ +*** New customizable variable 'next-error-find-buffer-function'. +The value should be a function that determines how to find the +next buffer to be used by 'next-error' and 'previous-error'. The +default is to use the last buffer that navigated to the current +error. -** Emacs now supports character name escape sequences in character and -string literals. The syntax variants '\N{character name}' and -'\N{U+code}' are supported. ++++ +*** New command 'next-error-select-buffer'. +It can be used to set any buffer as the next one to be used by +'next-error' and 'previous-error'. -** Prog mode has some support for multi-mode indentation. -This allows better indentation support in modes that support multiple -programming languages in the same buffer, like literate programming -environments or ANTLR programs with embedded Python code. +** nxml-mode -A major mode can provide indentation context for a sub-mode. To -support this, modes should use 'prog-first-column' instead of a -literal zero and avoid calling 'widen' in their indentation functions. -See the node "(elisp) Mode-Specific Indent" in the ELisp manual for -more details. +--- +*** The default value of 'nxml-sexp-element-flag' is now t. +This means that pressing 'C-M-SPACE' now selects the entire tree by +default, and not just the opening element. -** ERC +** Eshell -*** New variable 'erc-default-port-tls' used to connect to TLS IRC -servers. +*** TAB completion uses the standard 'completion-at-point' rather than +'pcomplete'. Its UI is slightly different but can be customized to +behave similarly, e.g. Pcomplete's default cycling can be obtained +with '(setq completion-cycle-threshold 5)'. -** URL +--- +*** Expansion of history event designators is disabled by default. +To restore the old behavior, use -*** The new function 'url-cookie-delete-cookie' can be used to -programmatically delete all cookies, or cookies from a specific -domain. + (add-hook 'eshell-expand-input-functions + #'eshell-expand-history-references) -*** 'url-retrieve-synchronously' now takes an optional timeout parameter. +--- +*** The function 'eshell-uniquify-list' has been renamed from +'eshell-uniqify-list'. -*** The URL package now supports HTTPS over proxies supporting CONNECT. +*** The function 'eshell/kill' is now able to handle signal switches. +Previously 'eshell/kill' would fail if provided a kill signal to send +to the process. It now accepts signals specified either by name or by +its number. -*** 'url-user-agent' now defaults to 'default', and the User-Agent -string is computed dynamically based on 'url-privacy-level'. +--- +*** Emacs now follows symlinks in history-related files. +The files specified by 'eshell-history-file-name' and +'eshell-last-dir-ring-file-name' can include symlinks; these are now +followed when Emacs writes the relevant history variables to the disk. -** VC and related modes +** Shell -*** 'vc-dir-mode' now binds 'vc-log-outgoing' to 'O'; and has various -branch-related commands on a keymap bound to 'B'. +--- +*** Program name completion inside remote shells works now as expected. -*** 'vc-region-history' is now bound to 'C-x v h', replacing the older -'vc-insert-headers' binding. ++++ +*** The variable 'shell-file-name' can be set now as connection-local +variable for remote shells. It still defaults to "/bin/sh". -*** New user option 'vc-git-print-log-follow' to follow renames in Git logs -for a single file. +** Single shell commands -** CC mode ++++ +*** 'async-shell-command-width' defines the number of display columns +available for output of asynchronous shell commands. -*** Opening a .h file will turn C or C++ mode depending on language used. -This is done with the help of the 'c-or-c++-mode' function, which -analyzes buffer contents to infer whether it's a C or C++ source file. +** Pcomplete -** New option 'cpp-message-min-time-interval' to allow user control -of progress messages in cpp.el. +*** The function 'pcomplete-uniquify-list' has been renamed from +'pcomplete-uniqify-list'. -** New DNS mode command 'dns-mode-ipv6-to-nibbles' to convert IPv6 addresses -to a format suitable for reverse lookup zone files. +** Auth-source -** Ispell +--- +*** The Secret Service backend supports the ':create' key now. -*** Enchant is now supported as a spell-checker. -Enchant is a meta-spell-checker that uses providers such as Hunspell -to do the actual checking. With it, users can use spell-checkers not -directly supported by Emacs, such as Voikko, Hspell and AppleSpell, -more easily share personal word-lists with other programs, and -configure different spelling-checkers for different languages. -(Version 2.1.0 or later of Enchant is required.) +** Tramp -** Flymake ++++ +*** New connection method "nextcloud", which allows to access OwnCloud +or NextCloud hosted files and directories. -*** Flymake has been completely redesigned. -Flymake now annotates arbitrary buffer regions, not just lines. It -supports arbitrary diagnostic types, not just errors and warnings (see -variable 'flymake-diagnostic-types-alist'). ++++ +*** New connection method "rclone", which allows to access system +storages via the 'rclone' program. This feature is experimental. -It also supports multiple simultaneous backends, meaning that you can -check your buffer from different perspectives (see variable -'flymake-diagnostic-functions'). Backends for Emacs Lisp mode are -provided. ++++ +*** New connection method "sudoedit", which allows to edit local files +with different user credentials. Contrary to the "sudo" method, no +session is run permanently in the background. This is for security +reasons. -The old Flymake behavior is preserved in the so-called "legacy -backend", which has been updated to benefit from the new UI features. ++++ +*** Connection methods "obex" and "synce" are removed, because they +are obsoleted in GVFS. -** Term ++++ +*** Validated passwords are saved by auth-source backends which support this. -*** 'term-char-mode' now makes its buffer read-only. -The buffer is made read-only to prevent changes from being made by -anything other than the process filter; and movements of point away -from the process mark are counter-acted so that the cursor is in the -correct position after each command. This is needed to avoid states -which are inconsistent with the state of the terminal understood by -the inferior process. ++++ +*** During user and host name completion in the minibuffer, results +from auth-source search are taken into account. This can be disabled +by setting the user option 'tramp-completion-use-auth-sources' to nil. -New user options 'term-char-mode-buffer-read-only' and -'term-char-mode-point-at-process-mark' control these behaviors, and -are non-nil by default. Customize these options to nil if you want -the previous behavior. ++++ +*** The user option 'tramp-ignored-file-name-regexp' allows to disable +Tramp for some look-alike remote file names. -** Xref ++++ +*** For some connection methods, like "su" or "sudo", the host name in +ad-hoc multi-hop file names must match the previous hop. Default host +names are adjusted to the host name from the previous hop. -*** When an *xref* buffer is needed, 'TAB' quits and jumps to an xref. -A new command 'xref-quit-and-goto-xref', bound to 'TAB' in *xref* -buffers, quits the window before jumping to the destination. In many -situations, the intended window configuration is restored, just as if -the *xref* buffer hadn't been necessary in the first place. ++++ +*** For the connection methods "sudo" and "doas" there exists a +timeout, after which the underlying session is disabled. This is for +security reasons. - -* New Modes and Packages in Emacs 26.1 +** Rcirc -** New Elisp data-structure library 'radix-tree'. +--- +*** New user option 'rcirc-url-max-length'. +Setting this option to an integer causes URLs displayed in Rcirc +buffers to be truncated to that many characters. -** New library 'xdg' with utilities for some XDG standards and specs. +** Register -** HTML +--- +*** The return value of method 'register-val-describe' includes the +names of buffers shown by the windows of a window configuration. -*** A new submode of 'html-mode', 'mhtml-mode', is now the default -mode for *.html files. This mode handles indentation, -fontification, and commenting for embedded JavaScript and CSS. +--- +** The options.el library has been removed. +It was obsolete since Emacs 22.1, replaced by customize. -** New mode 'conf-toml-mode' is a sub-mode of 'conf-mode', specialized -for editing TOML files. +** The tls.el and starttls.el libraries are now marked obsolete. +Use of built-in libgnutls based functionality (described in the Emacs +GnuTLS manual) is recommended instead. -** New mode 'conf-desktop-mode' is a sub-mode of 'conf-unix-mode', -specialized for editing freedesktop.org desktop entries. +** Message -** New minor mode 'pixel-scroll-mode' provides smooth pixel-level scrolling. ++++ +*** Messages can now be systematically encrypted +when the PGP keyring contains a public key for every recipient. To +achieve this, add 'message-sign-encrypt-if-all-keys-available' to +'message-send-hook'. -** New major mode 'less-css-mode' (a minor variant of 'css-mode') for -editing Less files. +--- +*** When replying a message that have addresses on the form +'"foo@bar.com" <foo@bar.com>', Message will elide the repeated "name" +from the address field in the response. -** New package 'auth-source-pass' integrates 'auth-source' with the -password manager password-store (http://passwordstore.org). +--- +*** The default of 'message-forward-as-mime' has changed from t to nil +as it has been reported that many recipients can't read forwards that +are formatted as MIME digests. - -* Incompatible Lisp Changes in Emacs 26.1 - -** 'password-data' is now a hash-table so that 'password-read' can use -any object for the 'key' argument. - -** Command 'dired-mark-extension' now automatically prepends a '.' to the -extension when not present. The new command 'dired-mark-suffix' behaves -similarly but it doesn't prepend a '.'. - -** Certain cond/pcase/cl-case forms are now compiled using a faster jump -table implementation. This uses a new bytecode op 'switch', which -isn't compatible with previous Emacs versions. This functionality can -be disabled by setting 'byte-compile-cond-use-jump-table' to nil. - -** If 'comment-auto-fill-only-comments' is non-nil, 'auto-fill-function' -is now called only if either no comment syntax is defined for the -current buffer or the self-insertion takes place within a comment. - -** The alist 'ucs-names' is now a hash table. - -** 'if-let' and 'when-let' now support binding lists as defined by the -SRFI-2 (Scheme Request for Implementation 2). - -** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term -mode to send the same escape sequences that xterm does. This makes -things like 'forward-word' in readline work. - -** Customizable variable 'query-replace-from-to-separator' -now doesn't propertize the string value of the separator. -Instead, text properties are added by 'query-replace-read-from'. -Additionally, the new nil value restores pre-24.5 behavior -of not providing replacement pairs via the history. - -** Some obsolete functions, variables, and faces have been removed: - -*** 'make-variable-frame-local'. Variables cannot be frame-local any more. - -*** From subr.el: 'window-dot', 'set-window-dot', 'read-input', -'show-buffer', 'eval-current-buffer', 'string-to-int'. - -*** 'icomplete-prospects-length'. - -*** All the default-FOO variables that hold the default value of the -FOO variable. Use 'default-value' and 'setq-default' to access and -change FOO, respectively. The exhaustive list of removed variables is: -'default-mode-line-format', 'default-header-line-format', -'default-line-spacing', 'default-abbrev-mode', 'default-ctl-arrow', -'default-truncate-lines', 'default-left-margin', 'default-tab-width', -'default-case-fold-search', 'default-left-margin-width', -'default-right-margin-width', 'default-left-fringe-width', -'default-right-fringe-width', 'default-fringes-outside-margins', -'default-scroll-bar-width', 'default-vertical-scroll-bar', -'default-indicate-empty-lines', 'default-indicate-buffer-boundaries', -'default-fringe-indicator-alist', 'default-fringe-cursor-alist', -'default-scroll-up-aggressively', 'default-scroll-down-aggressively', -'default-fill-column', 'default-cursor-type', -'default-cursor-in-non-selected-windows', -'default-buffer-file-coding-system', 'default-major-mode', and -'default-enable-multibyte-characters'. - -*** Many variables obsoleted in 22.1 referring to face symbols. - -** The variable 'text-quoting-style' is now a customizable option. -It controls whether to and how to translate ASCII quotes in messages -and help output. Its possible values and their semantics remain -unchanged from Emacs 25. In particular, when this variable's value is -'grave', all quotes in formats are output as-is. - -** Functions like 'check-declare-file' and 'check-declare-directory' -now generate less chatter and more-compact diagnostics. The auxiliary -function 'check-declare-errmsg' has been removed. - -** The regular expression character class '[:blank:]' now matches -Unicode horizontal whitespace as defined in the Unicode Technical -Standard #18. If you only want to match space and tab, use '[ \t]' -instead. ++++ +*** 'message-forward-included-headers' has changed its default to +exclude most headers when forwarding. -** 'min' and 'max' no longer round their results. -Formerly, they returned a floating-point value if any argument was -floating-point, which was sometimes numerically incorrect. For -example, on a 64-bit host (max 1e16 10000000000000001) now returns its -second argument instead of its first. - -** The variable 'old-style-backquotes' has been made internal and -renamed to 'lread--old-style-backquotes'. No user code should use -this variable. - -** 'default-file-name-coding-system' now defaults to a coding system -that does not process CRLF. For example, it defaults to 'utf-8-unix' -instead of to 'utf-8'. Before this change, Emacs would sometimes -mishandle file names containing these control characters. - -** 'file-attributes', 'file-symlink-p' and 'make-symbolic-link' no -longer quietly mutate the target of a local symbolic link, so that -Emacs can access and copy them reliably regardless of their contents. -The following changes are involved. - -*** 'file-attributes' and 'file-symlink-p' no longer prepend "/:" to -symbolic links whose targets begin with "/" and contain ":". For -example, if a symbolic link "x" has a target "/y:z:", '(file-symlink-p -"x")' now returns "/y:z:" rather than "/:/y:z:". - -*** 'make-symbolic-link' no longer looks for file name handlers of -target when creating a symbolic link. For example, -'(make-symbolic-link "/y:z:" "x")' now creates a symbolic link to -"/y:z:" instead of failing. - -*** 'make-symbolic-link' removes the remote part of a link target if -target and newname have the same remote part. For example, -'(make-symbolic-link "/x:y:a" "/x:y:b")' creates a link with the -literal string "a"; and '(make-symbolic-link "/x:y:a" "/x:z:b")' -creates a link with the literal string "/x:y:a" instead of failing. - -*** 'make-symbolic-link' now expands a link target with leading "~" -only when the optional third arg is an integer, as when invoked -interactively. For example, '(make-symbolic-link "~y" "x")' now -creates a link with target the literal string "~y"; to get the old -behavior, use '(make-symbolic-link (expand-file-name "~y") "x")'. To -avoid this expansion in interactive use, you can now prefix the link -target with "/:". For example, '(make-symbolic-link "/:~y" "x" 1)' -now creates a link to literal "~y". - -** 'file-truename' returns a quoted file name if the target of a -symbolic link has remote file name syntax. - -** Module functions are now implemented slightly differently; in -particular, the function 'internal--module-call' has been removed. -Code that depends on undocumented internals of the module system might -break. - -** The argument LOCKNAME of 'write-region' is propagated to file name -handlers now. - -** When built against recent versions of GTK+, Emacs always uses -gtk_window_move for moving frames and ignores the value of the -variable 'x-gtk-use-window-move'. The variable is now obsolete. - -** Several functions that create or rename files now treat their -destination argument specially only when it is a directory name, i.e., -when it ends in '/' on GNU and other POSIX-like systems. When the -destination argument D of one of these functions is an existing -directory and the intent is to act on an entry in that directory, D -should now be a directory name. For example, (rename-file "e" "f/") -renames to 'f/e'. Although this formerly happened sometimes even when -D was not a directory name, as in (rename-file "e" "f") where 'f' -happened to be a directory, the old behavior often contradicted the -documentation and had inherent races that led to security holes. A -call like (rename-file C D) that used the old, undocumented behavior -can be written as (rename-file C (file-name-as-directory D)), a -formulation portable to both older and newer versions of Emacs. -Affected functions include 'add-name-to-file', 'copy-directory', -'copy-file', 'format-write-file', 'gnus-copy-file', -'make-symbolic-link', 'rename-file', 'thumbs-rename-images', and -'write-file'. - -** The list returned by 'overlays-at' is now in decreasing priority order. -The documentation of this function always said the order should be -that of decreasing priority, if the 2nd argument of the function is -non-nil, but the code returned the list in the increasing order of -priority instead. Now the code does what the documentation says it -should do. - -** 'format' now avoids allocating a new string in more cases. -'format' was previously documented to return a newly-allocated string, -but this documentation was not correct, as (eq x (format x)) returned -t when x was the empty string. 'format' is no longer documented to -return a newly-allocated string, and the implementation now takes -advantage of the doc change to avoid making copies of strings in -common cases like (format "foo") and (format "%s" "foo"). +** EasyPG -** The function 'eldoc-message' now accepts a single argument. -Programs that called it with multiple arguments before should pass -them through 'format' first. Even that is discouraged: for ElDoc -support, you should set 'eldoc-documentation-function' instead of -calling 'eldoc-message' directly. +--- +*** 'epa-pinentry-mode' is renamed to 'epg-pinentry-mode'. +It now applies to epg functions as well as epa functions. -** Using '&rest' or '&optional' incorrectly is now an error. -For example giving '&optional' without a following variable, or -passing '&optional' multiple times: - - (defun foo (&optional &rest x)) - (defun bar (&optional &optional x)) - -Previously, Emacs would just ignore the extra keyword, or give -incorrect results in certain cases. - -** The pinentry.el library has been removed. -That package (and the corresponding change in GnuPG and pinentry) -was intended to provide a way to input passphrase through Emacs with -GnuPG 2.0. However, the change to support that was only implemented -in GnuPG >= 2.1 and didn't get backported to GnuPG 2.0. And with -GnuPG 2.1 and later, pinentry.el is not needed at all. So the -library was useless, and we removed it. GnuPG 2.0 is no longer -supported by the upstream project. - -To adapt to the change, you may need to set 'epa-pinentry-mode' to the -symbol 'loopback'. Alternatively, leave 'epa-pinentry-mode' at its -default value of nil, and remove the 'allow-emacs-pinentry' setting -from your 'gpg-agent.conf' configuration file, usually found in the -'~/.gnupg' directory. - -Note that previously, it was said that passphrase input through -minibuffer would be much less secure than other graphical pinentry -programs. However, these days the difference is insignificant: the -'read-password' function sufficiently protects input from leakage to -message logs. Emacs still doesn't use secure memory to protect -passphrases, but it was also removed from other pinentry programs as -the attack is unrealistic on modern computer systems which don't -utilize swap memory usually. - -** The function 'display-buffer-in-major-side-window' no longer exists. -It has been renamed as internal function 'window--make-major-side-window', -however applications should instead call 'display-buffer-in-side-window' -(passing the SIDE and SLOT parameters as elements of ALIST). This approach -is backwards-compatible with versions of Emacs in which the old function -exists. See the node "Displaying Buffers in Side Windows" in the ELisp -manual for more details. - -* Lisp Changes in Emacs 26.1 +--- +*** The alias functions 'epa--encode-coding-string', +'epa--decode-coding-string', and 'epa--select-safe-coding-system' have +been removed. Use 'encode-coding-string', 'decode-coding-string', and +'select-safe-coding-system' instead. -** The function 'assoc' now takes an optional third argument TESTFN. -This argument, when non-nil, is used for comparison instead of -'equal'. +** Rmail -** New optional argument TESTFN in 'alist-get', 'map-elt' and 'map-put'. -If non-nil, the argument specifies a function to use for comparison, -instead of, respectively, 'assq' and 'eql'. ++++ +*** New user option 'rmail-output-reset-deleted-flag'. +If this option is non-nil, messages appended to an output file by the +'rmail-output' command have their Deleted flag reset. -** New function 'seq-set-equal-p' to check if SEQUENCE1 and SEQUENCE2 -contain the same elements, regardless of the order. +*** The command 'rmail-summary-by-senders' with an empty argument +selects the messages to summarize with a regexp that matches the +sender of the current message. -** The new function 'mapbacktrace' applies a function to all frames of -the current stack trace. +** Threads -** The new function 'file-name-case-insensitive-p' tests whether a -given file is on a case-insensitive filesystem. ++++ +*** New variable 'main-thread' holds Emacs's main thread. +This is handy in Lisp programs that run on a non-main thread and want +to signal the main thread, e.g., when they encounter an error. -** 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'. ++++ +*** 'thread-join' returns the result of the finished thread now. -** The new function 'buffer-hash' computes a fast, non-consing hash of -a buffer's contents. ++++ +*** 'thread-signal' does not propagate errors to the main thread. +Instead, error messages are just printed in the main thread. -** 'interrupt-process' now consults the list 'interrupt-process-functions', -to determine which function has to be called in order to deliver the -SIGINT signal. This allows Tramp to send the SIGINT signal to remote -asynchronous processes. The hitherto existing implementation has been -moved to 'internal-default-interrupt-process'. +--- +*** 'thread-alive-p' is now obsolete, use 'thread-live-p' instead. -** The new function 'read-multiple-choice' prompts for multiple-choice -questions, with a handy way to display help texts. ++++ +*** New command 'list-threads' shows Lisp threads. +See the current list of live threads in a tabulated-list buffer which +automatically updates. In the buffer, you can use 's q' or 's e' to +signal a thread with quit or error respectively, or get a snapshot +backtrace with 'b'. -** 'comment-indent-function' values may now return a cons to specify a -range of indentation. -** New optional argument TEXT in 'make-temp-file'. +** thingatpt.el -** New function 'define-symbol-prop'. +--- +*** 'thing-at-point' supports a new "thing" called 'uuid'. +A symbol 'uuid' can be passed to 'thing-at-point' and it returns the +UUID at point. -** New function 'secure-hash-algorithms' to list the algorithms that -'secure-hash' supports. -See the node "(elisp) Checksum/Hash" in the ELisp manual for details. +--- +*** 'word-at-point' and 'sentence-at-point' accept NO-PROPERTIES. +Just like 'thing-at-point' itself. -** Emacs now exposes the GnuTLS cryptographic API with the functions -'gnutls-macs' and 'gnutls-hash-mac'; 'gnutls-digests' and -'gnutls-hash-digest'; 'gnutls-ciphers' and 'gnutls-symmetric-encrypt' -and 'gnutls-symmetric-decrypt'. -See the node "(elisp) GnuTLS Cryptography" in the ELisp manual for details. +** Interactive automatic highlighting -** The function 'gnutls-available-p' now returns a list of capabilities -supported by the GnuTLS library used by Emacs. - -** Emacs now supports records for user-defined types, via the new -functions 'make-record', 'record', and 'recordp'. Records are now -used internally to represent cl-defstruct and defclass instances, for -example. - -If your program defines new record types, you should use -package-naming conventions for naming those types. This is so any -potential conflicts with other types are avoided. - -** 'save-some-buffers' now uses 'save-some-buffers-default-predicate' -to decide which buffers to ask about, if the PRED argument is nil. -The default value of 'save-some-buffers-default-predicate' is nil, -which means ask about all file-visiting buffers. - -** string-(to|as|make)-(uni|multi)byte are now declared obsolete. - -** New variable 'while-no-input-ignore-events' which allow -setting which special events 'while-no-input' should ignore. -It is a list of symbols. - -** New function 'undo-amalgamate-change-group' to get rid of -undo-boundaries between two states. - -** New var 'definition-prefixes' is a hash table mapping prefixes to -the files where corresponding definitions can be found. This can be -used to fetch definitions that are not yet loaded, for example for -'C-h f'. - -** New var 'syntax-ppss-table' to control the syntax-table used in -'syntax-ppss'. - -** 'define-derived-mode' can now specify an :after-hook form, which -gets evaluated after the new mode's hook has run. This can be used to -incorporate configuration changes made in the mode hook into the -mode's setup. - -** Autoload files are now generated without timestamps. -Set 'autoload-timestamps' to a non-nil value to get timestamps in -autoload files. - -** 'gnutls-boot' now takes a parameter ':complete-negotiation' that -says that negotiation should complete even on non-blocking sockets. - -** There is now a new variable 'flyspell-sort-corrections-function' -that allows changing the way corrections are sorted. ++++ +*** 'highlight-regexp' can now highlight subexpressions. +The new command accepts a prefix numeric argument to choose the +subexpression. -** The new command 'fortune-message' has been added, which displays -fortunes in the echo area. - -** New function 'func-arity' returns information about the argument list -of an arbitrary function. This generalizes 'subr-arity' for functions -that are not built-in primitives. We recommend using this new -function instead of 'subr-arity'. - -** New function 'region-bounds' can be used in the interactive spec -to provide region boundaries (for rectangular regions more than one) -to an interactively callable function as a single argument instead of -two separate arguments 'region-beginning' and 'region-end'. - -** 'parse-partial-sexp' state has a new element. -Element 10 is non-nil when the last character scanned might be the -first character of a two character construct, i.e., a comment -delimiter or escaped character. Its value is the syntax of that last -character. - -** 'parse-partial-sexp's state, element 9, has now been confirmed as -permanent and documented, and may be used by Lisp programs. Its value -is a list of currently open parenthesis positions, starting with the -outermost parenthesis. +** Mouse display of minor mode menu -** 'read-color' will now display the color names using the color itself -as the background color. - -** The function 'redirect-debugging-output' now works on platforms -other than GNU/Linux. +--- +*** 'minor-mode-menu-from-indicator' now displays full minor mode name. +When there is no menu for a mode, display the mode name after the +indicator instead of just the indicator (which is sometimes cryptic). -** The new function 'string-version-lessp' compares strings by -interpreting consecutive runs of numerical characters as numbers, and -compares their numerical values. According to this predicate, -"foo2.png" is smaller than "foo12.png". - -** Numeric comparisons and 'logb' no longer return incorrect answers -due to internal rounding errors. For example, '(< most-positive-fixnum -(+ 1.0 most-positive-fixnum))' now correctly returns t on 64-bit hosts. - -** The functions 'ffloor', 'fceiling', 'ftruncate' and 'fround' now -accept only floating-point arguments, as per their documentation. -Formerly, they quietly accepted integer arguments and sometimes -returned nonsensical answers, e.g., '(< N (ffloor N))' could return t. - -** On hosts like GNU/Linux x86-64 where a 'long double' fraction -contains at least EMACS_INT_WIDTH - 3 bits, 'format' no longer returns -incorrect answers due to internal rounding errors when formatting -Emacs integers with '%e', '%f', or '%g' conversions. For example, on -these hosts '(eql N (string-to-number (format "%.0f" N)))' now returns -t for all Emacs integers N. - -** Calls that accept floating-point integers (for use on hosts with -limited integer range) now signal an error if arguments are not -integral. For example '(decode-char 'ascii 0.5)' now signals an -error. +** rx + +--- +*** rx now handles raw bytes in character alternatives correctly, +when given in a string. Previously, '(any "\x80-\xff")' would match +characters U+0080...U+00FF. Now the expression matches raw bytes in +the 128...255 range, as expected. + +*** The rx 'or' and 'seq' forms no longer require any arguments. +(or) produces a regexp that never matches anything, while (seq) +matches the empty string, each being an identity for the operation. +This also works for their aliases: '|' for 'or'; ':', 'and' and +'sequence' for 'seq'. + +** Frames + ++++ +*** New command 'make-frame-on-monitor' makes a frame on the specified monitor. + ++++ +*** New value of 'minibuffer' frame parameter 'child-frame'. +This allows to create and parent immediately a minibuffer-only child +frame when making a frame. + +--- +*** New predicates 'display-blink-cursor-p' and 'display-symbol-keys-p'. +These predicates are to be preferred over 'display-graphic-p' when +testing for blinking cursor capability and the capability to have +symbols (e.g., '[return]', '[tab]', '[backspace]') as keys respectively. + +** Tabulated List mode + ++++ +*** New user options for tabulated list sort indicators. +You can now customize which sorting indicator character to display +near the current column in Tabulated Lists (see variables +'tabulated-list-gui-sort-indicator-asc', +'tabulated-list-gui-sort-indicator-desc', +'tabulated-list-tty-sort-indicator-asc', and +'tabulated-list-tty-sort-indicator-desc'). + +** Text mode + ++++ +*** 'text-mode-variant' is now obsolete, use 'derived-mode-p' instead. + +** CUA mode + +--- +*** New user option 'cua-rectangle-terminal-modifier-key'. +This user option allows for the customization of the modifier key used +in a terminal frame. + +** JS mode + +--- +*** JSX syntax is now automatically detected and enabled. +If a file imports Facebook's 'React' library, or if the file uses the +extension '.jsx', then various features supporting XML-like syntax +will be supported in 'js-mode' and derivative modes. ('js-jsx-mode' +no longer needs to be enabled.) + +--- +*** New user option 'js-jsx-detect-syntax' disables automatic detection. +This is turned on by default. + +--- +*** New user option 'js-jsx-syntax' enables JSX syntax unconditionally. +This is off by default. + +--- +*** New variable 'js-jsx-regexps' controls JSX detection. + +--- +*** JSX syntax is now highlighted like SGML. + +--- +*** JSX code is properly indented in many more scenarios. +Previously, JSX indentation usually only worked when an element was +wrapped in parenthesis (e.g. in a 'return' statement or a function +call). It would also fail in many intricate cases. Now, indentation +should work anywhere without parenthesis; many more intricacies are +supported; and, indentation conventions align more closely with those +of the React developer community (see 'js-jsx-align->-with-<'), +otherwise still adhering to SGML conventions. + +--- +*** New user option 'js-jsx-align->-with-<' controls '>' indents. +Commonly in JSX code, a '>' on its own line is indented at the same +level as its opening '<'. This is the new default for JSX. This +behavior is slightly different than that used by SGML in Emacs, where +'>' is indented at the same level as attributes, which was also the +old default for JSX. + +This is turned on by default. To get back the old default indentation +behavior of aligning '>' with attributes, set 'js-jsx-align->-with-<' +to nil. + +--- +*** Indentation uses 'js-indent-level' instead of 'sgml-basic-offset'. +Since JSX is a syntax extension of JavaScript, it makes the most sense +for JSX expressions to be indented the same number of spaces as other +JS expressions. This is a breaking change, but it probably aligns +with how you'd expect this indentation to behave. If you want JSX to +be indented like JS, you won't need to change your config. + +The old behavior can be emulated by controlling JSX indentation +independently of JS, by setting 'js-jsx-indent-level'. + +--- +*** New user option 'js-jsx-indent-level' for different JSX indentation. +If you wish to indent JSX by a different number of spaces than JS, set +this user option to the desired number. + +--- +*** New user option 'js-jsx-attribute-offset' for JSX attribute indents. + +--- +*** New variable 'js-syntactic-mode-name' controls mode name display. +Previously, the mode name was simply 'JavaScript'. Now, when a syntax +extension like JSX is enabled, the mode name is 'JavaScript[JSX]'. +Set this variable to nil to disable the new behavior. + +--- +*** New function 'js-use-syntactic-mode-name' for deriving modes. +Packages deriving from 'js-mode' with 'define-derived-mode' should +call this function to add enabled syntax extensions to their mode +name, too. + +** Autorevert + +*** New variable 'auto-revert-avoid-polling' for saving power. +When set to a non-nil value, buffers in Auto Revert mode are no longer +polled for changes periodically. This reduces the power consumption +of an idle Emacs, but may fail on some network file systems; set +'auto-revert-notify-exclude-dir-regexp' to match files where +notification is not supported. The default value is nil. + +*** New variable 'buffer-auto-revert-by-notification' +A major mode can declare that notification on the buffer's default +directory is sufficient to know when updates are required, by setting +the new variable 'buffer-auto-revert-by-notification' to a non-nil +value. Auto Revert mode can use this information to avoid polling the +buffer periodically when 'auto-revert-avoid-polling' is non-nil. + + +* New Modes and Packages in Emacs 27.1 + +** fileloop.el lets one setup multifile operations like search&replace. + ++++ +** Emacs can now visit files in archives as if they were directories. +This feature uses Tramp and works only on systems which support GVFS, +i.e. GNU/Linux, roughly spoken. See the node "(tramp) Archive file +names" in the Tramp manual for full documentation of these facilities. + ++++ +** New library for writing JSONRPC applications (https://jsonrpc.org). +The 'jsonrpc' library enables writing Emacs Lisp applications that +rely on this protocol. Since the protocol is designed to be +transport-agnostic, the library provides an API to implement new +transport strategies as well as a separate API to use them. A +transport implementation for process-based communication, such as is +used by the Language Server Protocol (LSP), is readily available. + ++++ +** Backtrace mode improves viewing of Elisp backtraces. +Backtrace mode adds pretty printing, fontification and ellipsis +expansion to backtrace buffers produced by the Lisp debugger, Edebug +and ERT. See the node "(elisp) Backtraces" in the Elisp manual for +documentation of the new mode and its commands. + + +* Incompatible Lisp Changes in Emacs 27.1 + ++++ +** add-hook does not always add to the front or the end any more. +The replacement of `append` with `depth` implies that the function is not +always added to the very front (when append/depth is nil) or the very end (when +append/depth is t) any more because other functions on the hook may have +specified higher/lower depths. + +** In 'compilation-error-regexp-alist' the old undocumented feature +where 'line' could be a function of 2 arguments has been dropped. + +** 'define-fringe-bitmap' is always defined, even when Emacs is built +without any GUI support. + +--- +** Just loading a theme's file no longer activates the theme's settings. +Loading a theme with 'M-x load-theme' still activates the theme, as it +did before. However, loading the theme's file with 'M-x load-file', +or using 'require' or 'load' in a Lisp program, doesn't actually apply +the theme's settings until you either invoke 'M-x enable-theme' or +type 'M-x load-theme'. (In a Lisp program, calling 'enable-theme' or +invoking 'load-theme' with NO-ENABLE argument omitted or nil has the +same effect of activating a theme whose file has been loaded.) The +special case of the 'user' theme is an exception: it is frequently +used for ad-hoc customizations, so the settings of that theme are by +default applied immediately. + +The variable 'custom--inhibit-theme-enable' controls this behavior; +its default value changed in Emacs 27.1. + +** The REPETITIONS argument of 'benchmark-run' can now also be a variable. + +** Interpretation of relative 'HOME' directory has changed. +If "$HOME" is set to a relative file name, 'expand-file-name' now +interprets it relative to the directory where Emacs was started, not +relative to the 'default-directory' of the current buffer. We recommend +always setting "$HOME" to an absolute file name, so that its meaning is +independent of where Emacs was started. + +** The FILENAME argument to 'file-name-base' is now mandatory and no +longer defaults to 'buffer-file-name'. + +--- +** The function 'eldoc-message' now accepts a single argument. +Programs that called it with multiple arguments before should pass +them through 'format' first. Even that is discouraged: for ElDoc +support, you should set 'eldoc-documentation-function' instead of +calling 'eldoc-message' directly. + +** Old-style backquotes now generate an error. +They have been generating warnings for a decade. To interpret +old-style backquotes as new-style, bind the new variable +'force-new-style-backquotes' to t. + +** Defining a Common Lisp structure using 'cl-defstruct' or +'cl-struct-define' whose name clashes with a builtin type (e.g., +'integer' or 'hash-table') now signals an error. + +** When formatting a floating-point number as an octal or hexadecimal +integer, Emacs now signals an error if the number is too large for the +implementation to format. + +** 'logb' now returns infinity when given an infinite or zero argument, +and returns a NaN when given a NaN. Formerly, it returned an extreme +fixnum for such arguments. + +--- +** Some functions and variables obsolete since Emacs 22 have been removed: +archive-mouse-extract, assoc-ignore-case, assoc-ignore-representation, +backward-text-line, blink-cursor, bookmark-exit-hooks, +comint-use-prompt-regexp-instead-of-fields, compilation-finish-function, +count-text-lines, cperl-vc-header-alist, custom-face-save-command, +cvs-display-full-path, cvs-fileinfo->full-path, delete-frame-hook, +derived-mode-class, describe-char-after, describe-project, +desktop-basefilename, desktop-buffer-handlers, desktop-buffer-misc-functions, +desktop-buffer-modes-to-save, desktop-enable, desktop-load-default, +dired-omit-files-p, disabled-command-hook, dungeon-mode-map, +electric-nroff-mode, electric-nroff-newline, electric-perl-terminator, +focus-frame, forward-text-line, generic-define-mswindows-modes, +generic-define-unix-modes, generic-font-lock-defaults, goto-address-at-mouse, +highlight-changes-colours, ibuffer-elide-long-columns, ibuffer-hooks, +ibuffer-mode-hooks, icalendar-convert-diary-to-ical, +icalendar-extract-ical-from-buffer, imenu-always-use-completion-buffer-p, +ipconfig-program, ipconfig-program-options, isearch-lazy-highlight-cleanup, +isearch-lazy-highlight-initial-delay, isearch-lazy-highlight-interval, +isearch-lazy-highlight-max-at-a-time, iswitchb-use-fonts, +latin1-char-displayable-p, mouse-wheel-click-button, mouse-wheel-down-button, +mouse-wheel-up-button, new-frame, pascal-outline, process-kill-without-query, +recentf-menu-append-commands-p, rmail-pop-password, +rmail-pop-password-required, savehist-load, set-default-font, +spam-list-of-processors, speedbar-add-ignored-path-regexp, +speedbar-buffers-line-path, speedbar-ignored-path-expressions, +speedbar-ignored-path-regexp, speedbar-line-path, speedbar-path-line, +timer-set-time-with-usecs, tooltip-gud-display, tooltip-gud-modes, +tooltip-gud-toggle-dereference, unfocus-frame, unload-hook-features-list, +update-autoloads-from-directories, vc-comment-ring, vc-comment-ring-index, +vc-comment-search-forward, vc-comment-search-reverse, vc-comment-to-change-log, +vc-diff-switches-list, vc-next-comment, vc-previous-comment, view-todo, +x-lost-selection-hooks, x-sent-selection-hooks. + +--- +** Further functions and variables obsolete since Emacs 24 have been removed: +default-directory-alist, dired-default-directory, +dired-default-directory-alist, dired-enable-local-variables, +dired-hack-local-variables, dired-local-variables-file, dired-omit-here-always. + +** Garbage collection no longer treats miscellaneous objects specially; +they are now allocated like any other pseudovector. As a result, the +'garbage-collect' and 'memory-use-count' functions no longer return a +'misc' component, and the 'misc-objects-consed' variable has been +removed. + ++++ +** Reversed character ranges are no longer permitted in 'rx'. +Previously, ranges where the starting character is greater than the +ending character were silently omitted. +For example, '(rx (any "@z-a" (?9 . ?0)))' would match '@' only. +Now, such 'rx' expressions generate an error. + ++++ +** 'text-mode' no longer sets the value of 'indent-line-function'. +The global value of 'indent-line-function', which defaults to +'indent-relative', will no longer be reset locally when turning on +'text-mode'. + +To get back the old behavior, add a function to 'text-mode-hook' which +performs '(setq-local indent-line-function #'indent-relative)'. + +** 'make-process' no longer accepts a non-nil ':stop' key. This has +never worked reliably, and now causes an error. -** Functions 'string-trim-left', 'string-trim-right' and 'string-trim' -now accept optional arguments which specify the regexp of a substring -to trim. ++++ +** 'eventp' no longer returns non-nil for lists whose car is nil. +This is consistent with the fact that nil, though a symbol, is not a +valid event type. -** The new function 'char-from-name' converts a Unicode name string -to the corresponding character code. + +* Lisp Changes in Emacs 27.1 -** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a -Lisp object suitable for use with 'eq' and 'eql' correspondingly. If -two objects are 'eq' ('eql'), then the result of 'sxhash-eq' -('sxhash-eql') on them will be the same. ++++ +** The 'append' arg of 'add-hook' is generalized to a finer notion of 'depth' +This makes it possible to control the ordering of functions more precisely, +as was already possible in 'add-function' and `advice-add`. -** Function 'sxhash' has been renamed to 'sxhash-equal' for -consistency with the new functions. For compatibility, 'sxhash' -remains as an alias to 'sxhash-equal'. +--- +** New 'help-fns-describe-variable-functions' hook. +Makes it possible to add metadata information to 'describe-variable'. -** 'make-hash-table' now defaults to a rehash threshold of 0.8125 -instead of 0.8, to avoid rounding glitches. +** i18n (internationalization) -** New function 'add-variable-watcher' can be used to call a function -when a symbol's value is changed. This is used to implement the new -debugger command 'debug-on-variable-change'. +*** ngettext can be used now to return the right plural form +according to the given numeric value. -** New variable 'print-escape-control-characters' causes 'prin1' and -'print' to output control characters as backslash sequences. ++++ +** 'inhibit-null-byte-detection' is renamed to 'inhibit-nul-byte-detection'. -** Time conversion functions that accept a time zone rule argument now -allow it to be OFFSET or a list (OFFSET ABBR), where the integer -OFFSET is a count of seconds east of Universal Time, and the string -ABBR is a time zone abbreviation. The affected functions are -'current-time-string', 'current-time-zone', 'decode-time', -'format-time-string', and 'set-time-zone-rule'. ++++ +** 'self-insert-command' takes the char to insert as (optional) argument. -** 'format-time-string' now formats '%q' to the calendar quarter. +** 'lookup-key' can take a list of keymaps as argument. -** New built-in function 'mapcan'. -It avoids unnecessary consing (and garbage collection). ++++ +** 'condition-case' now accepts 't' to match any error symbol. -** 'car' and 'cdr' compositions 'cXXXr' and 'cXXXXr' are now part of Elisp. ++++ +** New function 'proper-list-p'. +Given a proper list as argument, this predicate returns its length; +otherwise, it returns nil. 'format-proper-list-p' is now an obsolete +alias for the new function. -** 'gensym' is now part of Elisp. ++++ +** Emacs Lisp integers can now be of arbitrary size. +Emacs uses the GNU Multiple Precision (GMP) library to support +integers whose size is too large to support natively. The integers +supported natively are known as "fixnums", while the larger ones are +"bignums". The new predicates 'bignump' and 'fixnump' can be used to +distinguish between these two types of integers. + +All the arithmetic, comparison, and logical (a.k.a. "bitwise") +operations where bignums make sense now support both fixnums and +bignums. However, note that unlike fixnums, bignums will not compare +equal with 'eq', you must use 'eql' instead. (Numerical comparison +with '=' works on both, of course.) + +Since large bignums consume a lot of memory, Emacs limits the size of +the largest bignum a Lisp program is allowed to create. The +nonnegative value of the new variable 'integer-width' specifies the +maximum number of bits allowed in a bignum. Emacs signals an integer +overflow error if this limit is exceeded. + +Several primitive functions formerly returned floats or lists of +integers to represent integers that did not fit into fixnums. These +functions now simply return integers instead. Affected functions +include functions like 'encode-char' that compute code-points, functions +like 'file-attributes' that compute file sizes and other attributes, +functions like 'process-id' that compute process IDs, and functions like +'user-uid' and 'group-gid' that compute user and group IDs. + +** Time values -** Low-level list functions like 'length' and 'member' now do a better -job of signaling list cycles instead of looping indefinitely. ++++ +*** Although the default timestamp format is still '(HI LO US PS)', +it is planned to change in a future Emacs version, to exploit bignums. +The documentation has been updated to mention that the timestamp +format may change and that programs should use functions like +'format-time-string', 'decode-time', and 'encode-time' rather than +probing the innards of a timestamp directly, or creating a timestamp +by hand. -** The new functions 'make-nearby-temp-file' and 'temporary-file-directory' -can be used for creation of temporary files on remote or mounted directories. ++++ +*** 'encode-time' supports a new API '(encode-time TIME &optional FORM)'. +This can convert decoded times and Lisp time values to Lisp timestamps +of various forms, including a new timestamp form '(TICKS . HZ)', where +TICKS is an integer and HZ is a positive integer denoting a clock +frequency. The old 'encode-time' API is still supported. -** On GNU platforms when operating on a local file, 'file-attributes' -no longer suffers from a race when called while another process is -altering the filesystem. On non-GNU platforms 'file-attributes' -attempts to detect the race, and returns nil if it does so. ++++ +*** 'time-add', 'time-subtract', and 'time-less-p' now accept +infinities and NaNs too, and propagate them or return nil like +floating-point operators do. -** The new function 'file-local-name' can be used to specify arguments -of remote processes. ++++ +*** New function 'time-equal-p' compares time values for equality. -** The new functions 'file-name-quote', 'file-name-unquote' and -'file-name-quoted-p' can be used to quote / unquote file names with -the prefix "/:". ++++ +*** 'format-time-string' supports a new conversion specifier flag '+' +that acts like the '0' flag but also puts a '+' before nonnegative +years containing more than four digits. This is for compatibility +with POSIX.1-2017. -** The new error 'file-missing', a subcategory of 'file-error', is now -signaled instead of 'file-error' if a file operation acts on a file -that does not exist. +** 'define-minor-mode' automatically documents the meaning of ARG. -** The function 'delete-directory' no longer signals an error when -operating recursively and when some other process deletes the directory -or its files before 'delete-directory' gets to them. ++++ +** The function 'recenter' now accepts an additional optional argument. +By default, calling 'recenter' will not redraw the frame even if +'recenter-redisplay' is non-nil. Call 'recenter' with the new second +argument non-nil to force redisplay per 'recenter-redisplay's value. -** New error type 'user-search-failed' like 'search-failed' but -avoids debugger like 'user-error'. ++++ +** New functions 'major-mode-suspend' and 'major-mode-restore'. +Use them when switching temporarily to another major mode, e.g. for +'hexl-mode', or to switch between 'c-mode' and 'image-mode' in XPM. -** The function 'line-number-at-pos' now takes a second optional -argument 'absolute'. If this parameter is nil, the default, this -function keeps on returning the line number taking potential narrowing -into account. If this parameter is non-nil, the function ignores -narrowing and returns the absolute line number. ++++ +** New macro 'dolist-with-progress-reporter'. +This works like 'dolist', but reports progress similar to +'dotimes-with-progress-reporter'. + ++++ +** New hook 'after-delete-frame-functions'. +This works like 'delete-frame-functions', but runs after the frame to +be deleted has been made dead and removed from the frame list. -** The function 'color-distance' now takes a second optional argument -'metric'. When non-nil, it should be a function of two arguments that -accepts two colors and returns a number. +--- +** The function 'provided-mode-derived-p' was extended to support aliases. +The function now returns non-nil when the argument MODE is derived +from any alias of any of MODES. -** Changes in Frame and Window Handling ++++ +** New frame focus state inspection interface. +The hooks 'focus-in-hook' and 'focus-out-hook' are now obsolete. +Instead, attach to 'after-focus-change-function' using 'add-function' +and inspect the focus state of each frame using 'frame-focus-state'. -*** Resizing a frame no longer runs 'window-configuration-change-hook'. -'window-size-change-functions' should be used instead. ++++ +** Emacs now requests and recognizes focus-change notifications from TTYs. +On terminal emulators that support the feature, Emacs can now support +'focus-in-hook' and 'focus-out-hook' for TTY frames. -*** The new function 'frame-size-changed-p' can tell whether a frame has -been resized since the last time 'window-size-change-functions' has been -run. ++++ +** Window-specific face remapping. +Face specifications (of the kind used in 'face-remapping-alist') +now support filters, allowing faces to vary between different windows +displaying the same buffer. See the node "(elisp) Face Remapping" +of the Emacs Lisp Reference manual for more detail. -*** The function 'frame-geometry' now also returns the width of a -frame's outer border. ++++ +** Window change functions have been redesigned. +Hooks reacting to window changes run now only when redisplay detects +that a change has actually occurred. Six hooks are now provided: +'window-buffer-change-functions' (run after window buffers have +changed), 'window-size-change-functions' (run after a window was +assigned a new buffer or size), 'window-configuration-change-hook' +(like the former but run also when a window was deleted), +'window-selection-change-functions' (run when the selected window +changed) and 'window-state-change-functions' and +'window-state-change-hook' (run when any of the preceding ones is +run). Applications can enforce running the latter two using the new +function 'set-frame-window-state-change'. 'window-scroll-functions' +are unaffected by these changes. + +In addition, a number of functions now allow the caller to detect what +has changed since last redisplay: 'window-old-buffer' returns for any +window the buffer it showed at that time. ‘old-selected-window’ and +'old-selected-frame' return the window and frame that were selected +during last redisplay. 'window-old-pixel-width' (renamed from +'window-pixel-width-before-size-change'), 'window-old-pixel-height' +(renamed from 'window-pixel-height-before-size-change'), +'window-old-body-pixel-width' and 'window-old-body-pixel-height' +return the total and body sizes of any window during last redisplay. + +See the section "(elisp) Window Hooks" in the Elisp manual for a +detailed explanation of the new behavior. -*** New frame parameters and changed semantics for older ones: ++++ +** New option 'resize-mini-frames'. +This option allows to automatically resize minibuffer-only frames +similarly to how minibuffer windows are resized on "normal" frames. -**** 'z-group' positions a frame above or below all others. ++++ +** New buffer display action function 'display-buffer-in-direction'. +This function allows to specify the location of the window chosen by +'display-buffer' in various ways. -**** 'min-width' and 'min-height' specify the absolute minimum size of a -frame. ++++ +** New buffer display action alist entry 'dedicated'. +Such an entry allows to specify the dedicated status of a window +created by 'display-buffer'. -**** 'parent-frame' makes a frame the child frame of another Emacs -frame. The section "(elisp) Child Frames" in the ELisp manual -describes the intrinsics of that relationship. ++++ +** New buffer display action alist entry 'window-min-height'. +Such an entry allows to specify a minimum height of the window used +for displaying a buffer. 'display-buffer-below-selected' is the only +action function to respect it at the moment. -**** 'delete-before' triggers deletion of one frame before that of -another. ++++ +** New buffer display action alist entry 'direction'. +This entry is used to specify the location of the window chosen by +'display-buffer-in-direction'. -**** 'mouse-wheel-frame' specifies another frame whose windows shall be -scrolled instead. ++++ +** Additional meaning of display action alist entry 'window'. +A 'window' entry can now also specify a reference window for +'display-buffer-in-direction'. -**** 'no-other-frame' has 'next-frame' and 'previous-frame' skip this -frame. ++++ +** The function 'assoc-delete-all' now takes an optional predicate argument. -**** 'skip-taskbar' removes a frame's icon from the taskbar and has -'Alt-<TAB>' skip this frame. ++++ +** New function 'string-distance' to calculate the Levenshtein distance +between two strings. -**** 'no-focus-on-map' avoids that a frame gets input focus when mapped. +** 'print-quoted' now defaults to t, so if you want to see +'(quote x)' instead of 'x you will have to bind it to nil where applicable. -**** 'no-accept-focus' means that a frame does not want to get input -focus via the mouse. ++++ +** Numbers formatted via '%o' or '%x' are now formatted as signed integers. +This avoids problems in calls like '(read (format "#x%x" -1))', and is +more compatible with bignums. To get the traditional machine-dependent +behavior, set the experimental variable 'binary-as-unsigned' to t, +and if the new behavior breaks your code please email +<32252@debbugs.gnu.org>. Because '%o' and '%x' can now format signed +integers, they now support the '+' and space flags. + +** To avoid confusion caused by "smart quotes", the reader signals an +error when reading Lisp symbols which begin with one of the following +quotation characters: ‘’‛“”‟〞"'. A symbol beginning with such a +character can be written by escaping the quotation character with a +backslash. For example: + + (read "‘smart") => (invalid-read-syntax "strange quote" "‘") + (read "\\‘smart") == (intern "‘smart") -**** 'undecorated' removes the window manager decorations from a frame. ++++ +** Omitting variables after '&optional' and '&rest' is now allowed. +For example '(defun foo (&optional))' is no longer an error. This is +sometimes convenient when writing macros. See the ChangeLog entry +titled "Allow '&rest' or '&optional' without following variable +(Bug#29165)" for a full listing of which arglists are accepted across +versions. + +** Internal parsing commands now use 'syntax-ppss' and disregard +'open-paren-in-column-0-is-defun-start'. This affects mostly things like +'forward-comment', 'scan-sexps', and 'forward-sexp' when parsing backward. +The new variable 'comment-use-syntax-ppss' can be set to nil to recover +the old behavior if needed. + +** The 'server-name' and 'server-socket-dir' variables are set when a +socket has been passed to Emacs. + +--- +** The 'file-system-info' function is now available on all platforms. +instead of just Microsoft platforms. This fixes a 'get-free-disk-space' +bug on OS X 10.8 and later. + +--- +** The function 'get-free-disk-space' returns now a non-nil value for +remote systems, which support this check. -**** 'override-redirect' tells the window manager to disregard this -frame. ++++ +** 'memory-limit' now returns a better estimate of memory consumption. -**** 'width' and 'height' now allow the specification of pixel values -and ratios. ++++ +** New macro 'combine-change-calls' arranges to call the change hooks +('before-change-functions' and 'after-change-functions') just once +each around a sequence of lisp forms, given a region. This is +useful when a function makes a possibly large number of repetitive +changes and the change hooks are time consuming. -**** 'left' and 'top' now allow the specification of ratios. ++++ +** 'eql', 'make-hash-table', etc. now treat NaNs consistently. +Formerly, some of these functions ignored signs and significands of +NaNs. Now, all these functions treat NaN signs and significands as +significant. For example, '(eql 0.0e+NaN -0.0e+NaN)' now returns nil +because the two NaNs have different signs; formerly it returned t. +Also, Emacs now reads and prints NaN significands; e.g., if X is a +NaN, '(format "%s" X)' now returns "0.0e+NaN", "1.0e+NaN", etc., +depending on X's significand. -**** 'keep-ratio' preserves size and position of child frames when their -parent frame is resized. ++++ +** The function 'make-string' accepts an additional optional argument. +If the optional third argument is non-nil, 'make-string' will produce +a multibyte string even if its second argument is an ASCII character. -**** 'no-special-glyphs' suppresses display of truncation and -continuation glyphs in a frame. +** '(format "%d" X)' no longer mishandles a floating-point number X that +does not fit in a machine integer. -**** 'auto-hide-function' and 'minibuffer-exit' handle auto hiding of -frames and exiting from minibuffer individually. +--- +** New coding-system 'ibm038'. +This is the International EBCDIC encoding, also available as aliases +'ebcdic-int' and 'cp038'. -**** 'fit-frame-to-buffer-margins' and 'fit-frame-to-buffer-sizes' -handle fitting a frame to its buffer individually. ++++ +** In the DST slot, 'encode-time' and 'parse-time-string' now return -1 +if it is not known whether daylight saving time is in effect. +Formerly they were inconsistent: 'encode-time' returned t in this +situation, whereas 'parse-time-string' returned nil. Now they +consistently use use nil to mean that DST is not in effect, and use -1 +to mean that it is not known whether DST is in effect. -**** 'drag-internal-border', 'drag-with-header-line', -'drag-with-mode-line', 'snap-width', 'top-visible' and 'bottom-visible' -allow dragging and resizing frames with the mouse. +** New JSON parsing and serialization functions 'json-serialize', +'json-insert', 'json-parse-string', and 'json-parse-buffer'. These +are implemented in C using the Jansson library. -**** 'minibuffer' is now set to the default minibuffer window when -initially specified as nil and is not reset to nil when initially -specifying a minibuffer window. ++++ +** New function 'ring-resize'. +'ring-resize' can be used to grow or shrink a ring. -*** The new function 'frame-list-z-order' returns a list of all frames -in Z (stacking) order. ++++ +** New function 'flatten-tree'. +'flatten-list' is provided as an alias. These functions take a tree +and 'flatten' it such that the result is a list of all the terminal +nodes. -*** The function 'x-focus-frame' optionally tries to not activate its -frame. ++++ +** 'zlib-decompress-region' can partially decompress corrupted data. +If the new optional ALLOW-PARTIAL argument is passed, then the data +that was decompressed successfully before failing will be inserted +into the buffer. + +** Mailcap + +--- +*** The new function 'mailcap-file-name-to-mime-type' has been added. +It's a simple convenience function for looking up MIME types based on +file name extensions. + +*** The default way the list of possible external viewers for MIME +types is sorted and chosen has changed. Earlier, the most specific +viewer was chosen, even if there was a general override in "~/.mailcap". +For instance, if "/etc/mailcap" has an entry for "image/gif", that one +will be chosen even if you have an entry for "image/*" in your +"~/.mailcap" file. But with the new method, entries from "~/.mailcap" +overrides all system and Emacs-provided defaults. To get the old +method back, set 'mailcap-prefer-mailcap-viewers' to nil. -*** The variable 'focus-follows-mouse' has a third meaningful value -'auto-raise' to indicate that the window manager automatically raises a -frame when the mouse pointer enters it. +** URL -*** The new function 'frame-restack' puts a frame above or below -another on the display. +*** The 'file:' handler no longer looks for "index.html" in +directories if you ask it for a "file:///dir" URL. Since this is a +low-level library, such decisions (if they are to be made at all) are +left to higher-level functions. -*** The new face 'internal-border' specifies the background of a frame's -internal border. +** Image mode -*** The NORECORD argument of 'select-window' now has a meaningful value -'mark-for-redisplay' which is like any other non-nil value but marks -WINDOW for redisplay. +*** 'image-mode' started using ImageMagick by default for all images +some years back. It now respects 'imagemagick-types-inhibit' as a way +to disable that. -*** Support for side windows is now official. The display action -function 'display-buffer-in-side-window' will display its buffer in a -side window. Functions for toggling all side windows on a frame, -changing and reversing the layout of side windows and returning the -main (major non-side) window of a frame are provided. For details -consult the section "(elisp) Side Windows" in the ELisp manual. +--- +*** Some 'image-mode' variables are now buffer-local. +The image parameters 'image-transform-rotation', +'image-transform-scale' and 'image-transform-resize' are now declared +buffer-local, so each buffer could have its own values for these +parameters. -*** Support for atomic windows - rectangular compositions of windows -treated by 'split-window', 'delete-window' and 'delete-other-windows' -like a single live window - is now official. For details consult the -section "(elisp) Atomic Windows" in the ELisp manual. +** Modules -*** New 'display-buffer' alist entry 'window-parameters' allows the -assignment of window parameters to the window used for displaying the -buffer. +*** The function 'load' now behaves correctly when loading modules. +Specifically, it puts the module name into 'load-history', prints +loading messages if requested, and protects against recursive loads. -*** New function 'display-buffer-reuse-mode-window' is an action function -suitable for use in 'display-buffer-alist'. For example, to avoid -creating a new window when opening man pages when there's already one, -use +*** New module environment function 'process_input' to process user +input while module code is running. -(add-to-list 'display-buffer-alist - '("\\`\\*Man .*\\*\\'" . - (display-buffer-reuse-mode-window - (inhibit-same-window . nil) - (mode . Man-mode)))) +*** New module environment functions 'make_time' and 'extract_time' to +convert between timespec structures and Emacs Lisp time values. -*** New window parameter 'no-delete-other-windows' prevents that -its window gets deleted by 'delete-other-windows'. +*** New module environment functions 'make_big_integer' and +'extract_big_integer' to create and extract arbitrary-size integer +values. -*** New window parameters 'mode-line-format' and 'header-line-format' -allow the buffer-local formats for this window to be overridden. +*** emacs-module.h now defines a macro 'EMACS_MAJOR_VERSION' that expands +to the major version of the latest Emacs supported by the header. -*** New command 'window-swap-states' swaps the states of two live -windows. ++++ +** The function 'read-variable' now uses its own history list. +The history of variable names read by 'read-variable' is recorded in +the new variable 'custom-variable-history'. -*** New functions 'window-pixel-width-before-size-change' and -'window-pixel-height-before-size-change' support detecting which -window changed size when 'window-size-change-functions' are run. +--- +** The function 'string-to-unibyte' is no longer declared obsolete. +We have found that there are legitimate use cases for this function, +where there's no better alternative. We believe that the incorrect +uses of this function all but disappeared by now, so we are +un-obsoleting it. -*** The new function 'window-lines-pixel-dimensions' returns the pixel -dimensions of a window's text lines. ++++ +** New function 'group-name' returns a group name corresponding to GID. -*** The new function 'window-largest-empty-rectangle' returns the -dimensions of the largest rectangular area not occupying any text in a -window's body. ++++ +** 'make-process' now takes a keyword argument ':file-handler'; if +that is non-nil, it will look for a file name handler for the current +buffer's 'default-directory' and invoke that file name handler to make +the process. That way 'make-process' can start remote processes. -*** The semantics of 'mouse-autoselect-window' has changed slightly. -For details see the section "(elisp) Mouse Window Auto-selection" in -the ELisp manual. ++++ +** Emacs now supports resizing (scaling) of images without ImageMagick. +All modern systems are supported by this feature. (On GNU and Unix +systems, Cairo drawing or the XRender extension to X11 is required for +this to be available; the configure script will test for it and, if +found, enable scaling.) -*** 'select-frame-by-name' now may return a frame on another display -if it does not find a suitable one on the current display. +The new function 'image-scaling-p' can be used to test whether any +given frame supports resizing. -** 'tcl-auto-fill-mode' is now declared obsolete. -Its functionality can be replicated simply by setting -'comment-auto-fill-only-comments'. ++++ +** '(locale-info 'paper)' now returns the paper size on systems that support it. +This is currently supported on GNUish hosts and on modern versions of +MS-Windows. -** New pcase pattern 'rx' to match against an rx-style regular expression. -For details, see the doc string of 'rx--pcase-macroexpander'. ++++ +** The function 'regexp-opt' accepts an additional optional argument. +By default, the regexp returned by 'regexp-opt' may match the strings +in any order. If the new third argument is non-nil, the match is +guaranteed to be performed in the order given, as if the strings were +made into a regexp by joining them with '\|'. -** New functions to set region from secondary selection and vice versa. -The new functions 'secondary-selection-to-region' and -'secondary-selection-from-region' let you set the beginning and the -end of the region from those of the secondary selection and vice -versa. ++++ +** The function 'regexp-opt', when given an empty list of strings, now +returns a regexp that never matches anything, which is an identity for +this operation. Previously, the empty string was returned in this +case. -** New function 'lgstring-remove-glyph' can be used to modify a -gstring returned by the underlying layout engine (e.g. m17n-flt, -uniscribe). +** New constant 'regexp-unmatchable' contains a never-matching regexp. +It is a convenient and readable way to specify a regexp that should +not match anything, and is as fast as any such regexp can be. -* Changes in Emacs 26.1 on Non-Free Operating Systems - -** Intercepting hotkeys on Windows 7 and later now works better. -The new keyboard hooking code properly grabs system hotkeys such as -'Win-*' and 'Alt-TAB', in a way that Emacs can get at them before the -system. This makes the 'w32-register-hot-key' functionality work -again on all versions of MS-Windows starting with Windows 7. On -Windows NT and later you can now register any hotkey combination. (On -Windows 9X, the previous limitations, spelled out in the Emacs manual, -still apply.) - -** 'convert-standard-filename' no longer mirrors slashes on MS-Windows. -Previously, on MS-Windows this function converted slash characters in -file names into backslashes. It no longer does that. If your Lisp -program used 'convert-standard-filename' to prepare file names to be -passed to subprocesses (which is not the recommended usage of that -function), you will now have to mirror slashes in your application -code. One possible way is this: - - (let ((start 0)) - (while (string-match "/" file-name start) - (aset file-name (match-beginning 0) ?\\) - (setq start (match-end 0)))) - -** GUI sessions on MS-Windows now treat SIGINT like Posix platforms do. -The effect of delivering a Ctrl-C (SIGINT) signal to a GUI Emacs on -MS-Windows is now the same as on Posix platforms -- Emacs saves the -session and exits. In particular, this will happen if you start -emacs.exe from the Windows shell, then type Ctrl-C into that shell's -window. - -** 'signal-process' supports SIGTRAP on Windows XP and later. -The 'kill' emulation on Windows now maps SIGTRAP to a call to the -'DebugBreakProcess' API. This causes the receiving process to break -execution and return control to the debugger. If no debugger is -attached to the receiving process, the call is typically ignored. -This is in contrast to the default action on POSIX Systems, where it -causes the receiving process to terminate with a core dump if no -debugger has been attached to it. - -** 'set-mouse-position' and 'set-mouse-absolute-pixel-position' work -on macOS. - -** Emacs can now be run as a GUI application from the command line on -macOS. - -** 'ns-appearance' and 'ns-transparent-titlebar' change the appearance -of frame decorations on macOS 10.9+. - -** 'ns-use-thin-smoothing' enables thin font smoothing on macOS 10.8+. - -** 'process-attributes' on Darwin systems now returns more information. - -** Mousewheel and trackpad scrolling on macOS 10.7+ now behaves more -like the macOS default. The new variables 'ns-mwheel-line-height', -'ns-use-mwheel-acceleration' and 'ns-use-mwheel-momentum' can be used -to customize the behavior. +* Changes in Emacs 27.1 on Non-Free Operating Systems + +--- +** Battery status is now supported in all Cygwin builds. +Previously it was supported only in the Cygwin-w32 build. + +** Emacs now handles key combinations involving the macOS "command" +and "option" modifier keys more correctly. + +** The special handling of 'frame-title-format' on NS where setting it +to 't' would enable the macOS proxy icon has been replaced with a +separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now +work as on other platforms. + +--- +** New primitive 'w32-read-registry'. +This primitive lets Lisp programs access the MS-Windows Registry by +retrieving values stored under a given key. It is intended to be used +for supporting features such as XDG-like location of important files +and directories. + ++++ +** The default value of 'w32-pipe-read-delay' is now zero. +This speeds up reading output from sub-processes that produce a lot of +data. + +This variable may need to be non-zero only when running DOS programs +as Emacs subprocesses, which by now is not supported on modern +versions of MS-Windows. Set this variable to 50 if for some reason +you need the old behavior (and please report such situations to Emacs +developers). + +--- +** New variable 'w32-multibyte-code-page'. +This variable holds the value of the multibyte code page used by the +system. It is usually zero, which indicates that 'w32-ansi-code-page' +is being used, except in Far Eastern locales. When this variable is +non-zero, Emacs at startup sets 'locale-coding-system' to the +corresponding encoding, instead of using 'w32-ansi-code-page'. + ++++ +** On NS the behaviour of drag and drop can now be modified by use of +modifier keys in line with Apples guidelines. This makes the drag and +drop behaviour more consistent, as previously the sending application +was able to 'set' modifiers without the knowledge of the user. + +** On NS multicolor font display is enabled again since it is also +implemented in Emacs on free operating systems via Cairo drawing. ---------------------------------------------------------------------- diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index f215542a529..1ce36fe99da 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -8,21 +8,21 @@ This file is about changes in Emacs versions 1 through 17. -Changes in Emacs 17 +* Changes in Emacs 17 -* Frustrated? +** Frustrated? Try M-x doctor. -* Bored? +** Bored? Try M-x hanoi. -* Brain-damaged? +** Brain-damaged? Try M-x yow. -* Sun3, Tahoe, Apollo, HP9000s300, Celerity, NCR Tower 32, +** Sun3, Tahoe, Apollo, HP9000s300, Celerity, NCR Tower 32, Sequent, Stride, Encore, Plexus and AT&T 7300 machines supported. The Tahoe, Sun3, Sequent and Celerity use 4.2. In regard to the @@ -30,24 +30,24 @@ Apollo, see the file APOLLO in this directory. NCR Tower32, HP9000s300, Stride and Nu run forms of System V. System V rel 2 also works on Vaxes now. See etc/MACHINES. -* System V Unix supported, including subprocesses. +** System V Unix supported, including subprocesses. It should be possible now to bring up Emacs on a machine running mere unameliorated system V Unix with no major work; just possible bug fixes. But you can expect to find a handful of those on any machine that Emacs has not been run on before. -* Berkeley 4.1 Unix supported. +** Berkeley 4.1 Unix supported. See etc/MACHINES. -* Portable `alloca' provided. +** Portable `alloca' provided. Emacs can now run on machines that do not and cannot support the library subroutine `alloca' in the canonical fashion, using an `alloca' emulation written in C. -* On-line manual. +** On-line manual. Info now contains an Emacs manual, with essentially the same text as in the printed manual. @@ -57,7 +57,7 @@ The manual can now be printed with a standard TeX. Nicely typeset and printed copies of the manual are available from the Free Software Foundation. -* Backup file version numbers. +** Backup file version numbers. Emacs now supports version numbers in backup files. @@ -108,7 +108,7 @@ to keep, overriding `dired-kept-versions'. A negative argument specifies the number of oldest versions to keep, using minus the argument to override `kept-old-versions'. -* Immediate conflict detection. +** Immediate conflict detection. Emacs now locks the files it is modifying, so that if you start to modify within Emacs a file that is being @@ -130,27 +130,27 @@ directory. If such a directory is not provided and told to Emacs as part of configuring it for your machine, the lock feature is turned off. -* M-x recover-file. +** M-x recover-file. This command is used to get a file back from an auto-save (after a system crash, for example). It takes a file name as argument and visits that file, but gets the data from the file's last auto save rather than from the file itself. -* M-x normal-mode. +** M-x normal-mode. This command resets the current buffer's major mode and local variables to be as specified by the visit filename, the -*- line and/or the Local Variables: block at the end of the buffer. It is the same thing normally done when a file is first visited. -* Echo area messages disappear shortly if minibuffer is in use. +** Echo area messages disappear shortly if minibuffer is in use. Any message in the echo area disappears after 2 seconds if the minibuffer is active. This allows the minibuffer to become visible again. -* C-z on System V runs a subshell. +** C-z on System V runs a subshell. On systems which do not allow programs to be suspended, the C-z command forks a subshell that talks directly to the terminal, and then waits @@ -158,18 +158,18 @@ for the subshell to exit. This gets almost the effect of suspending in that you can run other programs and then return to Emacs. However, you cannot log out from the subshell. -* C-c is always a prefix character. +** C-c is always a prefix character. Also, subcommands of C-c which are letters are always reserved for the user. No standard Emacs major mode defines any of them. -* Picture mode C-c commands changed. +** Picture mode C-c commands changed. The old C-c k command is now C-c C-w. The old C-c y command is now C-c C-x. -* Shell mode commands changed. +** Shell mode commands changed. All the special commands of Shell mode are now moved onto the C-c prefix. Most are not changed aside from that. @@ -182,7 +182,7 @@ is now C-c C-o, and C-x C-v (show output) is now C-c C-r. The old M-= (copy previous input) command is now C-c C-y. -* Shell mode recognizes aliases for `pushd', `popd' and `cd'. +** Shell mode recognizes aliases for `pushd', `popd' and `cd'. Shell mode now uses the variable `shell-pushd-regexp' as a regular expression to recognize any command name that is @@ -194,13 +194,13 @@ There are also `shell-popd-regexp' to recognize commands with the effect of a `popd', and `shell-cd-regexp' to recognize commands with the effect of a `cd'. -* "Exit" command in certain modes now C-c C-c. +** "Exit" command in certain modes now C-c C-c. These include electric buffer menu mode, electric command history mode, Info node edit mode, and Rmail edit mode. In all these modes, the command to exit used to be just C-c. -* Outline mode changes. +** Outline mode changes. Lines that are not heading lines are now called "body" lines. The command `hide-text' is renamed to `hide-body'. @@ -212,7 +212,7 @@ Changes of line visibility are no longer undoable. As a result, they no longer use up undo memory and no longer interfere with undoing earlier commands. -* Rmail changes. +** Rmail changes. The s and q commands now both expunge deleted messages before saving; use C-x C-s to save without expunging. @@ -229,23 +229,23 @@ o now outputs to an Rmail file, and C-o to a Unix mail file. The F command (rmail-find) is renamed to M-s (rmail-search). Various new commands and features exist; see the Emacs manual. -* Local bindings described first in describe-bindings. +** Local bindings described first in describe-bindings. -* [...], {...} now balance in Fundamental mode. +** [...], {...} now balance in Fundamental mode. -* Nroff mode and TeX mode. +** Nroff mode and TeX mode. There are two new major modes for editing nroff input and TeX input. See the Emacs manual for full information. -* New C indentation style variable `c-brace-imaginary-offset'. +** New C indentation style variable `c-brace-imaginary-offset'. The value of `c-brace-imaginary-offset', normally zero, controls the indentation of a statement inside a brace-group where the open-brace is not the first thing on a line. The value says where the open-brace is imagined to be, relative to the first nonblank character on the line. -* Dired improvements. +** Dired improvements. Dired now normally keeps the cursor at the beginning of the file name, not at the beginning of the line. The most used motion commands are @@ -259,22 +259,22 @@ printed in an error message. If the `v' command is invoked on a file which is a directory, dired is run on that directory. -* `visit-tag-table' renamed `visit-tags-table'. +** `visit-tag-table' renamed `visit-tags-table'. This is so apropos of `tags' finds everything you need to know about in connection with Tags. -* `mh-e' library uses C-c as prefix. +** `mh-e' library uses C-c as prefix. All the special commands of `mh-rmail' now are placed on a C-c prefix rather than on the C-x prefix. This is for consistency with other special modes with their own commands. -* M-$ or `spell-word' checks word before point. +** M-$ or `spell-word' checks word before point. It used to check the word after point. -* Quitting during autoloading no longer causes trouble. +** Quitting during autoloading no longer causes trouble. Now, when a file is autoloaded, all function redefinitions and `provide' calls are recorded and are undone if you quit @@ -284,14 +284,14 @@ As a result, it no longer happens that some of the entry points which are normally autoloading have been defined already, but the entire file is not really present to support them. -* `else' can now be indented correctly in C mode. +** `else' can now be indented correctly in C mode. TAB in C mode now knows which `if' statement an `else' matches up with, and can indent the `else' correctly under the `if', even if the `if' contained such things as another `if' statement, or a `while' or `for' statement, with no braces around it. -* `batch-byte-compile' +** `batch-byte-compile' Runs byte-compile-file on the files specified on the command line. All the rest of the command line arguments are taken as files to @@ -300,7 +300,7 @@ Must be used only with -batch, and kills emacs on completion. Each file will be processed even if an error occurred previously. For example, invoke `emacs -batch -f batch-byte-compile *.el'. -* `-batch' changes. +** `-batch' changes. `-batch' now implies `-q': no init file is loaded by Emacs when `-batch' is used. Also, no `term/TERMTYPE.el' file is loaded. Auto @@ -313,7 +313,7 @@ One echo-area message that is not suppressed is the one that says that a file is being loaded. That is because you can prevent this message by passing `t' as the third argument to `load'. -* Display of search string in incremental search. +** Display of search string in incremental search. Now, when you type C-s or C-r to reuse the previous search string, that search string is displayed immediately in the echo area. @@ -321,23 +321,23 @@ string, that search string is displayed immediately in the echo area. Three dots are displayed after the search string while search is actually going on. -* View commands. +** View commands. The commands C-x ], C-x [, C-x /, C-x j and C-x o are now available inside `view-buffer' and `view-file', with their normal meanings. -* Full-width windows preferred. +** Full-width windows preferred. The ``other-window'' commands prefer other full width windows, and will split only full width windows. -* M-x rename-file can copy if necessary. +** M-x rename-file can copy if necessary. When used between different file systems, since actual renaming does not work, the old file will be copied and deleted. -* Within C-x ESC, you can pick the command to repeat. +** Within C-x ESC, you can pick the command to repeat. While editing a previous command to be repeated, inside C-x ESC, you can now use the commands M-p and M-n to pick an earlier or @@ -353,24 +353,24 @@ The command you finally execute using C-x ESC is added to the front of the command history, unless it is identical with the first thing in the command history. -* Use C-c C-c to exit from editing within Info. +** Use C-c C-c to exit from editing within Info. It used to be C-z for this. Somehow this use of C-z was left out when all the others were moved. The intention is that C-z should always suspend Emacs. -* Default arg to C-x < and C-x > now window width minus 2. +** Default arg to C-x < and C-x > now window width minus 2. These commands, which scroll the current window horizontally by a specified number of columns, now scroll a considerable distance rather than a single column if used with no argument. -* Auto Save Files Deleted. +** Auto Save Files Deleted. The default value of `delete-auto-save-files' is now `t', so that when you save a file for real, its auto save file is deleted. -* Rnews changes. +** Rnews changes. The N, P and J keys in Rnews are renamed to M-n, M-p and M-j. These keys move among newsgroups. @@ -382,7 +382,7 @@ this change, are eliminated. The s command for outputting the current article to a file is renamed as o, to be compatible with Rmail. -* Sendmail changes. +** Sendmail changes. If you have a ~/.mailrc file, Emacs searches it for mailing address aliases, and these aliases are expanded when you send mail in Emacs. @@ -407,15 +407,15 @@ The new variable `mail-header-separator' now specifies the string to use on the line that goes between the headers and the message text. By default it is still "--text follows this line--". -* Command history truncated automatically. +** Command history truncated automatically. Just before each garbage collection, all but the last 30 elements of the command history are discarded. -Incompatible Lisp Programming Changes in Emacs 17 +* Incompatible Lisp Programming Changes in Emacs 17 -* `"e' no longer supported. +** `"e' no longer supported. This feature, which allowed Lisp functions to take arguments that were not evaluated, has been eliminated, because it is @@ -434,7 +434,7 @@ with (defun foo-1 (x y z) ... -* Functions `region-to-string' and `region-around-match' removed. +** Functions `region-to-string' and `region-around-match' removed. These functions were made for compatibility with Gosling Emacs, but it turns out to be undesirable to use them in GNU Emacs because they use @@ -450,24 +450,24 @@ the two functions `match-beginning' and `match-end'. These give you one bound at a time, as a numeric value, without changing point or the mark. -* Function `function-type' removed. +** Function `function-type' removed. This just appeared not to be very useful. It can easily be written in Lisp if you happen to want it. Just use `symbol-function' to get the function definition of a symbol, and look at its data type or its car if it is a list. -* Variable `buffer-number' removed. +** Variable `buffer-number' removed. You can still use the function `buffer-number' to find out a buffer's unique number (assigned in order of creation). -* Variable `executing-macro' renamed `executing-kbd-macro'. +** Variable `executing-macro' renamed `executing-kbd-macro'. This variable is the currently executing keyboard macro, as a string, or `nil' when no keyboard macro is being executed. -* Loading term/$TERM. +** Loading term/$TERM. The library term/$TERM (where $TERM get replaced by your terminal type), which is done by Emacs automatically when it starts up, now @@ -478,12 +478,12 @@ term-$TERM; thus, for example, term-vt100.el, but now they live in a special subdirectory named term, and have names like term/vt100.el. -* `command-history' format changed. +** `command-history' format changed. The elements of this list are now Lisp expressions which can be evaluated directly to repeat a command. -* Unused editing commands removed. +** Unused editing commands removed. The functions `forward-to-word', `backward-to-word', `upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer' @@ -491,9 +491,9 @@ have been removed. Their definitions can be found in file lisp/unused.el if you need them. -Upward Compatible Lisp Programming Changes in Emacs 17 +* Upward Compatible Lisp Programming Changes in Emacs 17 -* You can now continue after errors and quits. +** You can now continue after errors and quits. When the debugger is entered because of a C-g, due to a non-`nil' value of `debug-on-quit', the `c' command in the debugger @@ -513,7 +513,7 @@ is not valid, another error occurs. Errors signaled with the function `error' cannot be continued. If you try to continue, the error just happens again. -* `dot' renamed `point'. +** `dot' renamed `point'. The word `dot' has been replaced with `point' in all function and variable names, including: @@ -526,7 +526,7 @@ function and variable names, including: The old names are still supported, for now. -* `string-match' records position of end of match. +** `string-match' records position of end of match. After a successful call to `string-match', `(match-end 0)' will return the index in the string of the first character after the match. @@ -534,7 +534,7 @@ Also, `match-begin' and `match-end' with nonzero arguments can be used to find the indices of beginnings and ends of substrings matched by subpatterns surrounded by parentheses. -* New function `insert-before-markers'. +** New function `insert-before-markers'. This function is just like `insert' except in the handling of any relocatable markers that are located at the point of insertion. @@ -542,7 +542,7 @@ With `insert', such markers end up pointing before the inserted text. With `insert-before-markers', they end up pointing after the inserted text. -* New function `copy-alist'. +** New function `copy-alist'. This function takes one argument, a list, and makes a disjoint copy of the alist structure. The list itself is copied, and each element @@ -552,30 +552,30 @@ remain shared with the original argument. This is what it takes to get two alists disjoint enough that changes in one do not change the result of `assq' on the other. -* New function `copy-keymap'. +** New function `copy-keymap'. This function takes a keymap as argument and returns a new keymap containing initially the same bindings. Rebindings in either one of them will not alter the bindings in the other. -* New function `copy-syntax-table'. +** New function `copy-syntax-table'. This function takes a syntax table as argument and returns a new syntax table containing initially the same syntax settings. Changes in either one of them will not alter the other. -* Randomizing the random numbers. +** Randomizing the random numbers. `(random t)' causes the random number generator's seed to be set based on the current time and Emacs's process id. -* Third argument to `modify-syntax-entry'. +** Third argument to `modify-syntax-entry'. The optional third argument to `modify-syntax-entry', if specified should be a syntax table. The modification is made in that syntax table rather than in the current syntax table. -* New function `run-hooks'. +** New function `run-hooks'. This function takes any number of symbols as arguments. It processes the symbols in order. For each symbol which @@ -584,7 +584,7 @@ called as a function, with no arguments. This is useful in major mode commands. -* Second arg to `switch-to-buffer'. +** Second arg to `switch-to-buffer'. If this function is given a non-`nil' second argument, then the selection being done is not recorded on the selection history. @@ -592,7 +592,7 @@ The buffer's position in the history remains unchanged. This feature is used by the view commands, so that the selection history after exiting from viewing is the same as it was before. -* Second arg to `display-buffer' and `pop-to-buffer'. +** Second arg to `display-buffer' and `pop-to-buffer'. These two functions both accept an optional second argument which defaults to `nil'. If the argument is not `nil', it means that @@ -602,7 +602,7 @@ the selected window. This feature is used by `switch-to-buffer-other-window'. -* New variable `completion-ignore-case'. +** New variable `completion-ignore-case'. If this variable is non-`nil', completion allows strings in different cases to be considered matching. The global value @@ -614,13 +614,13 @@ to change the value globally, but you might not like the consequences in the many situations (buffer names, command names, file names) where case makes a difference. -* Major modes related to Text mode call text-mode-hook, then their own hooks. +** Major modes related to Text mode call text-mode-hook, then their own hooks. For example, turning on Outline mode first calls the value of `text-mode-hook' as a function, if it exists and is non-`nil', and then does likewise for the variable `outline-mode-hook'. -* Defining new command line switches. +** Defining new command line switches. You can define a new command line switch in your .emacs file by putting elements on the value of `command-switch-alist'. @@ -638,26 +638,26 @@ examine this variable, and do (setq command-line-args (cdr command-line-args) to "use up" an argument. -* New variable `load-in-progress'. +** New variable `load-in-progress'. This variable is non-`nil' when a file of Lisp code is being read and executed by `load'. -* New variable `print-length'. +** New variable `print-length'. The value of this variable is normally `nil'. It may instead be a number; in that case, when a list is printed by `prin1' or `princ' only that many initial elements are printed; the rest are replaced by `...'. -* New variable `find-file-not-found-hook'. +** New variable `find-file-not-found-hook'. If `find-file' or any of its variants is used on a nonexistent file, the value of `find-file-not-found-hook' is called (if it is not `nil') with no arguments, after creating an empty buffer. The file's name can be found as the value of `buffer-file-name'. -* Processes without buffers. +** Processes without buffers. In the function `start-process', you can now specify `nil' as the process's buffer. You can also set a process's buffer to `nil' @@ -672,7 +672,7 @@ When a process has no buffer, its output is lost unless it has a filter, and no indication of its being stopped or killed is given unless it has a sentinel. -* New function `user-variable-p'. `v' arg prompting changed. +** New function `user-variable-p'. `v' arg prompting changed. This function takes a symbol as argument and returns `t' if the symbol is defined as a user option variable. This means @@ -686,7 +686,7 @@ user variables. The function `read-variable' also now accepts and completes over user variables only. -* CBREAK mode input is the default in Unix 4.3 bsd. +** CBREAK mode input is the default in Unix 4.3 bsd. In Berkeley 4.3 Unix, there are sufficient features for Emacs to work fully correctly using CBREAK mode and not using SIGIO. @@ -695,7 +695,7 @@ This mode corresponds to `nil' as the first argument to `set-input-mode'. You can still select either mode by calling that function. -* Information on memory usage. +** Information on memory usage. The new variable `data-bytes-used' contains the number of bytes of impure space allocated in Emacs. @@ -704,18 +704,18 @@ Emacs could allocate. Note that space formerly allocated and freed again still counts as `used', since it is still in Emacs's address space. -* No limit on size of output from `format'. +** No limit on size of output from `format'. The string output from `format' used to be truncated to 100 characters in length. Now it can have any length. -* New errors `void-variable' and `void-function' replace `void-symbol'. +** New errors `void-variable' and `void-function' replace `void-symbol'. This change makes it possible to have error messages that clearly distinguish undefined variables from undefined functions. It also allows `condition-case' to handle one case without the other. -* `replace-match' handling of `\'. +** `replace-match' handling of `\'. In `replace-match', when the replacement is not literal, `\' in the replacement string is always treated as an @@ -728,19 +728,19 @@ This level of escaping is comparable with what goes on in a regular expression. It is over and above the level of `\' escaping that goes on when strings are read in Lisp syntax. -* New error `invalid-regexp'. +** New error `invalid-regexp'. A regexp search signals this type of error if the argument does not meet the rules for regexp syntax. -* `kill-emacs' with argument. +** `kill-emacs' with argument. If the argument is a number, it is returned as the exit status code of the Emacs process. If the argument is a string, its contents are stuffed as pending terminal input, to be read by another program after Emacs is dead. -* New fifth argument to `subst-char-in-region'. +** New fifth argument to `subst-char-in-region'. This argument is optional and defaults to `nil'. If it is not `nil', then the substitutions made by this function are not recorded @@ -749,7 +749,7 @@ in the Undo mechanism. This feature should be used with great care. It is now used by Outline mode to make lines visible or invisible. -* ` *Backtrace*' buffer renamed to `*Backtrace*'. +** ` *Backtrace*' buffer renamed to `*Backtrace*'. As a result, you can now reselect this buffer easily if you switch to another while in the debugger. @@ -757,7 +757,7 @@ another while in the debugger. Exiting from the debugger kills the `*Backtrace*' buffer, so you will not try to give commands in it when no longer really in the debugger. -* New function `switch-to-buffer-other-window'. +** New function `switch-to-buffer-other-window'. This is the new primitive to select a specified buffer (the argument) in another window. It is not quite the same as @@ -768,7 +768,7 @@ leave the current window's old buffer displayed as well. All functions to select a buffer in another window should do so by calling this new function. -* New variable `minibuffer-help-form'. +** New variable `minibuffer-help-form'. At entry to the minibuffer, the variable `help-form' is bound to the value of `minibuffer-help-form'. @@ -779,7 +779,7 @@ the definition of C-h as a command). `minibuffer-help-form' can be used to provide a different default way of handling C-h while in the minibuffer. -* New \{...} documentation construct. +** New \{...} documentation construct. It is now possible to set up the documentation string for a major mode in such a way that it always describes the contents @@ -799,23 +799,23 @@ For example, the documentation string for the function `c-mode' contains Variables controlling indentation style: ... -* New character syntax class "punctuation". +** New character syntax class "punctuation". Punctuation characters behave like whitespace in word and list parsing, but can be distinguished in regexps and in the function `char-syntax'. Punctuation syntax is represented by a period in `modify-syntax-entry'. -* `auto-mode-alist' no longer needs entries for backup-file names, +** `auto-mode-alist' no longer needs entries for backup-file names, Backup suffixes of all kinds are now stripped from a file's name before searching `auto-mode-alist'. -Changes in Emacs 16 +* Changes in Emacs 16 -* No special code for Ambassadors, VT-100's and Concept-100's. +** No special code for Ambassadors, VT-100's and Concept-100's. Emacs now controls these terminals based on the termcap entry, like all other terminals. Formerly it did not refer to the termcap entries @@ -827,24 +827,24 @@ fixing up the termcap entry. See ./TERMS for more info. See ./TERMS in any case if you find that some terminal does not work right with Emacs now. -* Minibuffer default completion character is TAB (and not ESC). +** Minibuffer default completion character is TAB (and not ESC). So that ESC can be used in minibuffer for more useful prefix commands. -* C-z suspends Emacs in all modes. +** C-z suspends Emacs in all modes. Formerly, C-z was redefined for other purposes by certain modes, such as Buffer Menu mode. Now other keys are used for those purposes, to keep the meaning of C-z uniform. -* C-x ESC (repeat-complex-command) allows editing the command it repeats. +** C-x ESC (repeat-complex-command) allows editing the command it repeats. Instead of asking for confirmation to re-execute a command from the command history, the command is placed, in its Lisp form, into the minibuffer for editing. You can confirm by typing RETURN, change some arguments and then confirm, or abort with C-g. -* Incremental search does less redisplay on slow terminals. +** Incremental search does less redisplay on slow terminals. If the terminal baud rate is <= the value of `isearch-slow-speed', incremental searching outside the text on the screen creates @@ -857,7 +857,7 @@ The initial value of `isearch-slow-speed' is 1200. This feature is courtesy of crl@purdue. -* Recursive minibuffers not allowed. +** Recursive minibuffers not allowed. If the minibuffer window is selected, most commands that would use the minibuffer gets an error instead. (Specific commands @@ -873,7 +873,7 @@ you can probably understand recursive minibuffers. This may be overridden by binding the variable `enable-recursive-minibuffers' to t. -* New major mode Emacs-Lisp mode, for editing Lisp code to run in Emacs. +** New major mode Emacs-Lisp mode, for editing Lisp code to run in Emacs. The mode in which emacs lisp files is edited is now called emacs-lisp-mode and is distinct from lisp-mode. The latter is intended for use with @@ -884,7 +884,7 @@ called emacs-lisp-mode-hook. A consequence of this changes is that .emacs init files which set the value of lisp-mode-hook may need to be changed to use the new names. -* Correct matching of parentheses is checked on insertion. +** Correct matching of parentheses is checked on insertion. When you insert a close-paren, the matching open-paren is checked for validity. The close paren must be the kind @@ -894,9 +894,9 @@ preceded by quoting backslash syntax character is not matched. This feature was originally written by shane@mit-ajax. -* M-x list-command-history -* M-x command-history-mode -* M-x electric-command-history +** M-x list-command-history +** M-x command-history-mode +** M-x electric-command-history `list-command-history' displays forms from the command history subject to user controlled filtering and limit on number of forms. It leaves @@ -913,7 +913,7 @@ which invoked `electric-command-history'. The original window configuration is restored on exit unless the command selected changes it. -* M-x edit-picture +** M-x edit-picture Enters a temporary major mode (the previous major mode is remembered and can is restored on exit) designed for editing pictures and tables. @@ -926,7 +926,7 @@ the documentation of function edit-picture for more details. Calls value of `edit-picture-hook' on entry if non-nil. -* Stupid C-s/C-q `flow control' supported. +** Stupid C-s/C-q `flow control' supported. Do (set-input-mode nil t) to tell Emacs to use CBREAK mode and interpret C-s and C-q as flow control commands. (set-input-mode t nil) switches @@ -955,18 +955,18 @@ The configuration switch CBREAK_INPUT is now eliminated. INTERRUPT_INPUT exists only to specify the default mode of operation; #define it to make interrupt-driven input the default. -* Completion of directory names provides a slash. +** Completion of directory names provides a slash. If file name completion yields the name of a directory, a slash is appended to it. -* Undo can clear modified-flag. +** Undo can clear modified-flag. If you undo changes in a buffer back to a state in which the buffer was not considered "modified", then it is labeled as once again "unmodified". -* M-x run-lisp. +** M-x run-lisp. This command creates an inferior Lisp process whose input and output appear in the Emacs buffer named `*lisp*'. That buffer uses a major mode @@ -977,21 +977,21 @@ lisp-mode-hook, in that order, if non-nil. Meanwhile, in lisp-mode, the command C-M-x is defined to send the current defun as input to the `*lisp*' subprocess. -* Mode line says `Narrow' when buffer is clipped. +** Mode line says `Narrow' when buffer is clipped. If a buffer has a clipping restriction (made by `narrow-to-region') then its mode line contains the word `Narrow' after the major and minor modes. -* Mode line says `Abbrev' when abbrev mode is on. +** Mode line says `Abbrev' when abbrev mode is on. -* add-change-log-entry takes prefix argument +** add-change-log-entry takes prefix argument Giving a prefix argument makes it prompt for login name, full name, and site name, with defaults. Otherwise the defaults are used with no confirmation. -* M-x view-buffer and M-x view-file +** M-x view-buffer and M-x view-file view-buffer selects the named buffer, view-file finds the named file; the resulting buffer is placed into view-mode (a recursive edit). The normal @@ -1004,7 +1004,7 @@ Each calls value of `view-hook' if non-nil on entry. written by shane@mit-ajax. -* New key commands in dired. +** New key commands in dired. `v' views (like more) the file on the current line. `#' marks auto-save files for deletion. @@ -1014,7 +1014,7 @@ file is renamed to same directory. `c' copies a file and updates the directory listing if the file is copied to the same directory. -* New function `electric-buffer-list'. +** New function `electric-buffer-list'. This pops up a buffer describing the set of emacs buffers. Immediately typing space makes the buffer list go away and returns @@ -1032,15 +1032,15 @@ Type C-h after invoking electric-buffer-list for more information. Calls value of `electric-buffer-menu-mode-hook' if non-nil on entry. Calls value of `after-electric-buffer-menu' on exit (select) if non-nil. -Changes in version 16 for mail reading and sending +** Changes in version 16 for mail reading and sending -* sendmail prefix character is C-c (and not C-z). New command C-c w. +*** sendmail prefix character is C-c (and not C-z). New command C-c w. For instance C-c C-c (or C-c C-s) sends mail now rather than C-z C-z. C-c w inserts your `signature' (contents of ~/.signature) at the end of mail. -* New feature in C-c y command in sending mail. +*** New feature in C-c y command in sending mail. C-c y is the command to insert the message being replied to. Normally it deletes most header fields and indents everything @@ -1050,7 +1050,7 @@ Now, C-c y does not delete header fields or indent. C-c y with any other numeric argument does delete most header fields, but indents by the amount specified in the argument. -* C-r command in Rmail edits current message. +*** C-r command in Rmail edits current message. It does this by switching to a different major mode which is nearly the same as Text mode. The only difference @@ -1063,31 +1063,31 @@ C-c and C-] are the only ways "back into Rmail", but you can switch to other buffers and edit them as usual. C-r in Rmail changes only the handling of the Rmail buffer. -* Rmail command `t' toggles header display. +*** Rmail command `t' toggles header display. Normally Rmail reformats messages to hide most header fields. `t' switches to display of all the header fields of the current message, as long as it remains current. Another `t' switches back to the usual display. -* Rmail command '>' goes to the last message. +*** Rmail command '>' goes to the last message. -* Rmail commands `a' and `k' set message attributes. +*** Rmail commands `a' and `k' set message attributes. `a' adds an attribute and `k' removes one. You specify the attribute by name. You can specify either a built-in flag such as "deleted" or "filed", or a user-defined keyword (anything not recognized as built-in). -* Rmail commands `l' and `L' summarize by attributes. +*** Rmail commands `l' and `L' summarize by attributes. These commands create a summary with one line per message, like `h', but they list only some of the messages. You specify which attribute (for `l') or attributes (for `L') the messages should have. -* Rmail can parse mmdf mail files. +*** Rmail can parse mmdf mail files. -* Interface to MH mail system. +*** Interface to MH mail system. mh-e is a front end for GNU emacs and the MH mail system. It provides a friendly and convenient interface to the MH commands. @@ -1103,9 +1103,9 @@ compiler switch. From larus@berkeley. -New hooks and parameters in version 16 +** New hooks and parameters in version 16 -* New variable `blink-matching-paren-distance'. +*** New variable `blink-matching-paren-distance'. This is the maximum number of characters to search for an open-paren to match an inserted close-paren. @@ -1118,13 +1118,13 @@ open-paren is found. This feature was originally written by shane@mit-ajax. -* New variable `find-file-run-dired' +*** New variable `find-file-run-dired' If nil, find-file will report an error if an attempt to visit a directory is detected; otherwise, it runs dired on that directory. The default is t. -* Variable `dired-listing-switches' holds switches given to `ls' by dired. +*** Variable `dired-listing-switches' holds switches given to `ls' by dired. The value should be a string containing `-' followed by letters. The letter `l' had better be included and letter 'F' had better be excluded! @@ -1132,12 +1132,12 @@ The default is "-al". This feature was originally written by shane@mit-ajax. -* New variable `display-time-day-and-date'. +*** New variable `display-time-day-and-date'. If this variable is set non-`nil', the function M-x display-time displays the day and date, as well as the time. -* New parameter `c-continued-statement-indent'. +*** New parameter `c-continued-statement-indent'. This controls the extra indentation given to a line that continues a C statement started on the previous line. @@ -1147,7 +1147,7 @@ By default it is 2, which is why you would see bar (); -* Changed meaning of `c-indent-level'. +*** Changed meaning of `c-indent-level'. The value of `c-brace-offset' used to be subtracted from the value of `c-indent-level' whenever @@ -1157,20 +1157,20 @@ As a result, `c-indent-level' is now the offset of statements within a block, relative to the line containing the open-brace that starts the block. -* turn-on-auto-fill is useful value for text-mode-hook. +*** turn-on-auto-fill is useful value for text-mode-hook. (setq text-mode-hook 'turn-on-auto-fill) is all you have to do to make sure Auto Fill mode is turned on whenever you enter Text mode. -* Parameter explicit-shell-file-name for M-x shell. +*** Parameter explicit-shell-file-name for M-x shell. This variable, if non-nil, specifies the file name to use for the shell to run if you do M-x shell. Changes in version 16 affecting Lisp programming: -* Documentation strings adapt to customization. +*** Documentation strings adapt to customization. Often the documentation string for a command wants to mention another command. Simply stating the other command as a @@ -1201,12 +1201,12 @@ The new function `substitute-command-keys' takes a string possibly containing \[...] constructs and replaces those constructs with the key sequences they currently stand for. -* Primitives `find-line-comment' and `find-line-comment-body' flushed. +*** Primitives `find-line-comment' and `find-line-comment-body' flushed. Search for the value of `comment-start-skip' if you want to find whether and where a line has a comment. -* New function `auto-save-file-name-p' +*** New function `auto-save-file-name-p' Should return non-`nil' if given a string which is the name of an auto-save file (sans directory name). If you redefine @@ -1214,11 +1214,11 @@ auto-save file (sans directory name). If you redefine default, this function returns `t' for filenames beginning with character `#'. -* The value of `exec-directory' now ends in a slash. +*** The value of `exec-directory' now ends in a slash. This is to be compatible with most directory names in GNU Emacs. -* Dribble files and termscript files. +*** Dribble files and termscript files. (open-dribble-file FILE) opens a dribble file named FILE. When a dribble file is open, every character Emacs reads from the terminal is @@ -1231,51 +1231,51 @@ are also written in the termscript file. The two of these together are very useful for debugging Emacs problems in redisplay. -* Upper case command characters by default are same as lower case. +*** Upper case command characters by default are same as lower case. If a character in a command is an upper case letter, and is not defined, Emacs uses the definition of the corresponding lower case letter. For example, if C-x U is not directly undefined, it is treated as a synonym for C-x u (undo). -* Undefined function errors versus undefined variable errors. +*** Undefined function errors versus undefined variable errors. Void-symbol errors now say "boundp" if the symbol's value was void or "fboundp" if the function definition was void. -* New function `bury-buffer'. +*** New function `bury-buffer'. The new function `bury-buffer' takes one argument, a buffer object, and puts that buffer at the end of the internal list of buffers. So it is the least preferred candidate for use as the default value of C-x b, or for other-buffer to return. -* Already-displayed buffers have low priority for display. +*** Already-displayed buffers have low priority for display. When a buffer is chosen automatically for display, or to be the default in C-x b, buffers already displayed in windows have lower priority than buffers not currently visible. -* `set-window-start' accepts a third argument NOFORCE. +*** `set-window-start' accepts a third argument NOFORCE. This argument, if non-nil, prevents the window's force_start flag from being set. Setting the force_start flag causes the next redisplay to insist on starting display at the specified starting point, even if dot must be moved to get it onto the screen. -* New function `send-string-to-terminal'. +*** New function `send-string-to-terminal'. This function takes one argument, a string, and outputs its contents to the terminal exactly as specified: control characters, escape sequences, and all. -* Keypad put in command mode. +*** Keypad put in command mode. The terminal's keypad is now put into command mode, as opposed to numeric mode, while Emacs is running. This is done by means of the termcap `ks' and `ke' strings. -* New function `generate-new-buffer' +*** New function `generate-new-buffer' This function takes a string as an argument NAME and looks for a creates and returns a buffer called NAME if one did not already exist. @@ -1283,12 +1283,12 @@ Otherwise, it successively tries appending suffixes of the form "<1>", "<2>" etc to NAME until it creates a string which does not name an existing buffer. A new buffer with that name is the created and returned. -* New function `prin1-to-string' +*** New function `prin1-to-string' This function takes one argument, a lisp object, and returns a string containing that object's printed representation, such as `prin1' would output. -* New function `read-from-minibuffer' +*** New function `read-from-minibuffer' Lets you supply a prompt, initial-contents, a keymap, and specify whether the result should be interpreted as a string or a lisp object. @@ -1296,23 +1296,23 @@ Old functions `read-minibuffer', `eval-minibuffer', `read-string' all take second optional string argument which is initial contents of minibuffer. -* minibuffer variable names changed (names of keymaps) +*** minibuffer variable names changed (names of keymaps) minibuf-local-map -> minibuffer-local-map minibuf-local-ns-map -> minibuffer-local-ns-map minibuf-local-completion-map -> minibuffer-local-completion-map minibuf-local-must-match-map -> minibuffer-local-must-match-map -Changes in version 16 affecting configuring and building Emacs +** Changes in version 16 affecting configuring and building Emacs -* Configuration switch VT100_INVERSE eliminated. +*** Configuration switch VT100_INVERSE eliminated. You can control the use of inverse video on any terminal by setting the variable `inverse-video', or by changing the termcap entry. If you like, set `inverse-video' in your `.emacs' file based on examination of (getenv "TERM"). -* New switch `-batch' makes Emacs run noninteractively. +*** New switch `-batch' makes Emacs run noninteractively. If the switch `-batch' is used, Emacs treats its standard output and input like ordinary files (even if they are a terminal). @@ -1330,22 +1330,22 @@ way to accomplish this. The Lisp variable `noninteractive' is now defined, to be `nil' except when `-batch' has been specified. -* Emacs can be built with output redirected to a file. +*** Emacs can be built with output redirected to a file. This is because -batch (see above) is now used in building Emacs. -Changes in Emacs 15 +* Changes in Emacs 15 -* Emacs now runs on Sun and Megatest 68000 systems; +** Emacs now runs on Sun and Megatest 68000 systems; also on at least one 16000 system running 4.2. -* Emacs now alters the output-start and output-stop characters +** Emacs now alters the output-start and output-stop characters to prevent C-s and C-q from being considered as flow control by cretinous rlogin software in 4.2. -* It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code +** It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code that can run in GNU Emacs. M-x convert-mocklisp-buffer converts the contents of the current buffer from Mocklisp to GNU Emacs Lisp. You should then save the converted buffer with C-x C-w @@ -1365,7 +1365,7 @@ Changes in Emacs 15 to GNU lisp code, with M-x convert-mocklisp-buffer being the first step in this process. -* Control-x n (narrow-to-region) is now by default a disabled command. +** Control-x n (narrow-to-region) is now by default a disabled command. This means that, if you issue this command, it will ask whether you really mean it. You have the opportunity to enable the @@ -1373,7 +1373,7 @@ Changes in Emacs 15 This will place the form "(put 'narrow-to-region 'disabled nil)" in your .emacs file. -* Tags now prompts for the tag table file name to use. +** Tags now prompts for the tag table file name to use. All the tags commands ask for the tag table file name if you have not yet specified one. @@ -1382,12 +1382,12 @@ Changes in Emacs 15 specify the tag table file name initially, or to switch to a new tag table. -* If truncate-partial-width-windows is non-nil (as it initially is), +** If truncate-partial-width-windows is non-nil (as it initially is), all windows less than the full screen width (that is, made by side-by-side splitting) truncate lines rather than continuing them. -* Emacs now checks for Lisp stack overflow to avoid fatal errors. +** Emacs now checks for Lisp stack overflow to avoid fatal errors. The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. The depth in variable bindings and unwind-protects may not exceed max-specpdl-size. If either limit is exceeded, an error occurs. @@ -1395,7 +1395,7 @@ Changes in Emacs 15 too large, you are vulnerable to a fatal error if you invoke Lisp code that does infinite recursion. -* New hooks find-file-hook and write-file-hook. +** New hooks find-file-hook and write-file-hook. Both of these variables if non-nil should be functions of no arguments. At the time they are called (current-buffer) will be the buffer being read or written respectively. @@ -1409,13 +1409,13 @@ Changes in Emacs 15 write-file-hook is called just before writing out a file from a buffer. -* The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" +** The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" -* If the .emacs file sets inhibit-startup-message to non-nil, +** If the .emacs file sets inhibit-startup-message to non-nil, the messages normally printed by Emacs at startup time are inhibited. -* Facility for run-time conditionalization on the basis of emacs features. +** Facility for run-time conditionalization on the basis of emacs features. The new variable features is a list of symbols which represent "features" of the executing emacs, for use in run-time conditionalization. @@ -1438,14 +1438,14 @@ Changes in Emacs 15 (if (not featurep FEATURE) (error ...)))) FILE-NAME is optional and defaults to FEATURE. -* New function load-average. +** New function load-average. This returns a list of three integers, which are the current 1 minute, 5 minute and 15 minute load averages, each multiplied by a hundred (since normally they are floating point numbers). -* Per-terminal libraries loaded automatically. +** Per-terminal libraries loaded automatically. Emacs when starting up on terminal type T automatically loads a library named term-T. T is the value of the TERM environment variable. @@ -1457,7 +1457,7 @@ Changes in Emacs 15 redefinitions and let the user's init file, which is loaded later, call that command or not, as the user prefers. -* Programmer's note: detecting killed buffers. +** Programmer's note: detecting killed buffers. Buffers are eliminated by explicitly killing them, using the function kill-buffer. This does not eliminate or affect @@ -1466,7 +1466,7 @@ Changes in Emacs 15 the buffer has been killed, use the function buffer-name. It returns nil on a killed buffer, and a string on a live buffer. -* New ways to access the last command input character. +** New ways to access the last command input character. The function last-key-struck, which used to return the last input character that was read by command input, is eliminated. @@ -1479,13 +1479,13 @@ Changes in Emacs 15 read for. last-input-char and last-command-char are different only inside a command that has called read-char to read input. -* The new switch -kill causes Emacs to exit after processing the +** The new switch -kill causes Emacs to exit after processing the preceding command line arguments. Thus, emacs -l lib data -e do-it -kill means to load lib, find file data, call do-it on no arguments, and then exit. -* The config.h file has been modularized. +** The config.h file has been modularized. Options that depend on the machine you are running on are defined in a file whose name starts with "m-", such as m-vax.h. @@ -1499,25 +1499,25 @@ Changes in Emacs 15 select the correct m- and s- files but will never have to change their contents. -* Termcap AL and DL strings are understood. +** Termcap AL and DL strings are understood. If the termcap entry defines AL and DL strings, for insertion and deletion of multiple lines in one blow, Emacs now uses them. This matters most on certain bit map display terminals for which scrolling is comparatively slow. -* Bias against scrolling screen far on fast terminals. +** Bias against scrolling screen far on fast terminals. Emacs now prefers to redraw a few lines rather than shift them a long distance on the screen, when the terminal is fast. -* New major mode, mim-mode. +** New major mode, mim-mode. This major mode is for editing MDL code. Perhaps a MDL user can explain why it is not called mdl-mode. You must load the library mim-mode explicitly to use this. -* GNU documentation formatter `texinfo'. +** GNU documentation formatter `texinfo'. The `texinfo' library defines a format for documentation files which can be passed through Tex to make a printed manual @@ -1532,7 +1532,7 @@ Changes in Emacs 15 This is not ready for distribution yet, but will appear at a later time. -* New function read-from-string (emacs 15.29) +** New function read-from-string (emacs 15.29) read-from-string takes three arguments: a string to read from, and optionally start and end indices which delimit a substring @@ -1551,14 +1551,14 @@ Changes in Emacs 15 -Changes in Emacs 14 +* Changes in Emacs 14 -* Completion now prints various messages such as [Sole Completion] +** Completion now prints various messages such as [Sole Completion] or [Next Character Not Unique] to describe the results obtained. These messages appear after the text in the minibuffer, and remain on the screen until a few seconds go by or you type a key. -* The buffer-read-only flag is implemented. +** The buffer-read-only flag is implemented. Setting or binding this per-buffer variable to a non-nil value makes illegal any operation which would modify the textual content of the buffer. (Such operations signal a buffer-read-only error) @@ -1568,12 +1568,12 @@ Changes in Emacs 14 by default to prevent accidental damage to the information in those buffers. -* Functions car-safe and cdr-safe. +** Functions car-safe and cdr-safe. These functions are like car and cdr when the argument is a cons. Given an argument not a cons, car-safe always returns nil, with no error; the same for cdr-safe. -* The new function user-real-login-name returns the name corresponding +** The new function user-real-login-name returns the name corresponding to the real uid of the Emacs process. This is usually the same as what user-login-name returns; however, when Emacs is invoked from su, user-real-login-name returns "root" but user-login-name @@ -1581,9 +1581,9 @@ Changes in Emacs 14 -Changes in Emacs 13 +* Changes in Emacs 13 -* There is a new version numbering scheme. +** There is a new version numbering scheme. What used to be the first version number, which was 1, has been discarded since it does not seem that I need three @@ -1594,7 +1594,7 @@ Changes in Emacs 13 Emacs when I distribute it; it will be incremented each time Emacs is built at another site. -* There is now a reader syntax for Meta characters: +** There is now a reader syntax for Meta characters: \M-CHAR means CHAR or'ed with the Meta bit. For example: ?\M-x is (+ ?x 128) @@ -1608,7 +1608,7 @@ Changes in Emacs 13 ?\C- can be used likewise for control characters. (13.9) -* Installation change +** Installation change The string "../lisp" now adds to the front of the load-path used for searching for Lisp files during Emacs initialization. It used to replace the path specified in paths.h entirely. @@ -1617,13 +1617,13 @@ Changes in Emacs 13 -Changes in Emacs 1.12 +* Changes in Emacs 1.12 -* There is a new installation procedure. +** There is a new installation procedure. See the file INSTALL that comes in the top level directory in the tar file or tape. -* The Meta key is now supported on terminals that have it. +** The Meta key is now supported on terminals that have it. This is a shift key which causes the high bit to be turned on in all input characters typed while it is held down. @@ -1643,10 +1643,10 @@ Changes in Emacs 1.12 explicitly, but not effective if the character comes from the use of the Meta key. -* `-' is no longer a completion command in the minibuffer. +** `-' is no longer a completion command in the minibuffer. It is an ordinary self-inserting character. -* The list load-path of directories load to search for Lisp files +** The list load-path of directories load to search for Lisp files is now controlled by the EMACSLOADPATH environment variable [[ Note this was originally EMACS-LOAD-PATH and has been changed again; sh does not deal properly with hyphens in env variable names]] @@ -1658,7 +1658,7 @@ Changes in Emacs 1.12 ignore EMACSLOADPATH, however; you should avoid having this variable set while building Emacs. -* You can now specify a translation table for keyboard +** You can now specify a translation table for keyboard input characters, as a way of exchanging or substituting keys on the keyboard. @@ -1709,20 +1709,20 @@ Changes in Emacs 1.12 (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) -* (process-kill-without-query PROCESS) +** (process-kill-without-query PROCESS) This marks the process so that, when you kill Emacs, you will not on its account be queried about active subprocesses. -Changes in Emacs 1.11 +* Changes in Emacs 1.11 -* The commands C-c and C-z have been interchanged, +** The commands C-c and C-z have been interchanged, for greater compatibility with normal Unix usage. C-z now runs suspend-emacs and C-c runs exit-recursive-edit. -* The value returned by file-name-directory now ends +** The value returned by file-name-directory now ends with a slash. (file-name-directory "foo/bar") => "foo/". This avoids confusing results when dealing with files in the root directory. @@ -1730,13 +1730,13 @@ Changes in Emacs 1.11 The value of the per-buffer variable default-directory is also supposed to have a final slash now. -* There are now variables to control the switches passed to +** There are now variables to control the switches passed to `ls' by the C-x C-d command (list-directory). list-directory-brief-switches is a string, initially "-CF", used for brief listings, and list-directory-verbose-switches is a string, initially "-l", used for verbose ones. -* For Ann Arbor Ambassador terminals, the termcap "ti" string +** For Ann Arbor Ambassador terminals, the termcap "ti" string is now used to initialize the screen geometry on entry to Emacs, and the "te" string is used to set it back on exit. If the termcap entry does not define the "ti" or "te" string, @@ -1744,36 +1744,36 @@ Changes in Emacs 1.11 -Changes in Emacs 1.10 +* Changes in Emacs 1.10 -* GNU Emacs has been made almost 1/3 smaller. +** GNU Emacs has been made almost 1/3 smaller. It now dumps out as only 530kbytes on Vax 4.2bsd. -* The term "checkpoint" has been replaced by "auto save" +** The term "checkpoint" has been replaced by "auto save" throughout the function names, variable names and documentation of GNU Emacs. -* The function load now tries appending ".elc" and ".el" +** The function load now tries appending ".elc" and ".el" to the specified filename BEFORE it tries the filename without change. -* rmail now makes the mode line display the total number +** rmail now makes the mode line display the total number of messages and the current message number. The "f" command now means forward a message to another user. The command to search through all messages for a string is now "F". The "u" command now means to move back to the previous message and undelete it. To undelete the selected message, use Meta-u. -* The hyphen character is now equivalent to a Space while +** The hyphen character is now equivalent to a Space while in completing minibuffers. Both mean to complete an additional word. -* The Lisp function error now takes args like format +** The Lisp function error now takes args like format which are used to construct the error message. -* Redisplay will refuse to start its display at the end of the buffer. +** Redisplay will refuse to start its display at the end of the buffer. It will pick a new place to display from, rather than use that. -* The value returned by garbage-collect has been changed. +** The value returned by garbage-collect has been changed. Its first element is no longer a number but a cons, whose car is the number of cons cells now in use, and whose cdr is the number of cons cells that have been @@ -1781,42 +1781,42 @@ Changes in Emacs 1.10 The second element is similar but describes symbols rather than cons cells. The third element is similar but describes markers. -* The variable buffer-name has been eliminated. +** The variable buffer-name has been eliminated. The function buffer-name still exists. This is to prevent user programs from changing buffer names without going through the rename-buffer function. -Changes in Emacs 1.9 +* Changes in Emacs 1.9 -* When a fill prefix is in effect, paragraphs are started +** When a fill prefix is in effect, paragraphs are started or separated by lines that do not start with the fill prefix. Also, a line which consists of the fill prefix followed by white space separates paragraphs. -* C-x C-v runs the new function find-alternate-file. +** C-x C-v runs the new function find-alternate-file. It finds the specified file, switches to that buffer, and kills the previous current buffer. (It requires confirmation if that buffer had changes.) This is most useful after you find the wrong file due to a typo. -* Exiting the minibuffer moves the cursor to column 0, +** Exiting the minibuffer moves the cursor to column 0, to show you that it has really been exited. -* Meta-g (fill-region) now fills each paragraph in the +** Meta-g (fill-region) now fills each paragraph in the region individually. To fill the region as if it were a single paragraph (for when the paragraph-delimiting mechanism does the wrong thing), use fill-region-as-paragraph. -* Tab in text mode now runs the function tab-to-tab-stop. +** Tab in text mode now runs the function tab-to-tab-stop. A new mode called indented-text-mode is like text-mode except that in it Tab runs the function indent-relative, which indents the line under the previous line. If auto fill is enabled while in indented-text-mode, the new lines that it makes are indented. -* Functions kill-rectangle and yank-rectangle. +** Functions kill-rectangle and yank-rectangle. kill-rectangle deletes the rectangle specified by dot and mark (or by two arguments) and saves it in the variable killed-rectangle. yank-rectangle inserts the rectangle in that variable. @@ -1826,7 +1826,7 @@ Changes in Emacs 1.9 not be changed if the rectangle is later reinserted at a different column position. -* `+' in a regular expression now means +** `+' in a regular expression now means to repeat the previous expression one or more times. `?' means to repeat it zero or one time. They are in all regards like `*' except for the @@ -1836,19 +1836,19 @@ Changes in Emacs 1.9 when it is at the beginning of a word; \> matches the null string at the end of a word. -* C-x p narrows the buffer so that only the current page +** C-x p narrows the buffer so that only the current page is visible. -* C-x ) with argument repeats the kbd macro just +** C-x ) with argument repeats the kbd macro just defined that many times, counting the definition as one repetition. -* C-x ( with argument begins defining a kbd macro +** C-x ( with argument begins defining a kbd macro starting with the last one defined. It executes that previous kbd macro initially, just as if you began by typing it over again. -* C-x q command queries the user during kbd macro execution. +** C-x q command queries the user during kbd macro execution. With prefix argument, enters recursive edit, reading keyboard commands even within a kbd macro. You can give different commands each time the macro executes. @@ -1859,7 +1859,7 @@ Changes in Emacs 1.9 C-r -- enter a recursive edit, then on exit ask again for a character C-l -- redisplay screen and ask again." -* write-kbd-macro and append-kbd-macro are used to save +** write-kbd-macro and append-kbd-macro are used to save a kbd macro definition in a file (as Lisp code to redefine the macro when the file is loaded). These commands differ in that write-kbd-macro @@ -1868,26 +1868,26 @@ Changes in Emacs 1.9 record the keys which invoke the macro as well as the macro's definition. -* The variable global-minor-modes is used to display +** The variable global-minor-modes is used to display strings in the mode line of all buffers. It should be a list of elements that are conses whose cdrs are strings to be displayed. This complements the variable minor-modes, which has the same effect but has a separate value in each buffer. -* C-x = describes horizontal scrolling in effect, if any. +** C-x = describes horizontal scrolling in effect, if any. -* Return now auto-fills the line it is ending, in auto fill mode. +** Return now auto-fills the line it is ending, in auto fill mode. Space with zero as argument auto-fills the line before it just like Space without an argument. -Changes in Emacs 1.8 +* Changes in Emacs 1.8 This release mostly fixes bugs. There are a few new features: -* apropos now sorts the symbols before displaying them. +** apropos now sorts the symbols before displaying them. Also, it returns a list of the symbols found. apropos now accepts a second arg PRED which should be a function @@ -1901,26 +1901,26 @@ This release mostly fixes bugs. There are a few new features: C-h a now runs the new function command-apropos rather than apropos, and shows only symbols with definitions as commands. -* M-x shell sends the command +** M-x shell sends the command if (-f ~/.emacs_NAME)source ~/.emacs_NAME invisibly to the shell when it starts. Here NAME is replaced by the name of shell used, as it came from your ESHELL or SHELL environment variable but with directory name, if any, removed. -* M-, now runs the command tags-loop-continue, which is used +** M-, now runs the command tags-loop-continue, which is used to resume a terminated tags-search or tags-query-replace. -Changes in Emacs 1.7 +* Changes in Emacs 1.7 It's Beat CCA Week. -* The initial buffer is now called "*scratch*" instead of "scratch", +** The initial buffer is now called "*scratch*" instead of "scratch", so that all buffer names used automatically by Emacs now have *'s. -* Undo information is now stored separately for each buffer. +** Undo information is now stored separately for each buffer. The Undo command (C-x u) always applies to the current buffer only. @@ -1932,7 +1932,7 @@ It's Beat CCA Week. kept for buffers whose names start with spaces. (These buffers also do not appear in the C-x C-b display.) -* Rectangle operations are now implemented. +** Rectangle operations are now implemented. C-x r stores the rectangle described by dot and mark into a register; it reads the register name from the keyboard. C-x g, the command to insert the contents of a register, @@ -1950,7 +1950,7 @@ It's Beat CCA Week. delete the text of the specified rectangle, moving the text beyond it on each line leftward. -* Side-by-side windows are allowed. Use C-x 5 to split the +** Side-by-side windows are allowed. Use C-x 5 to split the current window into two windows side by side. C-x } makes the selected window ARG columns wider at the expense of the windows at its sides. C-x { makes the selected @@ -1960,7 +1960,7 @@ It's Beat CCA Week. C-x 2 now accepts a numeric argument to specify the number of lines to give to the uppermost of the two windows it makes. -* Horizontal scrolling of the lines in a window is now implemented. +** Horizontal scrolling of the lines in a window is now implemented. C-x < (scroll-left) scrolls all displayed lines left, with the numeric argument (default 1) saying how far to scroll. When the window is scrolled left, some amount of the beginning @@ -1972,17 +1972,17 @@ It's Beat CCA Week. regardless of the value of the variable truncate-lines in the buffer being displayed. -* C-x C-d now uses the default output format of `ls', +** C-x C-d now uses the default output format of `ls', which gives just file names in multiple columns. C-u C-x C-d passes the -l switch to `ls'. -* C-t at the end of a line now exchanges the two preceding characters. +** C-t at the end of a line now exchanges the two preceding characters. All the transpose commands now interpret zero as an argument to mean to transpose the textual unit after or around dot with the one after or around the mark. -* M-! executes a shell command in an inferior shell +** M-! executes a shell command in an inferior shell and displays the output from it. With a prefix argument, it inserts the output in the current buffer after dot and sets the mark after the output. The shell command @@ -1992,10 +1992,10 @@ It's Beat CCA Week. as input to the shell command. A prefix argument makes the output from the command replace the contents of the region. -* The mode line will now say "Def" after the major mode +** The mode line will now say "Def" after the major mode while a keyboard macro is being defined. -* The variable fill-prefix is now used by Meta-q. +** The variable fill-prefix is now used by Meta-q. Meta-q removes the fill prefix from lines that start with it before filling, and inserts the fill prefix on each line after filling. @@ -2003,35 +2003,35 @@ It's Beat CCA Week. The command C-x . sets the fill prefix equal to the text on the current line before dot. -* The new command Meta-j (indent-new-comment-line), +** The new command Meta-j (indent-new-comment-line), is like Linefeed (indent-new-line) except when dot is inside a comment; in that case, Meta-j inserts a comment starter on the new line, indented under the comment starter above. It also inserts a comment terminator at the end of the line above, if the language being edited calls for one. -* Rmail should work correctly now, and has some C-h m documentation. +** Rmail should work correctly now, and has some C-h m documentation. -Changes in Emacs 1.6 +* Changes in Emacs 1.6 -* save-buffers-kill-emacs is now on C-x C-c +** save-buffers-kill-emacs is now on C-x C-c while C-x C-z does suspend-emacs. This is to make C-x C-c like the normal Unix meaning of C-c and C-x C-z like the normal Unix meaning of C-z. -* M-ESC (eval-expression) is now a disabled command by default. +** M-ESC (eval-expression) is now a disabled command by default. This prevents users who type ESC ESC accidentally from getting confusing results. Put (put 'eval-expression 'disabled nil) in your ~/.emacs file to enable the command. -* Self-inserting text is grouped into bunches for undoing. +** Self-inserting text is grouped into bunches for undoing. Each C-x u command undoes up to 20 consecutive self-inserting characters. -* Help f now uses as a default the function being called +** Help f now uses as a default the function being called in the innermost Lisp expression that dot is in. This makes it more convenient to use while writing Lisp code to run in Emacs. @@ -2041,7 +2041,7 @@ Changes in Emacs 1.6 Likewise, Help v uses the symbol around or before dot as a default, if that is a variable name. -* Commands that read filenames now insert the default +** Commands that read filenames now insert the default directory in the minibuffer, to become part of your input. This allows you to see what the default is. You may type a filename which goes at the end of the @@ -2060,13 +2060,13 @@ Changes in Emacs 1.6 Set the variable insert-default-directory to nil to turn off this feature. -* M-x shell now uses the environment variable ESHELL, +** M-x shell now uses the environment variable ESHELL, if it exists, as the file name of the shell to run. If there is no ESHELL variable, the SHELL variable is used. This is because some shells do not work properly as inferiors of Emacs (or anything like Emacs). -* A new variable minor-modes now exists, with a separate value +** A new variable minor-modes now exists, with a separate value in each buffer. Its value should be an alist of elements (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each minor mode that is turned on in the buffer. The pretty @@ -2076,7 +2076,7 @@ Changes in Emacs 1.6 turn on the minor mode if given 1 as an argument; they are present so that Help m can find their documentation strings. -* The format of tag table files has been changed. +** The format of tag table files has been changed. The new format enables Emacs to find tags much faster. A new program, etags, exists to make the kind of @@ -2092,13 +2092,13 @@ Changes in Emacs 1.6 The tags library can no longer use standard ctags-style tag tables files. -* The file of Lisp code Emacs reads on startup is now +** The file of Lisp code Emacs reads on startup is now called ~/.emacs rather than ~/.emacs_pro. -* copy-file now gives the copied file the same mode bits +** copy-file now gives the copied file the same mode bits as the original file. -* Output from a process inserted into the process's buffer +** Output from a process inserted into the process's buffer no longer sets the buffer's mark. Instead it sets a marker associated with the process to point to the end of the inserted text. You can access this marker with @@ -2106,27 +2106,27 @@ Changes in Emacs 1.6 and then either examine its position with marker-position or set its position with set-marker. -* completing-read takes a new optional fifth argument which, +** completing-read takes a new optional fifth argument which, if non-nil, should be a string of text to insert into the minibuffer before reading user commands. -* The Lisp function elt now exists: +** The Lisp function elt now exists: (elt ARRAY N) is like (aref ARRAY N), (elt LIST N) is like (nth N LIST). -* rplaca is now a synonym for setcar, and rplacd for setcdr. +** rplaca is now a synonym for setcar, and rplacd for setcdr. eql is now a synonym for eq; it turns out that the Common Lisp distinction between eq and eql is insignificant in Emacs. numberp is a new synonym for integerp. -* auto-save has been renamed to auto-save-mode. +** auto-save has been renamed to auto-save-mode. -* Auto save file names for buffers are now created by the +** Auto save file names for buffers are now created by the function make-auto-save-file-name. This is so you can redefine that function to change the way auto save file names are chosen. -* expand-file-name no longer discards a final slash. +** expand-file-name no longer discards a final slash. (expand-file-name "foo" "/lose") => "/lose/foo" (expand-file-name "foo/" "/lose") => "/lose/foo/" @@ -2140,7 +2140,7 @@ Changes in Emacs 1.6 delete-file call expand-file-name on the file name supplied. This change makes them considerably faster in the usual case. -* Interactive calling spec strings allow the new code letter 'D' +** Interactive calling spec strings allow the new code letter 'D' which means to read a directory name. It is like 'f' except that the default if the user makes no change in the minibuffer is to return the current default directory rather than the @@ -2148,9 +2148,9 @@ Changes in Emacs 1.6 -Changes in Emacs 1.5 +* Changes in Emacs 1.5 -* suspend-emacs now accepts an optional argument +** suspend-emacs now accepts an optional argument which is a string to be stuffed as terminal input to be read by Emacs's superior shell after Emacs exits. @@ -2158,28 +2158,28 @@ Changes in Emacs 1.5 to transmit text to a Lisp job running as a sibling of Emacs. -* If find-file is given the name of a directory, +** If find-file is given the name of a directory, it automatically invokes dired on that directory rather than reading in the binary data that make up the actual contents of the directory according to Unix. -* Saving an Emacs buffer now preserves the file modes +** Saving an Emacs buffer now preserves the file modes of any previously existing file with the same name. This works using new Lisp functions file-modes and set-file-modes, which can be used to read or set the mode bits of any file. -* The Lisp function cond now exists, with its traditional meaning. +** The Lisp function cond now exists, with its traditional meaning. -* defvar and defconst now permit the documentation string +** defvar and defconst now permit the documentation string to be omitted. defvar also permits the initial value to be omitted; then it acts only as a comment. -Changes in Emacs 1.4 +* Changes in Emacs 1.4 -* Auto-filling now normally indents the new line it creates +** Auto-filling now normally indents the new line it creates by calling indent-according-to-mode. This function, meanwhile, has in Fundamental and Text modes the effect of making the line have an indentation of the value of left-margin, a per-buffer variable. @@ -2188,7 +2188,7 @@ Changes in Emacs 1.4 it does that in all modes that supply their own indentation routine, but in Fundamental, Text and allied modes it inserts a tab character. -* The command M-x grep now invokes grep (on arguments +** The command M-x grep now invokes grep (on arguments supplied by the user) and reads the output from grep asynchronously into a buffer. The command C-x ` can be used to move to the lines that grep has found. @@ -2199,35 +2199,35 @@ Changes in Emacs 1.4 is proceeding; as more matches or error messages arrive, C-x ` will parse them and be able to find them. -* M-x mail now provides a command to send the message +** M-x mail now provides a command to send the message and "exit"--that is, return to the previously selected buffer. It is C-z C-z. -* Tab in C mode now tries harder to adapt to all indentation styles. +** Tab in C mode now tries harder to adapt to all indentation styles. If the line being indented is a statement that is not the first one in the containing compound-statement, it is aligned under the beginning of the first statement. -* The functions screen-width and screen-height return the +** The functions screen-width and screen-height return the total width and height of the screen as it is now being used. set-screen-width and set-screen-height tell Emacs how big to assume the screen is; they each take one argument, an integer. -* The Lisp function 'function' now exists. function is the +** The Lisp function 'function' now exists. function is the same as quote, except that it serves as a signal to the Lisp compiler that the argument should be compiled as a function. Example: (mapcar (function (lambda (x) (+ x 5))) list) -* The function set-key has been renamed to global-set-key. +** The function set-key has been renamed to global-set-key. undefine-key and local-undefine-key has been renamed to global-unset-key and local-unset-key. -* Emacs now collects input from asynchronous subprocesses +** Emacs now collects input from asynchronous subprocesses while waiting in the functions sleep-for and sit-for. -* Shell mode's Newline command attempts to distinguish subshell +** Shell mode's Newline command attempts to distinguish subshell prompts from user input when issued in the middle of the buffer. It no longer reexecutes from dot to the end of the line; it reeexecutes the entire line minus any prompt. @@ -2237,9 +2237,9 @@ Changes in Emacs 1.4 -Changes in Emacs 1.3 +* Changes in Emacs 1.3 -* An undo facility exists now. Type C-x u to undo a batch of +** An undo facility exists now. Type C-x u to undo a batch of changes (usually one command's changes, but some commands such as query-replace divide their changes into multiple batches. You can repeat C-x u to undo further. As long @@ -2256,45 +2256,45 @@ Changes in Emacs 1.3 for each buffer, so it is mainly good if you do something totally spastic. [This has since been fixed.] -* A learn-by-doing tutorial introduction to Emacs now exists. +** A learn-by-doing tutorial introduction to Emacs now exists. Type C-h t to enter it. -* An Info documentation browser exists. Do M-x info to enter it. +** An Info documentation browser exists. Do M-x info to enter it. It contains a tutorial introduction so that no more documentation is needed here. As of now, the only documentation in it is that of Info itself. -* Help k and Help c are now different. Help c prints just the +** Help k and Help c are now different. Help c prints just the name of the function which the specified key invokes. Help k prints the documentation of the function as well. -* A document of the differences between GNU Emacs and Twenex Emacs +** A document of the differences between GNU Emacs and Twenex Emacs now exists. It is called DIFF, in the same directory as this file. -* C mode can now indent comments better, including multi-line ones. +** C mode can now indent comments better, including multi-line ones. Meta-Control-q now reindents comment lines within the expression being aligned. -* Insertion of a close-parenthesis now shows the matching open-parenthesis +** Insertion of a close-parenthesis now shows the matching open-parenthesis even if it is off screen, by printing the text following it on its line in the minibuffer. -* A file can now contain a list of local variable values +** A file can now contain a list of local variable values to be in effect when the file is edited. See the file DIFF in the same directory as this file for full details. -* A function nth is defined. It means the same thing as in Common Lisp. +** A function nth is defined. It means the same thing as in Common Lisp. -* The function install-command has been renamed to set-key. +** The function install-command has been renamed to set-key. It now takes the key sequence as the first argument and the definition for it as the second argument. Likewise, local-install-command has been renamed to local-set-key. -Changes in Emacs 1.2 +* Changes in Emacs 1.2 -* A Lisp single-stepping and debugging facility exists. +** A Lisp single-stepping and debugging facility exists. To cause the debugger to be entered when an error occurs, set the variable debug-on-error non-nil. @@ -2337,19 +2337,19 @@ Changes in Emacs 1.2 You can mark a frame to enter the debugger on exit with the `b' command, or clear such a mark with `u'. -* Lisp macros now exist. +** Lisp macros now exist. For example, you can write - (defmacro cadr (arg) (list 'car (list 'cdr arg))) + (defmacro mycadr (arg) (list 'car (list 'cdr arg))) and then the expression - (cadr foo) + (mycadr foo) will expand into (car (cdr foo)) -Changes in Emacs 1.1 +* Changes in Emacs 1.1 -* The initial buffer is now called "scratch" and is in a +** The initial buffer is now called "scratch" and is in a new major mode, Lisp Interaction mode. This mode is intended for typing Lisp expressions, evaluating them, and having the values printed into the buffer. @@ -2360,31 +2360,31 @@ Changes in Emacs 1.1 The other commands of Lisp mode are available. -* The C-x C-e command for evaluating the Lisp expression +** The C-x C-e command for evaluating the Lisp expression before dot has been changed to print the value in the minibuffer line rather than insert it in the buffer. A numeric argument causes the printed value to appear in the buffer instead. -* In Lisp mode, the command M-C-x evaluates the defun +** In Lisp mode, the command M-C-x evaluates the defun containing or following dot. The value is printed in the minibuffer. -* The value of a Lisp expression evaluated using M-ESC +** The value of a Lisp expression evaluated using M-ESC is now printed in the minibuffer. -* M-q now runs fill-paragraph, independent of major mode. +** M-q now runs fill-paragraph, independent of major mode. -* C-h m now prints documentation on the current buffer's +** C-h m now prints documentation on the current buffer's major mode. What it prints is the documentation of the major mode name as a function. All major modes have been equipped with documentation that describes all commands peculiar to the major mode, for this purpose. -* You can display a Unix manual entry with +** You can display a Unix manual entry with the M-x manual-entry command. -* You can run a shell, displaying its output in a buffer, +** You can run a shell, displaying its output in a buffer, with the M-x shell command. The Return key sends input to the subshell. Output is printed inserted automatically in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined @@ -2393,7 +2393,7 @@ Changes in Emacs 1.1 enter them, so that the default directory of the Emacs buffer always remains the same as that of the subshell. -* C-x $ (that's a real dollar sign) controls line-hiding based +** C-x $ (that's a real dollar sign) controls line-hiding based on indentation. With a numeric arg N > 0, it causes all lines indented by N or more columns to become invisible. They are, effectively, tacked onto the preceding line, where @@ -2408,7 +2408,7 @@ Changes in Emacs 1.1 C-x $ with no argument turns off this mode, which in any case is remembered separately for each buffer. -* Outline mode is another form of selective display. +** Outline mode is another form of selective display. It is a major mode invoked with M-x outline-mode. It is intended for editing files that are structured as outlines, with heading lines (lines that begin with one @@ -2429,12 +2429,12 @@ Changes in Emacs 1.1 All editing commands treat hidden outline-mode lines as part of the preceding visible line. -* C-x C-z runs save-buffers-kill-emacs +** C-x C-z runs save-buffers-kill-emacs offers to save each file buffer, then exits. -* C-c's function is now called suspend-emacs. +** C-c's function is now called suspend-emacs. -* The command C-x m runs mail, which switches to a buffer *mail* +** The command C-x m runs mail, which switches to a buffer *mail* and lets you compose a message to send. C-x 4 m runs mail in another window. Type C-z C-s in the mail buffer to send the message according to what you have entered in the buffer. @@ -2442,7 +2442,7 @@ Changes in Emacs 1.1 You must separate the headers from the message text with an empty line. -* You can now dired partial directories (specified with names +** You can now dired partial directories (specified with names containing *'s, etc, all processed by the shell). Also, you can dired more than one directory; dired names the buffer according to the filespec or directory name. Reinvoking @@ -2455,9 +2455,9 @@ Changes in Emacs 1.1 C-x C-d (list-directory) also allows partial directories now. -Lisp programming changes +** Lisp programming changes -* t as an output stream now means "print to the minibuffer". +*** t as an output stream now means "print to the minibuffer". If there is already text in the minibuffer printed via t as an output stream, the new text is appended to the old (or is truncated and lost at the margin). If the minibuffer @@ -2472,17 +2472,17 @@ Lisp programming changes is ignored; each `read' from t reads fresh input. t is now the top-level value of standard-input. -* A marker may be used as an input stream or an output stream. +*** A marker may be used as an input stream or an output stream. The effect is to grab input from where the marker points, advancing it over the characters read, or to insert output at the marker and advance it. -* Output from an asynchronous subprocess is now inserted at +*** Output from an asynchronous subprocess is now inserted at the end of the associated buffer, not at the buffer's dot, and the buffer's mark is set to the end of the inserted output each time output is inserted. -* (pos-visible-in-window-p POS WINDOW) +*** (pos-visible-in-window-p POS WINDOW) returns t if position POS in WINDOW's buffer is in the range that is being displayed in WINDOW; nil if it is scrolled vertically out of visibility. @@ -2493,18 +2493,18 @@ Lisp programming changes POS defaults to (dot), and WINDOW to (selected-window). -* Variable buffer-alist replaced by function (buffer-list). +*** Variable buffer-alist replaced by function (buffer-list). The actual alist of buffers used internally by Emacs is now no longer accessible, to prevent the user from crashing Emacs by modifying it. The function buffer-list returns a list of all existing buffers. Modifying this list cannot hurt anything as a new list is constructed by each call to buffer-list. -* load now takes an optional third argument NOMSG which, if non-nil, +*** load now takes an optional third argument NOMSG which, if non-nil, prevents load from printing a message when it starts and when it is done. -* byte-recompile-directory is a new function which finds all +*** byte-recompile-directory is a new function which finds all the .elc files in a directory, and regenerates each one which is older than the corresponding .el (Lisp source) file. @@ -2528,5 +2528,5 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. Local variables: -mode: text +mode: outline end: diff --git a/etc/NEWS.18 b/etc/NEWS.18 index 8d30d549aea..fe2f8c8ab9c 100644 --- a/etc/NEWS.18 +++ b/etc/NEWS.18 @@ -8,23 +8,23 @@ This file is about changes in Emacs version 18. -Changes in version 18.52. +* Changes in Emacs 18.52. -* X windows version 10 is supported under system V. +** X windows version 10 is supported under system V. -* Pop-up menus are now supported with the same Lisp interface in +** Pop-up menus are now supported with the same Lisp interface in both version 10 and 11 of X windows. -* C-x 4 a is a new command to edit a change-log entry in another window. +** C-x 4 a is a new command to edit a change-log entry in another window. -* The emacs client program now allows an option +NNN to specify the +** The emacs client program now allows an option +NNN to specify the line number to go to in the file whose name follows. Thus, emacsclient foo.c +45 bar.c will find the files `foo.c' and `bar.c', going to line 45 in `bar.c'. -* Dired allows empty directories to be deleted like files. +** Dired allows empty directories to be deleted like files. -* When the terminal type is used to find a terminal-specific file to +** When the terminal type is used to find a terminal-specific file to run, Emacs now tries the entire terminal type first. If that doesn't yield a file that exists, the last hyphen and what follows it is stripped. If that doesn't yield a file that exists, the previous @@ -34,97 +34,97 @@ example, if the terminal type is `aaa-48-foo', Emacs will try first Underscores now receive the same treatment as hyphens. -* Texinfo features: @defun, etc. texinfo-show-structure. +** Texinfo features: @defun, etc. texinfo-show-structure. New template commands. texinfo-format-region. -* The special "local variable" `eval' is now ignored if you are running +** The special "local variable" `eval' is now ignored if you are running as root. -* New command `c-macro-expand' shows the result of C macro expansion +** New command `c-macro-expand' shows the result of C macro expansion in the region. It works using the C preprocessor, so its results are completely accurate. -* Errors in trying to auto save now flash error messages for a few seconds. +** Errors in trying to auto save now flash error messages for a few seconds. -* Killing a buffer now sends SIGHUP to the buffer's process. +** Killing a buffer now sends SIGHUP to the buffer's process. -* New hooks. +** New hooks. -** `spell-region' now allows you to filter the text before spelling-checking. +*** `spell-region' now allows you to filter the text before spelling-checking. If the value of `spell-filter' is non-nil, it is called, with no arguments, looking at a temporary buffer containing a copy of the text to be checked. It can alter the text freely before the spell program sees it. -** The variable `lpr-command' now specifies the command to be used when +*** The variable `lpr-command' now specifies the command to be used when you use the commands to print text (such as M-x print-buffer). -** Posting netnews now calls the value of `news-inews-hook' (if not nil) +*** Posting netnews now calls the value of `news-inews-hook' (if not nil) as a function of no arguments before the actual posting. -** Rmail now calls the value of `rmail-show-message-hook' (if not nil) +*** Rmail now calls the value of `rmail-show-message-hook' (if not nil) as a function of no arguments, each time a new message is selected. -** `kill-emacs' calls the value of `kill-emacs-hook' as a function of no args. +*** `kill-emacs' calls the value of `kill-emacs-hook' as a function of no args. -* New libraries. +** New libraries. See the source code of each library for more information. -** icon.el: a major mode for editing programs written in Icon. +*** icon.el: a major mode for editing programs written in Icon. -** life.el: a simulator for the cellular automaton "life". Load the +*** life.el: a simulator for the cellular automaton "life". Load the library and run M-x life. -** doctex.el: a library for converting the Emacs `etc/DOC' file of +*** doctex.el: a library for converting the Emacs `etc/DOC' file of documentation strings into TeX input. -** saveconf.el: a library which records the arrangement of windows and +*** saveconf.el: a library which records the arrangement of windows and buffers when you exit Emacs, and automatically recreates the same setup the next time you start Emacs. -** uncompress.el: a library that automatically uncompresses files +*** uncompress.el: a library that automatically uncompresses files when you visit them. -** c-fill.el: a mode for editing filled comments in C. +*** c-fill.el: a mode for editing filled comments in C. -** kermit.el: an extended version of shell-mode designed for running kermit. +*** kermit.el: an extended version of shell-mode designed for running kermit. -** spook.el: a library for adding some "distract the NSA" keywords to every +*** spook.el: a library for adding some "distract the NSA" keywords to every message you send. -** hideif.el: a library for hiding parts of a C program based on preprocessor +*** hideif.el: a library for hiding parts of a C program based on preprocessor conditionals. -** autoinsert.el: a library to put in some initial text when you visit +*** autoinsert.el: a library to put in some initial text when you visit a nonexistent file. The text used depends on the major mode, and comes from a directory of files created by you. -* New programming features. +** New programming features. -** The variable `window-system-version' now contains the version number +*** The variable `window-system-version' now contains the version number of the window system you are using (if appropriate). When using X windows, its value is either 10 or 11. -** (interactive "N") uses the prefix argument if any; otherwise, it reads +*** (interactive "N") uses the prefix argument if any; otherwise, it reads a number using the minibuffer. -** VMS: there are two new functions `vms-system-info' and `shrink-to-icon'. +*** VMS: there are two new functions `vms-system-info' and `shrink-to-icon'. The former allows you to get many kinds of system status information. See its self-documentation for full details. The second is used with the window system: it iconifies the Emacs window. -** VMS: the new function `define-logical-name' allows you to create +*** VMS: the new function `define-logical-name' allows you to create job-wide logical names. The old function `define-dcl-symbol' has been removed. -Changes in version 18.50. +* Changes in Emacs 18.50. -* X windows version 11 is supported. +** X windows version 11 is supported. Define X11 in config.h if you want X version 11 instead of version 10. -* The command M-x gdb runs the GDB debugger as an inferior. +** The command M-x gdb runs the GDB debugger as an inferior. It asks for the filename of the executable you want to debug. GDB runs as an inferior with I/O through an Emacs buffer. All the @@ -140,21 +140,21 @@ and `finish'. In any source file, the commands C-x SPC tells GDB to set a breakpoint on the current line. -* M-x calendar displays a three-month calendar. +** M-x calendar displays a three-month calendar. -* C-u 0 C-x C-s never makes a backup file. +** C-u 0 C-x C-s never makes a backup file. This is a way you can explicitly request not to make a backup. -* `term-setup-hook' is for users only. +** `term-setup-hook' is for users only. Emacs never uses this variable for internal purposes, so you can freely set it in your `.emacs' file to make Emacs do something special after loading any terminal-specific setup file from `lisp/term'. -* `copy-keymap' now copies recursive submaps. +** `copy-keymap' now copies recursive submaps. -* New overlay-arrow feature. +** New overlay-arrow feature. If you set the variable `overlay-arrow-string' to a string and `overlay-arrow-position' to a marker, that string is displayed on @@ -162,12 +162,12 @@ the screen at the position of that marker, hiding whatever text would have appeared there. If that position isn't on the screen, or if the buffer the marker points into isn't displayed, there is no effect. -* -batch mode can read from the terminal. +** -batch mode can read from the terminal. It now works to use `read-char' to do terminal input in a noninteractive Emacs run. End of file causes Emacs to exit. -* Variables `data-bytes-used' and `data-bytes-free' removed. +** Variables `data-bytes-used' and `data-bytes-free' removed. These variables cannot really work because the 24-bit range of an integer in (most ports of) GNU Emacs is not large enough to hold their @@ -175,9 +175,9 @@ values on many systems. -Changes in version 18.45, since version 18.41. +* Changes in Emacs 18.45, since version 18.41. -* C indentation parameter `c-continued-brace-offset'. +** C indentation parameter `c-continued-brace-offset'. This parameter's value is added to the indentation of any line that is in a continuation context and starts with an open-brace. @@ -188,26 +188,26 @@ For example, it applies to the open brace shown here: The default value is zero. -* Dabbrev expansion (Meta-/) preserves case. +** Dabbrev expansion (Meta-/) preserves case. When you use Meta-/ to search the buffer for an expansion of an abbreviation, if the expansion found is all lower case except perhaps for its first letter, then the case pattern of the abbreviation is carried over to the expansion that replaces it. -* TeX-mode syntax. +** TeX-mode syntax. \ is no longer given "escape character" syntax in TeX mode. It now has the syntax of an ordinary punctuation character. As a result, \[...\] and such like are considered to balance each other. -* Mail-mode automatic Reply-to field. +** Mail-mode automatic Reply-To field. If the variable `mail-default-reply-to' is non-`nil', then each time -you start to compose a message, a Reply-to field is inserted with +you start to compose a message, a Reply-To field is inserted with its contents taken from the value of `mail-default-reply-to'. -* Where is your .emacs file? +** Where is your .emacs file? If you run Emacs under `su', so your real and effective uids are different, Emacs uses the home directory associated with the real uid @@ -218,23 +218,23 @@ file. The .emacs file is not loaded at all if -batch is specified. -* Prolog mode is the default for ".pl" files. +** Prolog mode is the default for ".pl" files. -* File names are not case-sensitive on VMS. +** File names are not case-sensitive on VMS. On VMS systems, all file names that you specify are converted to upper case. You can use either upper or lower case indiscriminately. -* VMS-only function 'define-dcl-symbol'. +** VMS-only function 'define-dcl-symbol'. This is a new name for the function formerly called `define-logical-name'. -Editing Changes in Emacs 18 +* Editing Changes in Emacs 18 -* Additional systems and machines are supported. +** Additional systems and machines are supported. GNU Emacs now runs on Vax VMS. However, many facilities that are normally implemented by running subprocesses do not work yet. This includes listing @@ -256,13 +256,13 @@ to working. The port for the Elxsi is partly merged. See the file MACHINES for full status information and machine-specific installation advice. -* Searching is faster. +** Searching is faster. Forward search for a text string, or for a regexp that is equivalent to a text string, is now several times faster. Motion by lines and counting lines is also faster. -* Memory usage improvements. +** Memory usage improvements. It is no longer possible to run out of memory during garbage collection. As a result, running out of memory is never fatal. This @@ -271,27 +271,27 @@ strings in place rather than copying them. Another consequence of the change is a reduction in total memory usage and a slight increase in garbage collection speed. -* Display changes. +** Display changes. -** Editing above top of screen. +*** Editing above top of screen. When you delete or kill or alter text that reaches to the top of the screen or above it, so that display would start in the middle of a line, Emacs will usually attempt to scroll the text so that display starts at the beginning of a line again. -** Yanking in the minibuffer. +*** Yanking in the minibuffer. The message "Mark Set" is no longer printed when the minibuffer is active. This is convenient with many commands, including C-y, that normally print such a message. -** Cursor appears in last line during y-or-n questions. +*** Cursor appears in last line during y-or-n questions. Questions that want a `y' or `n' answer now move the cursor to the last line, following the question. -* Library loading changes. +** Library loading changes. `load' now considers all possible suffixes (`.elc', `.el' and none) for each directory in `load-path' before going on to the next directory. @@ -313,13 +313,13 @@ is no longer allowed. Instead, there are two commands for loading files. `M-x load-file' reads a file name with completion and defaulting and then loads exactly that file, with no searching and no suffixes. -* Emulation of other editors. +** Emulation of other editors. -** `edt-emulation-on' starts emulating DEC's EDT editor. +*** `edt-emulation-on' starts emulating DEC's EDT editor. Do `edt-emulation-off' to return Emacs to normal. -** `vi-mode' and `vip-mode' starts emulating vi. +*** `vi-mode' and `vip-mode' starts emulating vi. These are two different vi emulations provided by GNU Emacs users. We are interested in feedback as to which emulation is preferable. @@ -327,20 +327,20 @@ We are interested in feedback as to which emulation is preferable. See the documentation and source code for these functions for more information. -** `set-gosmacs-bindings' emulates Gosling Emacs. +*** `set-gosmacs-bindings' emulates Gosling Emacs. This command changes many global bindings to resemble those of Gosling Emacs. The previous bindings are saved and can be restored using `set-gnu-bindings'. -* Emulation of a display terminal. +** Emulation of a display terminal. Within Emacs it is now possible to run programs (such as emacs or supdup) which expect to do output to a visual display terminal. See the function `terminal-emulator' for more information. -* New support for keypads and function keys. +** New support for keypads and function keys. There is now a first attempt at terminal-independent support for keypad and function keys. @@ -369,7 +369,7 @@ used in forming the name of the terminal-specific file. Thus, for terminal type `aaa-48', the file loaded is now `term/aaa.el' rather than `term/aaa-48.el'. -* New startup command line options. +** New startup command line options. `-i FILE' or `-insert FILE' in the command line to Emacs tells Emacs to insert the contents of FILE into the current buffer at that point in @@ -383,7 +383,7 @@ emulator on the X window system and you want to run Emacs to work through the terminal emulator instead of working directly with the window system, use this switch. -* Buffer-sorting commands. +** Buffer-sorting commands. Various M-x commands whose names start with `sort-' sort parts of the region: @@ -404,13 +404,13 @@ sort-columns divides into lines and sorts them according to the contents Refer to the self-documentation of these commands for full usage information. -* Changes in various commands. +** Changes in various commands. -** `tags-query-replace' and `tags-search' change. +*** `tags-query-replace' and `tags-search' change. These functions now display the name of the file being searched at the moment. -** `occur' output now serves as a menu. `occur-menu' command deleted. +*** `occur' output now serves as a menu. `occur-menu' command deleted. `M-x occur' now allows you to move quickly to any of the occurrences listed. Select the `*Occur*' buffer that contains the output of `occur', @@ -423,7 +423,7 @@ The command `occur-menu' is thus obsolete, and has been deleted. One way to get a list of matching lines without line numbers is to copy the text to another buffer and use the command `keep-lines'. -** Incremental search changes. +*** Incremental search changes. Ordinary and regexp incremental searches now have distinct default search strings. Thus, regexp searches recall only previous regexp @@ -458,12 +458,12 @@ If `search-slow-window-lines' is negative, the slow search window is put at the top of the screen, and the absolute value or the negative number specifies the height of it. -** Undo changes +*** Undo changes The undo command now will mark the buffer as unmodified only when it is identical to the contents of the visited file. -** C-M-v in minibuffer. +*** C-M-v in minibuffer. If while in the minibuffer you request help in a way that uses a window to display something, then until you exit the minibuffer C-M-v @@ -472,7 +472,7 @@ in the minibuffer window scrolls the window of help. For example, if you request a list of possible completions, C-M-v can be used reliably to scroll the completion list. -** M-TAB command. +*** M-TAB command. Meta-TAB performs completion on the Emacs Lisp symbol names. The sexp in the buffer before point is compared against all existing nontrivial @@ -483,12 +483,12 @@ or properties. If there are multiple possibilities for the very next character, a list of possible completions is displayed. -** Dynamic abbreviation package. +*** Dynamic abbreviation package. The new command Meta-/ expands an abbreviation in the buffer before point by searching the buffer for words that start with the abbreviation. -** Changes in saving kbd macros. +*** Changes in saving kbd macros. The commands `write-kbd-macro' and `append-kbd-macro' have been deleted. The way to save a keyboard macro is to use the new command @@ -498,12 +498,12 @@ file such as your Emacs init file `~/.emacs', insert the macro definition (perhaps deleting an old definition for the same macro) and then save the file. -** C-x ' command. +*** C-x ' command. The new command C-x ' (expand-abbrev) expands the word before point as an abbrev, even if abbrev-mode is not turned on. -** Sending to inferior Lisp. +*** Sending to inferior Lisp. The command C-M-x in Lisp mode, which sends the current defun to an inferior Lisp process, now works by writing the text into a temporary @@ -517,20 +517,20 @@ appear on the screen and scrolls it so that the bottom is showing. Two variables `inferior-lisp-load-command' and `inferior-lisp-prompt', exist to customize these feature for different Lisp implementations. -** C-x p now disabled. +*** C-x p now disabled. The command C-x p, a nonrecommended command which narrows to the current page, is now initially disabled like C-x n. -* Dealing with files. +** Dealing with files. -** C-x C-v generalized +*** C-x C-v generalized This command is now allowed even if the current buffer is not visiting a file. As usual, it kills the current buffer and replaces it with a newly found file. -** M-x recover-file improved; auto save file names changed. +*** M-x recover-file improved; auto save file names changed. M-x recover-file now checks whether the last auto-save file is more recent than the real visited file before offering to read in the @@ -555,21 +555,21 @@ You can customize the way auto save file names are made by redefining the two functions `make-auto-save-file-name' and `auto-save-file-name-p', both of which are defined in `files.el'. -** Modifying a buffer whose file is changed on disk is detected instantly. +*** Modifying a buffer whose file is changed on disk is detected instantly. On systems where clash detection (locking of files being edited) is implemented, Emacs also checks the first time you modify a buffer whether the file has changed on disk since it was last visited or saved. If it has, you are asked to confirm that you want to change the buffer. -** Exiting Emacs offers to save `*mail*'. +*** Exiting Emacs offers to save `*mail*'. Emacs can now know about buffers that it should offer to save on exit even though they are not visiting files. This is done for any buffer which has a non-nil local value of `buffer-offer-save'. By default, Mail mode provides such a local value. -** Backup file changes. +*** Backup file changes. If a backup file cannot be written in the directory of the visited file due to fascist file protection, a backup file is now written in your home @@ -579,7 +579,7 @@ the most recently made such backup is available. When backup files are made by copying, the last-modification time of the original file is now preserved in the backup copy. -** Visiting remote files. +*** Visiting remote files. On an internet host, you can now visit and save files on any other internet host directly from Emacs with the commands M-x ftp-find-file @@ -592,14 +592,14 @@ give the user name and password for use on that host. FTP is reinvoked each time you ask to use it, but previously specified user names and passwords are remembered automatically. -** Dired `g' command. +*** Dired `g' command. `g' in Dired mode is equivalent to M-x revert-buffer; it causes the current contents of the same directory to be read in. -* Changes in major modes. +** Changes in major modes. -** C mode indentation change. +*** C mode indentation change. The binding of Linefeed is no longer changed by C mode. It once again has its normal meaning, which is to insert a newline and then indent @@ -618,28 +618,28 @@ is non-whitespace preceding point on the current line. Giving it a prefix argument will force reindentation of the line (as well as of the compound statement that begins after point, if any). -** Fortran mode now exists. +*** Fortran mode now exists. This mode provides commands for motion and indentation of Fortran code, plus built-in abbrevs for Fortran keywords. For details, see the manual or the on-line documentation of the command `fortran-mode'. -** Scribe mode now exists. +*** Scribe mode now exists. This mode does something useful for editing files of Scribe input. It is used automatically for files with names ending in ".mss". -** Modula2 and Prolog modes now exist. +*** Modula2 and Prolog modes now exist. These modes are for editing programs in the languages of the same names. They can be selected with M-x modula-2-mode and M-x prolog-mode. -** Telnet mode changes. +*** Telnet mode changes. The telnet mode special commands have now been assigned to C-c keys. Most of them are the same as in Shell mode. -** Picture mode changes. +*** Picture mode changes. The special picture-mode commands to specify the direction of cursor motion after insertion have been moved to C-c keys. The commands to @@ -647,13 +647,13 @@ specify diagonal motion were already C-c keys; they are unchanged. The keys to specify horizontal or vertical motion are now C-c < (left), C-c > (right), C-c ^ (up) and C-c . (down). -** Nroff mode comments. +*** Nroff mode comments. Comments are now supported in Nroff mode. The standard comment commands such as M-; and C-x ; know how to insert, align and delete comments that start with backslash-doublequote. -** LaTeX mode. +*** LaTeX mode. LaTeX mode now exists. Use M-x latex-mode to select this mode, and M-x plain-tex-mode to select the previously existing mode for Plain @@ -677,7 +677,7 @@ C-c C-f close a block (appropriate for LaTeX only). this inserts an \end{...} on the following line and puts point on a blank line between them. -** Outline mode changes. +*** Outline mode changes. Invisible lines in outline mode are now indicated by `...' at the end of the previous visible line. @@ -701,9 +701,9 @@ the string that matches. A line starting with a ^L (formfeed) is now by default considered a header line. -* Mail reading and sending. +** Mail reading and sending. -** MH-E changes. +*** MH-E changes. MH-E has been extensively modified and improved since the v17 release. It contains many new features, including commands to: extracted failed @@ -715,7 +715,7 @@ single messages. MH-E also has had numerous bugs fixed and commands made to run faster. Furthermore, its keybindings have been changed to be compatible with Rmail and the rest of GNU Emacs. -** Mail mode changes. +*** Mail mode changes. The C-c commands of mail mode have been rearranged: @@ -727,28 +727,28 @@ C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. Thus, C-c LETTER is always unassigned. -** Rmail C-r command changed to w. +*** Rmail C-r command changed to w. The Rmail command to edit the current message is now `w'. This change has been made because people frequently type C-r while in Rmail hoping to do a reverse incremental search. That now works. -* Rnews changes. +** Rnews changes. -** Caesar rotation added. +*** Caesar rotation added. The function news-caesar-buffer-body performs encryption and decryption of the body of a news message. It defaults to the USENET standard of 13, and accepts any numeric arg between 1 to 25 and -25 to -1. The function is bound to C-c C-r in both news-mode and news-reply-mode. -** rmail-output command added. +*** rmail-output command added. The C-o command has been bound to rmail-output in news-mode. This allows one to append an article to a file which is in either Unix mail or RMAIL format. -** news-reply-mode changes. +*** news-reply-mode changes. The C-c commands of news reply mode have been rearranged and changed, so that C-c LETTER is always unassigned: @@ -773,7 +773,7 @@ C-c C-y news-reply-yank-original (insert current message, in NEWS). C-c C-q mail-fill-yanked-message (fill what was yanked). C-c C-r caesar rotate all letters by 13 places in the article's body (rot13). -* Existing Emacs usable as a server. +** Existing Emacs usable as a server. Programs such as mailers that invoke "the editor" as an inferior to edit some text can now be told to use an existing Emacs process @@ -810,11 +810,11 @@ The client/server work only on Berkeley Unix, since they use the Berkeley sockets mechanism for their communication. -Changes in Lisp programming in Emacs version 18. +* Changes in Lisp programming in Emacs 18 -* Init file changes. +** Init file changes. -** Suffixes no longer accepted on `.emacs'. +*** Suffixes no longer accepted on `.emacs'. Emacs will no longer load a file named `.emacs.el' or `emacs.elc' in place of `.emacs'. This is so that it will take less time to @@ -822,7 +822,7 @@ find `.emacs'. If you want to compile your init file, give it another name and make `.emacs' a link to the `.elc' file, or make it contain a call to `load' to load the `.elc' file. -** `default-profile' renamed to `default', and loaded after `.emacs'. +*** `default-profile' renamed to `default', and loaded after `.emacs'. It used to be the case that the file `default-profile' was loaded if and only if `.emacs' was not found. @@ -839,13 +839,13 @@ Note that for most purposes you are better off using a `site-init' library since that will be loaded before the runnable Emacs is dumped. By using a `site-init' library, you avoid taking up time each time Emacs is started. -** inhibit-command-line has been eliminated. +*** inhibit-command-line has been eliminated. This variable used to exist for .emacs files to set. It has been eliminated because you can get the same effect by setting command-line-args to nil and setting inhibit-startup-message to t. -* `apply' is more general. +** `apply' is more general. `apply' now accepts any number of arguments. The first one is a function; the rest are individual arguments to pass to that function, except for the @@ -854,7 +854,7 @@ last, which is a list of arguments to pass. Previously, `apply' required exactly two arguments. Its old behavior follows as a special case of the new definition. -* New code-letter for `interactive'. +** New code-letter for `interactive'. (interactive "NFoo: ") is like (interactive "nFoo: ") in reading a number using the minibuffer to serve as the argument; however, @@ -863,9 +863,9 @@ value as the argument, and does not use the minibuffer at all. This is used by the `goto-line' and `goto-char' commands. -* Semantics of variables. +** Semantics of variables. -** Built-in per-buffer variables improved. +*** Built-in per-buffer variables improved. Several built-in variables which in the past had a different value in each buffer now behave exactly as if `make-variable-buffer-local' had @@ -887,12 +887,12 @@ They now refer to the default value of the variable, which is not quite the same behavior as before, but it should enable old init files to continue to work. -** New per-buffer variables. +*** New per-buffer variables. The variables `fill-prefix', `comment-column' and `indent-tabs-mode' are now per-buffer. They work just like `fill-column', etc. -** New function `setq-default'. +*** New function `setq-default'. `setq-default' sets the default value of a variable, and uses the same syntax that `setq' accepts: the variable name is not evaluated @@ -901,12 +901,12 @@ and need not be quoted. `(setq-default case-fold-search nil)' would make searches case-sensitive in all buffers that do not have local values for `case-fold-search'. -** Functions `global-set' and `global-value' deleted. +*** Functions `global-set' and `global-value' deleted. These functions were never used except by mistake by users expecting the functionality of `set-default' and `default-value'. -* Changes in defaulting of major modes. +** Changes in defaulting of major modes. When `default-major-mode' is `nil', new buffers are supposed to get their major mode from the buffer that is current. However, @@ -917,7 +917,7 @@ Now such modes' names have been given non-`nil' `mode-class' properties. If the current buffer's mode has such a property, Fundamental mode is used as the default for newly created buffers. -* `where-is-internal' requires additional arguments. +** `where-is-internal' requires additional arguments. This function now accepts three arguments, two of them required: DEFINITION, the definition to search for; LOCAL-KEYMAP, the keymap @@ -938,38 +938,38 @@ The incompatibility is sad, but `nil' is a legitimate value for the second argument (it means there is no local keymap), so it cannot also serve as a default meaning to use the current local keymap. -* Abbrevs with hooks. +** Abbrevs with hooks. When an abbrev defined with a hook is expanded, it now performs the usual replacement of the abbrev with the expansion before running the hook. Previously the abbrev itself was deleted but the expansion was not inserted. -* Function `scan-buffer' deleted. +** Function `scan-buffer' deleted. Use `search-forward' or `search-backward' in place of `scan-buffer'. You will have to rearrange the arguments. -* X window interface improvements. +** X window interface improvements. -** Detect release of mouse buttons. +*** Detect release of mouse buttons. Button-up events can now be detected. See the file `lisp/x-mouse.el' for details. -** New pop-up menu facility. +*** New pop-up menu facility. The new function `x-popup-menu' pops up a menu (in a X window) and returns an indication of which selection the user made. For more information, see its self-documentation. -* M-x disassemble. +** M-x disassemble. This command prints the disassembly of a byte-compiled Emacs Lisp function. Would anyone like to interface this to the debugger? -* `insert-buffer-substring' can insert part of the current buffer. +** `insert-buffer-substring' can insert part of the current buffer. The old restriction that the text being inserted had to come from a different buffer is now lifted. @@ -977,7 +977,7 @@ a different buffer is now lifted. When inserting text from the current buffer, the text to be inserted is determined from the specified bounds before any copying takes place. -* New function `substitute-key-definition'. +** New function `substitute-key-definition'. This is a new way to replace one command with another command as the binding of whatever keys may happen to refer to it. @@ -986,29 +986,29 @@ binding of whatever keys may happen to refer to it. for keys defined to run OLDDEF, and rebinds those keys to run NEWDEF instead. -* New function `insert-char'. +** New function `insert-char'. Insert a specified character, a specified number of times. -* `mark-marker' changed. +** `mark-marker' changed. When there is no mark, this now returns a marker that points nowhere, rather than `nil'. -* `ding' accepts argument. +** `ding' accepts argument. When given an argument, the function `ding' does not terminate execution of a keyboard macro. Normally, `ding' does terminate all macros that are currently executing. -* New function `minibuffer-depth'. +** New function `minibuffer-depth'. This function returns the current depth in minibuffer activations. The value is zero when the minibuffer is not in use. Values greater than one are possible if the user has entered the minibuffer recursively. -* New function `documentation-property'. +** New function `documentation-property'. (documentation-property SYMBOL PROPNAME) is like (get SYMBOL PROPNAME), except that if the property value is a number `documentation-property' @@ -1018,7 +1018,7 @@ in the DOC file and return the string found there. (documentation-property VAR 'variable-documentation) is the proper way for a Lisp program to get the documentation of variable VAR. -* New documentation-string expansion feature. +** New documentation-string expansion feature. If a documentation string (for a variable or function) contains text of the form `\<FOO>', it means that all command names specified in @@ -1045,7 +1045,7 @@ in the current buffer's local map. The current global keymap is always searched second, whether `\<...>' has been used or not. -* Multiple hooks allowed in certain contexts. +** Multiple hooks allowed in certain contexts. The old hook variables `find-file-hook', `find-file-not-found-hook' and `write-file-hook' have been replaced. @@ -1072,7 +1072,7 @@ together to implement editing of files that are not stored as Unix files: stored in archives, or inside version control systems, or on other machines running other operating systems and accessible via ftp. -* New hooks for suspending Emacs. +** New hooks for suspending Emacs. Suspending Emacs runs the hook `suspend-hook' before suspending and the hook `suspend-resume-hook' if the suspended Emacs is resumed. @@ -1082,22 +1082,22 @@ non-`nil', then suspending is inhibited and so is running the `suspend-resume-hook'. The non-`nil' value means that the `suspend-hook' has done whatever suspending is required. -* Disabling commands can print a special message. +** Disabling commands can print a special message. A command is disabled by giving it a non-`nil' `disabled' property. Now, if this property is a string, it is included in the message printed when the user tries to run the command. -* Emacs can open TCP connections. +** Emacs can open TCP connections. The function `open-network-stream' opens a TCP connection to a specified host and service. Its value is a Lisp object that represents the connection. The object is a kind of "subprocess", and I/O are done like I/O to subprocesses. -* Display-related changes. +** Display-related changes. -** New mode-line control features. +*** New mode-line control features. The display of the mode line used to be controlled by a format-string that was the value of the variable `mode-line-format'. @@ -1188,12 +1188,12 @@ global-mode-string The idea of these variables is to eliminate the need for major modes to alter mode-line-format itself. -** `window-point' valid for selected window. +*** `window-point' valid for selected window. The value returned by `window-point' used to be incorrect when its argument was the selected window. Now the value is correct. -** Window configurations may be saved as Lisp objects. +*** Window configurations may be saved as Lisp objects. The function `current-window-configuration' returns a special type of Lisp object that represents the current layout of windows: the @@ -1203,7 +1203,7 @@ which parts of the buffers appear on the screen. The function `set-window-configuration' takes one argument, which must be a window configuration object, and restores that configuration. -** New hook `temp-output-buffer-show-hook'. +*** New hook `temp-output-buffer-show-hook'. This hook allows you to control how help buffers are displayed. Whenever `with-output-to-temp-buffer' has executed its body and wants @@ -1213,30 +1213,30 @@ The hook function is solely responsible for displaying the buffer. The standard manner of display--making the buffer appear in a window--is used only if there is no hook function. -** New function `minibuffer-window'. +*** New function `minibuffer-window'. This function returns the window used (sometimes) for displaying the minibuffer. It can be used even when the minibuffer is not active. -** New feature to `next-window'. +*** New feature to `next-window'. If the optional second argument is neither `nil' nor `t', the minibuffer window is omitted from consideration even when active; if the starting window was the last non-minibuffer window, the value will be the first non-minibuffer window. -** New variable `minibuffer-scroll-window'. +*** New variable `minibuffer-scroll-window'. When this variable is non-`nil', the command `scroll-other-window' uses it as the window to be scrolled. Displays of completion-lists set this variable to the window containing the display. -** New argument to `sit-for'. +*** New argument to `sit-for'. A non-nil second argument to `sit-for' means do not redisplay; just wait for the specified time or until input is available. -** Deleted function `set-minor-mode'; minor modes must be changed. +*** Deleted function `set-minor-mode'; minor modes must be changed. The function `set-minor-mode' has been eliminated. The display of minor mode names in the mode line is now controlled by the @@ -1245,7 +1245,7 @@ mode, it is sufficient to add an element to this list. Once that is done, you can turn the mode on and off just by setting a variable, and the display will show its status automatically. -** New variable `cursor-in-echo-area'. +*** New variable `cursor-in-echo-area'. If this variable is non-nil, the screen cursor appears on the last line of the screen, at the end of the text displayed there. @@ -1253,7 +1253,7 @@ last line of the screen, at the end of the text displayed there. Binding this variable to t is useful at times when reading single characters of input with `read-char'. -** New per-buffer variable `selective-display-ellipses'. +*** New per-buffer variable `selective-display-ellipses'. If this variable is non-nil, an ellipsis (`...') appears on the screen at the end of each text line that is followed by invisible text. @@ -1264,14 +1264,14 @@ on the screen that invisible text is present. Text is made invisible under the control of the variable `selective-display'; this is how Outline mode and C-x $ work. -** New variable `no-redraw-on-reenter'. +*** New variable `no-redraw-on-reenter'. If you set this variable non-nil, Emacs will not clear the screen when you resume it after suspending it. This is for the sake of terminals with multiple screens of memory, where the termcap entry has been set up to switch between screens when Emacs is suspended and resumed. -** New argument to `set-screen-height' or `set-screen-width'. +*** New argument to `set-screen-height' or `set-screen-width'. These functions now take an optional second argument which says what significance the newly specified height or width has. @@ -1293,9 +1293,9 @@ to move the cursor to the last line will do. 2. The ``real'' height of the terminal determines how much padding is needed. -* File-related changes. +** File-related changes. -** New parameter `backup-by-copying-when-mismatch'. +*** New parameter `backup-by-copying-when-mismatch'. If this variable is non-`nil', then when Emacs is about to save a file, it will create the backup file by copying if that would avoid @@ -1307,7 +1307,7 @@ last. I recommend that this variable be left normally `nil' and changed with a local variables list in those particular files where the uid needs to be preserved. -** New parameter `file-precious-flag'. +*** New parameter `file-precious-flag'. If this variable is non-`nil', saving the buffer tries to avoid leaving an incomplete file due to disk full or other I/O errors. @@ -1317,14 +1317,14 @@ file is renamed back to the name you visited. Backups are always made by copying for such files. -** New variable `buffer-offer-save'. +*** New variable `buffer-offer-save'. If the value of this variable is non-`nil' in a buffer then exiting Emacs will offer to save the buffer (if it is modified and nonempty) even if the buffer is not visiting a file. This variable is automatically made local to the current buffer whenever it is set. -** `rename-file', `copy-file', `add-name-to-file' and `make-symbolic-link'. +*** `rename-file', `copy-file', `add-name-to-file' and `make-symbolic-link'. The third argument to these functions used to be `t' or `nil'; `t' meaning go ahead even if the specified new file name already has a file, @@ -1333,13 +1333,13 @@ and `nil' meaning to get an error. Now if the third argument is a number it means to ask the user for confirmation in this case. -** New optional argument to `copy-file'. +*** New optional argument to `copy-file'. If `copy-file' receives a non-nil fourth argument, it attempts to give the new copy the same time-of-last-modification that the original file has. -** New function `file-newer-than-file-p'. +*** New function `file-newer-than-file-p'. (file-newer-than-file-p FILE1 FILE2) returns non-nil if FILE1 has been modified more recently than FILE2. If FILE1 does not exist, the value @@ -1347,24 +1347,24 @@ is always nil; otherwise, if FILE2 does not exist, the value is t. This is meant for use when FILE2 depends on FILE1, to see if changes in FILE1 make it necessary to recompute FILE2 from it. -** Changed function `file-exists-p'. +*** Changed function `file-exists-p'. This function is no longer the same as `file-readable-p'. `file-exists-p' can now return t for a file that exists but which the fascists won't allow you to read. -** New function `file-locked-p'. +*** New function `file-locked-p'. This function receives a file name as argument and returns `nil' if the file is not locked, `t' if locked by this Emacs, or a string giving the name of the user who has locked it. -** New function `file-name-sans-versions'. +*** New function `file-name-sans-versions'. (file-name-sans-versions NAME) returns a substring of NAME, with any version numbers or other backup suffixes deleted from the end. -** New functions for directory names. +*** New functions for directory names. Although a directory is really a kind of file, specifying a directory uses a somewhat different syntax from specifying a file. @@ -1390,7 +1390,7 @@ and (directory-file-name "/usr/rms/") returns "/usr/rms". On VMS, (file-name-as-directory "du:[rms]foo.dir") returns "du:[rms.foo]" and (directory-file-name "du:[rms.foo]") returns "du:[rms]foo.dir". -** Value of `file-attributes' changed. +*** Value of `file-attributes' changed. The function file-attributes returns a list containing many kinds of information about a file. Now the list has eleven elements. @@ -1403,14 +1403,14 @@ the same directory by you. The eleventh element is the inode number of the file. -** VMS-only function `file-name-all-versions'. +*** VMS-only function `file-name-all-versions'. This function returns a list of all the completions, including version number, of a specified version-number-less file name. This is like `file-name-all-completions', except that the latter returns values that do not include version numbers. -** VMS-only variable `vms-stmlf-recfm'. +*** VMS-only variable `vms-stmlf-recfm'. On a VMS system, if this variable is non-nil, Emacs will give newly created files the record format `stmlf'. This is necessary for files @@ -1423,46 +1423,46 @@ no effect. This variable has no effect on Unix systems. -** `insert-file-contents' on an empty file. +*** `insert-file-contents' on an empty file. This no longer sets the buffer's "modified" flag. -** New function (VMS only) `define-logical-name': +*** New function (VMS only) `define-logical-name': (define-logical-name LOGICAL TRANSLATION) defines a VMS logical name LOGICAL whose translation is TRANSLATION. The new name applies to the current process only. -** Deleted variable `ask-about-buffer-names'. +*** Deleted variable `ask-about-buffer-names'. If you want buffer names for files to be generated in a special way, you must redefine `create-file-buffer'. -* Subprocess-related changes. +** Subprocess-related changes. -** New function `process-list'. +*** New function `process-list'. This function takes no arguments and returns a list of all of Emacs's asynchronous subprocesses. -** New function `process-exit-status'. +*** New function `process-exit-status'. This function, given a process, process name or buffer as argument, returns the exit status code or signal number of the process. If the process has not yet exited or died, this function returns 0. -** Process output ignores `buffer-read-only'. +*** Process output ignores `buffer-read-only'. Output from a process will go into the process's buffer even if the buffer is read only. -** Switching buffers in filter functions and sentinels. +*** Switching buffers in filter functions and sentinels. Emacs no longer saves and restore the current buffer around calling the filter and sentinel functions, so these functions can now permanently alter the selected buffer in a straightforward manner. -** Specifying environment variables for subprocesses. +*** Specifying environment variables for subprocesses. When a subprocess is started with `start-process' or `call-process', the value of the variable `process-environment' is taken to @@ -1472,38 +1472,38 @@ value should be a list of strings, each of the form "VAR=VALUE". `process-environment' is initialized when Emacs starts up based on Emacs's environment. -** New variable `process-connection-type'. +*** New variable `process-connection-type'. If this variable is `nil', when a subprocess is created, Emacs uses a pipe rather than a pty to communicate with it. Normally this variable is `t', telling Emacs to use a pty if ptys are supported and one is available. -** New function `waiting-for-user-input-p'. +*** New function `waiting-for-user-input-p'. This function, given a subprocess as argument, returns `t' if that subprocess appears to be waiting for input sent from Emacs, or `nil' otherwise. -** New hook `shell-set-directory-error-hook'. +*** New hook `shell-set-directory-error-hook'. The value of this variable is called, with no arguments, whenever Shell mode gets an error trying to keep track of directory-setting commands (such as `cd' and `pushd') used in the shell buffer. -* New functions `user-uid' and `user-real-uid'. +** New functions `user-uid' and `user-real-uid'. These functions take no arguments and return, respectively, the effective uid and the real uid of the Emacs process. The value in each case is an integer. -* New variable `print-escape-newlines' controls string printing. +** New variable `print-escape-newlines' controls string printing. If this variable is non-`nil', then when a Lisp string is printed by the Lisp printing function `prin1' or `print', newline characters are printed as `\n' rather than as a literal newline. -* New function `sysnetunam' on HPUX. +** New function `sysnetunam' on HPUX. This function takes two arguments, a network address PATH and a login string LOGIN, and executes the system call `netunam'. @@ -1511,7 +1511,7 @@ It returns `t' if the call succeeds, otherwise `nil'. News regarding installation: -* Many `s-...' file names changed. +** Many `s-...' file names changed. Many `s-...' files have been renamed. All periods in such names, except the ones just before the final `h', have been changed to @@ -1519,7 +1519,7 @@ hyphens. Thus, `s-bsd4.2.h' has been renamed to `s-bsd4-2.h'. This is so a Unix distribution can be moved mechanically to VMS. -* `DOCSTR...' file now called `DOC-...'. +** `DOCSTR...' file now called `DOC-...'. The file of on-line documentation strings, that used to be `DOCSTR.mm.nn.oo' in this directory, is now called `DOC-mm.nn.oo'. @@ -1529,11 +1529,11 @@ for translating filenames for VMS. This file also now contains the doc strings for variables as well as functions. -* Emacs no longer uses floating point arithmetic. +** Emacs no longer uses floating point arithmetic. This may make it easier to port to some machines. -* Macros `XPNTR' and `XSETPNTR'; flag `DATA_SEG_BITS'. +** Macros `XPNTR' and `XSETPNTR'; flag `DATA_SEG_BITS'. These macros exclusively are used to unpack a pointer from a Lisp_Object and to insert a pointer into a Lisp_Object. Redefining them may help @@ -1543,7 +1543,7 @@ certain high bits set. If `DATA_SEG_BITS' is defined, it should be a number which contains the high bits to be inclusive or'ed with pointers that are unpacked. -* New flag `HAVE_X_MENU'. +** New flag `HAVE_X_MENU'. Define this flag in `config.h' in addition to `HAVE_X_WINDOWS' to enable use of the Emacs interface to X Menus. On some operating @@ -1551,11 +1551,11 @@ systems, the rest of the X interface works properly but X Menus do not work; hence this separate flag. See the file `src/xmenu.c' for more information. -* Macros `ARRAY_MARK_FLAG' and `DONT_COPY_FLAG'. +** Macros `ARRAY_MARK_FLAG' and `DONT_COPY_FLAG'. -* `HAVE_ALLOCA' prevents assembly of `alloca.s'. +** `HAVE_ALLOCA' prevents assembly of `alloca.s'. -* `SYSTEM_MALLOC' prevents use of GNU `malloc.c'. +** `SYSTEM_MALLOC' prevents use of GNU `malloc.c'. SYSTEM_MALLOC, if defined, means use the system's own `malloc' routines rather than those that come with Emacs. @@ -1563,21 +1563,21 @@ rather than those that come with Emacs. Use this only if absolutely necessary, because if it is used you do not get warnings when space is getting low. -* New flags to control unexec. +** New flags to control unexec. See the file `unexec.c' for a long comment on the compilation switches that suffice to make it work on many machines. -* `PNTR_COMPARISON_TYPE' +** `PNTR_COMPARISON_TYPE' Pointers that need to be compared for ordering are converted to this type first. Normally this is `unsigned int'. -* `HAVE_VFORK', `HAVE_DUP2' and `HAVE_GETTIMEOFDAY'. +** `HAVE_VFORK', `HAVE_DUP2' and `HAVE_GETTIMEOFDAY'. These flags just say whether certain system calls are available. -* New macros control compiler switches, linker switches and libraries. +** New macros control compiler switches, linker switches and libraries. The m- and s- files can now control in a modular fashion the precise arguments passed to `cc' and `ld'. @@ -1618,5 +1618,5 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. Local variables: -mode: text +mode: outline end: diff --git a/etc/NEWS.19 b/etc/NEWS.19 index 617248e31ad..757d029941b 100644 --- a/etc/NEWS.19 +++ b/etc/NEWS.19 @@ -438,7 +438,7 @@ The other accent characters, not needed for the chosen language, remain normal. ** Posting articles and sending mail now has M-TAB completion on various -header fields (Newsgroups, To, CC, ...). +header fields (Newsgroups, To, Cc, ...). Completion in the Newsgroups header depends on the list of groups known to your news reader. Completion in the Followup-To header @@ -2087,7 +2087,7 @@ arguments are ARGS. for mail-default-reply-to. ** When you send a message in Emacs, if you specify an Rmail file with -the FCC: header field, Emacs converts the message to Rmail format +the Fcc: header field, Emacs converts the message to Rmail format before writing it. Thus, the file never contains anything but Rmail format messages. @@ -4341,7 +4341,7 @@ turn the character that follows into a hyper character: (defun hyperify (prompt) (let ((e (read-event))) (vector (if (numberp e) - (logior (lsh 1 20) e) + (logior (ash 1 20) e) (if (memq 'hyper (event-modifiers e)) e (add-event-modifier "H-" e)))))) diff --git a/etc/NEWS.20 b/etc/NEWS.20 index ff687015cca..931e2273732 100644 --- a/etc/NEWS.20 +++ b/etc/NEWS.20 @@ -986,7 +986,7 @@ be prompted for confirmation **** can generate a MESSAGE-ID: line and a DATE: line; the date can be the time the message was written or the time it is being sent; this -can make FCC copies more closely resemble copies that recipients get +can make Fcc copies more closely resemble copies that recipients get **** you can specify an arbitrary function for actually transmitting the message; included in feedmail are interfaces for /bin/[r]mail, diff --git a/etc/NEWS.26 b/etc/NEWS.26 new file mode 100644 index 00000000000..aa583f47c61 --- /dev/null +++ b/etc/NEWS.26 @@ -0,0 +1,1947 @@ +GNU Emacs NEWS -- history of user-visible changes. + +Copyright (C) 2016-2019 Free Software Foundation, Inc. +See the end of the file for license conditions. + +Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. +If possible, use 'M-x report-emacs-bug'. + +This file is about changes in Emacs version 26. + +See file HISTORY for a list of GNU Emacs versions and release dates. +See files NEWS.25, NEWS.24, ..., NEWS.18, and NEWS.1-17 for changes +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 + + +* Startup Changes in Emacs 26.3 + + +* Changes in Emacs 26.3 + + +* Editing Changes in Emacs 26.3 + + +* Changes in Specialized Modes and Packages in Emacs 26.3 + + +* New Modes and Packages in Emacs 26.3 + + +* Incompatible Lisp Changes in Emacs 26.3 + + +* Lisp Changes in Emacs 26.3 + + +* Changes in Emacs 26.3 on Non-Free Operating Systems + + +* Installation Changes in Emacs 26.2 + +** 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.) + +** 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. + + +* Changes in Emacs 26.2 + +** Emacs is now compliant with the latest version 11.0 of the Unicode Standard. + +** 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. + + +* Changes in Specialized Modes and Packages in Emacs 26.2 + +** Dired + +*** 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.) + +** Ibuffer + +*** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. + +** Imenu + +*** The value for 'imenu-auto-rescan-maxout' has been increased to 600000. + +** Gnus + +*** 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}")'. + + +* Incompatible Lisp Changes in Emacs 26.2 + +** 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. + +** '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. + +** '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'. + + +* Lisp Changes in Emacs 26.2 + +** The new function 'read-answer' accepts either long or short answers +depending on the new customizable variable 'read-answer-short'. + +** New function 'assoc-delete-all'. +Like 'assq-delete-all', but uses 'equal' for comparison. + +** 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. + +** 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. + + +* Changes in Emacs 26.2 on Non-Free Operating Systems + +** 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.) + + +* 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. + + +* Startup Changes in Emacs 26.1 + +** 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 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. + +** 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. + +** Emacs now obeys the X resource "scrollBar" at startup. +The effect is similar to that of "toolBar" resource on the tool bar. + + +* 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. + +** 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. + +** 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". + +** 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'. + +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. + +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'. + +'linum-mode' and all similar packages are henceforth becoming obsolete. +Users and developers are encouraged to switch to this new feature +instead. + +** The new user option 'arabic-shaper-ZWNJ-handling' controls how to +handle ZWNJ in Arabic text rendering. + + +* 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. + +** 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). + + +* Changes in Specialized Modes and Packages in Emacs 26.1 + +** Emacs 26.1 comes with Org v9.1.6. +See the file ORG-NEWS for user-visible changes in Org. + +** New function 'cl-generic-p'. + +** Dired + +*** You can answer 'all' in 'dired-do-delete' to delete recursively all +remaining directories without more prompts. + +*** Dired supports wildcards in the directory part of the file names. + +*** You can now use '`?`' in 'dired-do-shell-command'. +It gets replaced by the current file name, like ' ? '. + +*** A new option 'dired-always-read-filesystem' defaulting to nil. +If non-nil, buffers visiting files are reverted before they are +searched; 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. + +*** Users can now customize mouse clicks in Dired in a more flexible way. +The new command 'dired-mouse-find-file' can be bound to a mouse click +and used to visit files/directories in Dired in the selected window. +The new command 'dired-mouse-find-file-other-frame' similarly visits +files/directories in another frame. You can write your own commands +that invoke 'dired-mouse-find-file' with non-default optional +arguments, to tailor the effects of mouse clicks on file names in +Dired buffers. + +*** 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. + +*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for +viewing HTML files and the like. + +*** New variable 'dired-clean-confirm-killing-deleted-buffers' +controls whether Dired asks to kill buffers visiting deleted files and +directories. The default is t, so Dired asks for confirmation, to +keep previous behavior. + +** html2text is now marked obsolete. + +** smerge-refine-regions can refine regions in separate buffers. + +** Info menu and index completion uses substring completion by default. +This can be customized via the 'info-menu' category in +'completion-category-overrides'. + +** The ancestor buffer is shown by default in 3-way merges. +A new option 'ediff-show-ancestor' and a new toggle +'ediff-toggle-show-ancestor'. + +** TeX: Add luatex and xetex as alternatives to pdftex. + +** Electric-Buffer-menu + +*** Key 'U' is bound to 'Buffer-menu-unmark-all' and key 'M-DEL' is +bound to 'Buffer-menu-unmark-all-buffers'. + +** hideshow mode got four key bindings that are analogous to outline +mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e'. + +** bs + +*** Two new commands 'bs-unmark-all', bound to 'U', and +'bs-unmark-previous', bound to <backspace>. + +** Buffer-menu + +*** Two new commands 'Buffer-menu-unmark-all', bound to 'U' and +'Buffer-menu-unmark-all-buffers', bound to 'M-DEL'. + +** Checkdoc + +*** 'checkdoc-arguments-in-order-flag' now defaults to nil. + +** Gnus + +*** The ~/.newsrc file will now only be saved if the native select +method is an NNTP select method. + +*** A new command for sorting articles by readedness marks has been +added: 'C-c C-s C-m C-m'. + +*** In 'message-citation-line-format' the '%Z' format is now the time +zone name instead of the numeric form. The '%z' format continues to +be the numeric form. The new behavior is compatible with +'format-time-string'. + +*** New user option 'gnus-rcvstore-options' provides a way to +specify additional options when saving messages to an MH folder. + +** Ibuffer + +*** New command 'ibuffer-jump'. + +*** 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'. + +*** Two new commands 'ibuffer-filter-chosen-by-completion' +and 'ibuffer-and-filter', the second bound to '/&'. + +*** The commands 'ibuffer-pop-filter', 'ibuffer-pop-filter-group', +'ibuffer-or-filter' and 'ibuffer-filter-disable' have the alternative +bindings '/<up>', '/S-<up>', '/|' and '/DEL', respectively. + +*** 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. + +*** A new command 'ibuffer-copy-buffername-as-kill'; bound +to 'B'. + +*** New command 'ibuffer-change-marks'; bound to '* c'. + +*** A new command 'ibuffer-mark-by-locked' to mark +all locked buffers; bound to '% L'. + +*** A new option 'ibuffer-locked-char' to indicate +locked buffers; Ibuffer shows a new column displaying +'ibuffer-locked-char' for locked buffers. + +*** A new command 'ibuffer-unmark-all-marks' to unmark +all buffers without asking confirmation; bound to +'U'; 'ibuffer-do-replace-regexp' bound to 'r'. + +*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers +whose content matches a regexp; bound to '% g'. + +*** Two new options 'ibuffer-never-search-content-name' and +'ibuffer-never-search-content-mode' used by +'ibuffer-mark-by-content-regexp'. + +** Browse-URL + +*** Support for opening links to man pages in Man or WoMan mode. + +** Comint + +*** 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'. + +*** New user option 'comint-terminfo-terminal'. +This option allows control of the value of the TERM environment +variable Emacs puts into the environment of the Comint mode and its +derivatives, such as Shell mode and Compilation Shell minor-mode. The +default is "dumb", for compatibility with previous behavior. + +** Compilation mode + +*** Messages from CMake are now recognized. + +*** The number of errors, warnings, and informational messages is now +displayed in the mode line. These are updated as compilation +proceeds. + +** Grep + +*** Grep commands will now use GNU grep's '--null' option if +available, which allows distinguishing the filename from contents if +they contain colons. This can be controlled by the new custom option +'grep-use-null-filename-separator'. + +*** The grep/rgrep/lgrep functions will now ask about saving files +before running. This is controlled by the 'grep-save-buffers' +variable. + +** Edebug + +*** 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'. + +*** New customizable option 'edebug-max-depth'. +This allows you to enlarge the maximum recursion depth when +instrumenting code. + +*** 'edebug-prin1-to-string' now aliases 'cl-prin1-to-string'. +This means edebug output is affected by variables 'cl-print-readably' +and 'cl-print-compiled'. To completely restore the previous printing +behavior, use + + (fset 'edebug-prin1-to-string #'prin1-to-string) + +** Eshell + +*** '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. + +** EUDC + +*** Backward compatibility support for BBDB versions less than 3 +(i.e., BBDB 2.x) is deprecated and will likely be removed in the next +major release of Emacs. Users of BBDB 2.x should plan to upgrade to +BBDB 3.x. + +** eww + +*** New 'M-RET' command for opening a link at point in a new eww buffer. + +*** A new 's' command for switching to another eww buffer via the minibuffer. + +*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision +with the 'o' command from 'image-map'. + +*** A new command 'C' ('eww-toggle-colors') can be used to toggle +whether to use the HTML-specified colors or not. The user can also +customize the 'shr-use-colors' variable. + +*** Images that are being loaded are now marked with gray +"placeholder" images of the size specified by the HTML. They are then +replaced by the real images asynchronously, which will also now +respect width/height HTML specs (unless they specify widths/heights +bigger than the current window). + +*** The 'w' command on links is now 'shr-maybe-probe-and-copy-url'. +'shr-copy-url' now only copies the url at point; users who wish to +avoid accidentally accessing remote links may rebind 'w' and 'u' in +'eww-link-keymap' to it. + +** Ido + +*** The commands 'find-alternate-file-other-window', +'dired-other-window', 'dired-other-frame', and +'display-buffer-other-window' are now remapped to Ido equivalents if +Ido mode is active. + +** Images + +*** Images are automatically scaled before displaying based on the +'image-scaling-factor' variable (if Emacs supports scaling the images +in question). + +*** It's now possible to specify aspect-ratio preserving combinations +of :width/:max-height and :height/:max-width keywords. In either +case, the "max" keywords win. (Previously some combinations would, +depending on the aspect ratio of the image, just be ignored and in +other instances this would lead to the aspect ratio not being +preserved.) + +*** Images inserted with 'insert-image' and related functions get a +keymap put into the text properties (or overlays) that span the +image. This keymap binds keystrokes for manipulating size and +rotation, as well as saving the image to a file. These commands are +also available in 'image-mode'. + +*** A new library for creating and manipulating SVG images has been +added. See the "(elisp) SVG Images" section in the ELisp reference +manual for details. + +*** New setf-able function to access and set image parameters is +provided: 'image-property'. + +*** New commands 'image-scroll-left' and 'image-scroll-right' +for 'image-mode' that complement 'image-scroll-up' and +'image-scroll-down': they have the same prefix arg behavior and stop +at image boundaries. + +** Image-Dired + +*** Now provides a minor mode 'image-dired-minor-mode' which replaces +the function 'image-dired-setup-dired-keybindings'. + +*** Thumbnail generation is now asynchronous. +The number of concurrent processes is limited by the variable +'image-dired-queue-active-limit'. + +*** 'image-dired-thumbnail-storage' has a new option 'standard-large' +for generating 256x256 thumbnails according to the Thumbnail Managing +Standard. + +*** Inherits movement keys from 'image-mode' for viewing full images. +This includes the usual char, line, and page movement commands. + +*** All the -options types have been changed to argument lists +instead of shell command strings. This change affects +'image-dired-cmd-create-thumbnail-options', +'image-dired-cmd-create-temp-image-options', +'image-dired-cmd-rotate-thumbnail-options', +'image-dired-cmd-rotate-original-options', +'image-dired-cmd-write-exif-data-options', +'image-dired-cmd-read-exif-data-options', and introduces +'image-dired-cmd-pngnq-options', 'image-dired-cmd-pngcrush-options', +'image-dired-cmd-create-standard-thumbnail-options'. + +*** Recognizes more tools by default, including pngnq-s9 and OptiPNG. + +*** 'find-file' and related commands now work on thumbnails and +displayed images, providing a default argument of the original file name +via an addition to 'file-name-at-point-functions'. + +** The default 'Info-default-directory-list' no longer checks some obsolete +directory suffixes (gnu, gnu/lib, gnu/lib/emacs, emacs, lib, lib/emacs) +when searching for info directories. + +** The commands that add ChangeLog entries now prefer a VCS root directory +for the ChangeLog file, if none already exists. Customize +'change-log-directory-files' to nil for the old behavior. + +** Support for non-string values of 'time-stamp-format' has been removed. + +** Message + +*** 'message-use-idna' now defaults to t (because Emacs comes with +built-in IDNA support now). + +*** When sending HTML messages with embedded images, and you have +exiftool installed, and you rotate images with EXIF data (i.e., +JPEGs), the rotational information will be inserted into the outgoing +image in the message. (The original image will not have its +orientation affected.) + +*** The 'message-valid-fqdn-regexp' variable has been removed, since +there are now top-level domains added all the time. Message will no +longer warn about sending emails to top-level domains it hasn't heard +about. + +*** 'message-beginning-of-line' (bound to 'C-a') understands folded headers. +In 'visual-line-mode' it will look for the true beginning of a header +while in non-'visual-line-mode' it will move the point to the indented +header's value. + +** Package + +*** The new variable 'package-gnupghome-dir' has been added to control +where the GnuPG home directory (used for signature verification) is +located and whether GnuPG's option '--homedir' is used or not. + +*** Deleting a package no longer respects 'delete-by-moving-to-trash'. + +** Python + +*** The new variable 'python-indent-def-block-scale' has been added. +It controls the depth of indentation of arguments inside multi-line +function signatures. + +** Tramp + +*** The method part of remote file names is mandatory now. +A valid remote file name starts with "/method:host:" or +"/method:user@host:". + +*** The new pseudo method "-" is a marker for the default method. +"/-::" is the shortest remote file name then. + +*** The command 'tramp-change-syntax' allows you to choose an +alternative remote file name syntax. + +*** New connection method "sg", which supports editing files under a +different group ID. + +*** New connection method "doas" for OpenBSD hosts. + +*** New connection method "gdrive", which allows access to Google +Drive onsite repositories. + +*** Gateway methods in Tramp have been removed. +Instead, the Tramp manual documents how to configure ssh and PuTTY +accordingly. + +*** Setting the "ENV" environment variable in +'tramp-remote-process-environment' enables reading of shell +initialization files. + +*** Tramp is able now to send SIGINT to remote asynchronous processes. + +*** Variable 'tramp-completion-mode' is obsoleted. + +** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'. + +** JS mode + +*** JS mode now sets 'comment-multi-line' to t. + +*** New variable 'js-indent-align-list-continuation', when set to nil, +will not align continuations of bracketed lists, but will indent them +by the fixed width 'js-indent-level'. + +** CSS mode + +*** Support for completing attribute values, at-rules, bang-rules, +HTML tags, classes and IDs using the 'completion-at-point' command. +Completion candidates for HTML classes and IDs are retrieved from open +HTML mode buffers. + +*** CSS mode now binds 'C-h S' to a function that will show +information about a CSS construct (an at-rule, property, pseudo-class, +pseudo-element, with the default being guessed from context). By +default the information is looked up on the Mozilla Developer Network, +but this can be customized using 'css-lookup-url-format'. + +*** CSS colors are fontified using the color they represent as the +background. For instance, #ff0000 would be fontified with a red +background. + +** Emacs now supports character name escape sequences in character and +string literals. The syntax variants '\N{character name}' and +'\N{U+code}' are supported. + +** Prog mode has some support for multi-mode indentation. +This allows better indentation support in modes that support multiple +programming languages in the same buffer, like literate programming +environments or ANTLR programs with embedded Python code. + +A major mode can provide indentation context for a sub-mode. To +support this, modes should use 'prog-first-column' instead of a +literal zero and avoid calling 'widen' in their indentation functions. +See the node "(elisp) Mode-Specific Indent" in the ELisp manual for +more details. + +** ERC + +*** New variable 'erc-default-port-tls' used to connect to TLS IRC +servers. + +** URL + +*** The new function 'url-cookie-delete-cookie' can be used to +programmatically delete all cookies, or cookies from a specific +domain. + +*** 'url-retrieve-synchronously' now takes an optional timeout parameter. + +*** The URL package now supports HTTPS over proxies supporting CONNECT. + +*** 'url-user-agent' now defaults to 'default', and the User-Agent +string is computed dynamically based on 'url-privacy-level'. + +** VC and related modes + +*** 'vc-dir-mode' now binds 'vc-log-outgoing' to 'O'; and has various +branch-related commands on a keymap bound to 'B'. + +*** 'vc-region-history' is now bound to 'C-x v h', replacing the older +'vc-insert-headers' binding. + +*** New user option 'vc-git-print-log-follow' to follow renames in Git logs +for a single file. + +** CC mode + +*** Opening a .h file will turn C or C++ mode depending on language used. +This is done with the help of the 'c-or-c++-mode' function, which +analyzes buffer contents to infer whether it's a C or C++ source file. + +** New option 'cpp-message-min-time-interval' to allow user control +of progress messages in cpp.el. + +** New DNS mode command 'dns-mode-ipv6-to-nibbles' to convert IPv6 addresses +to a format suitable for reverse lookup zone files. + +** Ispell + +*** Enchant is now supported as a spell-checker. +Enchant is a meta-spell-checker that uses providers such as Hunspell +to do the actual checking. With it, users can use spell-checkers not +directly supported by Emacs, such as Voikko, Hspell and AppleSpell, +more easily share personal word-lists with other programs, and +configure different spelling-checkers for different languages. +(Version 2.1.0 or later of Enchant is required.) + +** Flymake + +*** Flymake has been completely redesigned. +Flymake now annotates arbitrary buffer regions, not just lines. It +supports arbitrary diagnostic types, not just errors and warnings (see +variable 'flymake-diagnostic-types-alist'). + +It also supports multiple simultaneous backends, meaning that you can +check your buffer from different perspectives (see variable +'flymake-diagnostic-functions'). Backends for Emacs Lisp mode are +provided. + +The old Flymake behavior is preserved in the so-called "legacy +backend", which has been updated to benefit from the new UI features. + +** Term + +*** 'term-char-mode' now makes its buffer read-only. +The buffer is made read-only to prevent changes from being made by +anything other than the process filter; and movements of point away +from the process mark are counter-acted so that the cursor is in the +correct position after each command. This is needed to avoid states +which are inconsistent with the state of the terminal understood by +the inferior process. + +New user options 'term-char-mode-buffer-read-only' and +'term-char-mode-point-at-process-mark' control these behaviors, and +are non-nil by default. Customize these options to nil if you want +the previous behavior. + +** Xref + +*** When an *xref* buffer is needed, 'TAB' quits and jumps to an xref. +A new command 'xref-quit-and-goto-xref', bound to 'TAB' in *xref* +buffers, quits the window before jumping to the destination. In many +situations, the intended window configuration is restored, just as if +the *xref* buffer hadn't been necessary in the first place. + + +* New Modes and Packages in Emacs 26.1 + +** New Elisp data-structure library 'radix-tree'. + +** New library 'xdg' with utilities for some XDG standards and specs. + +** HTML + +*** A new submode of 'html-mode', 'mhtml-mode', is now the default +mode for *.html files. This mode handles indentation, +fontification, and commenting for embedded JavaScript and CSS. + +** New mode 'conf-toml-mode' is a sub-mode of 'conf-mode', specialized +for editing TOML files. + +** New mode 'conf-desktop-mode' is a sub-mode of 'conf-unix-mode', +specialized for editing freedesktop.org desktop entries. + +** New minor mode 'pixel-scroll-mode' provides smooth pixel-level scrolling. + +** New major mode 'less-css-mode' (a minor variant of 'css-mode') for +editing Less files. + +** New package 'auth-source-pass' integrates 'auth-source' with the +password manager password-store (http://passwordstore.org). + + +* Incompatible Lisp Changes in Emacs 26.1 + +** 'password-data' is now a hash-table so that 'password-read' can use +any object for the 'key' argument. + +** Command 'dired-mark-extension' now automatically prepends a '.' to the +extension when not present. The new command 'dired-mark-suffix' behaves +similarly but it doesn't prepend a '.'. + +** Certain cond/pcase/cl-case forms are now compiled using a faster jump +table implementation. This uses a new bytecode op 'switch', which +isn't compatible with previous Emacs versions. This functionality can +be disabled by setting 'byte-compile-cond-use-jump-table' to nil. + +** If 'comment-auto-fill-only-comments' is non-nil, 'auto-fill-function' +is now called only if either no comment syntax is defined for the +current buffer or the self-insertion takes place within a comment. + +** The alist 'ucs-names' is now a hash table. + +** 'if-let' and 'when-let' now support binding lists as defined by the +SRFI-2 (Scheme Request for Implementation 2). + +** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term +mode to send the same escape sequences that xterm does. This makes +things like 'forward-word' in readline work. + +** Customizable variable 'query-replace-from-to-separator' +now doesn't propertize the string value of the separator. +Instead, text properties are added by 'query-replace-read-from'. +Additionally, the new nil value restores pre-24.5 behavior +of not providing replacement pairs via the history. + +** Some obsolete functions, variables, and faces have been removed: + +*** 'make-variable-frame-local'. Variables cannot be frame-local any more. + +*** From subr.el: 'window-dot', 'set-window-dot', 'read-input', +'show-buffer', 'eval-current-buffer', 'string-to-int'. + +*** 'icomplete-prospects-length'. + +*** All the default-FOO variables that hold the default value of the +FOO variable. Use 'default-value' and 'setq-default' to access and +change FOO, respectively. The exhaustive list of removed variables is: +'default-mode-line-format', 'default-header-line-format', +'default-line-spacing', 'default-abbrev-mode', 'default-ctl-arrow', +'default-truncate-lines', 'default-left-margin', 'default-tab-width', +'default-case-fold-search', 'default-left-margin-width', +'default-right-margin-width', 'default-left-fringe-width', +'default-right-fringe-width', 'default-fringes-outside-margins', +'default-scroll-bar-width', 'default-vertical-scroll-bar', +'default-indicate-empty-lines', 'default-indicate-buffer-boundaries', +'default-fringe-indicator-alist', 'default-fringe-cursor-alist', +'default-scroll-up-aggressively', 'default-scroll-down-aggressively', +'default-fill-column', 'default-cursor-type', +'default-cursor-in-non-selected-windows', +'default-buffer-file-coding-system', 'default-major-mode', and +'default-enable-multibyte-characters'. + +*** Many variables obsoleted in 22.1 referring to face symbols. + +** The variable 'text-quoting-style' is now a customizable option. +It controls whether to and how to translate ASCII quotes in messages +and help output. Its possible values and their semantics remain +unchanged from Emacs 25. In particular, when this variable's value is +'grave', all quotes in formats are output as-is. + +** Functions like 'check-declare-file' and 'check-declare-directory' +now generate less chatter and more-compact diagnostics. The auxiliary +function 'check-declare-errmsg' has been removed. + +** The regular expression character class '[:blank:]' now matches +Unicode horizontal whitespace as defined in the Unicode Technical +Standard #18. If you only want to match space and tab, use '[ \t]' +instead. + +** 'min' and 'max' no longer round their results. +Formerly, they returned a floating-point value if any argument was +floating-point, which was sometimes numerically incorrect. For +example, on a 64-bit host (max 1e16 10000000000000001) now returns its +second argument instead of its first. + +** The variable 'old-style-backquotes' has been made internal and +renamed to 'lread--old-style-backquotes'. No user code should use +this variable. + +** 'default-file-name-coding-system' now defaults to a coding system +that does not process CRLF. For example, it defaults to 'utf-8-unix' +instead of to 'utf-8'. Before this change, Emacs would sometimes +mishandle file names containing these control characters. + +** 'file-attributes', 'file-symlink-p' and 'make-symbolic-link' no +longer quietly mutate the target of a local symbolic link, so that +Emacs can access and copy them reliably regardless of their contents. +The following changes are involved. + +*** 'file-attributes' and 'file-symlink-p' no longer prepend "/:" to +symbolic links whose targets begin with "/" and contain ":". For +example, if a symbolic link "x" has a target "/y:z:", '(file-symlink-p +"x")' now returns "/y:z:" rather than "/:/y:z:". + +*** 'make-symbolic-link' no longer looks for file name handlers of +target when creating a symbolic link. For example, +'(make-symbolic-link "/y:z:" "x")' now creates a symbolic link to +"/y:z:" instead of failing. + +*** 'make-symbolic-link' removes the remote part of a link target if +target and newname have the same remote part. For example, +'(make-symbolic-link "/x:y:a" "/x:y:b")' creates a link with the +literal string "a"; and '(make-symbolic-link "/x:y:a" "/x:z:b")' +creates a link with the literal string "/x:y:a" instead of failing. + +*** 'make-symbolic-link' now expands a link target with leading "~" +only when the optional third arg is an integer, as when invoked +interactively. For example, '(make-symbolic-link "~y" "x")' now +creates a link with target the literal string "~y"; to get the old +behavior, use '(make-symbolic-link (expand-file-name "~y") "x")'. To +avoid this expansion in interactive use, you can now prefix the link +target with "/:". For example, '(make-symbolic-link "/:~y" "x" 1)' +now creates a link to literal "~y". + +** 'file-truename' returns a quoted file name if the target of a +symbolic link has remote file name syntax. + +** Module functions are now implemented slightly differently; in +particular, the function 'internal--module-call' has been removed. +Code that depends on undocumented internals of the module system might +break. + +** The argument LOCKNAME of 'write-region' is propagated to file name +handlers now. + +** When built against recent versions of GTK+, Emacs always uses +gtk_window_move for moving frames and ignores the value of the +variable 'x-gtk-use-window-move'. The variable is now obsolete. + +** Several functions that create or rename files now treat their +destination argument specially only when it is a directory name, i.e., +when it ends in '/' on GNU and other POSIX-like systems. When the +destination argument D of one of these functions is an existing +directory and the intent is to act on an entry in that directory, D +should now be a directory name. For example, (rename-file "e" "f/") +renames to 'f/e'. Although this formerly happened sometimes even when +D was not a directory name, as in (rename-file "e" "f") where 'f' +happened to be a directory, the old behavior often contradicted the +documentation and had inherent races that led to security holes. A +call like (rename-file C D) that used the old, undocumented behavior +can be written as (rename-file C (file-name-as-directory D)), a +formulation portable to both older and newer versions of Emacs. +Affected functions include 'add-name-to-file', 'copy-directory', +'copy-file', 'format-write-file', 'gnus-copy-file', +'make-symbolic-link', 'rename-file', 'thumbs-rename-images', and +'write-file'. + +** The list returned by 'overlays-at' is now in decreasing priority order. +The documentation of this function always said the order should be +that of decreasing priority, if the 2nd argument of the function is +non-nil, but the code returned the list in the increasing order of +priority instead. Now the code does what the documentation says it +should do. + +** 'format' now avoids allocating a new string in more cases. +'format' was previously documented to return a newly-allocated string, +but this documentation was not correct, as (eq x (format x)) returned +t when x was the empty string. 'format' is no longer documented to +return a newly-allocated string, and the implementation now takes +advantage of the doc change to avoid making copies of strings in +common cases like (format "foo") and (format "%s" "foo"). + +** The function 'eldoc-message' now accepts a single argument. +Programs that called it with multiple arguments before should pass +them through 'format' first. Even that is discouraged: for ElDoc +support, you should set 'eldoc-documentation-function' instead of +calling 'eldoc-message' directly. + +** Using '&rest' or '&optional' incorrectly is now an error. +For example giving '&optional' without a following variable, or +passing '&optional' multiple times: + + (defun foo (&optional &rest x)) + (defun bar (&optional &optional x)) + +Previously, Emacs would just ignore the extra keyword, or give +incorrect results in certain cases. + +** The pinentry.el library has been removed. +That package (and the corresponding change in GnuPG and pinentry) +was intended to provide a way to input passphrase through Emacs with +GnuPG 2.0. However, the change to support that was only implemented +in GnuPG >= 2.1 and didn't get backported to GnuPG 2.0. And with +GnuPG 2.1 and later, pinentry.el is not needed at all. So the +library was useless, and we removed it. GnuPG 2.0 is no longer +supported by the upstream project. + +To adapt to the change, you may need to set 'epa-pinentry-mode' to the +symbol 'loopback'. Alternatively, leave 'epa-pinentry-mode' at its +default value of nil, and remove the 'allow-emacs-pinentry' setting +from your 'gpg-agent.conf' configuration file, usually found in the +'~/.gnupg' directory. + +Note that previously, it was said that passphrase input through +minibuffer would be much less secure than other graphical pinentry +programs. However, these days the difference is insignificant: the +'read-password' function sufficiently protects input from leakage to +message logs. Emacs still doesn't use secure memory to protect +passphrases, but it was also removed from other pinentry programs as +the attack is unrealistic on modern computer systems which don't +utilize swap memory usually. + +** The function 'display-buffer-in-major-side-window' no longer exists. +It has been renamed as internal function 'window--make-major-side-window', +however applications should instead call 'display-buffer-in-side-window' +(passing the SIDE and SLOT parameters as elements of ALIST). This approach +is backwards-compatible with versions of Emacs in which the old function +exists. See the node "Displaying Buffers in Side Windows" in the ELisp +manual for more details. + +* Lisp Changes in Emacs 26.1 + +** The function 'assoc' now takes an optional third argument TESTFN. +This argument, when non-nil, is used for comparison instead of +'equal'. + +** New optional argument TESTFN in 'alist-get', 'map-elt' and 'map-put'. +If non-nil, the argument specifies a function to use for comparison, +instead of, respectively, 'assq' and 'eql'. + +** New function 'seq-set-equal-p' to check if SEQUENCE1 and SEQUENCE2 +contain the same elements, regardless of the order. + +** The new function 'mapbacktrace' applies a function to all frames of +the current stack trace. + +** The new function 'file-name-case-insensitive-p' tests whether a +given file is on a case-insensitive filesystem. + +** 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'. + +** The new function 'buffer-hash' computes a fast, non-consing hash of +a buffer's contents. + +** 'interrupt-process' now consults the list 'interrupt-process-functions', +to determine which function has to be called in order to deliver the +SIGINT signal. This allows Tramp to send the SIGINT signal to remote +asynchronous processes. The hitherto existing implementation has been +moved to 'internal-default-interrupt-process'. + +** The new function 'read-multiple-choice' prompts for multiple-choice +questions, with a handy way to display help texts. + +** 'comment-indent-function' values may now return a cons to specify a +range of indentation. + +** New optional argument TEXT in 'make-temp-file'. + +** New function 'define-symbol-prop'. + +** New function 'secure-hash-algorithms' to list the algorithms that +'secure-hash' supports. +See the node "(elisp) Checksum/Hash" in the ELisp manual for details. + +** Emacs now exposes the GnuTLS cryptographic API with the functions +'gnutls-macs' and 'gnutls-hash-mac'; 'gnutls-digests' and +'gnutls-hash-digest'; 'gnutls-ciphers' and 'gnutls-symmetric-encrypt' +and 'gnutls-symmetric-decrypt'. +See the node "(elisp) GnuTLS Cryptography" in the ELisp manual for details. + +** The function 'gnutls-available-p' now returns a list of capabilities +supported by the GnuTLS library used by Emacs. + +** Emacs now supports records for user-defined types, via the new +functions 'make-record', 'record', and 'recordp'. Records are now +used internally to represent cl-defstruct and defclass instances, for +example. + +If your program defines new record types, you should use +package-naming conventions for naming those types. This is so any +potential conflicts with other types are avoided. + +** 'save-some-buffers' now uses 'save-some-buffers-default-predicate' +to decide which buffers to ask about, if the PRED argument is nil. +The default value of 'save-some-buffers-default-predicate' is nil, +which means ask about all file-visiting buffers. + +** string-(to|as|make)-(uni|multi)byte are now declared obsolete. + +** New variable 'while-no-input-ignore-events' which allow +setting which special events 'while-no-input' should ignore. +It is a list of symbols. + +** New function 'undo-amalgamate-change-group' to get rid of +undo-boundaries between two states. + +** New var 'definition-prefixes' is a hash table mapping prefixes to +the files where corresponding definitions can be found. This can be +used to fetch definitions that are not yet loaded, for example for +'C-h f'. + +** New var 'syntax-ppss-table' to control the syntax-table used in +'syntax-ppss'. + +** 'define-derived-mode' can now specify an :after-hook form, which +gets evaluated after the new mode's hook has run. This can be used to +incorporate configuration changes made in the mode hook into the +mode's setup. + +** Autoload files are now generated without timestamps. +Set 'autoload-timestamps' to a non-nil value to get timestamps in +autoload files. + +** 'gnutls-boot' now takes a parameter ':complete-negotiation' that +says that negotiation should complete even on non-blocking sockets. + +** There is now a new variable 'flyspell-sort-corrections-function' +that allows changing the way corrections are sorted. + +** The new command 'fortune-message' has been added, which displays +fortunes in the echo area. + +** New function 'func-arity' returns information about the argument list +of an arbitrary function. This generalizes 'subr-arity' for functions +that are not built-in primitives. We recommend using this new +function instead of 'subr-arity'. + +** New function 'region-bounds' can be used in the interactive spec +to provide region boundaries (for rectangular regions more than one) +to an interactively callable function as a single argument instead of +two separate arguments 'region-beginning' and 'region-end'. + +** 'parse-partial-sexp' state has a new element. +Element 10 is non-nil when the last character scanned might be the +first character of a two character construct, i.e., a comment +delimiter or escaped character. Its value is the syntax of that last +character. + +** 'parse-partial-sexp's state, element 9, has now been confirmed as +permanent and documented, and may be used by Lisp programs. Its value +is a list of currently open parenthesis positions, starting with the +outermost parenthesis. + +** 'read-color' will now display the color names using the color itself +as the background color. + +** The function 'redirect-debugging-output' now works on platforms +other than GNU/Linux. + +** The new function 'string-version-lessp' compares strings by +interpreting consecutive runs of numerical characters as numbers, and +compares their numerical values. According to this predicate, +"foo2.png" is smaller than "foo12.png". + +** Numeric comparisons and 'logb' no longer return incorrect answers +due to internal rounding errors. For example, '(< most-positive-fixnum +(+ 1.0 most-positive-fixnum))' now correctly returns t on 64-bit hosts. + +** The functions 'ffloor', 'fceiling', 'ftruncate' and 'fround' now +accept only floating-point arguments, as per their documentation. +Formerly, they quietly accepted integer arguments and sometimes +returned nonsensical answers, e.g., '(< N (ffloor N))' could return t. + +** On hosts like GNU/Linux x86-64 where a 'long double' fraction +contains at least EMACS_INT_WIDTH - 3 bits, 'format' no longer returns +incorrect answers due to internal rounding errors when formatting +Emacs integers with '%e', '%f', or '%g' conversions. For example, on +these hosts '(eql N (string-to-number (format "%.0f" N)))' now returns +t for all Emacs integers N. + +** Calls that accept floating-point integers (for use on hosts with +limited integer range) now signal an error if arguments are not +integral. For example '(decode-char 'ascii 0.5)' now signals an +error. + +** Functions 'string-trim-left', 'string-trim-right' and 'string-trim' +now accept optional arguments which specify the regexp of a substring +to trim. + +** The new function 'char-from-name' converts a Unicode name string +to the corresponding character code. + +** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a +Lisp object suitable for use with 'eq' and 'eql' correspondingly. If +two objects are 'eq' ('eql'), then the result of 'sxhash-eq' +('sxhash-eql') on them will be the same. + +** Function 'sxhash' has been renamed to 'sxhash-equal' for +consistency with the new functions. For compatibility, 'sxhash' +remains as an alias to 'sxhash-equal'. + +** 'make-hash-table' now defaults to a rehash threshold of 0.8125 +instead of 0.8, to avoid rounding glitches. + +** New function 'add-variable-watcher' can be used to call a function +when a symbol's value is changed. This is used to implement the new +debugger command 'debug-on-variable-change'. + +** New variable 'print-escape-control-characters' causes 'prin1' and +'print' to output control characters as backslash sequences. + +** Time conversion functions that accept a time zone rule argument now +allow it to be OFFSET or a list (OFFSET ABBR), where the integer +OFFSET is a count of seconds east of Universal Time, and the string +ABBR is a time zone abbreviation. The affected functions are +'current-time-string', 'current-time-zone', 'decode-time', +'format-time-string', and 'set-time-zone-rule'. + +** 'format-time-string' now formats '%q' to the calendar quarter. + +** New built-in function 'mapcan'. +It avoids unnecessary consing (and garbage collection). + +** 'car' and 'cdr' compositions 'cXXXr' and 'cXXXXr' are now part of Elisp. + +** 'gensym' is now part of Elisp. + +** Low-level list functions like 'length' and 'member' now do a better +job of signaling list cycles instead of looping indefinitely. + +** The new functions 'make-nearby-temp-file' and 'temporary-file-directory' +can be used for creation of temporary files on remote or mounted directories. + +** On GNU platforms when operating on a local file, 'file-attributes' +no longer suffers from a race when called while another process is +altering the filesystem. On non-GNU platforms 'file-attributes' +attempts to detect the race, and returns nil if it does so. + +** The new function 'file-local-name' can be used to specify arguments +of remote processes. + +** The new functions 'file-name-quote', 'file-name-unquote' and +'file-name-quoted-p' can be used to quote / unquote file names with +the prefix "/:". + +** The new error 'file-missing', a subcategory of 'file-error', is now +signaled instead of 'file-error' if a file operation acts on a file +that does not exist. + +** The function 'delete-directory' no longer signals an error when +operating recursively and when some other process deletes the directory +or its files before 'delete-directory' gets to them. + +** New error type 'user-search-failed' like 'search-failed' but +avoids debugger like 'user-error'. + +** The function 'line-number-at-pos' now takes a second optional +argument 'absolute'. If this parameter is nil, the default, this +function keeps on returning the line number taking potential narrowing +into account. If this parameter is non-nil, the function ignores +narrowing and returns the absolute line number. + +** The function 'color-distance' now takes a second optional argument +'metric'. When non-nil, it should be a function of two arguments that +accepts two colors and returns a number. + +** Changes in Frame and Window Handling + +*** Resizing a frame no longer runs 'window-configuration-change-hook'. +'window-size-change-functions' should be used instead. + +*** The new function 'frame-size-changed-p' can tell whether a frame has +been resized since the last time 'window-size-change-functions' has been +run. + +*** The function 'frame-geometry' now also returns the width of a +frame's outer border. + +*** New frame parameters and changed semantics for older ones: + +**** 'z-group' positions a frame above or below all others. + +**** 'min-width' and 'min-height' specify the absolute minimum size of a +frame. + +**** 'parent-frame' makes a frame the child frame of another Emacs +frame. The section "(elisp) Child Frames" in the ELisp manual +describes the intrinsics of that relationship. + +**** 'delete-before' triggers deletion of one frame before that of +another. + +**** 'mouse-wheel-frame' specifies another frame whose windows shall be +scrolled instead. + +**** 'no-other-frame' has 'next-frame' and 'previous-frame' skip this +frame. + +**** 'skip-taskbar' removes a frame's icon from the taskbar and has +'Alt-<TAB>' skip this frame. + +**** 'no-focus-on-map' avoids that a frame gets input focus when mapped. + +**** 'no-accept-focus' means that a frame does not want to get input +focus via the mouse. + +**** 'undecorated' removes the window manager decorations from a frame. + +**** 'override-redirect' tells the window manager to disregard this +frame. + +**** 'width' and 'height' now allow the specification of pixel values +and ratios. + +**** 'left' and 'top' now allow the specification of ratios. + +**** 'keep-ratio' preserves size and position of child frames when their +parent frame is resized. + +**** 'no-special-glyphs' suppresses display of truncation and +continuation glyphs in a frame. + +**** 'auto-hide-function' and 'minibuffer-exit' handle auto hiding of +frames and exiting from minibuffer individually. + +**** 'fit-frame-to-buffer-margins' and 'fit-frame-to-buffer-sizes' +handle fitting a frame to its buffer individually. + +**** 'drag-internal-border', 'drag-with-header-line', +'drag-with-mode-line', 'snap-width', 'top-visible' and 'bottom-visible' +allow dragging and resizing frames with the mouse. + +**** 'minibuffer' is now set to the default minibuffer window when +initially specified as nil and is not reset to nil when initially +specifying a minibuffer window. + +*** The new function 'frame-list-z-order' returns a list of all frames +in Z (stacking) order. + +*** The function 'x-focus-frame' optionally tries to not activate its +frame. + +*** The variable 'focus-follows-mouse' has a third meaningful value +'auto-raise' to indicate that the window manager automatically raises a +frame when the mouse pointer enters it. + +*** The new function 'frame-restack' puts a frame above or below +another on the display. + +*** The new face 'internal-border' specifies the background of a frame's +internal border. + +*** The NORECORD argument of 'select-window' now has a meaningful value +'mark-for-redisplay' which is like any other non-nil value but marks +WINDOW for redisplay. + +*** Support for side windows is now official. The display action +function 'display-buffer-in-side-window' will display its buffer in a +side window. Functions for toggling all side windows on a frame, +changing and reversing the layout of side windows and returning the +main (major non-side) window of a frame are provided. For details +consult the section "(elisp) Side Windows" in the ELisp manual. + +*** Support for atomic windows - rectangular compositions of windows +treated by 'split-window', 'delete-window' and 'delete-other-windows' +like a single live window - is now official. For details consult the +section "(elisp) Atomic Windows" in the ELisp manual. + +*** New 'display-buffer' alist entry 'window-parameters' allows the +assignment of window parameters to the window used for displaying the +buffer. + +*** New function 'display-buffer-reuse-mode-window' is an action function +suitable for use in 'display-buffer-alist'. For example, to avoid +creating a new window when opening man pages when there's already one, +use + +(add-to-list 'display-buffer-alist + '("\\`\\*Man .*\\*\\'" . + (display-buffer-reuse-mode-window + (inhibit-same-window . nil) + (mode . Man-mode)))) + +*** New window parameter 'no-delete-other-windows' prevents that +its window gets deleted by 'delete-other-windows'. + +*** New window parameters 'mode-line-format' and 'header-line-format' +allow the buffer-local formats for this window to be overridden. + +*** New command 'window-swap-states' swaps the states of two live +windows. + +*** New functions 'window-pixel-width-before-size-change' and +'window-pixel-height-before-size-change' support detecting which +window changed size when 'window-size-change-functions' are run. + +*** The new function 'window-lines-pixel-dimensions' returns the pixel +dimensions of a window's text lines. + +*** The new function 'window-largest-empty-rectangle' returns the +dimensions of the largest rectangular area not occupying any text in a +window's body. + +*** The semantics of 'mouse-autoselect-window' has changed slightly. +For details see the section "(elisp) Mouse Window Auto-selection" in +the ELisp manual. + +*** 'select-frame-by-name' now may return a frame on another display +if it does not find a suitable one on the current display. + +** 'tcl-auto-fill-mode' is now declared obsolete. +Its functionality can be replicated simply by setting +'comment-auto-fill-only-comments'. + +** New pcase pattern 'rx' to match against an rx-style regular expression. +For details, see the doc string of 'rx--pcase-macroexpander'. + +** New functions to set region from secondary selection and vice versa. +The new functions 'secondary-selection-to-region' and +'secondary-selection-from-region' let you set the beginning and the +end of the region from those of the secondary selection and vice +versa. + +** New function 'lgstring-remove-glyph' can be used to modify a +gstring returned by the underlying layout engine (e.g. m17n-flt, +uniscribe). + + +* Changes in Emacs 26.1 on Non-Free Operating Systems + +** Intercepting hotkeys on Windows 7 and later now works better. +The new keyboard hooking code properly grabs system hotkeys such as +'Win-*' and 'Alt-TAB', in a way that Emacs can get at them before the +system. This makes the 'w32-register-hot-key' functionality work +again on all versions of MS-Windows starting with Windows 7. On +Windows NT and later you can now register any hotkey combination. (On +Windows 9X, the previous limitations, spelled out in the Emacs manual, +still apply.) + +** 'convert-standard-filename' no longer mirrors slashes on MS-Windows. +Previously, on MS-Windows this function converted slash characters in +file names into backslashes. It no longer does that. If your Lisp +program used 'convert-standard-filename' to prepare file names to be +passed to subprocesses (which is not the recommended usage of that +function), you will now have to mirror slashes in your application +code. One possible way is this: + + (let ((start 0)) + (while (string-match "/" file-name start) + (aset file-name (match-beginning 0) ?\\) + (setq start (match-end 0)))) + +** GUI sessions on MS-Windows now treat SIGINT like Posix platforms do. +The effect of delivering a Ctrl-C (SIGINT) signal to a GUI Emacs on +MS-Windows is now the same as on Posix platforms -- Emacs saves the +session and exits. In particular, this will happen if you start +emacs.exe from the Windows shell, then type Ctrl-C into that shell's +window. + +** 'signal-process' supports SIGTRAP on Windows XP and later. +The 'kill' emulation on Windows now maps SIGTRAP to a call to the +'DebugBreakProcess' API. This causes the receiving process to break +execution and return control to the debugger. If no debugger is +attached to the receiving process, the call is typically ignored. +This is in contrast to the default action on POSIX Systems, where it +causes the receiving process to terminate with a core dump if no +debugger has been attached to it. + +** 'set-mouse-position' and 'set-mouse-absolute-pixel-position' work +on macOS. + +** Emacs can now be run as a GUI application from the command line on +macOS. + +** 'ns-appearance' and 'ns-transparent-titlebar' change the appearance +of frame decorations on macOS 10.9+. + +** 'ns-use-thin-smoothing' enables thin font smoothing on macOS 10.8+. + +** 'process-attributes' on Darwin systems now returns more information. + +** Mousewheel and trackpad scrolling on macOS 10.7+ now behaves more +like the macOS default. The new variables 'ns-mwheel-line-height', +'ns-use-mwheel-acceleration' and 'ns-use-mwheel-momentum' can be used +to customize the behavior. + + +---------------------------------------------------------------------- +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + + +Local variables: +coding: utf-8 +mode: outline +paragraph-separate: "[ ]*$" +end: diff --git a/etc/ORDERS b/etc/ORDERS deleted file mode 100644 index 1df755de9f5..00000000000 --- a/etc/ORDERS +++ /dev/null @@ -1,8 +0,0 @@ -Printed copies of Emacs manuals - -Note added January 2014: - -This file is obsolete and will be removed in future. -Please update any links to use - info node `(emacs)Printed Books' -instead. diff --git a/etc/PROBLEMS b/etc/PROBLEMS index b3f1d70858a..785e6e18afa 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -207,7 +207,7 @@ configuring your compiler to use the native linker instead of GNU ld. ** When Emacs is compiled with Gtk+, closing a display kills Emacs. There is a long-standing bug in GTK that prevents it from recovering -from disconnects: https://gitlab.gnome.org/GNOME/gtk/issues/221. +from disconnects: https://gitlab.gnome.org/GNOME/gtk/issues/221 Thus, for instance, when Emacs is run as a server on a text terminal, and an X frame is created, and the X server for that frame crashes or @@ -575,17 +575,6 @@ And then rename the system's readline so that it won't be loaded: See <https://pypi.python.org/pypi/gnureadline> for more details on installation. -*** Emacs startup on GNU/Linux systems (and possibly other systems) is slow. - -This can happen if the system is misconfigured and Emacs can't get the -full qualified domain name, FQDN. You should have your FQDN in the -/etc/hosts file, something like this: - -127.0.0.1 localhost -129.187.137.82 nuc04.t30.physik.tu-muenchen.de nuc04 - -The way to set this up may vary on non-GNU systems. - *** Visiting files in some auto-mounted directories causes Emacs to print 'Error reading dir-locals: (file-error "Read error" "is a directory" ...' @@ -613,7 +602,7 @@ and then choose /usr/bin/netkit-ftp. *** Dired is very slow. -This could happen if invocation of the 'df' program takes a long +This could happen if getting a file system's status takes a long time. Possible reasons for this include: - ClearCase mounted filesystems (VOBs) that sometimes make 'df' @@ -621,12 +610,8 @@ time. Possible reasons for this include: - slow automounters on some old versions of Unix; - - slow operation of some versions of 'df'. - -To work around the problem, you could either (a) set the variable -'directory-free-space-program' to nil, and thus prevent Emacs from -invoking 'df'; (b) use 'df' from the GNU Coreutils package; or -(c) use CVS, which is Free Software, instead of ClearCase. +To work around the problem, you could use Git or some other +free-software program, instead of ClearCase. *** ps-print commands fail to find prologue files ps-prin*.ps. @@ -807,10 +792,8 @@ frame's parameter list, like this: ** Underlines appear at the wrong position. This is caused by fonts having a wrong UNDERLINE_POSITION property. -Examples are the 7x13 font on XFree86 prior to version 4.1, or the jmk -neep font from the Debian xfonts-jmk package prior to version 3.0.17. -To circumvent this problem, set x-use-underline-position-properties -to nil in your '.emacs'. +To avoid this problem (seen in some very old X releases and font packages), +set x-use-underline-position-properties to nil. To see what is the value of UNDERLINE_POSITION defined by the font, type 'xlsfonts -lll FONT' and look at the font's UNDERLINE_POSITION property. diff --git a/etc/THE-GNU-PROJECT b/etc/THE-GNU-PROJECT deleted file mode 100644 index d2aa15565e0..00000000000 --- a/etc/THE-GNU-PROJECT +++ /dev/null @@ -1,8 +0,0 @@ -The GNU Project - -Note added March 2014: - -This file is obsolete and will be removed in future. -Please update any references to use - -<https://www.gnu.org/gnu/thegnuproject.html> @@ -143,15 +143,6 @@ See the 'test' directory for examples. * Small but important fixes needed in existing features: -** Flymake's customization mechanism needs to be both simpler (fewer -levels of indirection) and better documented, so it is easier to -understand. I find it quite hard to figure out what compilation -command it will use. - -I suggest totally rewriting that part of Flymake, using the simplest -mechanism that suffices for the specific needs. That will be easy -for users to customize. - ** Distribute a bar cursor of width > 1 evenly between the two glyphs on each side of the bar (what to do at the edges?). @@ -211,7 +202,6 @@ https://lists.gnu.org/r/emacs-devel/2007-04/msg00684.html Change them to use report-emacs-bug. *** Related functions: **** gnus-bug -**** report-calc-bug **** org-submit-bug-report **** lm-report-bug **** tramp-bug diff --git a/etc/WHY-FREE b/etc/WHY-FREE deleted file mode 100644 index cd2c2fcf8d8..00000000000 --- a/etc/WHY-FREE +++ /dev/null @@ -1,8 +0,0 @@ -Why Software Should Not Have Owners - -Note added March 2014: - -This file is obsolete and will be removed in future. -Please update any references to use - -<https://www.gnu.org/philosophy/why-free.html> diff --git a/etc/edt-user.el b/etc/edt-user.el index 5aede6bfd8e..10ea4c458bb 100644 --- a/etc/edt-user.el +++ b/etc/edt-user.el @@ -4,7 +4,6 @@ ;; Inc. ;; Author: Kevin Gallagher <kevin.gal@verizon.net> -;; Maintainer: Kevin Gallagher <kevin.gal@verizon.net> ;; Keywords: emulations ;; This file is part of GNU Emacs. diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb index e5916b3784f..efbf75dc0d6 100644 --- a/etc/emacs-buffer.gdb +++ b/etc/emacs-buffer.gdb @@ -81,7 +81,7 @@ set $yfile_buffers_only = 0 define ygetptr set $ptr = $arg0 - set $ptr = (CHECK_LISP_OBJECT_TYPE ? $ptr.i : $ptr) & VALMASK + set $ptr = (EMACS_INT) (CHECK_LISP_OBJECT_TYPE ? $ptr.i : $ptr) & VALMASK end # Get the value of Qnil for comparison. Needed when @@ -103,12 +103,12 @@ define ybuffer-list ygetptr $alist set $alist = $ptr while $alist != $qnil - set $this = ((struct Lisp_Cons *) $ptr)->car - set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr + set $this = ((struct Lisp_Cons *) $ptr)->u.s.car + set $alist = ((struct Lisp_Cons *) $ptr)->u.s.u.cdr # Vbuffer_alist elts are pairs of the form (name . buffer) ygetptr $this - set $buf = ((struct Lisp_Cons *) $ptr)->u.cdr + set $buf = ((struct Lisp_Cons *) $ptr)->u.s.u.cdr ygetptr $buf set $buf = (struct buffer *) $ptr @@ -116,17 +116,17 @@ define ybuffer-list set $fname = $ptr if ! ($files_only && $fname == $qnil) ygetptr $buf->name_ - set $name = ((struct Lisp_String *) $ptr)->data + set $name = ((struct Lisp_String *) $ptr)->u.s.data set $modp = ($buf->text->modiff > $buf->text->save_modiff) ? '*' : ' ' ygetptr $buf->mode_name_ - set $mode = ((struct Lisp_String *) $ptr)->data + set $mode = ((struct Lisp_String *) $ptr)->u.s.data if $fname != $qnil ygetptr $buf->filename_ printf "%2d %c %9d %-20s %-10s %s\n", \ $i, $modp, ($buf->text->z_byte - 1), $name, $mode, \ - ((struct Lisp_String *) $fname)->data + ((struct Lisp_String *) $fname)->u.s.data else printf "%2d %c %9d %-20s %-10s\n", \ $i, $modp, ($buf->text->z_byte - 1), $name, $mode @@ -161,18 +161,18 @@ define yset-buffer ygetptr $alist set $alist = $ptr while ($alist != $qnil && $i > 0) - set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr + set $alist = ((struct Lisp_Cons *) $ptr)->u.s.u.cdr ygetptr $alist set $alist = $ptr set $i-- end # Get car of alist; this is a pair (name . buffer) - set $this = ((struct Lisp_Cons *) $alist)->car + set $this = ((struct Lisp_Cons *) $alist)->u.s.car # Get the buffer object ygetptr $this - set $this = ((struct Lisp_Cons *) $ptr)->u.cdr + set $this = ((struct Lisp_Cons *) $ptr)->u.s.u.cdr ygetptr $this set $ycurrent_buffer = (struct buffer *) $ptr @@ -206,7 +206,7 @@ end define yget-current-buffer-name set $this = $ycurrent_buffer->name_ ygetptr $this - set $ycurrent_buffer_name = ((struct Lisp_String *) $ptr)->data + set $ycurrent_buffer_name = ((struct Lisp_String *) $ptr)->u.s.data end document yget-current-buffer-name Set $ycurrent_buffer_name to the name of the currently selected buffer. diff --git a/etc/emacs.service b/etc/emacs.service index b29177b120c..dbcb6bc301e 100644 --- a/etc/emacs.service +++ b/etc/emacs.service @@ -7,7 +7,7 @@ Description=Emacs text editor Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/ [Service] -Type=simple +Type=notify ExecStart=emacs --fg-daemon ExecStop=emacsclient --eval "(kill-emacs)" Environment=SSH_AUTH_SOCK=%t/keyring/ssh diff --git a/etc/enriched.txt b/etc/enriched.txt index 0a9c4be9fc7..839dd2f8af9 100644 --- a/etc/enriched.txt +++ b/etc/enriched.txt @@ -64,7 +64,11 @@ the right margin, fully justified, centered, or left alone).</indent> <bold>Excerpts:</bold><indent> <excerpt>"For quoted material."</excerpt></indent> -<bold>Read-only</bold> regions. +<bold>Read-only, Invisible, and Intangible</bold> regions. + +<bold>Charset</bold> properties. + +<bold>Display</bold> properties. </indent> @@ -158,6 +162,16 @@ parts of other people's email messages and the like. It is just a face, which is the same as the 'italic' face by default.</indent></excerpt> +<x-bg-color><param>blue</param><x-color><param>white</param><bold>CHARSET</bold></x-color></x-bg-color> + + +<indent>You can add character set information to stretches of text; this +is important for selecting the font that will display that text. +Users of various charsets, especially in East Asian cultures, +prefer the same characters to be rendered differently depending on +the language/charset context.</indent> + + <x-bg-color><param>blue</param><x-color><param>white</param><bold>THE FILE FORMAT</bold></x-color></x-bg-color> @@ -192,9 +206,9 @@ requires you to name your annotation starting<italic> "x-" </italic>(as in <italic>"x-read-only"</italic>). Please report any such additions that you think might be of general interest using <fixed>M-x report-emacs-bug</fixed>.</indent> -</indent> +</indent><bold> -<x-bg-color><param>blue</param><x-color><param>white</param><bold>TODO LIST</bold></x-color></x-bg-color> +<x-bg-color><param>blue</param><x-color><param>white</param>TODO LIST</x-color></x-bg-color></bold> <italic><indent>[Feel free to work on these and send us the results!]</indent></italic><indent> @@ -235,7 +249,7 @@ it.</indent> <x-bg-color><param>blue</param><x-color><param>white</param><bold>Original Author:</bold></x-color></x-bg-color> -<bold><x-color><param>white</param><x-bg-color><param>blue</param>Boris Goldowsky</x-bg-color></x-color><x-color><param>light blue</param> </x-color></bold><x-color><param>light blue</param><fixed><<boris@gnu.ai.mit.edu></fixed></x-color><x-color><param>blue</param> +<bold><x-color><param>white</param><x-bg-color><param>blue</param>Boris Goldowsky</x-bg-color></x-color><x-color><param>light blue</param> </x-color></bold><x-color><param>light blue</param><fixed><<boris@gnu.ai.mit.edu></fixed></x-color> diff --git a/etc/images/icons/hicolor/scalable/apps/emacs.ico b/etc/images/icons/hicolor/scalable/apps/emacs.ico Binary files differnew file mode 100644 index 00000000000..70591275217 --- /dev/null +++ b/etc/images/icons/hicolor/scalable/apps/emacs.ico diff --git a/etc/images/splash.bmp b/etc/images/splash.bmp Binary files differnew file mode 100644 index 00000000000..3ec4c276d53 --- /dev/null +++ b/etc/images/splash.bmp diff --git a/etc/refcards/Makefile b/etc/refcards/Makefile index f6b7c2e7f9f..0ba6db5aa28 100644 --- a/etc/refcards/Makefile +++ b/etc/refcards/Makefile @@ -40,7 +40,7 @@ PDF_CZECH = \ PDF_FRENCH = \ fr-dired-ref.pdf \ fr-refcard.pdf \ - fr-survival.pdf \ + fr-survival.pdf PDF_GERMAN = de-refcard.pdf @@ -311,7 +311,7 @@ viperCard.dvi: $(vipercard_deps) .PHONY: clean clean: - -rm -f *.dvi *.log *.aux + -rm -f ./*.dvi ./*.log ./*.aux distclean: clean diff --git a/etc/refcards/calccard.tex b/etc/refcards/calccard.tex index 2b85536886c..7e28f83057a 100644 --- a/etc/refcards/calccard.tex +++ b/etc/refcards/calccard.tex @@ -58,14 +58,10 @@ % Which mode to use is controlled by setting \columnsperpage above. % % Author (Calc reference card): -% Dave Gillespie -% UUCP: uunet!synaptx!daveg -% Internet: daveg@synaptics.com +% Dave Gillespie <daveg@synaptics.com> % % Author (refcard.tex format): -% Stephen Gildea -% UUCP: mit-erl!gildea -% Internet: gildea@stop.mail-abuse.org +% Stephen Gildea <stepheng+emacs@gildea.com> \input emacsver.tex diff --git a/etc/refcards/cs-refcard.tex b/etc/refcards/cs-refcard.tex index ca7d8333208..ec9e9a9edfd 100644 --- a/etc/refcards/cs-refcard.tex +++ b/etc/refcards/cs-refcard.tex @@ -3,7 +3,7 @@ % Copyright (C) 1987, 1993, 1996-1997, 2001-2019 Free Software % Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % Czech translation: Jan Buchal <buchal@brailcom.cz>, January 1999 % Milan Zamazal <pdm@zamazal.org>, August 1999 % Pavel Janík <Pavel@Janik.cz>, November 2000 (Emacs 21) diff --git a/etc/refcards/cs-survival.tex b/etc/refcards/cs-survival.tex index 8ac2c03d0ce..bdc35cd20e1 100644 --- a/etc/refcards/cs-survival.tex +++ b/etc/refcards/cs-survival.tex @@ -2,7 +2,7 @@ % Copyright (C) 2000-2019 Free Software Foundation, Inc. -% Author: Wlodek Bzyl <matwb@univ.gda.pl> +% Author: Włodek Bzyl <matwb@univ.gda.pl> % Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001 % This document is free software: you can redistribute it and/or modify @@ -289,7 +289,7 @@ zaznamenaných v tabulce značek. \key{C-x m} nová zpráva \key{C-c C-c} pošli zprávu a přepni do jiného bufferu -\key{C-c C-f C-c} přesuň se na hlavičku `CC' a pokud neexistuje, tak ji +\key{C-c C-f C-c} přesuň se na hlavičku `Cc' a pokud neexistuje, tak ji vytvoř \section{Různé} diff --git a/etc/refcards/de-refcard.tex b/etc/refcards/de-refcard.tex index 06b6efe37de..5c8127d0738 100644 --- a/etc/refcards/de-refcard.tex +++ b/etc/refcards/de-refcard.tex @@ -3,7 +3,7 @@ % Copyright (C) 1987, 1993, 1996, 2000-2019 Free Software Foundation, % Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % German translation: Sven Joachim <svenjoac@gmx.de> % This document is free software: you can redistribute it and/or modify diff --git a/etc/refcards/fr-refcard.tex b/etc/refcards/fr-refcard.tex index 0ebf791cd8b..467c71a86fc 100644 --- a/etc/refcards/fr-refcard.tex +++ b/etc/refcards/fr-refcard.tex @@ -3,7 +3,7 @@ % Copyright (C) 1987, 1993, 1996-1997, 2001-2019 Free Software % Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % French translation: Eric Jacoboni % Micha\"el Cadilhac diff --git a/etc/refcards/fr-survival.tex b/etc/refcards/fr-survival.tex index 5cbb48810ac..f0bbc11f12a 100644 --- a/etc/refcards/fr-survival.tex +++ b/etc/refcards/fr-survival.tex @@ -3,7 +3,7 @@ % Copyright (C) 2000-2019 Free Software Foundation, Inc. -% Author: Wlodek Bzyl <matwb@univ.gda.pl> +% Author: Włodek Bzyl <matwb@univ.gda.pl> % French translation: \'Eric Jacoboni <jaco@teaser.fr>, November 2001 % This document is free software: you can redistribute it and/or modify @@ -287,7 +287,7 @@ dans la fen\^etre de compilation, ou \key{C-x m} d\'ebute la composition d'un message \key{C-c C-c} envoie le message et bascule dans un autre tampon -\key{C-c C-f C-c} va \`a l'ent\^ete `CC', en cr\'ee un s'il n'existe pas +\key{C-c C-f C-c} va \`a l'ent\^ete `Cc', en cr\'ee un s'il n'existe pas \section{Divers} diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index ae4e26c2863..4a51fe01c58 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -60,8 +60,7 @@ % dvips -t landscape refcard.dvi % % Author: -% Stephen Gildea -% Internet: gildea@stop.mail-abuse.org +% Stephen Gildea <stepheng+emacs@gildea.com> % % Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik % for their many good ideas. diff --git a/etc/refcards/pl-refcard.tex b/etc/refcards/pl-refcard.tex index 578a8f6251b..54b6a10e4b4 100644 --- a/etc/refcards/pl-refcard.tex +++ b/etc/refcards/pl-refcard.tex @@ -3,8 +3,8 @@ % Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> -% Polish translation: W{\l}odek Bzyl <matwb@univ.gda.pl> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> +% Polish translation: Włodek Bzyl <matwb@univ.gda.pl> % This document is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -38,7 +38,7 @@ % You will still need to cut and paste. % Which mode to use is controlled by setting \columnsperpage. -% Translated into Polish language by W{\l}odek Bzyl (matwb@univ.gda.pl) +% Translated into Polish language by Włodek Bzyl <matwb@univ.gda.pl> % who also added new section on `Dired' and added info about Polish % support in Emacs to section `International Character Sets'. diff --git a/etc/refcards/pt-br-refcard.tex b/etc/refcards/pt-br-refcard.tex index 04ce77d0325..b7840621eea 100644 --- a/etc/refcards/pt-br-refcard.tex +++ b/etc/refcards/pt-br-refcard.tex @@ -3,7 +3,7 @@ % Copyright (C) 1987, 1993, 1996-1997, 2002-2004, 2006-2019 Free % Software Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % Portuguese translation: Rodrigo Real <rreal@ucpel.tche.br> % This document is free software: you can redistribute it and/or modify diff --git a/etc/refcards/refcard.tex b/etc/refcards/refcard.tex index 5089133e954..d03e6654f0c 100644 --- a/etc/refcards/refcard.tex +++ b/etc/refcards/refcard.tex @@ -3,7 +3,7 @@ % Copyright (C) 1987, 1993, 1996-1997, 2001-2019 Free Software % Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % This document is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex index d44a104f6ba..59741f31ebe 100644 --- a/etc/refcards/ru-refcard.tex +++ b/etc/refcards/ru-refcard.tex @@ -1,6 +1,6 @@ % Copyright (C) 1997, 2002-2019 Free Software Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % Russian translation: Alex Ott <alexott@gmail.com> % This document is free software: you can redistribute it and/or modify @@ -40,7 +40,7 @@ \newlength{\ColThreeWidth} \setlength{\ColThreeWidth}{25mm} -\newcommand{\versionemacs}[0]{26} % version of Emacs this is for +\newcommand{\versionemacs}[0]{27} % version of Emacs this is for \newcommand{\cyear}[0]{2019} % copyright year \newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill diff --git a/etc/refcards/sk-refcard.tex b/etc/refcards/sk-refcard.tex index 823913affcd..7ec15983346 100644 --- a/etc/refcards/sk-refcard.tex +++ b/etc/refcards/sk-refcard.tex @@ -3,7 +3,7 @@ % Copyright (C) 1987, 1993, 1996-1997, 2001-2019 Free Software % Foundation, Inc. -% Author: Stephen Gildea <gildea@stop.mail-abuse.org> +% Author: Stephen Gildea <stepheng+emacs@gildea.com> % Czech translation: Jan Buchal <buchal@brailcom.cz>, January 1999 % Milan Zamazal <pdm@zamazal.org>, August 1999 % Pavel Janík <Pavel@Janik.cz>, November 2000 (Emacs 21) diff --git a/etc/refcards/sk-survival.tex b/etc/refcards/sk-survival.tex index 1968b456b59..80eb2aee08d 100644 --- a/etc/refcards/sk-survival.tex +++ b/etc/refcards/sk-survival.tex @@ -2,7 +2,7 @@ % Copyright (C) 2000-2019 Free Software Foundation, Inc. -% Author: Wlodek Bzyl <matwb@univ.gda.pl> +% Author: Włodek Bzyl <matwb@univ.gda.pl> % Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001 % Slovak translation: Miroslav Vasko <vasko@debian.cz>, March 2001 @@ -292,7 +292,7 @@ zaznamenaných v tabuľke značiek. \key{C-x m} nová správa \key{C-c C-c} pošli správu a prepni sa do iného bufferu -\key{C-c C-f C-c} presuň sa na hlavičku `CC', a ak neexistuje, tak ju +\key{C-c C-f C-c} presuň sa na hlavičku `Cc', a ak neexistuje, tak ju vytvor \section{Rôzne} diff --git a/etc/refcards/survival.tex b/etc/refcards/survival.tex index 727383c694b..b25c9af76b1 100644 --- a/etc/refcards/survival.tex +++ b/etc/refcards/survival.tex @@ -3,7 +3,7 @@ % Copyright (C) 2000-2019 Free Software Foundation, Inc. -% Author: Wlodek Bzyl <matwb@univ.gda.pl> +% Author: Włodek Bzyl <matwb@univ.gda.pl> % This document is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -278,7 +278,7 @@ else convenient. To create a tags table file, type \key{C-x m} begin composing a message \key{C-c C-c} send the message and switch to another buffer -\key{C-c C-f C-c} move to the `CC' header field, creating one +\key{C-c C-f C-c} move to the `Cc' header field, creating one if there is none \section{Miscellaneous} diff --git a/etc/refcards/viperCard.tex b/etc/refcards/viperCard.tex index fb116d41f9f..00d9e3b7f5d 100644 --- a/etc/refcards/viperCard.tex +++ b/etc/refcards/viperCard.tex @@ -2,7 +2,7 @@ % Copyright (C) 1995-1997, 2001-2019 Free Software Foundation, Inc. -% Author: Michael Kifer <kifer@cs.sunysb.edu> (Viper) +% Author: Michael Kifer <kifer@cs.stonybrook.edu> (Viper) % Aamod Sane <sane@cs.uiuc.edu> (VIP 4.3) % Masahiko Sato <ms@sail.stanford.edu> (VIP 3.5) diff --git a/etc/srecode/c.srt b/etc/srecode/c.srt index d1710c9bb84..58b931b520a 100644 --- a/etc/srecode/c.srt +++ b/etc/srecode/c.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2007-2010, 2012-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/cpp.srt b/etc/srecode/cpp.srt index 79b62b34589..bac247c7017 100644 --- a/etc/srecode/cpp.srt +++ b/etc/srecode/cpp.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2007-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/default.srt b/etc/srecode/default.srt index 693cc9504c2..c896326c800 100644 --- a/etc/srecode/default.srt +++ b/etc/srecode/default.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2007-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/doc-cpp.srt b/etc/srecode/doc-cpp.srt index f7a0af65cfa..15c5c195360 100644 --- a/etc/srecode/doc-cpp.srt +++ b/etc/srecode/doc-cpp.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2008-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/doc-default.srt b/etc/srecode/doc-default.srt index 1f1cb4e9cca..2c7403e118c 100644 --- a/etc/srecode/doc-default.srt +++ b/etc/srecode/doc-default.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2009-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/doc-java.srt b/etc/srecode/doc-java.srt index 659a8e9f341..3cd4d24fa61 100644 --- a/etc/srecode/doc-java.srt +++ b/etc/srecode/doc-java.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2009-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/ede-autoconf.srt b/etc/srecode/ede-autoconf.srt index 1f5a2711efa..c203536d77f 100644 --- a/etc/srecode/ede-autoconf.srt +++ b/etc/srecode/ede-autoconf.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2010, 2012-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/ede-make.srt b/etc/srecode/ede-make.srt index edf34a087f1..5cef78eac00 100644 --- a/etc/srecode/ede-make.srt +++ b/etc/srecode/ede-make.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2008-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/el.srt b/etc/srecode/el.srt index 5d5a2ecf352..baa7c59fe34 100644 --- a/etc/srecode/el.srt +++ b/etc/srecode/el.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2007-2019 Free Software Foundation, Inc. -;; Author: Eric Ludlam <zappo@gnu.org> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/getset-cpp.srt b/etc/srecode/getset-cpp.srt index cdb06dcc5ae..78946a75b66 100644 --- a/etc/srecode/getset-cpp.srt +++ b/etc/srecode/getset-cpp.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2007-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/java.srt b/etc/srecode/java.srt index f9e67b78014..95935449b74 100644 --- a/etc/srecode/java.srt +++ b/etc/srecode/java.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2009-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/make.srt b/etc/srecode/make.srt index 1288acb7d3e..4aa1c0a2830 100644 --- a/etc/srecode/make.srt +++ b/etc/srecode/make.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2009-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/template.srt b/etc/srecode/template.srt index a651e324d3a..f0855da1b45 100644 --- a/etc/srecode/template.srt +++ b/etc/srecode/template.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2005, 2007-2019 Free Software Foundation, Inc. -;; Author: Eric Ludlam <zappo@gnu.org> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/test.srt b/etc/srecode/test.srt index 79f9dd027ba..3bbc33e72dc 100644 --- a/etc/srecode/test.srt +++ b/etc/srecode/test.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2008-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/texi.srt b/etc/srecode/texi.srt index d696cc09f7a..17f4c5a1129 100644 --- a/etc/srecode/texi.srt +++ b/etc/srecode/texi.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2008-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/srecode/wisent.srt b/etc/srecode/wisent.srt index 40fe942384b..27c65bef570 100644 --- a/etc/srecode/wisent.srt +++ b/etc/srecode/wisent.srt @@ -2,7 +2,7 @@ ;; Copyright (C) 2007-2019 Free Software Foundation, Inc. -;; Author: Eric M. Ludlam <eric@siege-engine.com> +;; Author: Eric M. Ludlam <zappo@gnu.org> ;; This file is part of GNU Emacs. diff --git a/etc/themes/adwaita-theme.el b/etc/themes/adwaita-theme.el index 800e6cf817c..73ef7b6e9ee 100644 --- a/etc/themes/adwaita-theme.el +++ b/etc/themes/adwaita-theme.el @@ -99,8 +99,4 @@ default look of the Gnome 3 desktop.") `(diff-added ((,class (:bold t :foreground "#4E9A06")))) `(diff-removed ((,class (:bold t :foreground "#F5666D")))))) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; adwaita-theme.el ends here diff --git a/etc/themes/deeper-blue-theme.el b/etc/themes/deeper-blue-theme.el index 2bf5ef16a3d..d04a270ba5e 100644 --- a/etc/themes/deeper-blue-theme.el +++ b/etc/themes/deeper-blue-theme.el @@ -110,8 +110,4 @@ (provide-theme 'deeper-blue) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; deeper-blue-theme.el ends here diff --git a/etc/themes/dichromacy-theme.el b/etc/themes/dichromacy-theme.el index 69e56f9a65d..b361fe5c509 100644 --- a/etc/themes/dichromacy-theme.el +++ b/etc/themes/dichromacy-theme.el @@ -122,8 +122,4 @@ Ansi-Color faces are included.") (provide-theme 'dichromacy) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; dichromacy-theme.el ends here diff --git a/etc/themes/leuven-theme.el b/etc/themes/leuven-theme.el index 485406362ec..d544f28da79 100644 --- a/etc/themes/leuven-theme.el +++ b/etc/themes/leuven-theme.el @@ -708,7 +708,6 @@ Semantic, and Ansi-Color faces are included -- and much more...") ;; time-stamp-format: "%:y%02m%02d.%02H%02M" ;; time-stamp-start: "Version: " ;; time-stamp-end: "$" -;; no-byte-compile: t ;; End: ;;; leuven-theme.el ends here diff --git a/etc/themes/light-blue-theme.el b/etc/themes/light-blue-theme.el index e9abfa319ca..3060dcf09c7 100644 --- a/etc/themes/light-blue-theme.el +++ b/etc/themes/light-blue-theme.el @@ -61,8 +61,4 @@ (provide-theme 'light-blue) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; light-blue-theme.el ends here diff --git a/etc/themes/manoj-dark-theme.el b/etc/themes/manoj-dark-theme.el index 1a24a92e918..b6bf9bff1e1 100644 --- a/etc/themes/manoj-dark-theme.el +++ b/etc/themes/manoj-dark-theme.el @@ -700,8 +700,4 @@ jarring angry fruit salad look to reduce eye fatigue.") (provide-theme 'manoj-dark) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; manoj-dark.el ends here diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el index a343aa172c4..cac76d681eb 100644 --- a/etc/themes/misterioso-theme.el +++ b/etc/themes/misterioso-theme.el @@ -103,8 +103,4 @@ (provide-theme 'misterioso) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; misterioso-theme.el ends here diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el index 5cd796ed168..bd99790f452 100644 --- a/etc/themes/tango-dark-theme.el +++ b/etc/themes/tango-dark-theme.el @@ -170,8 +170,4 @@ Semantic, and Ansi-Color faces are included.") (provide-theme 'tango-dark) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; tango-dark-theme.el ends here diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el index 2d115e245b0..12d4db3fe7c 100644 --- a/etc/themes/tango-theme.el +++ b/etc/themes/tango-theme.el @@ -154,8 +154,4 @@ Semantic, and Ansi-Color faces are included.") (provide-theme 'tango) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; tango-theme.el ends here diff --git a/etc/themes/tsdh-dark-theme.el b/etc/themes/tsdh-dark-theme.el index 6229538363f..5482ced6b29 100644 --- a/etc/themes/tsdh-dark-theme.el +++ b/etc/themes/tsdh-dark-theme.el @@ -144,8 +144,4 @@ (provide-theme 'tsdh-dark) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; tsdh-dark-theme.el ends here diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el index 8617d72aca9..8e6a79f8e36 100644 --- a/etc/themes/tsdh-light-theme.el +++ b/etc/themes/tsdh-light-theme.el @@ -106,9 +106,4 @@ Used and created by Tassilo Horn.") (provide-theme 'tsdh-light) - -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; tsdh-light-theme.el ends here diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el index 363a7a06c52..2e18eb9e3a4 100644 --- a/etc/themes/wheatgrass-theme.el +++ b/etc/themes/wheatgrass-theme.el @@ -83,8 +83,4 @@ of green, brown, and blue.") (provide-theme 'wheatgrass) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; wheatgrass-theme.el ends here diff --git a/etc/themes/whiteboard-theme.el b/etc/themes/whiteboard-theme.el index 8c259be2e3e..75c6c1c0f6b 100644 --- a/etc/themes/whiteboard-theme.el +++ b/etc/themes/whiteboard-theme.el @@ -100,8 +100,4 @@ (provide-theme 'whiteboard) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; whiteboard-theme.el ends here diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el index 4b0283fb8cc..c56700ffd9a 100644 --- a/etc/themes/wombat-theme.el +++ b/etc/themes/wombat-theme.el @@ -102,8 +102,4 @@ are included.") (provide-theme 'wombat) -;; Local Variables: -;; no-byte-compile: t -;; End: - ;;; wombat-theme.el ends here diff --git a/etc/tutorials/TUTORIAL.translators b/etc/tutorials/TUTORIAL.translators index 2747d39d355..b6b95787068 100644 --- a/etc/tutorials/TUTORIAL.translators +++ b/etc/tutorials/TUTORIAL.translators @@ -41,8 +41,8 @@ Maintainer: Alfredo Finelli <alfredofnl@tiscali.it> Italian GNU Translation Group <tp@lists.linux.it> * TUTORIAL.ja: -Author: Kenichi Handa <handa@m17n.org> -Maintainer: Kenichi Handa <handa@m17n.org> +Author: Kenichi Handa <handa@gnu.org> +Maintainer: Kenichi Handa <handa@gnu.org> * TUTORIAL.ko: Author: Koaunghi Un <koaunghi@ling.cnu.ac.kr> @@ -94,4 +94,3 @@ Maintainer: Chao-Hong Liu <chliu@gnu.org> ;;; Local Variables: ;;; coding: utf-8 ;;; End: - |