diff --git a/.dir-locals.el b/.dir-locals.el index b313945936c..7812beb001c 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -4,6 +4,7 @@ ((nil . ((tab-width . 8) (sentence-end-double-space . t) (fill-column . 70) + (emacs-lisp-docstring-fill-column . 65) (bug-reference-url-format . "https://debbugs.gnu.org/%s"))) (c-mode . ((c-file-style . "GNU") (c-noise-macro-names . ("INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED" "UNINIT" "CALLBACK" "ALIGN_STACK")) diff --git a/.gitignore b/.gitignore index 16f449a446e..0ecbcd061fb 100644 --- a/.gitignore +++ b/.gitignore @@ -324,3 +324,9 @@ lib-src/seccomp-filter-exec.pfc # Ignore directory made by admin/make-manuals. manual/ + +# Ignore Finder files on MacOS. +.DS_Store + +# Ignore a directory used by dap-mode. +.vscode diff --git a/CONTRIBUTE b/CONTRIBUTE index 614afa27db7..94d757daafe 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -314,11 +314,45 @@ them right the first time, so here are guidelines for formatting them: with Emacs commands like 'C-x 4 a', and commit the change using the shell command 'vc-dwim --commit'. Type 'vc-dwim --help' for more. +** Committing your changes. + +When you commit changes, Git invokes several scripts that test the +commit for validity, and may abort the commit of some of the tests +fail. These scripts live in the '.git/hooks/' subdirectory of the +top-level directory of the repository, and they perform the following +tests: + +- commit log message must not be empty; +- the first line of the commit log message doesn't start with + whitespace characters; +- the second line of the commit log message must be empty; +- commit log message should include only valid printable ASCII and + UTF-8 characters; +- commit log message lines must be shorter than 79 characters, unless + a line consists of a single long word, in which case that word can + be up to 140 characters long; +- there shouldn't be any "Signed-off-by:" tags in the commit log + message, and "git commit" should not be invoked with the '-s' option + (which automatically adds "Signed-off-by:"); +- if the commit adds new files, the file names must not begin with + '-' and must consist of ASCII letters, digits, and characters of the + set [-+./_]; +- the changes don't include unresolved merge conflict markers; +- the changes don't introduce whitespace errors: trailing whitespace, + lines that include nothing but whitespace characters, and indented + lines where a SPC character is immediately followed by a TAB in the + line's initial indentation + ** Committing changes by others If committing changes written by someone else, commit in their name, not yours. You can use 'git commit --author="AUTHOR"' to specify a -change's author. +change's author. When using Emacs VC to commit, the author can be +specified in the log-edit buffer by adding an "Author: AUTHOR" header +line (set 'log-edit-setup-add-author' non-nil to have this header line +added automatically). Note that the validity checks described in the +previous section are still applied, so you will have to correct any +problems they uncover in the changes submitted by others. ** Branches diff --git a/ChangeLog.2 b/ChangeLog.2 index cf19abaa138..5a73d53b8bf 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -4040,7 +4040,7 @@ * lisp/progmodes/xref.el (xref--query-replace-1): Say 'All results processed' at the end if the user hadn't - cancelled the process (bug#23284). + canceled the process (bug#23284). 2016-05-07 Eli Zaretskii @@ -12542,7 +12542,7 @@ * lisp/erc/erc-backend.el (erc-server-setup-periodical-ping): Checks for existing timers in the alist before adding new ones. If a - timer already exists, it is cancelled and + timer already exists, it is canceled and overwritten. (bug#19292). 2015-12-27 Jens Lechtenboerger @@ -22108,7 +22108,7 @@ * src/gfilenotify.c (dir_monitor_callback): Cancel the monitor if the file or directory to be watched is deleted. (Fgfile_add_watch): Make watch_object a triple. - (Fgfile_rm_watch): Check, whether watch is cancelled already. + (Fgfile_rm_watch): Check, whether watch is canceled already. (Fgfile_valid_p): New defun. (syms_of_gfilenotify): Declare Sgfile_valid_p. diff --git a/ChangeLog.3 b/ChangeLog.3 index f0297fd1f08..700a210f35b 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,4 +1,1634 @@ -2022-04-13 Tassilo Horn +2022-07-31 Eli Zaretskii + + * src/lisp.h (CHECK_INTEGER): Fix the predicate. (Bug#56856) + +2022-07-30 Eli Zaretskii + + Improve documentation of column-related functions + + * doc/lispref/text.texi (Primitive Indent, Columns): + * src/indent.c (Fcurrent_indentation, Fmove_to_column): Document + that column counting ignores invisible text. (Bug#56837) + +2022-07-30 YAMAMOTO Mitsuharu + + * src/macfont.m (macfont_open): Initialize font->space_width. (Bug#56808) + +2022-07-30 Eli Zaretskii + + Improve indexing of keymap variables + + * doc/lispref/maps.texi (Standard Keymaps): + * doc/lispref/display.texi (Button Buffer Commands) + (Button Properties): + * doc/lispref/keymaps.texi (Translation Keymaps): Improve indexing + of keymaps. (Bug#56816) + +2022-07-29 Alan Mackenzie + + CC Mode: fontify variables/functions after line comments ending in spaces + + * lisp/progmodes/cc-engine.el (c-forward-comment-minus-1): Take account of + spaces preceding a linefeed when scanning a putative line comment end. + +2022-07-28 Stefan Kangas + + Bump Emacs version to 28.1.91 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 28.1.91. + +2022-07-28 Stefan Kangas + + Update ChangeLog and AUTHORS for 28.1.91 pretest + + * ChangeLog.3: + * etc/AUTHORS: Update. + +2022-07-28 Lars Ingebrigtsen + + Revert the `...' documentation back to actual usage + + * doc/lispref/tips.texi (Documentation Tips): Document how `...' + is really used now (bug#55780). ‘...’ is not really used in the + Emacs sources. + + (cherry picked from commit 1ed9c1c7f9fe32ff5123091033350beb1ccae4ca) + +2022-07-28 Paul Pogonyshev + + Release the desktop lock in 'kill-emacs-hook' + + * lisp/desktop.el: Run 'desktop--on-kill' in 'kill-emacs-hook'. + (desktop--on-kill): New function, refactored from 'desktop-kill'. + (desktop-kill): Call 'desktop--on-kill'. (Bug#56800) + +2022-07-25 Eli Zaretskii + + Avoid infloop in 'recenter' + + * src/window.c (Frecenter): Avoid infinite loop in the minibuffer + under 'fido-vertical-mode'. (Bug#56765) + +2022-07-25 Eli Zaretskii + + Fix inaccuracies in "lax search" documentation + + * doc/emacs/search.texi (Lax Search): Update the examples of + character folding in search. (Bug#56747) + +2022-07-24 Kyle Meyer + + Update to Org 9.5.4-17-g6e991f + +2022-07-24 Eugene Ha (tiny change) + + Find libgccjit.dylib on Homebrew Macos + + * configure.ac: Also find libggcjit on Homebrew (bug#55173). + + (cherry picked from commit faa29fa2c9e9d5a5d7544a1a39b2a89cf57a8439) + +2022-07-23 Michael Albinus + + Set `default-directory' of Tramp archive connection buffer + + * lisp/net/tramp-archive.el (tramp-archive-file-name-handler): + Set `default-directory' of Tramp connection buffer. (Bug#56628) + +2022-07-23 Eli Zaretskii + + Update the documentation of 'declare' forms + + * doc/lispref/compile.texi (Native-Compilation Variables): Mention + the 'declare' alternative for 'native-comp-speed'. + * doc/lispref/functions.texi (Declare Form): Document 'declare' + forms that were previously undocumented. + +2022-07-23 Eli Zaretskii + + Fix bookmark support for Help functions in native-compilation builds + + * lisp/help.el (describe-key--helper, describe-function--helper): + New helper functions. + (describe-key): Call 'describe-key--helper' instead of a + lambda-function. + * lisp/help-fns.el (describe-function): Call + 'describe-function--helper' instead of a lambda-function. + (Bug#56643) + +2022-07-23 Miha Rihtarsic + + Fix mode line mouse-1 binding when showing only column numbers + + * lisp/bindings.el (mode-line-position): Fix the mouse-1 binding + when showing only column numbers (bug#56694). Do not merge to + master. + +2022-07-23 Stefan Kangas + + Adjust help-fns.el tests for recent change + + * test/lisp/help-fns-tests.el (help-fns-test-lisp-defun) + (help-fns-test-lisp-defsubst): Adjust tests for recent change. + +2022-07-22 Robert Pluim + + * src/terminal.c (Fframe_terminal): Use active voice + +2022-07-22 Robert Pluim + + Improve 'terminal-live-p' docstring some more + + * src/terminal.c (Fterminal_live_p): Improve description of + arguments and return value. + +2022-07-22 Robert Pluim + + Improve terminal-live-p docstring + + * src/terminal.c (Fterminal_live_p): Explain what happens when the + argument is nil. + +2022-07-22 Robert Pluim + + * lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-vector): Fix grammar + +2022-07-21 Stefan Kangas + + * lisp/progmodes/cperl-mode.el: Don't mention obsolete archive. + +2022-07-21 Eli Zaretskii + + Make 'describe-function' say "byte-compiled" when appropriate + + * lisp/help-fns.el (help-fns-function-description-header): Say + "byte-compiled" when describing byte-compiled functions. + +2022-07-21 Eli Zaretskii + + ;Improve documentation of locale-specific string comparison + + * doc/lispref/strings.texi (Text Comparison): Mention the Unicode + collation rules and buffer-local case-tables. + +2022-07-19 Gerd Moellmann + + Prevent GC of window referenced from EmacsScroller + + * src/nsterm.m (EmacsScroller.mark, mark_nsterm): New functions. + * src/nsterm.h (EmacsScroller.mark, mark_nsterm): Declare. + * src/alloc.c (garbage_collect) [MAVE_NS]: Call mark_nsterm. + (Bug#56095) + + (cherry picked from commit 5f1bd872478927ad4bc635502e74628d39885286) + +2022-07-16 Stefan Kangas + + Fix obsoletion of nntp-authinfo-file + + * lisp/gnus/nntp.el (nntp-authinfo-file): Fix obsoletion. + +2022-07-15 Philipp Stephani + + Build Seccomp filter only if we have a 64-bit userspace (Bug#56549) + + * configure.ac (SIZEOF_LONG): New variable. + * lib-src/Makefile.in (SIZEOF_LONG): New variable; added conditional. + +2022-07-14 Stefan Kangas + + Update the Samaritan's contact details in M-x doctor + + * lisp/play/doctor.el (doctor-death): Update the Samaritans's contact + details; anon.twwells.com is no longer valid. Add link to Wikipedia. + +2022-07-14 Eli Zaretskii + + * etc/PROBLEMS: Describe problems with remote files. (Bug#56499) + +2022-07-13 Andrea Corallo + + Remove uneffective test + + * test/src/comp-tests.el (45603-1): Remove test. + * test/src/comp-resources/comp-test-45603.el: Delete. + +2022-07-13 Andrea Corallo + + Mark async worker tmp file as utf-8-emacs-unix (bug#48029) + + * lisp/emacs-lisp/comp.el (comp-final): Mark async worker tmp file + as utf-8. + * test/src/comp-tests.el (48029-1): New test. + * test/src/comp-resources/comp-test-funcs.el + (comp-test-48029-nonascii-žžž-f): New function. + +2022-07-13 Michael Albinus + + Adapt Tramp version (don't merge) + + * doc/misc/trampver.texi: + * lisp/net/trampver.el: Change version to "2.5.3.28.2". + (customize-package-emacs-version-alist): + Add Tramp version integrated in Emacs 28.2. + +2022-07-13 Michael Albinus + + Adapt Tramp doc + + * doc/misc/tramp.texi (Configuration): Mention enable-remote-dir-locals. + (Traces and Profiles): Fix tramp-verbose description. + + * lisp/net/tramp.el (tramp-verbose): Fix docstring. + +2022-07-12 Stefan Kangas + + Don't mention cl-cXXXr aliases in cl-lib manual + + * doc/misc/cl.texi (Lists, List Functions, Efficiency Concerns): Don't + mention 'cl-cXXXr' compatibility aliases for built-in 'cXXXr' + functions. They shouldn't be used in new code. + +2022-07-11 Ken Brown + + etc/PROBLEMS: Describe issues with native compilation on Cygwin + +2022-07-11 Stefan Kangas + + * lisp/find-dired.el (find-dired): Doc fix; add crossreference. + +2022-07-08 Stefan Kangas + + Doc fix; don't mention obsolete variable + + * src/window.c (Fset_window_hscroll): Doc fix; don't mention obsolete + variable. + +2022-07-05 Stefan Kangas + + Add index entry for "ignore case" + + * doc/emacs/glossary.texi (Glossary): Add index entry for "ignore + case" pointing to "Case Folding". + +2022-07-05 Stefan Kangas + + Expand docstrings related to auto-saving + + * lisp/files.el (auto-save-visited-mode): + * lisp/simple.el (auto-save-mode): Expand docstring. + +2022-07-04 Lars Ingebrigtsen + + Don't bug out in manual-html-fix-index-2 on newer makeinfo versions + + Backport from master. + + * admin/admin.el (manual-html-fix-index-2): Don't bug out if the + makeinfo version doesn't include
    . + + (cherry picked from commit e0e3f2b672bc42da52ac9c7596c7560a88684651) + +2022-07-04 Lars Ingebrigtsen + + Preserve in the Emacs manuals + + Backport from master. + + * admin/admin.el (manual-html-fix-headers): Preserve the <title> + element (bug#48334). + + (cherry picked from commit b778e71af7ca8c59917334b4bb1b34cdb52faca9) + +2022-07-03 Eli Zaretskii <eliz@gnu.org> + + Document 'jit-lock-debug-mode' + + * doc/lispref/modes.texi (Other Font Lock Variables): Document + 'jit-lock-debug-mode'. + +2022-07-02 Alan Mackenzie <acm@muc.de> + + * lisp/progmodes/cc-mode.el (c-common-init): Bind case-fold-search to nil + + Backport: This fixes bug #53605. + +2022-07-02 Alan Mackenzie <acm@muc.de> + + CC Mode: Fix a c-backward-token-2 call wrongly jumping back over macros. + + This fixes bug #56256. + + * lisp/progmodes/cc-fonts.el (c-font-lock-c++-lambda-captures): Replace a + c-backward-token-2, which could jump back too far leading to an infinite + loop, with a save-excursion to remember the point we've got to go back to. + +2022-07-02 Stefan Kangas <stefan@marxist.se> + + Doc fixes; don't use obsolete names + + * etc/compilation.txt: + * lisp/mh-e/mh-funcs.el (mh-kill-folder): Don't use obsolete + names. + +2022-07-02 Stefan Kangas <stefan@marxist.se> + + Don't refer to obsolete alias for insert-char + + * lisp/leim/quail/persian.el: Don't refer to obsolete alias for + insert-char. + +2022-07-02 Stefan Kangas <stefan@marxist.se> + + Don't use obsolete face name in manoj-dark-theme + + * etc/themes/manoj-dark-theme.el (change-log-acknowledgment): Don't + use obsolete/non-existent face name. + +2022-07-01 Eli Zaretskii <eliz@gnu.org> + + Fix "C-u C-x =" for SPC + + * lisp/descr-text.el (describe-char): Don't report 'nobreak-space' + face for SPC. (Bug#56337) + +2022-06-30 Stefan Kangas <stefan@marxist.se> + + Doc fixes: don't refer to some obsolete items + + * admin/notes/multi-tty: + * lisp/chistory.el (command-history): + * lisp/emacs-lisp/nadvice.el: + * lisp/vc/diff-mode.el: Doc fix; don't refer to obsolete variables and + functions. + +2022-06-30 Stefan Kangas <stefan@marxist.se> + + Remove obsolete cust-print from elisp index + + * doc/lispref/edebug.texi (Printing in Edebug): Remove obsolete + library "cust-print" from index. + +2022-06-30 Stefan Kangas <stefan@marxist.se> + + * admin/make-tarball.txt: Minor clarifications. + +2022-06-30 Eli Zaretskii <eliz@gnu.org> + + Fix external image conversion on MS-Windows + + * lisp/image/image-converter.el (image-converter--convert-magick) + (image-converter--convert): Force encoding/decoding to avoid any + text or EOL conversions, since we are reading/writing binary + data. (Bug#56317) + +2022-06-29 Stefan Monnier <monnier@iro.umontreal.ca> + + * doc/emacs/buffers.texi (Indirect Buffers): Mention modification hook quirk + +2022-06-29 Stefan Kangas <stefan@marxist.se> + + Bump Emacs version to 28.1.90 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 28.1.90. + +2022-06-29 Stefan Kangas <stefan@marxist.se> + + Update ChangeLog and AUTHORS for 28.1.90 pretest + + * ChangeLog.3: + * etc/AUTHORS: Update. + +2022-06-29 Michael Albinus <michael.albinus@gmx.de> + + Update Tramp version (don't merge with master) + + * doc/misc/trampver.texi: + * lisp/net/trampver.el: Change version to "2.5.3". + +2022-06-28 Michael Albinus <michael.albinus@gmx.de> + + Tramp shall not trap unrelated D-Bus errors + + * lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-vector): Declare. + (tramp-gvfs-file-name-handler): Let-bind it. + (tramp-gvfs-dbus-event-vector): Fix docstring. + (tramp-gvfs-maybe-open-connection): Do not set it globally. (Bug#56162) + +2022-06-28 Basil L. Contovounesios <contovob@tcd.ie> + + Fix hash table function return values in manual + + * doc/lispref/hash.texi (Hash Access): Reconcile documented return + values of puthash and clrhash with their respective + docstrings (bug#55562). + +2022-06-27 Kyle Meyer <kyle@kyleam.com> + + Update to Org 9.5.4-3-g6dc785 + +2022-06-27 Paul Eggert <eggert@cs.ucla.edu> + + Mention Solaris 10 'make clean' and 'make check' + + Mention further crashes on Solaris 10 + +2022-06-26 Paul Eggert <eggert@cs.ucla.edu> + + Port distribution tarball to Solaris 10 + + * make-dist (taropt): Use 'tar -H ustar' to generate a portable + tar file format instead of a GNU-specific format. Needed now that + Emacs tarballs contain file names longer than 100 bytes, e.g.: + emacs-28.1/test/lisp/gnus/mml-sec-resources/private-keys-v1.d/C072AF82DCCCB9A7F1B85FFA10B802DC4ED16703.key + emacs-28.1/test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-success.el + Without this patch, extracting a tarball on Solaris 10 fails with + many diagnostics like “tar: ././@LongLink: typeflag 'L' not + recognized, converting to regular file”. + + (cherry picked from commit 4410f5d86997b6b238ff05c2ece338b28e1163b1) + +2022-06-24 Stefan Kangas <stefan@marxist.se> + + Avoid treating number as an enum in the org manual + + * doc/misc/org.org (The Agenda Dispatcher): Avoid treating number as + enum. + +2022-06-22 Eli Zaretskii <eliz@gnu.org> + + Improve last change in autotype.texi + + * doc/misc/autotype.texi (Autoinserting): Fix wording. Suggested + by Richard Stallman <rms@gnu.org>. + +2022-06-21 Stefan Kangas <stefan@marxist.se> + + * lisp/repeat.el (repeat-mode): Fix message format. + +2022-06-21 Earl Hyatt <okamsn@protonmail.com> + + Clarify autotype.texi text slightly + + * doc/misc/autotype.texi (Autoinserting): Make text slightly + clearer (bug#56118). + +2022-06-20 Eli Zaretskii <eliz@gnu.org> + + Support builds configured with a separate --bindir + + * src/emacs.c (load_pdump): Don't overwrite the leading + directories of the Emacs executable just because the pdumper file + was not found in the expected directory relative to the binary. + This is needed to support builds with a separate --bindir + configure-time option and native-compilation. (Bug#55741) + +2022-06-20 Stefan Kangas <stefan@marxist.se> + + * doc/misc/eww.texi (Overview, Basics): Fix typos. + +2022-06-18 Richard Hansen <rhansen@rhansen.org> + + Fix invalid defcustom :group when :predicate is used + + * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Fix + invalid `:group' argument for the `-modes' defcustom that is created + when `:predicate' is used (bug#56049). + +2022-06-17 Lars Ingebrigtsen <larsi@gnus.org> + + Prune the Gnus FAQ of some outdated data + + * doc/misc/gnus-faq.texi (FAQ 9-2): Remove some outdated advice + (bug#56042). + +2022-06-17 Lars Ingebrigtsen <larsi@gnus.org> + + Fix efaq-w32.texi build warning + + * doc/misc/efaq-w32.texi (Other useful ports): Fix ordering to + match nodes (or should the nodes be moved instead?). + + Do not merge to master. + +2022-06-17 Lars Ingebrigtsen <larsi@gnus.org> + + Update cl-struct-sequence-type doc string + + * lisp/emacs-lisp/cl-macs.el (cl-struct-sequence-type): Fix doc + string to reflect what it does (bug#46523). + +2022-06-17 Lars Ingebrigtsen <larsi@gnus.org> + + Fix a tagging problem in tramp.texi + + * doc/misc/tramp.texi (Frequently Asked Questions): Restore an + @end lisp removed by accident. + +2022-06-17 Lars Ingebrigtsen <larsi@gnus.org> + + Mention face quirks after the final line in the lispref manual + + * doc/lispref/display.texi (Face Attributes): Mention the quirks + about point after the final line (bug#56011). + +2022-06-17 Stefan Kangas <stefan@marxist.se> + + Delete reference to obsolete library complete.el + + * doc/misc/tramp.texi (Frequently Asked Questions): Delete reference + to obsolete library complete.el. + +2022-06-16 Stefan Kangas <stefan@marxist.se> + + * lisp/textmodes/artist.el: Minor doc fixes. + +2022-06-16 Michael Albinus <michael.albinus@gmx.de> + + * lisp/net/tramp.el (tramp-methods): Fix quoting in docstring. + +2022-06-16 Arash Esbati <arash@gnu.org> + + Update MS Windows FAQ for MinGW64-w64/MSYS2 + + * doc/misc/efaq-w32.texi (Compiling, Debugging): Mention + MinGW64-w64/MSYS2 as the preferred way for building Emacs on + capable systems. + (Attachments with Gnus): Catch up with emacs-mime.texi in the + example given. + (Spell check): Add the availability of GNU Aspell and Hunspell + in MSYS2 distribution. + (Other useful ports): Add an entry for MinGW64-w64/MSYS2. + Fix link for MinGW homepage. + Remove entry for defunct UWIN project. (Bug#55930) + +2022-06-15 Robert Pluim <rpluim@gmail.com> + + Describe 'set-file-modes' argument prompting + + * src/fileio.c (Fset_file_modes): Document that FILENAME is prompted + for. (Bug#55984) + +2022-06-14 Lars Ingebrigtsen <larsi@gnus.org> + + Revert "Clarify what a Calc registeri in in calc-insert-register" + + This reverts commit 73400e4002ce8fca060093548e6791b3a784eeaa. + + This has been fixed in Emacs 29 by making it possible to use regular registers in calc. + +2022-06-13 Lars Ingebrigtsen <larsi@gnus.org> + + Clarify what a Calc registeri in in calc-insert-register + + * lisp/calc/calc-yank.el (calc-insert-register): Note that these + aren't normal registers (bug#55943). + +2022-06-11 Eli Zaretskii <eliz@gnu.org> + + Fix doc strings in whitespace.el + + * lisp/whitespace.el (whitespace-style, whitespace-action): + Untabify the doc strings. (Bug#55904) + +2022-06-10 Eli Zaretskii <eliz@gnu.org> + + Improve documentation of "etags -I" + + * doc/man/etags.1: + * doc/emacs/maintaining.texi (Create Tags Table): Elaborate on the + importance of the '-I' option to 'etags'. (Bug#45246) + +2022-06-09 Lars Ingebrigtsen <larsi@gnus.org> + + Mention the #f syntax from cl-prin1 + + * doc/lispref/objects.texi (Special Read Syntax): Mention #f, + which is in cl-prin1 output (bug#55853). + +2022-06-09 Michael Albinus <michael.albinus@gmx.de> + + Fix file name quoting in tramp-smb.el (do not merge) + + * lisp/net/tramp-smb.el (tramp-smb-handle-write-region): Quote tmpfile. + (tramp-smb-get-localname): Remove superfluous test. (Bug#55855) + + * test/lisp/net/tramp-tests.el (tramp-test03-file-name-method-rules): + Remove superfluous checks. + +2022-06-09 Jeff Walsh <fejfighter@gmail.com> + + Update error message to reflect variable rename + + * src/comp.c (Fcomp_el_to_eln_filename): Update error message. (Bug#55861) + +2022-06-08 Ken Brown <kbrown@cornell.edu> + + Fix error reporting in process-async-https-with-delay + + * test/src/process-tests.el (process-async-https-with-delay): Use + 'plist-get' instead of 'assq' in testing for a connection error. + The 'status' variable is a plist, not an alist. (Bug#55849) + +2022-06-08 Stefan Kangas <stefan@marxist.se> + + * doc/misc/org.org: Remove spurious markup. + +2022-06-08 Michael Albinus <michael.albinus@gmx.de> + + Make Tramp version check more robust + + * lisp/net/trampver.el (tramp-repository-branch) + (tramp-repository-version): Check for "git" executable. + +2022-06-07 Eli Zaretskii <eliz@gnu.org> + + Fix debugging with GDB when a breakpoint has multiple locations + + * lisp/progmodes/gdb-mi.el (gdb-breakpoints--add-breakpoint-row): + New function, extracted from 'gdb-breakpoints-list-handler-custom'. + Don't print "in <unknown>" for header-rows of breakpoints with + multiple locations that don't have a function name attached. + (gdb-breakpoints-list-handler-custom): Add to the breakpoint table + also any locations in multiple-location breakpoints, which are + supported since GDB 6.8. + +2022-06-05 Eli Zaretskii <eliz@gnu.org> + + Update documentation of 'aset' and 'store-substring' + + * doc/lispref/strings.texi (Modifying Strings): Adjust to + implementation changes: it is possible for the modified string to + have fewer or more bytes than the original. Add recommendations + regarding unibyte vs multibyte strings and characters. (Bug#55801) + +2022-06-04 Kyle Meyer <kyle@kyleam.com> + + Update to Org 9.5.4 + +2022-06-04 Eli Zaretskii <eliz@gnu.org> + + Clarify documentation of 'string-to-unibyte' + + * doc/lispref/nonascii.texi (Converting Representations): Clarify + what 'string-to-unibyte' does. Reported by Richard Hansen + <rhansen@rhansen.org>. (Bug#55777) + +2022-06-02 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change) + + Improve keystrokes in doc strings in some find-file functions + + * lisp/files.el (find-file): + (find-file-other-window): + (find-file-other-frame): Include the correct keymap so that + keystrokes are displayed better (bug#55761). + +2022-06-02 Eli Zaretskii <eliz@gnu.org> + + Fix segfaults when starting on 80x26 TTY frames + + * src/dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Make + sure we have valid frame glyph matrices for the interactive + session. (Bug#55760) + (adjust_frame_glyphs): Add assertions for when we fail to allocate + valid frame glyph matrices for a TTY frame. + +2022-06-01 Lars Ingebrigtsen <larsi@gnus.org> + + Make it explicit that a couple of _s in lispref are underscores + + * doc/lispref/strings.texi (Custom Format Strings): + * doc/lispref/control.texi (pcase Macro): Make it explicit that + it's an underscore (bug#55742). + +2022-05-31 Eli Zaretskii <eliz@gnu.org> + + Remove from FAQ the MS-Windows info about BDF fonts + + * doc/misc/efaq.texi (How to add fonts): Remove the MS-Windows + specific steps, as BDF fonts are no longer supported on + MS-Windows. (Bug#55740) + +2022-05-31 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change) + + Fix Display Property manual example + + * doc/lispref/display.texi (Display Property): Fix syntax of + example (bug#55736). + +2022-05-29 Michael Albinus <michael.albinus@gmx.de> + + Some Tramp cleanup on MS Windows + + * lisp/net/tramp.el (tramp-restricted-shell-hosts-alist): Do not add + localhost when `tramp-encoding-shell' is a POSIX shell. + + * test/lisp/net/tramp-tests.el (tramp-test31-interrupt-process): + Skip on MS Windows. + +2022-05-28 Alan Mackenzie <acm@muc.de> + + do_switch_frame: before leaving mini-window, check other (mru) window is live + + This fixes bug#55684. There, with a minibuffer-only frame at start up, + Emacs tried to switch to this frame, whose selected window was the + mini-window. There is no other active window in this frame, so the + attempt to switch to another window failed. + + * src/frame.c (do_switch_frame): On switching to a frame whose selected + window is as above, before selecting the most recently used window, check + this ostensible window is an actual live window. Otherwise leave the + mini-window selected. + +2022-05-28 Eli Zaretskii <eliz@gnu.org> + + Fix commands used to produce on-line HTML docs + + * admin/admin.el (manual-meta-string): Only include the first + line, and move the rest... + (manual-links-string): ...to this new string. + (manual-html-fix-headers): Don't remove the '<meta name=' elements + produced by makeinfo, especially not the 'name="viewport"' one, + which is essential for viewing the docs on mobile devices. + Reported by "Facundo Lander via RT" <webmasters-comment@gnu.org>, + see gnu.org ticket #1840138. + +2022-05-28 Eli Zaretskii <eliz@gnu.org> + + Fix a bad cross-reference in elisp.pdf + + * doc/lispref/control.texi (pcase Macro): Fix a conditional + cross-reference (bug#55689). + +2022-05-28 Eli Zaretskii <eliz@gnu.org> + + Fix documentation of 'string-pad' + + * doc/lispref/strings.texi (Creating Strings): Fix description of + 'string-pad'. (Bug#55688) + +2022-05-27 Juri Linkov <juri@linkov.net> + + Fix more occurrences of renamed kmacro-keymap command + + * doc/emacs/kmacro.texi (Basic Keyboard Macro): Fix documentation + after recent kmacro-redisplay command name change. + +2022-05-27 Eli Zaretskii <eliz@gnu.org> + + Mention "unspecified-fg" and "unspecified-bg" in some doc strings + + * lisp/faces.el (face-foreground, face-background) + (foreground-color-at-point, background-color-at-point): + * lisp/color.el (color-name-to-rgb): Mention "unspecified-fg" and + "unspecified-bg" pseudo-colors on TTY frames. (Bug#55623) + +2022-05-26 Hayden Shenk <hayden.shenk@zetier.com> (tiny change) + + Fix format specifiers in tramp-adb.el + + * lisp/net/tramp-adb.el (tramp-adb-get-device): Fix format + specifiers for port. (Bug#55651) + +2022-05-22 Damien Cassou <damien@cassou.me> + + Improve documentation of mail-user-agent. + + * doc/emacs/sending.texi (Mail Methods): + * lisp/simple.el (mail-user-agent): Mention additional options + of non-bundled MUA. (Bug#5569) + +2022-05-21 Eli Zaretskii <eliz@gnu.org> + + More fixes in abbrev.el doc strings + + * lisp/abbrev.el (inverse-add-global-abbrev, inverse-add-mode-abbrev): + Document the effect of negative ARG. (Bug#55527) + +2022-05-21 Lars Ingebrigtsen <larsi@gnus.org> + + Add note about Tramp completion to completion-styles doc string + + * lisp/minibuffer.el (completion-styles): Add note about Tramp + completion (bug#37954). + +2022-05-21 Arash Esbati <arash@gnu.org> + + Remove mention of removed nnimap-nov-is-evil variable + + * doc/misc/gnus.texi (Slow/Expensive Connection): Remove mention + of removed nnimap-nov-is-evil variable (bug#55556). + +2022-05-21 Eli Zaretskii <eliz@gnu.org> + + Improve documentation strings and prompts in abbrev.el + + * lisp/abbrev.el (abbrev-file-name, only-global-abbrevs) + (copy-abbrev-table, insert-abbrevs, list-abbrevs) + (abbrev-table-name, edit-abbrevs, define-abbrevs) + (read-abbrev-file, quietly-read-abbrev-file, write-abbrev-file) + (abbrev-edit-save-to-file, abbrev-edit-save-buffer) + (add-mode-abbrev, add-global-abbrev, inverse-add-mode-abbrev) + (inverse-add-global-abbrev, abbrev-prefix-mark) + (expand-region-abbrevs, abbrev-table-get, abbrev-table-put) + (abbrev-get, abbrev-minor-mode-table-alist, abbrevs-changed) + (abbrev-all-caps, last-abbrev-text, last-abbrev-location) + (clear-abbrev-table, define-abbrev, define-global-abbrev) + (define-mode-abbrev, abbrev--active-tables, abbrev--symbol) + (abbrev-symbol, abbrev-expansion, abbrev-insert) + (abbrev-expand-function, abbrev--suggest-above-threshold) + (abbrev--suggest-saved-recommendations) + (abbrev--suggest-shortest-abbrev, abbrev--suggest-get-totals) + (insert-abbrev-table-description, define-abbrev-table) + (abbrev-table-menu): Fix doc strings: wording, punctuation, + clarity. + (add-abbrev, inverse-add-abbrev): Improve the prompt text. + (Bug#55527) + +2022-05-20 Alan Mackenzie <acm@muc.de> + + Restore the Fselect_window call in gui_consider_frame_title. + + This fixes bug #55412. The call to Fselect_window was removed on 2021-03-21 + in the commit "Prevent open minibuffers getting lost when their frame gets + deleted". This call is actually needed to determine current elements of the + pertinent window and frame when these are used in the frame title. + + * src/frame.c (do_switch_frame): When the selected window in the target frame + is the mini-window, switch away from this window unless there is a valid + minibuffer there. + + * src/frame.h (struct frame): Add an incidental comment about the element + selected_window. + + * src/minibuf.c (move_minibuffers_onto_frame): No longer set the selected + window of the source frame. This action is now performed later, on returning + to that frame, in do_switch_frame when needed (see above). + + * src/xdisp.c (gui_consider_frame_title): Replace the Fselect_window call and + associated ancillary settings. + +2022-05-20 Eli Zaretskii <eliz@gnu.org> + + Advise against settings in the MS-Windows system registry + + * doc/emacs/cmdargs.texi (MS-Windows Registry): Advise against + setting environment variables in the system registry. (Bug#16429) + +2022-05-17 Lars Ingebrigtsen <larsi@gnus.org> + + Fix kmacro-keymap binding after previous change + + * lisp/kmacro.el (kmacro-keymap): Fix binding after + kmacro-redisplay command name change. + +2022-05-17 Lars Ingebrigtsen <larsi@gnus.org> + + Add glossary entries for "interactively" + + * doc/emacs/glossary.texi (Glossary): Mention "interactively" and + how it relates to the "command" concept (bug#55461). + +2022-05-17 Eli Zaretskii <eliz@gnu.org> + + Fix the name of a kmacro command. + + * lisp/kmacro.el (kmacro-redisplay): Rename from + 'kdb-macro-redisplay' (which was wrong and included a typo). + + * etc/NEWS: Announce the change. (Bug#55471) + +2022-05-17 Michael Albinus <michael.albinus@gmx.de> + + Fix Tramp sshfs tests (don't merge) + + * test/lisp/net/tramp-tests.el (tramp-fuse-remove-hidden-files): Declare. + (tramp-test16-directory-files) + (tramp-test16-file-expand-wildcards) + (tramp-test26-file-name-completion, tramp--test-check-files): Use it. + (tramp--test-check-files): Delete directory recursively. + +2022-05-17 Michael Albinus <michael.albinus@gmx.de> + + Some minor Tramp fixes + + * lisp/net/tramp-cmds.el (tramp-list-tramp-buffers) + (tramp-list-remote-buffers): Add ;;;###tramp-autoload cookie. + + * lisp/net/tramp-fuse.el (tramp-fuse-remove-hidden-files): New defvar. + (tramp-fuse-remove-hidden-files): Use it. + + * lisp/net/tramp-gvfs.el (tramp-gvfs-handler-askquestion): + Keep regression tests running. + +2022-05-15 Kyle Meyer <kyle@kyleam.com> + + Update to Org 9.5.3-6-gef41f3 + +2022-05-15 Michael Albinus <michael.albinus@gmx.de> + + Hide temporary FUSE files in Tramp + + * lisp/net/tramp-fuse.el (tramp-fuse-remove-hidden-files): New defsubst. + (tramp-fuse-handle-directory-files) + (tramp-fuse-handle-file-name-all-completions): Use it. + +2022-05-15 Michael Albinus <michael.albinus@gmx.de> + + * test/lisp/net/tramp-tests.el (tramp-test27-load): Adapt test. Don't merge + +2022-05-13 Po Lu <luangruo@yahoo.com> + + Fix tooltip face overwriting dragged text strings during mouse DND + + * lisp/mouse.el (mouse-drag-and-drop-region): Copy + `text-tooltip' before showing it. Do not merge to master. + +2022-05-13 Eli Zaretskii <eliz@gnu.org> + + Fix lexical-binding fallout in vhdl-mode.el + + * lisp/progmodes/vhdl-mode.el (arch-alist, pack-alist) + (file-alist, unit-alist, rule-alist): Defvar them, since vhdl-aput + expects them to be dynamically bound. (Bug#55389) + (vhdl-speedbar-insert-hierarchy): Rename the PACK-ALIST argument + to PACKAGE-ALIST, to avoid shadowing the global variable. + +2022-05-12 Michael Albinus <michael.albinus@gmx.de> + + Fix ControlPath quoting in Tramp + + * lisp/net/tramp-sh.el (tramp-ssh-controlmaster-options): + Adapt docstring. Do not quote ControlPath. Reported by Daniel + Kessler <kesslerd@umich.edu>. + +2022-05-09 Eli Zaretskii <eliz@gnu.org> + + Remove the AUCTeX subsection from MS-Windows FAQ + + * doc/misc/efaq-w32.texi (AUCTeX): Remove the subsection, it is no + longer useful. (Bug#55330) + +2022-05-09 Arash Esbati <arash@gnu.org> + + Update AUCTeX FAQ entry + + * doc/misc/efaq-w32.texi (AUCTeX): AUCTeX project isn't providing + pre-compiled versions for Windows anymore (bug#55330). + +2022-05-09 Lars Ingebrigtsen <larsi@gnus.org> + + Update string-to-number documentation to bignum Emacs + + * doc/lispref/strings.texi (String Conversion): string-to-number + no longer converts integers to floating point numbers (bug#55334). + +2022-05-09 Lars Ingebrigtsen <larsi@gnus.org> + + Fix doc string references to tags-loop-continue + + * lisp/vc/vc-dir.el (vc-dir-search, vc-dir-query-replace-regexp): + Fix reference to obsolete tags-loop-continue (bug#55311). + +2022-05-08 Visuwesh M <visuweshm@gmail.com> + + dired-do-query-replace-regexp doc string fix + + * lisp/dired-aux.el (dired-do-query-replace-regexp): Refer + 'fileloop-continue' instead of the obsolete command + 'tags-loop-continue'. (Bug#55311) + + (cherry picked from commit 4c505203f9171886f47638779326e257a95a1d79) + +2022-05-08 Alan Mackenzie <acm@muc.de> + + Linux console: don't translate ESC TAB to `backtab' in input-decode-map. + + This translation happened after the terminfo entry for <shift>TAB in the linux + section was changed to kcbt=\E^I in ncurses version 6.3. + + * lisp/term/linux.el (terminal-init-linux): Add a define-key form to remove + the entry for "\e\t" from input-decode-map. + + * etc/PROBLEMS: Add a new section under "character terminals" about S-TAB + wrongly doing the same thing as M-TAB, giving tips about amending the Linux + keyboard layout. + +2022-05-08 Michael Albinus <michael.albinus@gmx.de> + + Handle changed scp protocol in Tramp, don't merge + + * lisp/net/tramp-sh.el (tramp-scp-force-scp-protocol): New defvar. + (tramp-scp-force-scp-protocol): New defun. + (tramp-do-copy-or-rename-file-out-of-band): Use it. + (tramp-methods) <scp, scpx>: Use "%y". + + * lisp/net/tramp.el (tramp-methods): Adapt docstring. + +2022-05-06 Michael Albinus <michael.albinus@gmx.de> + + Fix bug#55274 + + * lisp/dired-aux.el (dired-do-compress-to): Use `file-local-name' + for shell out-file. (Bug#55274) + +2022-05-06 Eli Zaretskii <eliz@gnu.org> + + Provide reference for OTF tags in the ELisp manual + + * doc/lispref/display.texi (Low-Level Font): Provide the canonical + reference URL for OTF tags. + +2022-05-05 Lars Ingebrigtsen <larsi@gnus.org> + + Be more resilient towards errors during error handling + + * src/print.c (print_error_message): Avoid infinite recursion if + `substitute-command-keys' bugs out (bug#55269). + + (cherry picked from commit 8364f058b821eba31f84dcded175cca403a965a5) + +2022-04-28 Eli Zaretskii <eliz@gnu.org> + + Improve documentation of font- and face-related attribute functions + + * lisp/faces.el (face-attribute): + * src/xfaces.c (Fx_family_fonts): + * src/font.c (Ffont_get, Ffont_put): Improve and clarify the doc + strings. + + * doc/lispref/display.texi (Low-Level Font): Document the :type + attribute of a font. Improve documentation of 'font-get' and + 'font-put'. + (Attribute Functions): Add cross-reference to the description of + face attributes. + +2022-04-25 Kyle Meyer <kyle@kyleam.com> + + Update to Org 9.5.3-3-gd54104 + +2022-04-24 Eli Zaretskii <eliz@gnu.org> + + Improve indexing in "Programmed Completion" + + * doc/lispref/minibuf.texi (Programmed Completion): Improve + indexing. (Bug#55095) + +2022-04-24 Eli Zaretskii <eliz@gnu.org> + + Improve documentation of 'set-fontset-font' + + * doc/lispref/display.texi (Fontsets): + * src/fontset.c (Fset_fontset_font): Improve and clarify the + documentation of 'set-fontset-font'. Rename the arguments to be + more self-explanatory. (Bug#55086) + +2022-04-23 Michael Albinus <michael.albinus@gmx.de> + + Fix problem with Solaris ls in Tramp + + * lisp/net/tramp-sh.el (tramp-sunos-unames): Move up. + (tramp-sh--quoting-style-options): Handle erroneous Solaris ls. + +2022-04-22 Eli Zaretskii <eliz@gnu.org> + + Another fix for non-ASCII 'overlay-arrow-string' + + * src/xdisp.c (get_overlay_arrow_glyph_row): Fix yet another place + that assumed each character is a single byte. + +2022-04-21 Eli Zaretskii <eliz@gnu.org> + + Avoid a redisplay loop when 'overlay-arrow-string' is non-ASCII + + * src/xdisp.c (get_overlay_arrow_glyph_row): Don't assume every + character in 'overlay-arrow-string' is one byte long. Reported by + Yuri D'Elia <wavexx@thregr.org>. + +2022-04-21 Eli Zaretskii <eliz@gnu.org> + + Add minimum instructions to 'query-replace' commands + + * lisp/vc/vc-dir.el (vc-dir-query-replace-regexp): + * lisp/textmodes/reftex-global.el (reftex-query-replace-document): + * lisp/progmodes/project.el (project-query-replace-regexp): + * lisp/progmodes/etags.el (tags-query-replace): + * lisp/progmodes/ebrowse.el (ebrowse-tags-query-replace): + * lisp/isearch.el (isearch-query-replace, isearch-occur): + * lisp/emulation/viper-cmd.el (viper-query-replace): + * lisp/dired-aux.el (dired-do-query-replace-regexp) + (dired-do-find-regexp-and-replace): + * lisp/progmodes/xref.el (xref-query-replace-in-results): + * lisp/replace.el (query-replace, query-replace-regexp) + (query-replace-regexp-eval, map-query-replace-regexp): Add minimal + instructions for dealing with matches, with a link to the command + that shows the full instructions. (Bug#55050) + +2022-04-21 Eli Zaretskii <eliz@gnu.org> + + Fix customization-group of 'python-forward-sexp-function' + + * lisp/progmodes/python.el (python-forward-sexp-function): Make it + be part of both 'python' and 'python-flymake' groups. (Bug#55027) + Do not merge to master. + +2022-04-20 Paul Eggert <eggert@cs.ucla.edu> + + Update from gnulib + + (cherry picked from commit 992cf3cb675e074079341cc54c3b16d37a8b9ca8) + + This is a partial backport from master: it only includes the changes below. + + * lib/mini-gmp.c (gmp_assert_nocarry): Avoid many Clang + unused-variable warnings when building with optimization. + * lib/verify.h (_GL_HAVE__STATIC_ASSERT): Modify condition for using + _Static_assert to cope with older Apple builds of Clang exposing + misleading compiler version numbers. See discussion starting at + https://lists.gnu.org/archive/html/emacs-devel/2022-04/msg00779.html + +2022-04-20 Lars Ingebrigtsen <larsi@gnus.org> + + Revert prompting changes in viper-cmd + + * lisp/emulation/viper-cmd.el (viper-quote-region) + (viper-read-string-with-history, viper-query-replace): Revert + prompting changes done in 50512e3 -- the way viper prompts in + command mode is special (bug#55007). + + Do not merge to master. + +2022-04-19 Lars Ingebrigtsen <larsi@gnus.org> + + Fix regression with multiple mode: entries in the prop line + + * lisp/files.el (hack-local-variables): Fix regression with multiple + mode: entries in the prop line. + + Do not merge to master. + +2022-04-18 Lars Ingebrigtsen <larsi@gnus.org> + + Avoid hangs in python-mode with debug-on-error set + + * lisp/progmodes/python.el (python-nav-end-of-statement): Avoid + using cl-assert here, because this is called from the font-lock + machinery, and if debug-on-error is set here, we'll hang Emacs + (bug#54996). + + Do not merge to master. + +2022-04-18 Lars Ingebrigtsen <larsi@gnus.org> + + Fix major-mode setting regression when there's a mode: cookie + + * lisp/files.el (hack-local-variables): Fix regression in setting + the major mode when there are mode: cookies in the file (bug#54993). + + Do not merge to master. + +2022-04-17 Kyle Meyer <kyle@kyleam.com> + + Update to Org 9.5.2-38-g682ccd + +2022-04-17 Eli Zaretskii <eliz@gnu.org> + + Revert "Don’t assume openat" + + This reverts commit 3cccf0a9107d585173e527550bbc45253624ca2e. + + This is a change with far-reaching effects on MS-Windows at the least, + where file-related APIs are shadowed to support transparent support + for UTF-8 encoded file names. Making such changes on a stable branch + for the benefit of a proprietary platform with a 13-year old OS is a + tail wagging the dog. Please don't do that without discussing first. + +2022-04-17 Paul Eggert <eggert@cs.ucla.edu> + + Don’t assume openat + + Use openat only on platforms with O_PATH. + This ports to OS X 10.9 and earlier. + Problem reported by Keith David Bershatsky in: + https://lists.gnu.org/r/emacs-devel/2022-04/msg00805.html + * lib-src/emacsclient.c (local_sockname): Use open, not openat. + * src/sysdep.c (sys_openat): New static function, + which uses openat only if O_PATH is defined. + (emacs_openat): Use it instead of openat. + (emacs_openat_noquit): Remove. + (emacs_open_noquit): Reimplement as per the old emacs_openat_noquit, + but use plain 'open'. + +2022-04-17 Paul Eggert <eggert@cs.ucla.edu> + + Fix GC bug in filelock.c + + Fix a bug where if GC occurred at the wrong moment when locking a + file, the lock file’s name was trashed so file locking did not work. + This bug was introduced in Emacs 28.1. The bug sometimes caused + filelock-tests-detect-external-change test failures on Fedora 35 + x86-64 in an en_US.utf8 locale. + * src/filelock.c (lock_file_1, current_lock_owner, lock_if_free) + (lock_file, unlock_file, Ffile_locked_p): + Use Lisp_Object, not char *, for string, so that GC doesn’t trash + string contents. + (make_lock_file_name): Return the encoded name, not the original. + All callers changed. + +2022-04-16 Lars Ingebrigtsen <larsi@gnus.org> + + Clarify when mode tagging is used + + * etc/NEWS: Clarify when mode tagging is used (bug#54964). + +2022-04-16 Lars Ingebrigtsen <larsi@gnus.org> + + Further vcs-cvs/rcs-responsible-p updates from master + + * lisp/vc/vc-bzr.el (vc-bzr-responsible-p): + * lisp/vc/vc-sccs.el (vc-sccs-responsible-p): + * lisp/vc/vc-dav.el (vc-dav-responsible-p): Update doc string. + + * lisp/vc/vc-rcs.el (vc-rcs-responsible-p): + * lisp/vc/vc-cvs.el (vc-cvs-responsible-p): Further fixes from + master. + + * lisp/vc/vc-src.el (vc-src-responsible-p): Return the directory. + + * lisp/vc/vc.el: Update comments. + +2022-04-16 Mattias Engdegård <mattiase@acm.org> + + Fix builds on older versions of macOS + + This adds back macOS-specific code replaced earlier (bug#48548), + specifically to fix build errors on macOS 10.7.5. See discussion at + https://lists.gnu.org/archive/html/emacs-devel/2022-04/msg00779.html . + + * src/sysdep.c (HAVE_RUSAGE_INFO_CURRENT, HAVE_PROC_PIDINFO): New. + (system_process_attributes): Use alternative code or exclude features + when building on older macOS versions. + +2022-04-16 Eli Zaretskii <eliz@gnu.org> + + Fix documentation of Outline minor mode options + + * lisp/outline.el (outline-minor-mode-cycle-filter) + (outline-minor-mode-cycle, outline-minor-mode-highlight) + (outline-cycle, outline-cycle-buffer): Doc fixes. (Bug#54967) + +2022-04-15 Eli Zaretskii <eliz@gnu.org> + + Improve discoverability of 'insert-directory-program' + + * lisp/files.el (insert-directory-program): Mention 'dired' in the + doc string. + * lisp/dired.el (dired): Mention 'insert-directory-program' in the + doc string. (Bug#54962) + +2022-04-15 Eli Zaretskii <eliz@gnu.org> + + Fix cursor motion under truncate-lines with Flymake fringe indicator + + * src/indent.c (Fvertical_motion): Don't consider fringe bitmaps + as "images" for the purpose of vertical-motion logic dealing with + overshooting buffer positions. (Bug#54946) + +2022-04-14 Lars Ingebrigtsen <larsi@gnus.org> + + Make all vc-*-responsible-p functions return a string + + * lisp/vc/vc-sccs.el (vc-sccs-responsible-p): + * lisp/vc/vc-rcs.el (vc-rcs-responsible-p): + * lisp/vc/vc-dav.el (vc-dav-responsible-p): + * lisp/vc/vc-cvs.el (vc-cvs-responsible-p): Return a file name + instead of t when we get a match (which is what + vc-backend-for-registration expects) (bug#51800). + + This fixes the regression reported in bug#54935. + + Do not merge to master. + +2022-04-14 Eli Zaretskii <eliz@gnu.org> + + Describe problems with invoking Python on MS-Windows + + * etc/PROBLEMS: Describe problems with running an inferior Python + interpreter due to the MS-Windows "App Execution Aliases" feature. + (Bug#54860) + +2022-04-13 Eli Zaretskii <eliz@gnu.org> + + A better fix for bug#54800 + + * lisp/calc/calc.el (calc-align-stack-window): Improve scrolling + when windows have non-integral dimensions. + +2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> + + Add a comment about cl-concatenate + + * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Add a comment. + +2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> + + Revert "Make cl-concatenate an alias of seq-concatenate" + + This reverts commit 78f76fe16e2737b40694f82af28d17a90a21ed7b. + + The commit made calls to cl-concatenate bug out, since + autoloading defalises doesn't work very well (bug#54901). + +2022-04-12 Eli Zaretskii <eliz@gnu.org> + + Fix 'window-text-pixel-width' when starting from display property + + * src/xdisp.c (Fwindow_text_pixel_size): Handle the case where + there's a display property at START, and move_it_to overshoots. + Do not merge to master. (Bug#54862) + +2022-04-11 Stefan Monnier <monnier@iro.umontreal.ca> + + * lisp/gnus/mm-encode.el (mm-default-file-encoding): Fix "when" arg + +2022-04-11 Eli Zaretskii <eliz@gnu.org> + + Fix default-directory of buffers visiting files in renamed directories + + * lisp/dired-aux.el (dired-rename-file): Take note of whether FILE + is a directory before it is renamed, which makes it impossible to + determine if it was a directory. + (dired-rename-subdir, dired-rename-subdir-1): Revert to using + dired-in-this-tree-p instead of file-in-directory-p, for the + benefit of files that were renamed/removed, because + file-in-directory-p returns nil in those cases. (Bug#54838) + +2022-04-11 Lars Ingebrigtsen <larsi@gnus.org> + + Fix a kill-append regression + + * lisp/simple.el (kill-append): Fix a regression when + kill-ring-max is zero (bug#54842). + +2022-04-10 Eli Zaretskii <eliz@gnu.org> + + * doc/misc/eww.texi (Advanced): Correct outdated info (bug#54839). + +2022-04-10 Eli Zaretskii <eliz@gnu.org> + + Clean up the MSDOS port + + * src/msdos.h (tcdrain): Redirect to '_dos_commit'. + (openat, fchmodat, futimens, utimensat): Add prototypes. + + * msdos/sed1v2.inp (MAKE_PDUMPER_FINGERPRINT): Fix indentation, so + that Make won't consider this line a command. + ($(etc)/DOC): Chdir back to ../src, since "make-docfile -d" leaves + us in a wrong directory. + * msdos/sedlibmk.inp (GL_GNULIB_GETRANDOM, GL_GNULIB_MEMMEM) + (GL_GNULIB_SIGDESCR_NP): Define to 1, to get the prototypes from + Gnulib headers. + +2022-04-10 Daniel Martín <mardani29@yahoo.es> + + Fix typo in next-error-find-buffer-function + + * lisp/simple.el (next-error-find-buffer-function): Fix typo + (bug#54830). + +2022-04-10 Lars Ingebrigtsen <larsi@gnus.org> + + Revert "Make shell-resync-dirs handle whitespace in directory names" + + This reverts commit 90e65c826fab2092ad2099d7763538194c93e021. + + This change led to hangs (bug#54776). + + Do not merge to master; it has been fixed in a more encompassing way there. + +2022-04-09 Eli Zaretskii <eliz@gnu.org> + + Fix scrolling of the stack window in Calc + + * lisp/calc/calc.el (calc-align-stack-window): Fix off-by-one + error in computing the window-start point. (Bug#54800) + +2022-04-08 Eli Zaretskii <eliz@gnu.org> + + Update and fix instructions and scripts for updating the Web pages + + * admin/admin.el (manual-html-fix-index-2): Support Texinfo 6.8 + and later by not converting TOC menus into tables. (Bug#49719) + * admin/upload-manuals (New directory): Invoke "cvs add" in + $webdir, to pick up the correct CVSROOT. + * admin/make-tarball.txt: Update the section about the Emacs Web + pages. + + * etc/refcards/Makefile (pl-refcard.dvi): If mex.fmt cannot be + found, invoke 'mex' instead of 'tex'. + +2022-04-08 Michael Albinus <michael.albinus@gmx.de> + + Extend tramp-archive-test45-auto-load + + * test/lisp/net/tramp-archive-tests.el (tramp-archive-test45-auto-load): + Extend test. + +2022-04-08 Michael Albinus <michael.albinus@gmx.de> + + Ensure local `default-directory' in Tramp when needed + + * lisp/net/tramp.el (tramp-process-running-p): Ensure local + `default-directory' when calling `list-system-processes' and + `process-attributes'. + +2022-04-08 Eli Zaretskii <eliz@gnu.org> + + Clarify "idleness" in the ELisp manual + + * doc/lispref/os.texi (Idle Timers): Clarify that waiting for + input with timeout doesn't make Emacs idle. Suggested by Ignacio + <ignaciocasso@hotmail.com>. (Bug#54371) + +2022-04-07 Jürgen Hötzel <juergen@archlinux.org> + + Use correct signal oldset in posix_spawn implementation + + posix_spawn was restoring the wrong signal set, which still had + SIGCHLD and SIGINT masked, causing problems with child processes that + spawned child processes. (Bug#54667) + + See the thread ending at + https://lists.gnu.org/archive/html/emacs-devel/2022-03/msg00067.html + for more details. + + * src/callproc.c (emacs_spawn): Pass oldset parameter. + (emacs_posix_spawn_init_attributes): Use correct oldset. + (emacs_posix_spawn_init): Remove intermediate function. + + (cherry picked from commit 8103b060d89ac63a12c439087bd46c30da72cd97) + +2022-04-07 Felix Dietrich <felix.dietrich@sperrhaken.name> (tiny change) + + Fix error in tramp-archive-autoload-file-name-handler + + * lisp/net/tramp-archive.el (tramp-archive-autoload-file-name-handler): + Always call `tramp-autoload-file-name'. Otherwise, when + `tramp-archive-enabled’ is nil and + `tramp-archive-autoload-file-name-handler’ is in the + `file-name-handler-alist’ results in an error “Invalid handler in + `file-name-handler-alist” once Emacs calls + `tramp-archive-autoload-file-name-handler’ with a handler that + does not expect nil. Always returning nil is also false in + general. + +2022-04-07 Michael Albinus <michael.albinus@gmx.de> + + Commit missing file from previous commit (Do not merge with master) + + Commit missing file from previous commit + +2022-04-07 Michael Albinus <michael.albinus@gmx.de> + + Merge with Tramp 2.5.2.3 (Do not merge with master) + + * doc/misc/tramp.texi (Archive file names): Explicitly say how to + open an archive with Tramp (Bug#25076). + + * doc/misc/trampver.texi: + * lisp/net/trampver.el: Change version to "2.5.3-pre". + + * lisp/net/tramp-adb.el (tramp-adb-handle-process-file) + * lisp/net/tramp-sh.el (tramp-sh-handle-process-file): + * lisp/net/tramp-smb.el (tramp-smb-handle-process-file): + * lisp/net/tramp-sshfs.el (tramp-sshfs-handle-process-file): + Improve implementation. (Bug#53854) + + * lisp/net/tramp-adb.el (tramp-adb-tolerate-tilde): + * lisp/net/tramp-sshfs.el (tramp-sshfs-tolerate-tilde): + New defuns. Advice `shell-mode' with them. + + * lisp/net/tramp.el (tramp-register-autoload-file-name-handlers): + * lisp/net/tramp-archive.el (tramp-register-archive-file-name-handler): + Check, whether the real file name handler is already registered. + rules. (Bug#54542) + + * lisp/net/tramp.el (tramp-autoload-file-name-handler) + (tramp-register-autoload-file-name-handlers) + (tramp-unload-file-name-handlers, tramp-unload-tramp): + * lisp/net/tramp-archive.el (tramp-archive-autoload-file-name-regexp) + (tramp-archive-autoload-file-name-handler) + (tramp-register-archive-file-name-handler): + Add `tramp-autoload' property. + + * lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist): + * lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist): + * lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist): + * lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-handler-alist): + Use `tramp-handle-file-notify-add-watch', + `tramp-handle-file-notify-rm-watch' and + `tramp-handle-file-notify-valid-p'. + + * lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist): + Use `tramp-handle-insert-file-contents'. + + * lisp/net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection): + * lisp/net/tramp-rclone.el (tramp-rclone-maybe-open-connection): + * lisp/net/tramp-sshfs.el (tramp-sshfs-maybe-open-connection): + * lisp/net/tramp-sudoedit.el + (tramp-sudoedit-maybe-open-connection): Do not set "lock-pid" + connection-property. + (tramp-sudoedit-handle-delete-file): Use "rm -f". + + * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-executable-p): + * lisp/net/tramp-sh.el (tramp-sh-handle-file-executable-p): + Check also for setuid/setgid bit. + (tramp-gvfs-handle-expand-file-name): + Respect `tramp-tolerate-tilde'. + + * lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory): + * lisp/net/tramp-smb.el (tramp-smb-handle-insert-directory): + Do not modify disk space information when + `dired--insert-disk-space' is available. (Bug#54512) + + * lisp/net/tramp-sh.el (tramp-maybe-open-connection): Extend suppression + (tramp-get-remote-dev-tty): New defun. + (tramp-sh-handle-make-process): Use it. + + * lisp/net/tramp-sshfs.el (tramp-methods) <sshfs>: + Add "-t -t" to `tramp-login-args'. + Add "-o dir_cache=no" to `tramp-mount-args'. (Bug#54126) + Add "-o transform_symlinks" to `tramp-mount-args'. + (tramp-sshfs-file-name-handler-alist): + Use `tramp-sshfs-handle-file-writable-p'. + (tramp-sshfs-handle-file-writable-p): New defun. (Bug#54130) + (tramp-sshfs-handle-write-region): Set file modification time. + (Bug#54016) + (tramp-sshfs-file-name-handler-alist): + Use `tramp-sshfs-handle-set-file-times'. + (tramp-sshfs-handle-set-file-times): New defun. + + * test/lisp/net/tramp-tests.el (tramp--test-expensive-test-p): + Rename from `tramp--test-expensive-test'. Make it a defun. Adapt + all callees. + (tramp-test07-file-exists-p, tramp-test14-delete-directory) + (tramp-test18-file-attributes, tramp-test20-file-modes) + (tramp-test28-process-file, tramp-test29-start-file-process) + (tramp-test30-make-process, tramp-test32-shell-command) + (tramp-test33-environment-variables, tramp--test-check-files) + (tramp--test-special-characters, tramp-test46-unload): Adapt tests. + (tramp-test39-detect-external-change): New test. + (tramp-test29-start-file-process) + (tramp--test--deftest-direct-async-process) + (tramp-test30-make-process, tramp-test31-interrupt-process) + (tramp-test34-explicit-shell-file-name) + (tramp-test44-asynchronous-requests): + Add :tramp-asynchronous-processes tag. + (tramp--test-asynchronous-processes-p): New defun. + (tramp--test-hpux-p, tramp--test-macos-p): Protect against errors. + +2022-04-06 Stefan Monnier <monnier@iro.umontreal.ca> + + cl-generic.el: Fix bug#46722 + + Fix longstanding bug due to unexpected interference via side-effect. + + * lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): + Copy the `dispatch` arg before storing it into the hash-table. + + Backport from `master` (cherrypick from commit 61f8f7f68f). + +2022-04-05 Eli Zaretskii <eliz@gnu.org> + + Fix fallout from lexical-binding in vhdl-mode.el + + * lisp/progmodes/vhdl-mode.el (vhdl-update-sensitivity-list): Fix + production of a list with embedded function calls. (Bug#54730) + +2022-04-03 Eli Zaretskii <eliz@gnu.org> + + Update logs and HISTORY for Emacs 28.1 + + * ChangeLog.3: + * etc/HISTORY: + * etc/AUTHORS: Update for Emacs 28.1 release. + +2022-04-03 Eli Zaretskii <eliz@gnu.org> + + Bump Emacs version to 28.1 + + * README: + * configure.ac: + * nt/README.W32: + * msdos/sed2v2.inp: Bump Emacs version to 28.1 + +2022-03-30 Tassilo Horn <tsdh@gnu.org> dired: implement feature from 7b50ed553f differently @@ -7,29 +1637,29 @@ (dired-clean-up-after-deletion): Use dired-buffers-for-dir-or-subdir instead dired-buffers-for-dir. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-30 Eli Zaretskii <eliz@gnu.org> Fix regression in 'dired-buffers-for-dir' * lisp/dired.el (dired-buffers-for-dir): Fix inadvertently swapped arguments. (Bug#54636) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-27 Eli Zaretskii <eliz@gnu.org> * lisp/desktop.el (desktop-read): Clarify warning text. -2022-04-13 Po Lu <luangruo@yahoo.com> +2022-03-26 Po Lu <luangruo@yahoo.com> * doc/emacs/anti.texi (Antinews): Unannounce removal of Motif. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-03-25 Lars Ingebrigtsen <larsi@gnus.org> Fix eshell-explicit-command-char doc string typo * lisp/eshell/esh-ext.el (eshell-explicit-command-char): Fix typo in doc string (bug#54567). -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-24 Eli Zaretskii <eliz@gnu.org> Clarify the description of "selected tags table" @@ -37,7 +1667,7 @@ distinction between the "selected tags table" and the "current list of tags tables". (Bug#54543) -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-03-21 Lars Ingebrigtsen <larsi@gnus.org> Add notes about command modes and nativecomp interaction @@ -48,11 +1678,11 @@ Do not merge to master. -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-03-20 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-25-gaf6f12 -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-20 Eli Zaretskii <eliz@gnu.org> Improve doc strings of read-char-from-minibuffer-insert-* commands @@ -60,7 +1690,7 @@ (read-char-from-minibuffer-insert-other): Clarify the doc strings. (Bug#54479) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-19 Eli Zaretskii <eliz@gnu.org> Fix region highlight in non-selected windows @@ -68,25 +1698,25 @@ to pre-redisplay-functions windows whose point was moved from the last recorded position. (Bug#54450) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-18 Eli Zaretskii <eliz@gnu.org> Fix a regression in 'decipher-digram-list' * lisp/play/decipher.el (decipher-stats-buffer): Don't assume the statistics buffer always exists. (Bug#54443) -2022-04-13 Karl Fogel <kfogel@red-bean.com> +2022-03-17 Karl Fogel <kfogel@red-bean.com> Improve documentation of bookmark default sorting * lisp/bookmark.el (bookmark-alist, bookmark-store, bookmark-maybe-sort-alist): Update doc strings and comments. -2022-04-13 Juri Linkov <juri@linkov.net> +2022-03-15 Juri Linkov <juri@linkov.net> * doc/misc/transient.texi: Fix @dircategory to "Emacs misc features" for dir. -2022-04-13 Jim Porter <jporterbugs@gmail.com> +2022-03-13 Jim Porter <jporterbugs@gmail.com> Fix evaluation of negated argument predicates in Eshell @@ -97,7 +1727,7 @@ Do not merge to master. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-12 Eli Zaretskii <eliz@gnu.org> Emacs pretest 28.0.92 @@ -111,7 +1741,7 @@ * ChangeLog.3: Regenerate. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-10 Eli Zaretskii <eliz@gnu.org> Fix regression in 'custom-prompt-customize-unsaved-options' @@ -120,7 +1750,7 @@ the doc string. Patch by Sebastian Miele <iota@whxvd.name>. (Bug#54329) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-10 Eli Zaretskii <eliz@gnu.org> Improve documentation of 'map-charset-chars' @@ -128,58 +1758,58 @@ * src/charset.c (Fmap_charset_chars): Clarify the codepoint issue in using 'map-charset-chars'. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-08 Eli Zaretskii <eliz@gnu.org> Avoid assertion violations in 'bidi_resolve_brackets' * src/bidi.c (bidi_resolve_brackets): Move assertion to where it really matters. (Bug#54295) -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-03-07 Lars Ingebrigtsen <larsi@gnus.org> Fix which-func-update doc string * lisp/progmodes/which-func.el (which-func-update): Make the doc string match the code (bug#54288). -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-07 Eli Zaretskii <eliz@gnu.org> Improve wording of 'dired-jump's description * doc/emacs/dired.texi (Dired Enter): Clarify wording. Reported by Natalie <batalie@riseup.net>. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-03-06 Lars Ingebrigtsen <larsi@gnus.org> Add a comment for previous browse-url-of-dired-file change * lisp/net/browse-url.el (browse-url-of-dired-file): Add a comment for previous change. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-03-06 Lars Ingebrigtsen <larsi@gnus.org> - Restore documented Emacs 27.2 behaviour of browse-url-of-dired-file + Restore documented Emacs 27.2 behavior of browse-url-of-dired-file * lisp/net/browse-url.el (browse-url-of-dired-file): Restore the - documented behaviour -- open a web browser instead of passing to + documented behavior -- open a web browser instead of passing to the various handlers. -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-03-06 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-24-g668205 -2022-04-13 Andreas Schwab <schwab@linux-m68k.org> +2022-03-05 Andreas Schwab <schwab@linux-m68k.org> * lib-src/seccomp-filter.c (main): Use faccessat2 only if defined. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-03-04 Lars Ingebrigtsen <larsi@gnus.org> Fix regression in derived-mode-init-mode-variables * lisp/emacs-lisp/derived.el (derived-mode-init-mode-variables): Fix regression caused by lexical-binding derived.el (bug#54240). -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-03 Eli Zaretskii <eliz@gnu.org> Avoid crashes when fringe bitmaps are defined in daemon mode @@ -192,7 +1822,7 @@ not available when a fringe bitmap is about to be drawn. Don't try to draw a bitmap that is not known to fringe.c. (Bug#54183) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-03 Eli Zaretskii <eliz@gnu.org> One more fix of the BPA implementation @@ -200,7 +1830,7 @@ when there are no strong directional characters inside the bracketed pair. (Bug#54219) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-03-03 Eli Zaretskii <eliz@gnu.org> Fix handling of brackets in BPA @@ -208,14 +1838,14 @@ N0 rule when there are no strong directional characters inside the bracketed pair. (Bug#54219) -2022-04-13 Po Lu <luangruo@yahoo.com> +2022-03-02 Po Lu <luangruo@yahoo.com> Correct etc/NEWS entry about bitmapped fonts * etc/NEWS: Don't say that bitmap font issues are due to Pango, that's not accurate. -2022-04-13 Jim Porter <jporterbugs@gmail.com> +2022-03-01 Jim Porter <jporterbugs@gmail.com> Improve/correct documentation about Eshell variable expansion @@ -225,7 +1855,7 @@ * doc/misc/eshell.texi (Dollars Expansion): Add documentation for $"var"/$'var' and $<command> syntaxes. -2022-04-13 Jim Porter <jporterbugs@gmail.com> +2022-03-01 Jim Porter <jporterbugs@gmail.com> Partially revert b03f74e0f2a578b1580e8b1c368665850ee7f808 @@ -238,7 +1868,7 @@ * test/lisp/eshell/eshell-tests.el (eshell-test/interp-temp-cmd): New test. -2022-04-13 Paul Eggert <eggert@cs.ucla.edu> +2022-03-01 Paul Eggert <eggert@cs.ucla.edu> Backport: Port pre-commit hook to Git 2.35.0 @@ -247,32 +1877,32 @@ (cherry picked from commit b8a96f055624f86fe965a0d1b7b2495b2db80e63) -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-02-28 Lars Ingebrigtsen <larsi@gnus.org> Fix :tag for eol in tab-first-completion * lisp/indent.el (tab-first-completion): Fix the :tag description (bug#54179). -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-02-28 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-22-g33543d -2022-04-13 Dmitry Gutov <dgutov@yandex.ru> +2022-02-27 Dmitry Gutov <dgutov@yandex.ru> Add explicit '--no-heading' for ripgrep * lisp/progmodes/xref.el (xref-search-program-alist): Add explicit '--no-heading' for ripgrep (bug#54177). -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-02-26 Michael Albinus <michael.albinus@gmx.de> Follow OpenSSH changes in Tramp * lisp/net/tramp-sh.el (tramp-ssh-controlmaster-options): Reimplement. OpenSSH has changed its diagnostics messages. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-26 Eli Zaretskii <eliz@gnu.org> Document better how to reset attributes of faces for new frames @@ -280,25 +1910,25 @@ * lisp/faces.el (set-face-attribute): Explain how to reset an attribute's value for future frames. (Bug#54156) -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-02-25 Michael Albinus <michael.albinus@gmx.de> * lisp/net/tramp-sh.el (tramp-ssh-controlmaster-options): Adapt test. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-02-24 Lars Ingebrigtsen <larsi@gnus.org> Mention flyspell-prog-mode in flyspell-mode doc string * lisp/textmodes/flyspell.el (flyspell-mode): Mention flyspell-prog-mode (bug#54131). -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-02-23 Lars Ingebrigtsen <larsi@gnus.org> Reword face-remap-add-relative manual entry * doc/lispref/display.texi (Face Remapping): Clarify the face-remap-add-relative (bug#54114). -2022-04-13 Philipp Stephani <phst@google.com> +2022-02-22 Philipp Stephani <phst@google.com> Fix indexing of module functions that return enumeration types. @@ -309,25 +1939,25 @@ * doc/lispref/internals.texi (Module Misc, Module Nonlocal): Enclose multi-word return types in braces. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-22 Eli Zaretskii <eliz@gnu.org> * doc/misc/transient.texi (Other Options): Fix a @ref. (Bug#54108) -2022-04-13 Glenn Morris <rgm@gnu.org> +2022-02-22 Glenn Morris <rgm@gnu.org> tramp.texi texinfo 4.13 compatibility * doc/misc/tramp.texi (Frequently Asked Questions): Restore compatibility with Texinfo < 5. -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-02-22 Michael Albinus <michael.albinus@gmx.de> Explain "Tramp" spelling in its manual * doc/misc/tramp.texi (Frequently Asked Questions): Explain "Tramp" spelling. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-21 Eli Zaretskii <eliz@gnu.org> Fix 'display-line-numbers-mode' in hide-show buffers @@ -336,25 +1966,25 @@ 'display-line-numbers-mode' is turned on in the buffer. (Bug#54091) -2022-04-13 Martin Rudalics <rudalics@gmx.at> +2022-02-21 Martin Rudalics <rudalics@gmx.at> Don't check whether a deleted window is deletable (Bug#54028) * lisp/window.el (window-state-put): Make sure window is live before calling 'window-deletable-p' on it (Bug#54028). -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-21 Eli Zaretskii <eliz@gnu.org> A friendlier error message from image-mode in an empty buffer * lisp/image-mode.el (image-mode): Handle the case where the empty buffer doesn't visit a file (Bug#54084) -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-02-20 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-17-gea6b74 -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-18 Eli Zaretskii <eliz@gnu.org> Improve documentation of filling and justification commands @@ -366,11 +1996,11 @@ (set-justification-left, set-justification-right) (set-justification-full): Improve wording of doc strings. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-18 Eli Zaretskii <eliz@gnu.org> * lisp/progmodes/subword.el (superword-mode): Doc fix. (Bug#54045) -2022-04-13 Philipp Stephani <phst@google.com> +2022-02-17 Philipp Stephani <phst@google.com> Fix indexing of module functions that return complex types. @@ -381,7 +2011,7 @@ * doc/lispref/internals.texi (Module Values): Enclose multi-word return types in braces. -2022-04-13 Po Lu <luangruo@yahoo.com> +2022-02-17 Po Lu <luangruo@yahoo.com> Prevent crashes caused by invalid locale coding systems @@ -391,25 +2021,25 @@ Do not merge to master. -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-02-15 Michael Albinus <michael.albinus@gmx.de> Fix problem with popd for in remote shell buffers * lisp/shell.el (shell-prefixed-directory-name): Use `file-local-name' for DIR. (Bug#53927) -2022-04-13 Jonas Bernoulli <jonas@bernoul.li> +2022-02-15 Jonas Bernoulli <jonas@bernoul.li> Import texi source file for transient manual * doc/misc/Makefile.in: Add transient to INFO_COMMON. * doc/misc/transient.texi: New file. -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-02-13 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-15-gc5ceb6 -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-13 Eli Zaretskii <eliz@gnu.org> Fix 'exchange-point-and-mark' in 'transient-mark-mode' @@ -418,7 +2048,7 @@ (cherry picked from commit 415ed4b42515ff2e6dd9b94e964b479e50c6392e) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-13 Eli Zaretskii <eliz@gnu.org> Fix "C-SPC C-SPC" after "C-x C-x" @@ -427,31 +2057,31 @@ (cherry picked from commit 19c6cad1821eb896b2ddd0f6eab030f0880ea254) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-13 Eli Zaretskii <eliz@gnu.org> Fix a typo in fontset.el * lisp/international/fontset.el (xlfd-regexp-spacing-subnum): Fix a typo. Reported by Greg A. Woods <woods@robohack.ca>. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-12 Eli Zaretskii <eliz@gnu.org> Note in ELisp manual that too-wide images are truncated * doc/lispref/display.texi (Showing Images): Note that images are truncated at the window's edge. (Bug#53952) -2022-04-13 Andrea Corallo <akrl@sdf.org> +2022-02-11 Andrea Corallo <akrl@sdf.org> * lisp/mail/emacsbug.el (report-emacs-bug): Report libgccjit status. * lisp/startup.el (normal-top-level): Small code move, improve 202d3be873. -2022-04-13 Andrea Corallo <akrl@sdf.org> +2022-02-10 Andrea Corallo <akrl@sdf.org> * lisp/startup.el (normal-top-level): Disable native-comp if not available -2022-04-13 Andrea Corallo <akrl@sdf.org> +2022-02-09 Andrea Corallo <akrl@sdf.org> Fix integer arithmetic miss-compilation (bug#53451) @@ -461,14 +2091,14 @@ * test/src/comp-tests.el (comp-tests-type-spec-tests): Add test to verify this is effective. -2022-04-13 Robert Pluim <rpluim@gmail.com> +2022-02-08 Robert Pluim <rpluim@gmail.com> Mark flymake as compatible with emacs-26.1 * lisp/progmodes/flymake.el: Bump package version and set emacs version in Package-Requires to 26.1 (Bug#53853). -2022-04-13 Brian Leung <leungbk@posteo.net> +2022-02-08 Brian Leung <leungbk@posteo.net> flymake: Ensure compatibility with older Emacsen @@ -476,7 +2106,7 @@ replace-regexp-in-string instead of Emacs 28's string-replace (bug#53853). -2022-04-13 Eric Abrahamsen <eric@ericabrahamsen.net> +2022-02-07 Eric Abrahamsen <eric@ericabrahamsen.net> Don't remove dummy.group from gnus-newsrc-alist on Gnus save @@ -486,20 +2116,20 @@ function was removing dummy.group from the global value of `gnus-newsrc-alist' on save; we only wanted to remove it temporarily. -2022-04-13 Bob Rogers <rogers@rgrjr.com> +2022-02-05 Bob Rogers <rogers@rgrjr.com> Fix ietf-drums-get-comment doc string * lisp/mail/ietf-drums.el (ietf-drums-get-comment): We really return the last comment (bug#53810). -2022-04-13 Daniel Martín <mardani29@yahoo.es> +2022-02-05 Daniel Martín <mardani29@yahoo.es> Fix typo in display.texi * doc/lispref/display.texi (Making Buttons): Fix typo. (Bug#53807) -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-02-03 Michael Albinus <michael.albinus@gmx.de> Revert an erroneous change in tramp-cache.el @@ -507,7 +2137,7 @@ Use `string-match-p' instead of `string-search'. The latter one was introduced by accident. Reported by Kai Tetzlaff <kai@tetzlaff.eu>. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-02-02 Eli Zaretskii <eliz@gnu.org> Improve documentation of 'emacs-version' @@ -516,11 +2146,11 @@ * lisp/version.el (emacs-version): Improve doc string. (Bug#53720) -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-02-01 Michael Albinus <michael.albinus@gmx.de> * etc/NEWS: Apply final fixes after proofreading. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-31 Eli Zaretskii <eliz@gnu.org> Clarify documentation of a "face's font" @@ -529,7 +2159,7 @@ the font returned by 'face-font' are by default for ASCII characters. (Bug#53664) -2022-04-13 Alan Mackenzie <acm@muc.de> +2022-01-31 Alan Mackenzie <acm@muc.de> Bind Qdebugger to Qdebug in signal_or_quit. @@ -537,18 +2167,18 @@ Vdebugger) to Qdebug in the section for errors in batch jobs. (syms_of_eval): New DEFSYM for Qdebugger. -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-01-30 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-13-gdd6486 -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-30 Eli Zaretskii <eliz@gnu.org> Fix regression in Occur Edit mode * lisp/replace.el (occur-after-change-function): Fix the algorithm to find the smallest change in some corner cases. (Bug#53598) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-29 Eli Zaretskii <eliz@gnu.org> Fix last change of Malayalam composition rules @@ -557,7 +2187,7 @@ Malayalam characters to the existing patterns, so as not to lose the patterns that use ZWJ and ZWNJ. (Bug#53625) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-29 Eli Zaretskii <eliz@gnu.org> Fix rendering of Malayalam script @@ -566,21 +2196,21 @@ Instead, pass any sequence of Malayalam codepoints to the shaping engine. (Bug#53625) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-29 Eli Zaretskii <eliz@gnu.org> Improve documentation of Occur mode * doc/emacs/search.texi (Other Repeating Search): Improve wording and document Occur Edit mode better. -2022-04-13 Alan Third <alan@idiocy.org> +2022-01-29 Alan Third <alan@idiocy.org> Remove debug logging * src/nsterm.m ([EmacsView copyRect:to:]): Remove logging as it's no longer required. -2022-04-13 Michael Albinus <michael.albinus@gmx.de> +2022-01-29 Michael Albinus <michael.albinus@gmx.de> Fix error in filelock.c @@ -590,11 +2220,11 @@ (Flock_file): Do not check for create_lockfiles. Call file name handler if appropriate. (Bug#53207) -2022-04-13 Juri Linkov <juri@linkov.net> +2022-01-27 Juri Linkov <juri@linkov.net> * lisp/frame.el (clone-frame): Filter out 'parent-id' (bug#51883). -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-01-26 Lars Ingebrigtsen <larsi@gnus.org> Partially revert a fill-region-as-paragraph regression @@ -602,14 +2232,14 @@ e186af261 (bug#53537), because it leads to regressions. (But leave tests in place.) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-26 Eli Zaretskii <eliz@gnu.org> Fix 'make_lispy_position' when there's an image at EOB * src/xdisp.c (move_it_to): Don't compare IT_CHARPOS with an invalid TO_CHARPOS. (Bug#53546) -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-01-26 Lars Ingebrigtsen <larsi@gnus.org> Fix copyright-find-copyright when searching from the end @@ -618,7 +2248,7 @@ Do not merge to master. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-01-26 Lars Ingebrigtsen <larsi@gnus.org> Fix copyright.el comment and add a test @@ -627,18 +2257,18 @@ Do not merge to master. -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-24 Philipp Stephani <phst@google.com> * configure.ac (LIBSECCOMP): Bump minimum version for faccessat2. -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-01-24 Lars Ingebrigtsen <larsi@gnus.org> Make the `f' command work in image-mode again * lisp/image.el (image-show-frame): Protect against not having computed the animation data yed (bug#53489). -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-22 Philipp Stephani <phst@google.com> Seccomp: improve support for newer versions of glibc (Bug#51073) @@ -647,14 +2277,14 @@ with commits 95c1056962a3f2297c94ce47f0eaf0c5b6563231 and 3d3ab573a5f3071992cbc4f57d50d1d29d55bde2, respectively). -2022-04-13 Thomas Fitzsimmons <fitzsim@fitzsim.org> +2022-01-21 Thomas Fitzsimmons <fitzsim@fitzsim.org> EUDC: Fix a quoting bug in the BBDB backend * lisp/net/eudcb-bbdb.el (eudc-bbdb-query-internal): Fix a quoting bug introduced during lexical-binding conversion. -2022-04-13 Sergey Vinokurov <serg.foo@gmail.com> +2022-01-21 Sergey Vinokurov <serg.foo@gmail.com> Fix memory-report-object-size to initialize memory-report--type-size @@ -663,7 +2293,7 @@ Do not merge to master. -2022-04-13 Stefan Monnier <monnier@iro.umontreal.ca> +2022-01-20 Stefan Monnier <monnier@iro.umontreal.ca> Fix menu-bar mouse clicks in "C-h c" and "C-h k" (bug#53322) @@ -674,7 +2304,7 @@ (cherry picked from commit 9ceb3070e34ad8a54184fd0deda477bf5ff77000) -2022-04-13 Eli Zaretskii <eliz@gnu.org> (tiny change) +2022-01-20 Eli Zaretskii <eliz@gnu.org> (tiny change) Fix UB in ebrowse @@ -682,14 +2312,14 @@ limits of 'matching_regexp_buffer'. Patch by Jan Stranik <jan@stranik.org>. (Bug#53333) -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-01-20 Lars Ingebrigtsen <larsi@gnus.org> Fix execute-extended-command-for-buffer in fundamental-mode * lisp/simple.el (execute-extended-command-for-buffer): Protect against the current local map being nil (bug#52907). -2022-04-13 Martin Rudalics <rudalics@gmx.at> +2022-01-20 Martin Rudalics <rudalics@gmx.at> Add workaround to handle a problem with Enlightenment WM (Bug#53298) @@ -702,14 +2332,14 @@ Enlightenment WM and 'x-set-frame-visibility-more-laxly' workaround. -2022-04-13 Po Lu <luangruo@yahoo.com> +2022-01-17 Po Lu <luangruo@yahoo.com> Fix regression leading to flickering tooltips when the mouse is moved * lisp/tooltip.el (tooltip-show-help): Compare string with previous tooltip string ignoring properties. -2022-04-13 Andrea Corallo <akrl@sdf.org> +2022-01-17 Andrea Corallo <akrl@sdf.org> * Fix native comp for non trivial function names (bug#52833) @@ -721,15 +2351,15 @@ Do not merge to master -2022-04-13 Kyle Meyer <kyle@kyleam.com> +2022-01-15 Kyle Meyer <kyle@kyleam.com> Update to Org 9.5.2-9-g7ba24c -2022-04-13 Juri Linkov <juri@linkov.net> +2022-01-15 Juri Linkov <juri@linkov.net> * lisp/net/dictionary.el (dictionary-context-menu): Use package prefix. -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-15 Philipp Stephani <phst@google.com> Mark a few more map tests as unstable on Emacs 28 (Bug#46722). @@ -741,24 +2371,24 @@ (test-map-merge, test-map-merge-with, test-map-merge-empty): Mark as unstable. -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-15 Philipp Stephani <phst@google.com> * lisp/indent.el (tab-first-completion): Fix incorrect choices. -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-14 Philipp Stephani <phst@google.com> * lisp/simple.el (undo-no-redo): Fix customization group * lisp/progmodes/xref.el (xref-file-name-display): Fix docstring. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-14 Eli Zaretskii <eliz@gnu.org> Avoid another segfault in 'face_at_buffer_position' * src/xfaces.c (face_at_buffer_position): Make really sure the default face is usable. (Bug#53254) -2022-04-13 Lars Ingebrigtsen <larsi@gnus.org> +2022-01-14 Lars Ingebrigtsen <larsi@gnus.org> Mark test-map-into as unstable @@ -767,7 +2397,7 @@ Do not merge to master. -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-13 Philipp Stephani <phst@google.com> Fix Edebug specification for inline functions (Bug#53068). @@ -776,7 +2406,7 @@ * test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-inline): New unit test. -2022-04-13 N. Jackson <nljlistbox2@gmail.com> +2022-01-13 N. Jackson <nljlistbox2@gmail.com> Remove mention of removed `gnus-treat-play-sounds' variable from manual @@ -784,7 +2414,7 @@ manual. According to lisp/gnus/ChangeLog.3 this variable was removed in 2010 (bug#53192). -2022-04-13 Mattias Engdegård <mattiase@acm.org> +2022-01-12 Mattias Engdegård <mattiase@acm.org> Revert "Fix closure-conversion of shadowed captured lambda-lifted vars" @@ -793,18 +2423,18 @@ It was committed to a stable branch without prior discussion; see bug#53071. -2022-04-13 Juri Linkov <juri@linkov.net> +2022-01-12 Juri Linkov <juri@linkov.net> * doc/lispref/windows.texi (Textual Scrolling): Remove obsolete text. Remove text about scrolling the minibuffer from the buffer, obsolete since Emacs 27 (bug#51210). -2022-04-13 Glenn Morris <rgm@gnu.org> +2022-01-12 Glenn Morris <rgm@gnu.org> * lisp/files.el (lock-file-name-transforms): Doc tweaks. -2022-04-13 Mattias Engdegård <mattiase@acm.org> +2022-01-12 Mattias Engdegård <mattiase@acm.org> Fix closure-conversion of shadowed captured lambda-lifted vars @@ -823,7 +2453,7 @@ (cherry picked from commit 45252ad8f932c98a373ef0ab7f3363a3e27ccbe4) -2022-04-13 Philipp Stephani <phst@google.com> +2022-01-12 Philipp Stephani <phst@google.com> Fix test lisp/cedet/semantic/bovine/gcc-tests on macOS (Bug#52431) @@ -833,7 +2463,7 @@ (cherry picked from commit 6e52becfbe2a33c025b8c4838b3c8f06ba5a6fb8) -2022-04-13 Mattias Engdegård <mattiase@acm.org> +2022-01-12 Mattias Engdegård <mattiase@acm.org> Don't fail flymake-tests if `gcc` actually is Clang @@ -843,7 +2473,7 @@ (cherry picked from commit b2167d98432a78442522b7564e22f47d75a98b6f) -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-10 Eli Zaretskii <eliz@gnu.org> Revert "Remove the filename argument from the command line after an ELC+ELN build" @@ -852,14 +2482,14 @@ Please don't install anything non-trivial on the release branch without asking first. -2022-04-13 Alan Mackenzie <acm@muc.de> +2022-01-10 Alan Mackenzie <acm@muc.de> Remove the filename argument from the command line after an ELC+ELN build This fixes bug #53164. Without this fix, bootstrap-emacs loads the source file uselessly into a buffer after completing the compilation. -2022-04-13 Stefan Monnier <monnier@iro.umontreal.ca> +2022-01-09 Stefan Monnier <monnier@iro.umontreal.ca> (save-some-buffers): Simplify the fix for bug#46374 @@ -872,14 +2502,14 @@ with `pred` set to `save-some-buffers-root` since it's not an appropriate function for that any more. -2022-04-13 Stefan Kangas <stefan@marxist.se> +2022-01-09 Stefan Kangas <stefan@marxist.se> Improve docstring of edit-abbrevs * lisp/abbrev.el (edit-abbrevs): Doc fix; don't use obsolete name. Improve docstring formatting. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-09 Eli Zaretskii <eliz@gnu.org> Revert "Fix alignment on font size change in tabulated-list-mode" @@ -888,21 +2518,21 @@ That change caused a regression in a much more important use case, see bug#53133. -2022-04-13 Stefan Kangas <stefan@marxist.se> +2022-01-08 Stefan Kangas <stefan@marxist.se> Clarify docstring of package-native-compile * lisp/emacs-lisp/package.el (package-native-compile): Clarify docstring. -2022-04-13 Eli Zaretskii <eliz@gnu.org> +2022-01-08 Eli Zaretskii <eliz@gnu.org> Fix Subject "simplification" in Rmail * lisp/mail/rmail.el (rmail-simplified-subject): Match against "[external]" _after_ decoding the Subject by RFC-2047. -2022-04-13 Stefan Kangas <stefan@marxist.se> +2022-01-08 Stefan Kangas <stefan@marxist.se> Bump Emacs version to 28.0.91 @@ -1021,7 +2651,7 @@ This fixes bug #52796. * lisp/progmodes/cc-engine.el (c-update-brace-stack): Handle a "*" like a - semicolon, cancelling the expectation of a brace. + semicolon, canceling the expectation of a brace. * lisp/progmodes/cc-langs.el (c-brace-stack-thing-key): Add a "*" into the sets of significant characters. @@ -1053,7 +2683,7 @@ 2021-12-27 Eli Zaretskii <eliz@gnu.org> - Fix typos in in 'reset-language-environment' + Fix typos in 'reset-language-environment' * lisp/international/mule-cmds.el (reset-language-environment): Fix a typo in 'windows-nt'. (Bug#52816) @@ -1595,7 +3225,7 @@ 2021-12-01 Alan Mackenzie <acm@muc.de> - CC Mode: Recognise "struct foo {" as introducing a type declaration + CC Mode: Recognize "struct foo {" as introducing a type declaration This fixes bug #52157. @@ -1681,7 +3311,7 @@ 2021-11-29 Andreas Schwab <schwab@linux-m68k.org> - Avoid undefined behaviour when copying part of structure + Avoid undefined behavior when copying part of structure * src/dispnew.c (copy_row_except_pointers): Don't use address of subobject as starting point. @@ -4838,14 +6468,14 @@ Fix previous `newline' patch * lisp/simple.el (newline): Signal an error earlier to avoid - peculiar behaviour after getting a backtrace (bug#50900). + peculiar behavior after getting a backtrace (bug#50900). 2021-09-30 Lars Ingebrigtsen <larsi@gnus.org> Make `newline' check the argument earlier * lisp/simple.el (newline): Signal an error earlier to avoid - peculiar behaviour after getting a backtrace (bug#50900). + peculiar behavior after getting a backtrace (bug#50900). 2021-09-30 akater <nuclearspace@gmail.com> @@ -5026,7 +6656,7 @@ etc/themes/modus-vivendi-theme.el: Bump file version. * etc/themes/modus-themes.el (modus-themes-operandi-colors) - (modus-themes-vivendi-colors): Recalibrate some colour values and add + (modus-themes-vivendi-colors): Recalibrate some color values and add a few new ones. (modus-themes-slanted-constructs): Remove obsolete user option. Superseded by the alias 'modus-themes-italic-constructs'. @@ -5882,11 +7512,11 @@ Fix byte-compiler crash for legal dynamic-binding code - This should really be taken care of by a syntax normalisation step in + This should really be taken care of by a syntax normalization step in the frontend, but there is no such step for non-lexbind code yet. * lisp/emacs-lisp/byte-opt.el (byte-optimize-letX): Tolerate bindingsa - without initialising expressions. + without initializing expressions. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): Add test cases. @@ -6945,7 +8575,7 @@ This reverts commit 7e395a59b025c7f4be49294ad806addf5b1a25c9. - The behaviour change isn't good for the majority of tar files. + The behavior change isn't good for the majority of tar files. 2021-09-21 Lars Ingebrigtsen <larsi@gnus.org> @@ -6957,10 +8587,10 @@ 2021-09-21 Lars Ingebrigtsen <larsi@gnus.org> - Restore some of the previous behaviour in whitespace-display-window + Restore some of the previous behavior in whitespace-display-window * lisp/whitespace.el (whitespace-display-window): Emulate previous - behaviour (bug#50716). Code from martin rudalics <rudalics@gmx.at>. + behavior (bug#50716). Code from martin rudalics <rudalics@gmx.at>. 2021-09-21 Lars Ingebrigtsen <larsi@gnus.org> @@ -7177,7 +8807,7 @@ Add docstring for 'electric-pair-p-s-i-f' and minor refactor - Extract the "open newline between pairs behaviour" into its own + Extract the "open newline between pairs behavior" into its own function, electric-pair-open-newline-between-pairs-psif. * lisp/elec-pair.el (electric-pair-post-self-insert-function): Add @@ -7417,7 +9047,7 @@ 2021-09-20 Philip Kaludercic <philipk@posteo.net> - Fix dolist-with-progress-reporter behaviour + Fix dolist-with-progress-reporter behavior * lisp/subr.el (dolist-with-progress-reporter): Use the length of list argument as maximal value the reporter with reach. @@ -7502,17 +9132,17 @@ 2021-09-19 Mattias Engdegård <mattiase@acm.org> - Initialise unread buffer + Initialize unread buffer The reader has an extra 1-char unread buffer that was incorrectly - initialised to 0, which means that the first character read would + initialized to 0, which means that the first character read would always be NUL. As this is often the code that looks for the lexical-binding cookie, the first loaded source module would be treated as dynamically bound. During bootstrapping this is loadup.el and so its local variables got dumped into the global environment. - * src/lread.c (unread_char): Initialise to empty. - (Fload): Initialise here too just in case. + * src/lread.c (unread_char): Initialize to empty. + (Fload): Initialize here too just in case. 2021-09-19 Stefan Kangas <stefan@marxist.se> @@ -9487,11 +11117,11 @@ Replace uses of a variable aliasing another variable with that aliased variable, to allow for variable removal when possible. This also - enables opportunities for other optimisations. Example: + enables opportunities for other optimizations. Example: (let ((y x)) (f y)) => (f x) - The optimisation is only performed if both aliased and aliasing + The optimization is only performed if both aliased and aliasing variables are lexically bound. Shadowing bindings are α-renamed when necessary for correctness. Example: @@ -9501,7 +11131,7 @@ * lisp/emacs-lisp/byte-opt.el (byte-optimize--aliased-vars): New. (byte-optimize-form-code-walker): Cancel aliasing upon mutation. (byte-optimize--rename-var-body, byte-optimize--rename-var): New. - (byte-optimize-let-form): Add the optimisation. + (byte-optimize-let-form): Add the optimization. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): Add relevant test cases. @@ -10235,31 +11865,31 @@ 2021-09-06 Mattias Engdegård <mattiase@acm.org> - Normalise nested `progn` forms in byte-code optimiser + Normalize nested `progn` forms in byte-code optimizer * lisp/emacs-lisp/byte-opt.el (byte-optimize-body): Flatten body. This simplifies the source tree and reduces the number of different - cases that other optimisations need to take into account. + cases that other optimizations need to take into account. 2021-09-06 Mattias Engdegård <mattiase@acm.org> - More robust optimisation of `ignore` + More robust optimization of `ignore` - Treat `ignore` as any other function during source-level optimisation, - to avoid having its warning-suppression effects cancelled by repeated + Treat `ignore` as any other function during source-level optimization, + to avoid having its warning-suppression effects canceled by repeated passes. Instead, define a custom code generation function. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't treat `ignore' specially here. (side-effect-free-fns): Don't mark `ignore` as side-effect-free - or error-free (although it is), since that would allow the optimiser + or error-free (although it is), since that would allow the optimizer to elide calls. * lisp/emacs-lisp/bytecomp.el (ignore, byte-compile-ignore): Define and register a code-gen function. 2021-09-06 Mattias Engdegård <mattiase@acm.org> - Optimise `member` and `assoc` (etc) with constant empty list + Optimize `member` and `assoc` (etc) with constant empty list * lisp/emacs-lisp/byte-opt.el (byte-optimize-assq): New. @@ -11497,7 +13127,7 @@ This reverts commit c8e3347ec01a9ed6dc8d88c2dbbb3a08497e8eb2. - Jim Porter's paperwork isn't finalised yet. + Jim Porter's paperwork isn't finalized yet. 2021-08-26 Lars Ingebrigtsen <larsi@gnus.org> @@ -14236,7 +15866,7 @@ Fix automatic hscrolling when line numbers are displayed * src/xdisp.c (hscroll_window_tree): When line numbers are - displayed, account for the the line-number space when calculating + displayed, account for the line-number space when calculating the desired X coordinate on the left. (Bug#49891) 2021-08-06 Eli Zaretskii <eliz@gnu.org> @@ -14344,11 +15974,11 @@ The current method of propagating constants through setq was unsound because it relied on each setq form only being traversed at most once - during optimisation, which isn't necessarily true in general; it could + during optimization, which isn't necessarily true in general; it could be made to miscompile code in rare cases. Since it was only used in limited circumstances, disabling this - optimisation doesn't cost us much. + optimization doesn't cost us much. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't update the known value when traversing `setq`. @@ -14586,7 +16216,7 @@ 2021-08-03 Phil Sainty <psainty@orcon.net.nz> - Make `global-so-long-mode' handle unrecognised file types + Make `global-so-long-mode' handle unrecognized file types * lisp/so-long.el (so-long-target-modes): Add `fundamental-mode' @@ -15076,16 +16706,16 @@ Ensure in cconv that let-bindings have the normal form (VAR EXPR) where VAR is a valid variable name, so that we don't need to keep - re-checking this all the time in the optimiser. + re-checking this all the time in the optimizer. * lisp/emacs-lisp/byte-opt.el (byte-optimize-enable-variable-constprop) (byte-optimize-warn-eliminated-variable): Remove; these were mainly used for debugging. * lisp/emacs-lisp/byte-opt.el (byte-optimize-let-form): - Assume normalised let-bindings (with lexical-binding). + Assume normalized let-bindings (with lexical-binding). Stop using the variables removed above. - * lisp/emacs-lisp/cconv.el (cconv-convert): Ensure normalised + * lisp/emacs-lisp/cconv.el (cconv-convert): Ensure normalized let-bindings. Malformed bindings are dropped after warning. remove byte-optimize-warn-eliminated-variable @@ -15177,7 +16807,7 @@ 2021-07-30 Mattias Engdegård <mattiase@acm.org> - Optimise let and let* whose body is constant or the last variable + Optimize let and let* whose body is constant or the last variable Simplify (let ((X1 E1) ... (Xn En)) Xn) => (progn E1 ... En) @@ -15186,9 +16816,9 @@ => (let* ((X1 E1) ... (Xn-1 En-1)) En) and similarly the case where the body is a constant, extending a - previous optimisation that only applied to the constant nil. + previous optimization that only applied to the constant nil. This reduces the number of bound variables, shortens the code, and - enables further optimisations. + enables further optimizations. * lisp/emacs-lisp/byte-opt.el (byte-optimize-letX): Rewrite using `pcase` and add the aforementioned transformations. @@ -15197,7 +16827,7 @@ 2021-07-30 Mattias Engdegård <mattiase@acm.org> - Move warnings about bad let-bindings from source optimiser to cconv + Move warnings about bad let-bindings from source optimizer to cconv * lisp/emacs-lisp/byte-opt.el (byte-optimize-let-form): Move warnings... * lisp/emacs-lisp/cconv.el (cconv-convert): ...here, which is an @@ -15205,7 +16835,7 @@ 2021-07-30 Mattias Engdegård <mattiase@acm.org> - Optimise prog1 better + Optimize prog1 better Rewrite (prog1 CONST FORMS...) => (progn FORMS... CONST) where CONST is a compile-time constant, because putting the value last @@ -15217,23 +16847,23 @@ 2021-07-30 Mattias Engdegård <mattiase@acm.org> - Elide lexical variables in for-effect context in source optimiser + Elide lexical variables in for-effect context in source optimizer * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Remove for-effect uses of lexical variables. We previously relied on - this being done by the lapcode peephole optimiser but at source level - it enables more optimisation opportunities. + this being done by the lapcode peephole optimizer but at source level + it enables more optimization opportunities. Keywords are elided for the same reason. 2021-07-30 Mattias Engdegård <mattiase@acm.org> - Single source optimiser entry point + Single source optimizer entry point - Make the optimiser aware of lexical arguments. Otherwise we cannot + Make the optimizer aware of lexical arguments. Otherwise we cannot know for sure whether a variable is lexical or dynamic during traversal. - * lisp/emacs-lisp/byte-opt.el (byte-optimize-one-form): New optimiser + * lisp/emacs-lisp/byte-opt.el (byte-optimize-one-form): New optimizer entry point, replacing the recursive byte-optimize-form. * lisp/emacs-lisp/bytecomp.el (byte-optimize-one-form): Autoload. (byte-compile-keep-pending, byte-compile-top-level): @@ -16154,7 +17784,7 @@ `term-char-mode' doc string clarification - * lisp/term.el (term-char-mode): Document behaviour (bug#49186). + * lisp/term.el (term-char-mode): Document behavior (bug#49186). 2021-07-22 Dmitry Gutov <dgutov@yandex.ru> @@ -16391,14 +18021,14 @@ 2021-07-21 Mattias Engdegård <mattiase@acm.org> - Fix mistake in `quote` optimiser + Fix mistake in `quote` optimizer Found by Pip Cet. * lisp/emacs-lisp/byte-opt.el (byte-optimize-quote): Fix mistake that - made this optimiser ineffective at removing quoting of nil, t, and + made this optimizer ineffective at removing quoting of nil, t, and keywords. The only obvious consequence is that we no longer need... - (byte-optimize-form): ...a 'nil => nil normalising step here; remove. + (byte-optimize-form): ...a 'nil => nil normalizing step here; remove. (byte-optimize-form-code-walker): Make the compiler warn about (quote). 2021-07-20 Juri Linkov <juri@linkov.net> @@ -16427,7 +18057,7 @@ Strength-reduce (eq X nil) to (not X) - * lisp/emacs-lisp/byte-opt.el (byte-optimize-eq): New optimisation, + * lisp/emacs-lisp/byte-opt.el (byte-optimize-eq): New optimization, which results in better test and branch code generation where it applies. @@ -17040,7 +18670,7 @@ (Full support for packages or face groups): Include new items. - (Notes on individual packages): Add notes on Avy hints, the colour of + (Notes on individual packages): Add notes on Avy hints, the color of days in 'M-x calendar', and underlines in 'compilation-mode' buffers. (What is the best setup for legibility?): Remove single word. @@ -18583,7 +20213,7 @@ * etc/emacs-mail.desktop: * etc/emacsclient.desktop: Automatically try to reuse an existing frame, open a new frame, or start a new Emacs - daemon. Add actions for specific behaviours (bug#49195). + daemon. Add actions for specific behaviors (bug#49195). 2021-06-30 Peter Oliver <git@mavit.org.uk> @@ -20650,7 +22280,7 @@ 2021-06-03 Mattias Engdegård <mattiase@acm.org> - Optimise (cons X nil) to (list X) + Optimize (cons X nil) to (list X) * lisp/emacs-lisp/byte-opt.el (byte-optimize-cons): New function. @@ -20913,7 +22543,7 @@ When used with Fido, completions scroll like a typical dropdown widget. - If the dropdown behaviour is desired for Icomplete (instead of + If the dropdown behavior is desired for Icomplete (instead of rotation), icomplete-scroll can be adjusted separately by the user. * etc/NEWS (icomplete-vertical-mode): Reword. @@ -21561,7 +23191,7 @@ Don't propagate lexical variables into inlined functions - Functions compiled when inlined (thus from inside the optimiser) + Functions compiled when inlined (thus from inside the optimizer) mustn't retain the lexical environment of the caller or there will be tears. See discussion at https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg01227.html . @@ -21805,7 +23435,7 @@ 2021-05-25 Miha Rihtaršič <miha@kamnitnik.top> - Try to not prioritise reading from lower file descriptors + Try to not prioritize reading from lower file descriptors * src/process.c (wait_reading_process_output): When looping through fds, continue from where we left off. @@ -24302,7 +25932,7 @@ 2021-05-04 Lars Ingebrigtsen <larsi@gnus.org> - Fix inconsistent behaviour in find-file-noselect when using nowarn + Fix inconsistent behavior in find-file-noselect when using nowarn * lisp/files.el (after-find-file): Behave the same in when warning/not warning (bug#47850). This fixes this test case: @@ -24372,7 +26002,7 @@ 2021-05-03 Alan Third <alan@idiocy.org> martin rudalics <rudalics@gmx.at> - Fix incorrect resizing behaviour on macOS (bug#48157, bug#48162) + Fix incorrect resizing behavior on macOS (bug#48157, bug#48162) * src/nsterm.m ([EmacsView viewDidResize:]): The drawing buffer can be resized independently of Emacs's idea of the frame size. @@ -25946,7 +27576,7 @@ * lisp/minibuffer.el (minibuffer--sort-by-length-alpha): New function. (minibuffer--sort-by-position): New function extracted from `completion-all-sorted-completions`. - (completion-all-sorted-completions): Use use them. + (completion-all-sorted-completions): Use them. 2021-04-19 Daniel Mendler <mail@daniel-mendler.de> @@ -27427,10 +29057,10 @@ 2021-04-09 Mattias Engdegård <mattiase@acm.org> - Fix condition-case optimiser bug + Fix condition-case optimizer bug * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't - perform incorrect optimisations when a condition-case variable shadows + perform incorrect optimizations when a condition-case variable shadows another lexical variable. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): New test case. @@ -27539,7 +29169,7 @@ Self-TCO in `condition-case` error handlers - * lisp/emacs-lisp/cl-macs.el (cl--self-tco): Recognise + * lisp/emacs-lisp/cl-macs.el (cl--self-tco): Recognize `condition-case` handlers as being in the tail position. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels): Extend test. @@ -28025,7 +29655,7 @@ 2021-04-05 Stefan Kangas <stefan@marxist.se> - Remove local uniquify functions in favour of seq-uniq + Remove local uniquify functions in favor of seq-uniq * lisp/emacs-lisp/seq.el (seq-uniq): Add autoload cookie. * lisp/pcomplete.el: (pcomplete-uniquify-list): Use seq-uniq. @@ -28051,7 +29681,7 @@ Obsolete local list functions in shadowfile.el - * lisp/shadowfile.el (shadow-union): Make obsolete in favour of + * lisp/shadowfile.el (shadow-union): Make obsolete in favor of cl-union. Update callers. (shadow-find): Make into obsolete function alias for seq-find. Update callers. @@ -30354,7 +31984,7 @@ 2021-03-18 Mattias Engdegård <mattiase@acm.org> - Optimise tail calls in `and` and `or` forms in `cl-labels` functions + Optimize tail calls in `and` and `or` forms in `cl-labels` functions * lisp/emacs-lisp/cl-macs.el (cl--self-tco): Handle `and` and `or`. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels): @@ -30472,7 +32102,7 @@ 2021-03-18 Lars Ingebrigtsen <larsi@gnus.org> - Recognise "Verify password" as a password prompt + Recognize "Verify password" as a password prompt * lisp/comint.el (comint-password-prompt-regexp): Also react to "Verify password" (output by "zip -e") (bug#47209). @@ -34432,7 +36062,7 @@ * lisp/emacs-lisp/rx.el (rx): Add (pred stringp) to avoid type errors, and replace the `pred` clause for the actual match with something that - works with pcase-let(*) without being optimised away. + works with pcase-let(*) without being optimized away. * test/lisp/emacs-lisp/rx-tests.el (rx-pcase): Add test cases. 2021-02-26 Stefan Kangas <stefan@marxist.se> @@ -36379,7 +38009,7 @@ test/lisp/calendar/icalendar-resources/import-rrule-yearly.diary-iso: * test/lisp/calendar/icalendar-tests.el (icalendar-convert-anniversary-to-ical): - Match new diary-anniversary/yearly-rrule behaviour. + Match new diary-anniversary/yearly-rrule behavior. * lisp/calendar/icalendar.el (icalendar--datestring-to-isodate): Add year-shift option. (icalendar--convert-anniversary-to-ical): Shift @@ -36799,7 +38429,7 @@ * lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Keep `minor-modes' updated. * src/buffer.c (bset_minor_modes, Fmake_indirect_buffer) - (reset_buffer, init_buffer_once): Initialise `minor-modes'. + (reset_buffer, init_buffer_once): Initialize `minor-modes'. (syms_of_buffer): Add `minor-modes' as a new permanently-local variable. @@ -37176,10 +38806,10 @@ 2021-02-12 Mattias Engdegård <mattiase@acm.org> - Avoid traversing dead `if` branches in bytecode optimiser + Avoid traversing dead `if` branches in bytecode optimizer There is no point in traversing conditional branches that are - statically known never to be executed. This saves some optimisation + statically known never to be executed. This saves some optimization effort, but more importantly prevents variable assignments and references in those branches from blocking effective constant propagation. @@ -37189,9 +38819,9 @@ assignments. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form): - Rewrite the (tail) recursion into an explicit loop. Normalise a + Rewrite the (tail) recursion into an explicit loop. Normalize a return value of (quote nil) to nil, for easier subsequent - optimisations. + optimizations. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't traverse dead `if` branches. Use unconditional traversion context when possible. @@ -37751,7 +39381,7 @@ Make texinfmt-version variable obsolete * lisp/textmodes/texinfmt.el (texinfmt-version): Make variable and - command obsolete in favour of 'emacs-version'. + command obsolete in favor of 'emacs-version'. (texinfo-format-region, texinfo-format-buffer-1): Use 'emacs-version' instead of above obsolete variable. @@ -38422,7 +40052,7 @@ (let ((x (+ 2 3))) (f x)) => (f 5) This reduces code size, eliminates stack operations, and enables - further optimisations. The implementation is conservative, and is + further optimizations. The implementation is conservative, and is strongly curtailed by the presence of variable mutation, conditions and loops. @@ -39605,7 +41235,7 @@ 2021-01-31 Alan Mackenzie <acm@muc.de> - Minimise the time Vminibuffer_list is in an inconsistent state (src/minibuf.c) + Minimize the time Vminibuffer_list is in an inconsistent state (src/minibuf.c) src/minibuf.c (get_minibuffer): Move the XSETCAR which writes the new minibuffer into Vminibuffer_list to immediately after the MB's creation, so @@ -40995,7 +42625,7 @@ string in the byte-code (so the two branches return `eq` strings). So, I think using `iso-2022-jp` is a bad idea here: it gives the - illusion that the the `charset` info exists, even it will be lost. + illusion that the `charset` info exists, even it will be lost. Eli discussed it with Handa-san a year ago, and they arrived at the conclusion that the charset information is indeed no longer important. @@ -41980,7 +43610,7 @@ * lisp/emacs-lisp/checkdoc.el (checkdoc-ispell-init): Always send the Lisp words to the process (bug#6221). This allows an existing - ispell process to be correctly initialised. + ispell process to be correctly initialized. 2021-01-20 Juri Linkov <juri@linkov.net> @@ -42277,7 +43907,7 @@ Parse square root sign in embedded Calc mode - * lisp/calc/calc-lang.el (math-read-big-rec): Recognise √ since it may + * lisp/calc/calc-lang.el (math-read-big-rec): Recognize √ since it may be used in Big mode. 2021-01-19 Mattias Engdegård <mattiase@acm.org> @@ -43847,7 +45477,7 @@ * lisp/textmodes/paragraphs.el (mark-paragraph): Revert eb090f65ceb0ae8a90829e911694348583135ba5 (bug#45318). This restores - the behaviour from Emacs 27 -- further work is needed on this patch. + the behavior from Emacs 27 -- further work is needed on this patch. 2021-01-07 Michael Albinus <michael.albinus@gmx.de> @@ -46631,7 +48261,7 @@ c-laomib-loop. Insert code which calls c-laomib-loop minimally, with the help of the new cache. - * lisp/progmodes/cc-mode.el (c-basic-common-init): Initialise the new cach + * lisp/progmodes/cc-mode.el (c-basic-common-init): Initialize the new cach (at mode start). (c-before-change): Invalidate the new cache. (c-fl-decl-start): Add an extra check (> (point) bod-lim) to prevent looping. @@ -48113,7 +49743,7 @@ 2020-12-14 Alan Mackenzie <acm@muc.de> - Optimise c-font-lock-<>-arglists, particularly for buffers with few <..> pairs + Optimize c-font-lock-<>-arglists, particularly for buffers with few <..> pairs * lisp/progmodes/cc-fonts.el (c-font-lock-<>-arglists): In place of a regexp search for a complicated and slow regexp, search simply for "<" outside of @@ -48134,7 +49764,7 @@ 2020-12-14 Alan Mackenzie <acm@muc.de> - Optimise c-parse-state for large buffers with few (if any) braces. + Optimize c-parse-state for large buffers with few (if any) braces. * lisp/progmodes/cc-engine.el (c-get-fallback-scan-pos): Search a maximum of 50,000 characters back for the two BODs. Return nil if we dont' find them. @@ -49332,7 +50962,7 @@ * test/src/casefiddle-tests.el (casefiddle-tests-char-casing): (upcase ?ß) now returns ?ẞ (U+7838), partly for technical reasons but - the previous behaviour was arbitrary and arguably less useful. + the previous behavior was arbitrary and arguably less useful. Correct upcasing of ß is normally SS, which is what Fupcase returns if given a string, or (for special purposes) ẞ. @@ -49421,7 +51051,7 @@ exactly what the output looks like (see https://github.com/JetBrains/kotlin/commit/\ ffe8ae3840d7b9bdc82170c8181031f05ced68bd) and there is no reason to - risk mismatches or expensive backtracking (bug#18109). Recognise + risk mismatches or expensive backtracking (bug#18109). Recognize 'info' level messages. Convert to rx. 2020-12-09 Lars Ingebrigtsen <larsi@gnus.org> @@ -49501,7 +51131,7 @@ 2020-12-09 Mattias Engdegård <mattiase@acm.org> - Recognise ß properly as a lower-case letter (bug#11309) + Recognize ß properly as a lower-case letter (bug#11309) ß was incorrectly treated as a caseless character and thus not matched by the regexp [[:lower:]] (or, in case-folding mode, [[:upper:]]). @@ -51762,7 +53392,7 @@ Remove keyboard anachronisms from tutorial * etc/tutorials/TUTORIAL: Don't keep referring to EDIT as if it were a - common name for the Meta key; since a few decades back it's labelled + common name for the Meta key; since a few decades back it's labeled Alt (or Option or ⌥ but those keys usually also have 'alt' engraved on them). Similarly, CTL is practically extinct and not worth mentioning. @@ -52863,7 +54493,7 @@ 2020-11-19 Mattias Engdegård <mattiase@acm.org> - More string-search optimisations + More string-search optimizations All-ASCII strings cannot have substrings with non-ASCII characters in them; use this fact to avoid searching entirely. @@ -54538,7 +56168,7 @@ 2020-11-09 Harald Jörg <haj@posteo.de> - cperl-mode: Indentation of ')' follows customisation + cperl-mode: Indentation of ')' follows customization * lisp/progmodes/cperl-mode.el (cperl-style-alist): Add cperl-close-paren-offset to the settings for PBP style. @@ -55612,7 +57242,7 @@ * lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): Only document the values we want to support, not the ones we actually support. - (define-minor-mode): Partially revert to previous behaviour. + (define-minor-mode): Partially revert to previous behavior. 2020-11-01 Stefan Kangas <stefan@marxist.se> @@ -55940,7 +57570,7 @@ Since a supplied test function can do anything, assoc is not side-effect-free (bug#44018). However, with only two arguments it is - pure and should be optimised accordingly. + pure and should be optimized accordingly. * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Remove 'assoc'. (byte-optimize-assoc): Constant-propagate through 2-arg assoc calls. @@ -56544,7 +58174,7 @@ Remove unused function in gdb-mi.el * lisp/progmodes/gdb-mi.el (gdb-var-evaluate-expression-handler): - Remove. (It was left behind in an old code reorganisation.) + Remove. (It was left behind in an old code reorganization.) 2020-10-27 Lars Ingebrigtsen <larsi@gnus.org> @@ -56877,7 +58507,7 @@ (shortdoc-section): Remove colors. (shortdoc-separator): New face. (shortdoc-display-group, shortdoc--display-function): Don't use - background colours, because that makes things harder to read. + background colors, because that makes things harder to read. Separate with a horizontal line instead. 2020-10-26 Andrea Corallo <akrl@sdf.org> @@ -57163,7 +58793,7 @@ * lisp/emacs-lisp/eldoc.el: (eldoc-echo-area-prefer-doc-buffer): Rename from eldoc-echo-area-prefer-doc-buffer - (eldoc-display-in-echo-area): Rework to honour + (eldoc-display-in-echo-area): Rework to honor eldoc-echo-area-prefer-doc-buffer. 2020-10-24 João Távora <joaotavora@gmail.com> @@ -58604,7 +60234,7 @@ mixal-mode: add missed instructions - Synchronises with latest released GNU MDK 1.2.11 + Synchronizes with latest released GNU MDK 1.2.11 * lisp/progmodes/mixal-mode.el (mixal-operation-codes-alist): Add missed instructions: SLB,SRB,JAE,JAO,JXE,JXO. @@ -58807,7 +60437,7 @@ (No mixed fonts): Remove references to MELPA. (How do the themes look like) (Enable and load, Load automatically) - (Configure options prior to loading, Customisation Options) + (Configure options prior to loading, Customization Options) (No mixed fonts, Command prompts, Mode line, Completion UIs) (Fringes, Line highlighting, Matching parentheses, Diffs) (Org mode blocks, Heading styles, Tweak colors (DIY)) @@ -58989,7 +60619,7 @@ Sanitize ical data in gnus-icalendar-event-from-ical * lisp/gnus/gnus-icalendar.el (gnus-icalendar-event-from-ical): - Sanitise the data before passing it on to the constructor. This + Sanitize the data before passing it on to the constructor. This avoids backtraces on icals with extra, unknown slots (bug#43057). 2020-10-16 Basil L. Contovounesios <contovob@tcd.ie> @@ -59039,7 +60669,7 @@ 2020-10-16 Lars Ingebrigtsen <larsi@gnus.org> - Restore vc-revision-other-window buffer-changing behaviour + Restore vc-revision-other-window buffer-changing behavior * lisp/vc/vc.el (vc-revision-other-window): This function used to change the current buffer, but this was changed in the previous @@ -59727,14 +61357,14 @@ Add more numeric shortdocs * lisp/emacs-lisp/shortdoc.el (shortdoc-section) - (shortdoc-example): Lighten up colours on light backgrounds. + (shortdoc-example): Lighten up colors on light backgrounds. 2020-10-11 Lars Ingebrigtsen <larsi@gnus.org> - Tweak shortdoc colours on light backgrounds + Tweak shortdoc colors on light backgrounds * lisp/emacs-lisp/shortdoc.el (shortdoc-section) - (shortdoc-example): Lighten up colours on light backgrounds. + (shortdoc-example): Lighten up colors on light backgrounds. 2020-10-11 Lars Ingebrigtsen <larsi@gnus.org> @@ -61516,10 +63146,10 @@ 2020-09-30 Lars Ingebrigtsen <larsi@gnus.org> - Fix isearch-group-* colours on low-colour displays + Fix isearch-group-* colors on low-colour displays * lisp/isearch.el (isearch-group-1): On low-colour displays, just - use the normal isearch colour (bug#43702). + use the normal isearch color (bug#43702). (isearch-group-2 etc): Ditto. 2020-09-30 Lars Ingebrigtsen <larsi@gnus.org> @@ -61595,13 +63225,13 @@ 2020-09-29 Lars Ingebrigtsen <larsi@gnus.org> - Fix emacsclient -c foo.txt behaviour with many frames + Fix emacsclient -c foo.txt behavior with many frames * lisp/server.el (server-execute): Pass in whether we opened a new frame or not (bug#43645). (server-switch-buffer): Use this to switch to the requested buffer in the new frame if we have "emacsclient -c foo.txt", and retain - the old behaviour if it's "emacsclient foo.txt". + the old behavior if it's "emacsclient foo.txt". 2020-09-29 Lars Ingebrigtsen <larsi@gnus.org> @@ -61815,7 +63445,7 @@ 2020-09-27 Mattias Engdegård <mattiase@acm.org> - Minor string-search optimisations (bug#43598) + Minor string-search optimizations (bug#43598) * src/fns.c (Fstring_search): Perform cheap all-ASCII checks before more expensive ones. Use a faster loop when searching for non-ASCII @@ -62673,7 +64303,7 @@ Speed up shr-insert slightly - * lisp/net/shr.el (shr-insert): Speed up regularising spaces -- + * lisp/net/shr.el (shr-insert): Speed up regularizing spaces -- the vast majority of the spaces are already OK, so transforming " " to " " just takes time. @@ -64644,7 +66274,7 @@ 2020-09-11 Mattias Engdegård <mattiase@acm.org> - Calc: regularise test names + Calc: regularize test names * test/lisp/calc/calc-tests.el (calc-remove-units, calc-extract-units) (calc-convert-units, calc-bug-23889, calc-trig, calc-format-radix) @@ -65193,7 +66823,7 @@ 2020-09-08 João Távora <joaotavora@gmail.com> - Change icomplete-show-matches-on-no-input behaviour for Icomplete only + Change icomplete-show-matches-on-no-input behavior for Icomplete only (Bug#19032), bug#43120 @@ -65329,7 +66959,7 @@ 2020-09-07 João Távora <joaotavora@gmail.com> - Better explain behaviour of icomplete--sorted-completions + Better explain behavior of icomplete--sorted-completions * lisp/icomplete.el (icomplete--sorted-completions): Overhaul comment @@ -66135,7 +67765,7 @@ wdired-do-renames: Speed up for long Emacs sessions `dired-rename-file' calls unconditionally `dired-rename-subdir'. - The second function performs performs a loop on all the Emacs + The second function performs a loop on all the Emacs buffers; this step is only needed if FILE is a directory (bug#32899). In a long lived Emacs session, this can make a difference @@ -66700,9 +68330,9 @@ 2020-08-30 Lars Ingebrigtsen <larsi@gnus.org> - Tweak background colours in shr when there's indentation + Tweak background colors in shr when there's indentation - * lisp/net/shr.el (shr-fill-line): Get the background colour right + * lisp/net/shr.el (shr-fill-line): Get the background color right for the indentation, too. 2020-08-30 Mauro Aranda <maurooaranda@gmail.com> @@ -67615,7 +69245,7 @@ 2020-08-25 Lars Ingebrigtsen <larsi@gnus.org> - Extend background colours in shr + Extend background colors in shr * lisp/net/shr.el (shr-colorize-region): Extend backgrounds to the end (bug#43031). This avoid ragged edges to the right when, for @@ -68577,7 +70207,7 @@ * lisp/simple.el (read-extended-command): Allow doing interactive searches over the completions (bug#12490). This restores the - behaviour from Emacs 23 that was lost in Emacs 24. + behavior from Emacs 23 that was lost in Emacs 24. 2020-08-19 Grégoire Jadi <gregoire.jadi@univ-nantes.fr> @@ -68647,7 +70277,7 @@ 2020-08-19 Tino Calancha <tino.calancha@gmail.com> - Make thingatpt recognise files names with @ in them + Make thingatpt recognize files names with @ in them * lisp/thingatpt.el (thing-at-point-file-name-chars): Add @ (Bug#24606). @@ -71552,7 +73182,7 @@ Tweak how whitespace-mode marks the end of the buffer * lisp/whitespace.el (whitespace-missing-newline-at-eof): Change - the colours to not be as angry. + the colors to not be as angry. (whitespace-color-on): Don't mark the end of the buffer if point is there. @@ -73083,7 +74713,7 @@ (Bug#42563) - For some time, Eldoc has has some Elisp-specific code that shouldn't + For some time, Eldoc has some Elisp-specific code that shouldn't live there, but in elisp-mode.el. This can be fixed in Emacs master, but since ElDoc is distributed in GNU Elpa and is meant to work with Emacs 26 and 27, this means that that elisp-specific code must still @@ -73232,11 +74862,11 @@ 2020-07-25 Mattias Engdegård <mattiase@acm.org> - Optimise 3-arg +, - and * + Optimize 3-arg +, - and * Turn (+ a b c) into (+ (+ a b) c), and do the same for - and *. The 2-arg operations have their own bytecode which results in a 1.5× - speed-up. Furthermore, the transform enables other optimisations; for + speed-up. Furthermore, the transform enables other optimizations; for example, (+ a 1 b) -> (+ (1+ a) b). * lisp/emacs-lisp/byte-opt.el (byte-optimize-plus, byte-optimize-minus) @@ -73335,7 +74965,7 @@ Do this conservatively for now: if the ElDoc helper buffer (as returned by eldoc--doc-buffer) is visible and showing documentation - for the very same "situation" (as computed by the the new + for the very same "situation" (as computed by the new eldoc--request-state helper), don't request that documentation from sources again. @@ -73691,12 +75321,12 @@ 2020-07-17 Lars Ingebrigtsen <larsi@gnus.org> - Fix NOT-CURRENT behaviour in text-property-search-backward + Fix NOT-CURRENT behavior in text-property-search-backward * lisp/emacs-lisp/text-property-search.el - (text-property-search-backward): Fix inconsistent behaviour of + (text-property-search-backward): Fix inconsistent behavior of S-TAB in eww (and other callers that use the NOT-CURRENT - behaviour) when there are adjacent elements + behavior) when there are adjacent elements (bug#39239). 2020-07-17 Xu Chunyang <xuchunyang56@gmail.com> @@ -74619,7 +76249,7 @@ (eldoc-documentation-compose, eldoc-documentation-default): Handle non-nil, non-string values of elements of eldoc-documentation-functions. Use eldoc--handle-multiline. - (eldoc-print-current-symbol-info): Honour non-nil, non-string + (eldoc-print-current-symbol-info): Honor non-nil, non-string values returned by eldoc-documentation-callback. (eldoc--make-callback): Now also a function. (eldoc-documentation-default, eldoc-documentation-compose): Tweak docstring. @@ -74671,7 +76301,7 @@ 2020-07-07 Mattias Engdegård <mattiase@acm.org> - Optimise assoc and rassoc with symbol key to assq and rassq + Optimize assoc and rassoc with symbol key to assq and rassq This is the same transformation made for member to memq. @@ -74703,9 +76333,9 @@ 2020-07-06 Mattias Engdegård <mattiase@acm.org> - Simplify byte-code optimisation of pure functions + Simplify byte-code optimization of pure functions - Most pure functions need no explicit optimisation; we can do away with + Most pure functions need no explicit optimization; we can do away with almost all uses of byte-optimize-predicate (now renamed to byte-optimize-constant-args, since it is not just for predicates). Also remove some superfluous arity warnings. @@ -74953,7 +76583,7 @@ CC Mode: optimize for repeated simple operations. - Do this by recognising that unterminated strings in a buffer are typically + Do this by recognizing that unterminated strings in a buffer are typically going to be few and close together. Also optimize code for C++ attributes. * lisp/progmodes/cc-defs.el (c-previous-single-property-change): New macro. @@ -75269,7 +76899,7 @@ * lisp/gnus/gnus-cloud.el (gnus-cloud-download-data): Return the result of calling `gnus-cloud-update-all' when UPDATE is t, as per the - documented behaviour. (Bug#40280) + documented behavior. (Bug#40280) 2020-06-23 Andrea Corallo <akrl@sdf.org> @@ -75572,7 +77202,7 @@ * lisp/progmodes/project.el (project-shell): Improve docstring to include information about an implementation detail. - * lisp/progmodes/project.el (project-eshell): Modelled after + * lisp/progmodes/project.el (project-eshell): Modeled after 'project-shell', change default behavior such that we don't create too many eshell buffers by default. Use universal argument to create subsequent buffers. @@ -76135,7 +77765,7 @@ still don't work). (tramp-crypt-handle-access-file): New defun. (tramp-crypt-do-copy-or-rename-file): Short track if both files - are on a crypted remote dir. + are on an encrypted remote dir. * lisp/net/tramp.el (file-notify-rm-watch): Declare. (tramp-inhibit-progress-reporter): New defvar. @@ -76433,14 +78063,14 @@ 2020-06-10 Mattias Engdegård <mattiase@acm.org> - Improved light/dark colour predicate (bug#41544) + Improved light/dark color predicate (bug#41544) - Add a predicate, color-dark-p, for deciding whether a colour is more + Add a predicate, color-dark-p, for deciding whether a color is more readable with black or white as contrast. It has experimentally been shown to be more accurate and robust than the various methods currently employed. - The new predicate compares the relative luminance of the colour to an + The new predicate compares the relative luminance of the color to an empirically determined cut-off value, and it seems to get it right in almost all cases, with no value leading to outright bad results. @@ -76602,14 +78232,14 @@ 2020-06-08 Mattias Engdegård <mattiase@acm.org> - More robust NS hex colour string parsing + More robust NS hex color string parsing Invalid arguments to color-values, such as "#abcdefg" or "#1234", or valid ones like "#111222333", should not yield nonsense values. * src/nsterm.m (ns_get_color): Only accept "#RGB" strings with 1-4 digits per components, equal number - of digits each, and no trailing characters. Parse 12-bit colours + of digits each, and no trailing characters. Parse 12-bit colors correctly. 2020-06-08 Michael Albinus <michael.albinus@gmx.de> @@ -76753,7 +78383,7 @@ * lisp/emacs-lisp/comp.el (comp-symbol-values-optimizable): New defconst. - (comp-function-call-maybe-remove): New logic to to remove + (comp-function-call-maybe-remove): New logic to remove unnecessary `symbol-value' calls. 2020-06-07 Juri Linkov <juri@linkov.net> @@ -77057,7 +78687,7 @@ Make color-distance symmetric and more accurate * src/xfaces.c (color_distance): Don't throw away the low 8 bits of - the colours, and make the function symmetric (bug41544) + the colors, and make the function symmetric (bug41544) (Fcolor_distance): Add caution about this not being a true metric. * test/src/xfaces-tests.el: New file. @@ -77585,7 +79215,7 @@ * lisp/international/ucs-normalize.el (ucs-normalize-hfs-nfd-post-read-conversion) (ucs-normalize-hfs-nfd-pre-write-conversion): - Use save-match-data to avoid match data clobber in normalisation. + Use save-match-data to avoid match data clobber in normalization. * test/lisp/international/ucs-normalize-tests.el (ucs-normalize-save-match-data): New test. @@ -79152,7 +80782,7 @@ 2020-05-14 Mattias Engdegård <mattiase@acm.org> - Fix customisation of mouse-drag-and-drop-region (bug#41251) + Fix customization of mouse-drag-and-drop-region (bug#41251) Reported by David Ponce. @@ -79588,12 +81218,12 @@ cc-mode: extend regexp used by ‘c-or-c++-mode’ * lisp/progmodes/cc-mode.el (c-or-c++-mode--regexp): Expand the regexp to - match some more C++-only constructs and recognise a few more standard + match some more C++-only constructs and recognize a few more standard C++ header files. Also make sure identifiers start with non-digit. (c-or-c++-mode): Add ‘(interactive)’ declaration. * test/lisp/progmodes/cc-mode-tests.el (c-or-c++-mode): Add test case - for the newly recognised constructs. + for the newly recognized constructs. 2020-05-09 Michal Nazarewicz <mina86@mina86.com> @@ -81362,7 +82992,7 @@ * src/nsterm.m (ns_parent_window_rect): New function. (NS_PARENT_WINDOW_LEFT_POS): (NS_PARENT_WINDOW_TOP_POS): Move to nsterm.m and simplify. - (ns_set_offset): Fix strange behaviours when using negative values. + (ns_set_offset): Fix strange behaviors when using negative values. (ns_set_window_size): (ns_set_undecorated): ([EmacsView windowDidResize:]): @@ -81478,7 +83108,7 @@ 2020-04-16 Mattias Engdegård <mattiase@acm.org> - Regularise some file-matching regexps + Regularize some file-matching regexps * admin/authors.el (authors-obsolete-files-regexps) (authors-renamed-files-regexps): Replace ^ and $ with \` and \'. @@ -82008,7 +83638,7 @@ * lisp/progmodes/cl-font-lock.el: Fix header and make it a minor mode - Change copyright to FSF and licence to GPLv3+. + Change copyright to FSF and license to GPLv3+. Tweak Commentary (the code doesn't seem to provide the lambda prettification mentioned). @@ -82401,7 +84031,7 @@ Avoid expensive recoding for ASCII identity cases (bug#40407) - Optimise for the common case of encoding or decoding an ASCII-only + Optimize for the common case of encoding or decoding an ASCII-only string using an ASCII-compatible coding, for file names in particular. * src/coding.c (string_ascii_p): New function. @@ -82733,7 +84363,7 @@ 2020-04-03 Ashish SHUKLA <ashish.is@lostca.se> - configure.ac: switch to POSIX sh behaviour + configure.ac: switch to POSIX sh behavior 2020-04-03 Federico Tedin <federicotedin@gmail.com> @@ -84145,7 +85775,7 @@ 2020-03-10 AndreaCorallo <akrl@sdf.org> - * Fix store_function_docstring for for native functions + * Fix store_function_docstring for native functions Do not Nil native_doc fields. This will be naturally dumped by pdumper. This was affecting dumped functions. @@ -84702,7 +86332,7 @@ (ns_dumpglyphs_stretch): Remove unused variable. (ns_term_init): ([EmacsWindow setAppearance]): Only compile on macOS. - (ns_mouse_position): Make sure f is initialised on GNUstep. + (ns_mouse_position): Make sure f is initialized on GNUstep. * src/emacs.c (main): Move allocation of autorelease pool to before first use. @@ -86421,7 +88051,7 @@ 2019-11-17 Prepend "unsigned" to MINI_GMP_LIMB_TYPE 2019-11-17 Enable testing with different limb sizes (types) 2019-11-20 Use already defined constants - 2019-11-09 Avoid undefined behaviour with small limb sizes + 2019-11-09 Avoid undefined behavior with small limb sizes 2020-01-26 Paul Eggert <eggert@cs.ucla.edu> @@ -89792,7 +91422,7 @@ 2019-12-26 Mattias Engdegård <mattiase@acm.org> - Optimise 'while' bodies for effect + Optimize 'while' bodies for effect * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Treat all expressions in the body of 'while' as for-effect, @@ -95751,7 +97381,7 @@ * lisp/progmodes/compile.el (compilation-parse-errors): When 'omake' is enabled, allow error messages to be indented by 0 or 6 spaces instead of any number of spaces, to avoid pathological - behaviour. + behavior. (compilation-error-regexp-alist-alist): Anchor the 'omake' pattern to bol for performance. Repair the 'ruby-Test::Unit' pattern, which relied on the previously over-generous 'omake' hack. @@ -95774,7 +97404,7 @@ Speed up 'maven' compilation error message regexp - Anchor the regexp at line-start to prevent quadratic behaviour when + Anchor the regexp at line-start to prevent quadratic behavior when it doesn't match (bug#39595). It's unclear whether the type tag, like [ERROR], is always present; we keep it optional just in case. @@ -96898,7 +98528,7 @@ Calc: fix interval entry (bug#39040) - * lisp/calc/calc.el (calcDigit-start): Initialise calc-prev-char to + * lisp/calc/calc.el (calcDigit-start): Initialize calc-prev-char to something more reasonable, so that non-algebraic entry of intervals whose start is a single digit, like (1..10), works properly. Reported by Michel Schinz. @@ -96914,7 +98544,7 @@ flymake: fix typo in variable binding (bug#38752) - This mistake was found by an experimental elisp optimiser. + This mistake was found by an experimental elisp optimizer. * lisp/progmodes/flymake-proc.el (flymake-proc-stop-all-syntax-checks): Add missing brackets. @@ -98016,7 +99646,7 @@ Improve sorting of flex completion style with non-nil minibuffer-default - This affects the behaviour of flex completion when there is a default + This affects the behavior of flex completion when there is a default completion and the user hasn't entered any input pattern to flex-match against. It is most visible when icomplete-mode or fido-mode are being used in conjunctio. @@ -98194,7 +99824,7 @@ * lisp/emacs-lisp/regexp-opt.el (regexp-opt): * doc/lispref/searching.texi (Regexp Functions): Be more specific about how the KEEP-ORDER argument actually works. - If nil, the regexp guarantees a longest match; this is the behaviour + If nil, the regexp guarantees a longest match; this is the behavior that many callers implicitly rely on. 2019-12-18 Michael Albinus <michael.albinus@gmx.de> @@ -100773,7 +102403,7 @@ Handle FC_CHARCELL in xftfont_open * src/xftfont.c (xftfont_open): FC_CHARCELL is apparently an alias - for FC_DUAL used in some east Asian fonts (bug#35079). Modelled + for FC_DUAL used in some east Asian fonts (bug#35079). Modeled after a patch suggested by Kenichi Handa. 2019-11-17 Eli Zaretskii <eliz@gnu.org> @@ -100924,7 +102554,7 @@ When using this option and editing input, some transient situations may arise that lead to file-name shadowing, but that shouldn't - necessarily lead to auto-delete behaviour, which will be surprising. + necessarily lead to auto-delete behavior, which will be surprising. In '/foo/x/bar', if the user deletes the 'x', shadowing occurs, but probably shouldn't. So, somewhat like ido-mode, only auto-tidy @@ -101640,7 +103270,7 @@ Add extra bindings to fido-mode. * lisp/icomplete.el (icomplete-fido-mode-map) : Add arrows and other - bindings to reproduce ido behaviour. + bindings to reproduce ido behavior. 2019-11-09 Glenn Morris <rgm@gnu.org> @@ -104052,9 +105682,9 @@ 2019-10-23 Lars Ingebrigtsen <larsi@gnus.org> - Make Gnus recognise "git am" diffs in all groups + Make Gnus recognize "git am" diffs in all groups - * lisp/gnus/mm-uu.el (mm-uu-diff-groups-regexp): Recognise diffs + * lisp/gnus/mm-uu.el (mm-uu-diff-groups-regexp): Recognize diffs in all groups (bug#32730). 2019-10-22 Stefan Kangas <stefankangas@gmail.com> @@ -106752,7 +108382,7 @@ 2019-10-09 Lars Ingebrigtsen <larsi@gnus.org> - Fix possible initialisation error in shell-mode-map + Fix possible initialization error in shell-mode-map * lisp/shell.el (shell-mode-map): Comint is the parent mode, so there's no need to explicitly make it a parent map here (bug#25187). @@ -107100,10 +108730,10 @@ 2019-10-06 Lars Ingebrigtsen <larsi@gnus.org> - Fix the colours on Motif horizontal scroll bars + Fix the colors on Motif horizontal scroll bars * src/xterm.c (x_create_horizontal_toolkit_scroll_bar): Use the - same foreground/background colours as the vertical scroll bar + same foreground/background colors as the vertical scroll bar (bug#37359). 2019-10-06 Lars Ingebrigtsen <larsi@gnus.org> @@ -107954,7 +109584,7 @@ C++ Mode: Fontify correctly declarators with identifier preceded by & - The problem was bar in the following being spuriously recognised as a + The problem was bar in the following being spuriously recognized as a function, and foo as a type, as though the & were a *: Foo foo (&bar);. * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): New variable @@ -108421,9 +110051,9 @@ 2019-09-29 Lars Ingebrigtsen <larsi@gnus.org> - Allow customising pdf-to-text parameters + Allow customizing pdf-to-text parameters - * lisp/doc-view.el (doc-view-pdf->txt): Allow customising the + * lisp/doc-view.el (doc-view-pdf->txt): Allow customizing the parameters (bug#8519). (doc-view-pdftotext-program-args): New variable. @@ -110922,12 +112552,12 @@ 2019-09-14 Lars Ingebrigtsen <larsi@gnus.org> - Add default foreground colours to SVG images + Add default foreground colors to SVG images - * lisp/net/shr.el (svg--wrap-svg): Add a default foreground colour + * lisp/net/shr.el (svg--wrap-svg): Add a default foreground color to SVG images (bug#37159). This helps with images like the ones in https://en.wikipedia.org/wiki/Banach_fixed-point_theorem that - specify no foreground or background colours. + specify no foreground or background colors. (shr-parse-image-data): Use it. 2019-09-14 Lars Ingebrigtsen <larsi@gnus.org> @@ -111732,7 +113362,7 @@ * lisp/epa-file.el (epa-file--replace-text): Gingerly replace the text in the buffer to preserve as many markers as possible - (bug#34720). This emulates the behaviour of Finsert_file_contents + (bug#34720). This emulates the behavior of Finsert_file_contents more accurately. (epa-file-decode-and-insert): Remove compat code. (epa-file-insert-file-contents): Use the new function. @@ -111744,7 +113374,7 @@ Repair change to compilation-context-lines (bug#36832) * lisp/progmodes/compile.el (compilation-set-window): - Restore proper behaviour when compilation-context-lines is nil, + Restore proper behavior when compilation-context-lines is nil, which is the default. 2019-09-04 Michael Albinus <michael.albinus@gmx.de> @@ -112424,7 +114054,7 @@ 2019-08-29 Lars Ingebrigtsen <larsi@gnus.org> - Tweak shr background colour handling + Tweak shr background color handling * lisp/net/shr.el (shr-fill-line): Extend the background to the end of the line when folding lines. @@ -113203,7 +114833,7 @@ 2019-08-21 Nicolas Petton <nicolas@petton.fr> - * etc/HISTORY: Add Emacs 26.3 release release date. + * etc/HISTORY: Add Emacs 26.3 release date. 2019-08-21 Nicolas Petton <nicolas@petton.fr> @@ -114532,7 +116162,7 @@ * lisp/progmodes/cc-engine.el (c-beginning-of-statement-1): Check for operators which cannot start a statement, which may follow a closing brace. - Don't recognise an end of statement in such a case. + Don't recognize an end of statement in such a case. * lisp/progmodes/cc-langs.el (c-operator-re, c-bin-tern-operators) (c-unary-operators, c-non-after-{}-operators, c-non-after-{}-ops-re): New lang @@ -115007,11 +116637,11 @@ 2019-08-04 Lars Ingebrigtsen <larsi@gnus.org> - Capitalise a couple of node names + Capitalize a couple of node names - * doc/lispref/functions.texi (Advising Functions): Capitalise node + * doc/lispref/functions.texi (Advising Functions): Capitalize node names (bug#17717). - (Advice Combinators, Porting Old Advice): Capitalise. + (Advice Combinators, Porting Old Advice): Capitalize. 2019-08-04 Michael Heerdegen <michael_heerdegen@web.de> @@ -115401,9 +117031,9 @@ 2019-08-02 Lars Ingebrigtsen <larsi@gnus.org> - Make Info-find-file ensure that Info is initialised + Make Info-find-file ensure that Info is initialized - * lisp/info.el (Info-find-file): Ensure that Info is initialised, + * lisp/info.el (Info-find-file): Ensure that Info is initialized, because libraries call that function (bug#19880). 2019-08-02 Lars Ingebrigtsen <larsi@gnus.org> @@ -115520,7 +117150,7 @@ This fixes bug #36801. * lisp/progmodes/cc-langs.el (c-pre-lambda-tokens-re): Use c-make-keywords-re - rather than regexp-opt to make an optimised regexp out of a list of tokens. + rather than regexp-opt to make an optimized regexp out of a list of tokens. 2019-08-02 Lars Ingebrigtsen <larsi@gnus.org> @@ -115620,7 +117250,7 @@ Document batch-byte-compile directory behavior * lisp/emacs-lisp/bytecomp.el (batch-byte-compile): Document the - behaviour with directories (bug#20867). + behavior with directories (bug#20867). 2019-08-01 Stefan Monnier <monnier@iro.umontreal.ca> @@ -116185,7 +117815,7 @@ 2019-07-30 Lars Ingebrigtsen <larsi@gnus.org> - Use decoded time accessors in in em-ls + Use decoded time accessors in em-ls * lisp/eshell/em-ls.el (eshell-ls-file): Use decoded time accessors. @@ -117112,7 +118742,7 @@ 2019-07-25 Lars Ingebrigtsen <larsi@gnus.org> - Tweak the behaviour of thing-at-point--end-of-sexp + Tweak the behavior of thing-at-point--end-of-sexp * lisp/thingatpt.el (thing-at-point--end-of-sexp): Don't return nil when called with point between two parentheses (bug#29499). @@ -117164,7 +118794,7 @@ Make `C-u w' in the Gnus Summary buffer open externally - * doc/misc/gnus.texi (Article Commands): Document new behaviour. + * doc/misc/gnus.texi (Article Commands): Document new behavior. * lisp/gnus/gnus-sum.el (gnus-shorten-url): New function. (gnus-summary-browse-url): Change function to make `C-u' use the @@ -117760,7 +119390,7 @@ * doc/lispref/hash.texi (Creating Hash, Defining Hash): * src/fns.c (Fsxhash_eq, Fsxhash_eql, Fsxhash_equal): Say that hashes are fixnums. - (Fmake_hash_table): Say that that an integer rehash-size + (Fmake_hash_table): Say that an integer rehash-size should be a fixnum. * doc/lispref/hash.texi (Defining Hash): Say that hash and comparison functions should be consistent and pure, and should @@ -118540,9 +120170,9 @@ 2019-07-14 Lars Ingebrigtsen <larsi@gnus.org> - Tweak background colour handling in shr + Tweak background color handling in shr - * lisp/net/shr.el (shr-fill-line): Keep the background colour on + * lisp/net/shr.el (shr-fill-line): Keep the background color on the newline and the indentation. 2019-07-14 Lars Ingebrigtsen <larsi@gnus.org> @@ -119009,7 +120639,7 @@ * lisp/epg.el (epg-start-encrypt) * lisp/gnus/mml-sec.el (mml-secure-epg-encrypt): When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's - email address (in addition to its old behaviour) will also be used + email address (in addition to its old behavior) will also be used to set gpg's "--sender email@domain" option. 2019-07-12 Paul Eggert <eggert@cs.ucla.edu> @@ -119220,7 +120850,7 @@ Support program switches in 'comint-run' command * etc/NEWS: - * doc/emacs/misc.texi: Describe new behaviour (bug#33037). + * doc/emacs/misc.texi: Describe new behavior (bug#33037). * lisp/comint.el (comint-run): Add optional SWITCHES argument. With prefix argument C-u, prompt for SWITCHES. @@ -120365,11 +121995,11 @@ 2019-07-04 Mattias Engdegård <mattiase@acm.org> - Optimise more inputs to `regexp-opt' (bug#36444) + Optimize more inputs to `regexp-opt' (bug#36444) Use a more precise test to determine whether the input to `regexp-opt' - is safe to optimise when KEEP-ORDER is non-nil, permitting more inputs - to be optimised than before. For example, ("good" "goal" "go") is now + is safe to optimize when KEEP-ORDER is non-nil, permitting more inputs + to be optimized than before. For example, ("good" "goal" "go") is now accepted. * lisp/emacs-lisp/regexp-opt.el (regexp-opt): @@ -121167,7 +122797,7 @@ 2019-06-27 Lars Ingebrigtsen <larsi@gnus.org> - Mention the new emacsclient -a/--eval behaviour + Mention the new emacsclient -a/--eval behavior 2019-06-27 Lars Ingebrigtsen <larsi@gnus.org> @@ -121345,11 +122975,11 @@ `replace-regexp-in-string' omits the first START characters of the input string in its return value. This is a clear bug, but fixing it - probably causes more trouble; document the behaviour instead (bug#36372). + probably causes more trouble; document the behavior instead (bug#36372). * doc/lispref/searching.texi (Search and Replace) * lisp/subr.el (replace-regexp-in-string): - Document current behaviour. + Document current behavior. 2019-06-26 Stefan Monnier <monnier@iro.umontreal.ca> @@ -121612,7 +123242,7 @@ * lisp/view.el (view-search): Jump to the next/prev occurrence of the search, even if it's displayed in the buffer (bug#18131). - This seems more logical than the previous (undocumented) behaviour. + This seems more logical than the previous (undocumented) behavior. 2019-06-25 Paul Eggert <eggert@cs.ucla.edu> @@ -121796,7 +123426,7 @@ (goto-address-uri-schemes): Ditto. (goto-address-url-regexp): Use them to compose the final regexp. - * lisp/net/goto-addr.el: The URI schemes to be recognised by + * lisp/net/goto-addr.el: The URI schemes to be recognized by `goto-address-mode' were not regexp-quoted (Bug#23343). 2019-06-25 Tino Calancha <f92capac@gmail.com> @@ -122384,7 +124014,7 @@ Make ls-lisp--dired ape dired-noselect more closely - * lisp/ls-lisp.el (ls-lisp--dired): Emulate the behaviour of + * lisp/ls-lisp.el (ls-lisp--dired): Emulate the behavior of non-ls-lisp.el dired better by defaulting to default-directory as dired-noselect does (bug#35390). @@ -125326,7 +126956,7 @@ (global-auto-revert-mode): Don't use `after-set-visited-file-name-hook' here. (auto-revert-set-visited-file-name): Rename from - `auto-revert--global-set-visited-file-name' and generalise. + `auto-revert--global-set-visited-file-name' and generalize. * test/lisp/autorevert-tests.el (auto-revert-test06-write-file): New. 2019-06-11 Michael Albinus <michael.albinus@gmx.de> @@ -127406,7 +129036,7 @@ * lisp/emacs-lisp/package.el (package-install-from-archive): Fix last change - Don't place the unibyte content of of the downloaded file into + Don't place the unibyte content of the downloaded file into a multibyte buffer. 2019-05-24 Michael Albinus <michael.albinus@gmx.de> @@ -129768,10 +131398,10 @@ 2019-05-05 Mattias Engdegård <mattiase@acm.org> - Reorganise (auto-)revert nodes in the manual + Reorganize (auto-)revert nodes in the manual Put all information about auto-revert into a section of its own, and - organise the text in a more logical way. Previously it was mainly + organize the text in a more logical way. Previously it was mainly described in the section about reverting (bug#35418). * doc/emacs/files.texi (Files): Adjust menu. @@ -132713,7 +134343,7 @@ * lisp/progmodes/cc-engine.el (c-looking-at-or-maybe-in-bracelist): On detection of such a ref-qualifier, set braceassignp to nil. When this variable has a nil value, return nil as the value of the function. On - encountering a } when scanning backwards, recognise this as the end of a + encountering a } when scanning backwards, recognize this as the end of a previous construct and stop the scan. 2019-04-12 Stefan Monnier <monnier@iro.umontreal.ca> @@ -136964,7 +138594,7 @@ * doc/lispref/searching.texi (Regular Expression Functions): * etc/NEWS: - Document the new behaviour. + Document the new behavior. * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Return a never-match regexp for empty inputs. @@ -138681,7 +140311,7 @@ xref-find-definitions or xref-find-definitions-other-window how to choose a window for the *xref* buffer or how to find windows for displaying the results after choosing a candidate. This patch makes - that task easier, but keeps the current behaviour intact. + that task easier, but keeps the current behavior intact. * lisp/progmodes/xref.el (xref--show-pos-in-buf): Simplify. @@ -139441,7 +141071,7 @@ image-mode: Make parameters buffer-local Image parameters were treated as image specific, but because they - actually were global variables, their behaviour transferred to new + actually were global variables, their behavior transferred to new images. * lisp/image-mode.el (image-transform-resize, image-transform-scale) (image-transform-rotation): Declare with defvar-local. (Bug#33990) @@ -139581,7 +141211,7 @@ To resolve this confusion, never cycle with C-M-i in icomplete: non-ambiguous cycling can be achieved with C-. and C-, - The former behaviour can still be restored with: + The former behavior can still be restored with: (define-key icomplete-minibuffer-map (kbd "C-M-i") 'minibuffer-force-complete) @@ -139706,7 +141336,7 @@ really reindented. Rewrite comment. (electric-layout-allow-duplicate-newlines): New variable. (electric-layout-post-self-insert-function-1): Rewrite comments. - Honours electric-layout-allow-duplicate-newlines. Don't reindent + Honors electric-layout-allow-duplicate-newlines. Don't reindent previous line because racecar. * test/lisp/electric-tests.el: New test. @@ -139721,7 +141351,7 @@ Remove tests of electric-pair-mode and CC-based modes - The behaviour previously observed in cc-mode-based-modes (and every + The behavior previously observed in cc-mode-based-modes (and every other major-mode) when electric-pair-mode or electric-layout-mode is turned on may no longer be observed: this because CC-mode goes around the generic implementation of electric-pair-mode. @@ -140848,10 +142478,10 @@ 2019-01-10 Alan Third <alan@idiocy.org> - Fix drag and drop behaviour on NS (bug#30929) + Fix drag and drop behavior on NS (bug#30929) * doc/emacs/macos.texi (Mac / GNUstep Events): Describe the new drag - and drop behaviour. + and drop behavior. * lisp/term/ns-win.el (ns-drag-n-drop): Handle the new event format. (ns-drag-n-drop-other-frame): (ns-drag-n-drop-as-text): @@ -147548,7 +149178,7 @@ 2018-09-09 mktime: simplify in prep for glibc merge 2018-09-07 intprops: minor clarification of code 2018-09-06 stddef: Override max_align_t on NetBSD 8.0/x86 - 2018-09-06 fcntl: Fix F_DUPFD_CLOEXEC behaviour on Haiku + 2018-09-06 fcntl: Fix F_DUPFD_CLOEXEC behavior on Haiku 2018-09-06 strtoll, strtoull: Rely on limits-h module 2018-09-06 limits-h: Provide numerical limits macros 2018-09-06 fcntl: Don't access nonexistent optional argument @@ -148448,7 +150078,7 @@ * lisp/textmodes/bibtex.el (bibtex-next-entry) (bibtex-previous-entry): New commands. - (bibtex-mode-map): Bind to to forward-paragraph and + (bibtex-mode-map): Bind to forward-paragraph and backward-paragraph. Add to menu under "Moving inside an Entry". 2018-08-27 Noam Postavsky <npostavs@gmail.com> @@ -149801,7 +151431,7 @@ 2018-08-09 João Távora <joaotavora@gmail.com> - Synchronous JSONRPC requests can be cancelled on user input + Synchronous JSONRPC requests can be canceled on user input This allows building more responsive interfaces, such as a snappier completion backend. @@ -152799,7 +154429,7 @@ Tweak previous gnutls change for efficiency - * src/gnutls.c (Fgnutls_peer_status): Minor optimisation to avoid + * src/gnutls.c (Fgnutls_peer_status): Minor optimization to avoid computing the topmost certificate twice. 2018-06-24 Lars Ingebrigtsen <larsi@gnus.org> @@ -155894,7 +157524,7 @@ * lisp/window.el (scroll-other-window-down): Move to src/window.c as Fscroll_other_window_down. - * src/window.c (scroll_command): Generalise for arbitrary windows. + * src/window.c (scroll_command): Generalize for arbitrary windows. (Fscroll_up, Fscroll_down): Use scroll_command with selected_window. (Fscroll_other_window, Fscroll_other_window_down): Rewrite in terms of scroll_command. @@ -156618,7 +158248,7 @@ 326a296 ; * etc/NEWS: Mention 'display-buffer-in-major-side-window' c... 3bdc9a1 Fix flyspell-auto-correct-previous-word broken by recent change a539eb5 * test/src/lread-tests.el (lread-test-bug-31186): New test. - 3fa472b Fix undefined behaviour while looking for lexical-binding fil... + 3fa472b Fix undefined behavior while looking for lexical-binding fil... 4341aac Minor wording improvement in "Bookmarks" Conflicts: @@ -157218,7 +158848,7 @@ * lisp/gnus/gnus-group.el (gnus-update-group-mark-positions): Rewrite a call to string-to-multibyte that didn't even work. After the rewrite it gives the correct result and should allow - people to customise Gnus group process mark positions (but that's + people to customize Gnus group process mark positions (but that's a pretty obscure feature). 2018-04-14 Lars Ingebrigtsen <larsi@gnus.org> @@ -157544,9 +159174,9 @@ From the discussion on the ding mailing list, I said: - I think the colours should be reverted back to what they were before the + I think the colors should be reverted back to what they were before the change. Normal text should be white on black (if you have a dark - background), and colours should be used to emphasise or de-emphasise + background), and colors should be used to emphasize or de-emphasize certain text. Following that principle, normal Gnus groups should be white, not ... er... what are they now? Teal? @@ -158975,8 +160605,8 @@ and numeric conversion in function in order to parse -signal and -SIGNALNAME correctly. * doc/misc/eshell.texi (kill): Update docs to reflect new function - behaviour. - * etc/NEWS: Mention new eshell/kill behaviour. + behavior. + * etc/NEWS: Mention new eshell/kill behavior. 2018-03-25 Noam Postavsky <npostavs@gmail.com> @@ -163526,7 +165156,7 @@ 2018-01-16 Alan Mackenzie <acm@muc.de> - C++ Mode: Fontify correctly uniform initialisation with inner parentheses. + C++ Mode: Fontify correctly uniform initialization with inner parentheses. E.g.: someStruct x ( (nullptr != y) ? 3 : 4 ) Also fontify declarations of function pointers correctly. @@ -167575,7 +169205,7 @@ 413978727c Simplify Flymake user documentation 6ff18c3995 * etc/NEWS: Mention the new version of Org. b78332c3c6 Don't use (format "%s" ...) for string copying (Bug#28774) - 078fb7f6df Make frame-list-z-order on NS match Windows behaviour (bug... + 078fb7f6df Make frame-list-z-order on NS match Windows behavior (bug... # Conflicts: # etc/NEWS @@ -185141,7 +186771,7 @@ * lisp/progmodes/flymake-proc.el (flymake-proc--diagnostics-for-pattern): Rewrite (using cl-loop) to - honour more sophisticated flymake-proc-diagnostic-type-pred. + honor more sophisticated flymake-proc-diagnostic-type-pred. (flymake-warning-re): Is now an obsolete alias for flymake-proc-diagnostic-type-pred. (flymake-proc-diagnostic-type-pred): Rename and augment from @@ -185306,7 +186936,7 @@ Lay some groundwork for a more flexible approach that allows for different classes of diagnostics, not necessarily line-based. Importantly, one overlay per diagnostic is created, whereas the - original implementation had one per line, and on it it concatenated + original implementation had one per line, and on it concatenated the results of errors and warnings. This means that currently, an error and warning on the same line are @@ -201597,7 +203227,7 @@ titlecase_char_table member. It’s set to the ‘titlecase’ Unicode property table if capitalization has been requested. (case_character): Make use of the titlecase_char_table to title-case - initial characters when capitalising. + initial characters when capitalizing. * test/src/casefiddle-tests.el (casefiddle-tests--characters, casefiddle-tests-casing): Update test cases which are now passing. @@ -203852,7 +205482,7 @@ * lisp/net/tramp.el (tramp-completion-mode): Fix docstring. (tramp-completion-mode-p): Optional parameter VEC. Replace - check for `last-input-event' by analysing VEC argument. + check for `last-input-event' by analyzing VEC argument. (tramp-error-with-buffer, tramp-file-name-handler) (tramp-connectable-p, tramp-handle-file-name-as-directory): * lisp/net/tramp-sh.el (tramp-maybe-open-connection): Use it. @@ -216457,8 +218087,7 @@ Stick with debbugs-supported tags in triage * admin/notes/bug-triage: Stick to the tag "unreproducible", which - debbugs supports, rather than suggesting "doneunreproducible" or - "unreproducable". + debbugs supports. 2016-09-26 Paul Eggert <eggert@cs.ucla.edu> @@ -234978,8 +236607,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -2022-04-13e39829812098d8269eafbc0fcb98959ee5bb7 (inclusive). -commit e7aa3ece52d26cc7e4d3f3990aff56127389779f (inclusive). +commit 78759ddcb0fc7dd75a7a8edfb2c19dc2f1d86ee2 (inclusive). See ChangeLog.2 for earlier changes. ;; Local Variables: diff --git a/Makefile.in b/Makefile.in index 4b749636656..d288bacb9dd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -51,7 +51,15 @@ # # make bootstrap # Removes all the compiled files to force a new bootstrap from a -# clean slate, and then build in the normal way. +# clean slate, and then build in the normal way. If the FAST Make +# variable is set, then the config.cache file isn't removed. This +# allows you to say +# +# ./configure -C +# make FAST=true bootstrap +# +# and use the cached results from the configure run, which is much +# faster. # # make docs # Make Emacs documentation files from their sources; requires makeinfo. @@ -358,10 +366,17 @@ endif gsettings_SCHEMAS = etc/org.gnu.emacs.defaults.gschema.xml -all: ${SUBDIR} info $(gsettings_SCHEMAS:.xml=.valid) +all: ${SUBDIR} info $(gsettings_SCHEMAS:.xml=.valid) src-depending-on-lisp .PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32 epaths-force-ns-self-contained etc-emacsver +# Changes in lisp may require us to reconsider the build in src. For +# example, if loaddefs.{el,elc} were built in lisp, we need a new +# .pdmp containing the new autoloads. +.PHONY: src-depending-on-lisp +src-depending-on-lisp: lisp + ${MAKE} -C src BIN_DESTDIR='$(BIN_DESTDIR)' ELN_DESTDIR='$(ELN_DESTDIR)' + # If configure were to just generate emacsver.tex from emacsver.tex.in # in the normal way, the timestamp of emacsver.tex would always be # newer than that of the pdf files, which are prebuilt in release tarfiles. @@ -455,18 +470,11 @@ lisp: src lib lib-src lisp nt: Makefile $(MAKE) -C $@ all -# Ideally, VCSWITNESS should be a file that is modified whenever the -# repository registers a commit from either a local checkin or a -# repository pull. In git there is no single file that guarantees -# this, but the local log for the current head should be close enough. -# # Pass an unexpanded $srcdir to src's Makefile, which then # expands it using its own value of srcdir (which points to the # source directory of src/). -dirstate = .git/logs/HEAD -VCSWITNESS = $(if $(wildcard $(srcdir)/$(dirstate)),$$(srcdir)/../$(dirstate)) src: Makefile - $(MAKE) -C $@ VCSWITNESS='$(VCSWITNESS)' BIN_DESTDIR='$(BIN_DESTDIR)' \ + $(MAKE) -C $@ BIN_DESTDIR='$(BIN_DESTDIR)' \ ELN_DESTDIR='$(ELN_DESTDIR)' all blessmail: Makefile src @@ -936,7 +944,7 @@ clean: $(clean_dirs:=_clean) clean-gsettings-schemas ### 'bootclean' ### Delete all files that need to be remade for a clean bootstrap. top_bootclean=\ - rm -f config.cache config.log ${srcdir}/doc/man/emacs.1 + rm -f config.log ${srcdir}/doc/man/emacs.1 ### 'distclean' ### Delete all files from the current directory that are created by @@ -946,7 +954,7 @@ top_bootclean=\ ### distribution. top_distclean=\ ${top_bootclean}; \ - rm -f config.status config.log~ \ + rm -f config.cache config.status config.log~ \ Makefile makefile lib/gnulib.mk ${SUBDIR_MAKEFILES} distclean_dirs = $(clean_dirs) leim lisp admin/grammars @@ -966,6 +974,9 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean) rm -rf ${srcdir}/info rm -f ${srcdir}/etc/refcards/emacsver.tex rm -rf native-lisp/ lisp/leim/ja-dic/ +ifndef FAST + rm -f config.cache +endif ${top_bootclean} ### 'maintainer-clean' diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index f0239db0089..6e080d1f5bb 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS @@ -137,6 +137,7 @@ Andrea Corallo Stefan Kangas admin/automerge + admin/update_autogen Po Lu The Haiku port: diff --git a/admin/admin.el b/admin/admin.el index 6be378b9246..c84287a7024 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -488,10 +488,11 @@ the @import directive." (delete-region opoint (point)) (search-forward "<meta http-equiv=\"Content-Style") (setq opoint (match-beginning 0))) + (search-forward "<title>") + (delete-region opoint (match-beginning 0)) (search-forward "\n") - (delete-region opoint (point)) - (search-forward "") @@ -617,7 +618,7 @@ style=\"text-align:left\">") ;; its original form. (when (or (search-forward "
      " nil t) ;; FIXME? The following search seems dangerously lax. - (search-forward "
        ")) + (search-forward "
          " nil t)) ;; Convert the list that Makeinfo made into a table. (replace-match "") (forward-line 1) diff --git a/admin/authors.el b/admin/authors.el index 8a62520d6c5..12fe25fa4e1 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -163,6 +163,7 @@ files.") ("Michael R. Cook" "Michael Cook") ("Michael Sperber" "Mike Sperber" "Michael Sperber \\[Mr. Preprocessor\\]") ("Michalis V" "^mvar") + ("Miha Rihtaršič" "Miha Rihtarsic") ("Mikio Nakajima" "Nakajima Mikio") ("Nelson Jose dos Santos Ferreira" "Nelson Ferreira") ("Noorul Islam" "Noorul Islam K M") @@ -1882,7 +1883,7 @@ list of their contributions.\n") (insert "\n ")) (insert " " file)) (insert "\n"))))) - (insert "\nLocal" " Variables:\nmode: etc-authors\ncoding: " + (insert "\nLocal" " Variables:\nmode: emacs-authors\ncoding: " (symbol-name authors-coding-system) "\nEnd:\n") (message "Generating buffer %s... done" buffer-name) (unless noninteractive diff --git a/admin/automerge b/admin/automerge index 415d717a991..99191867367 100755 --- a/admin/automerge +++ b/admin/automerge @@ -4,7 +4,7 @@ ## Copyright (C) 2018-2022 Free Software Foundation, Inc. ## Author: Glenn Morris -## Maintainer: Stefan Kangas +## Maintainer: Stefan Kangas ## This file is part of GNU Emacs. diff --git a/admin/check-doc-strings b/admin/check-doc-strings index 135090b34ce..b119b50885b 100755 --- a/admin/check-doc-strings +++ b/admin/check-doc-strings @@ -290,13 +290,7 @@ while (my $file = ) { } } -my @pkgs; -if (-d "../xemacs-packages") { - @pkgs = qw (libs/edebug libs/xemacs-base comm/eudc oa/edit-utils); -} else { - @pkgs = (); -} -for (@pkgs) { s@^@../xemacs-packages/@; } +my @pkgs = (); open (FIND, "find lisp @pkgs -name '*.el' -print |") or die; while (my $file = ) { my $contents = FileContents $file; diff --git a/admin/coccinelle/window.cocci b/admin/coccinelle/window.cocci index 1448febfcc1..4543fb2ce15 100644 --- a/admin/coccinelle/window.cocci +++ b/admin/coccinelle/window.cocci @@ -106,9 +106,6 @@ Lisp_Object O; - W->column_number_displayed + WVAR (W, column_number_displayed) | -- W->redisplay_end_trigger -+ WVAR (W, redisplay_end_trigger) -| - W->combination_limit + WVAR (W, combination_limit) | @@ -225,9 +222,6 @@ Lisp_Object O; - XWINDOW (O)->column_number_displayed + WVAR (XWINDOW (O), column_number_displayed) | -- XWINDOW (O)->redisplay_end_trigger -+ WVAR (XWINDOW (O), redisplay_end_trigger) -| - XWINDOW (O)->combination_limit + WVAR (XWINDOW (O), combination_limit) | diff --git a/admin/emake b/admin/emake index 6c778c85d41..8b2114b3f8c 100755 --- a/admin/emake +++ b/admin/emake @@ -20,7 +20,7 @@ if [ -f /proc/cpuinfo ]; then sed 's/^[0-9]*/+/'))) fi -make -j$cores "$@" 2>&1 | \ +make FAST=true -j$cores "$@" 2>&1 | \ sed -u 's# \.\./\.\./# # s# \.\./# # s#^Configuring local git # Configuring local git # @@ -29,6 +29,7 @@ s#^Running # Running # s#^Configured for # Configured for # s#^./temacs.*# \\& # s#^make.*Error# \\& # +s#^Dumping under the name.*# \\& # ' | \ grep -E --line-buffered -v "^make|\ ^Loading|\ @@ -36,13 +37,13 @@ SCRAPE|\ INFO.*Scraping.*[.] ?\$|\ INFO.*Scraping.*done\$|\ GEN.*etc/DOC|\ +GEN.*autoloads|\ ^Waiting for git|\ ^Finding pointers|\ ^Using load-path|\ ^Adding name|\ ^Dump mode|\ ^Dumping finger|\ -^Dumping under the name|\ ^Byte counts|\ ^Reloc counts|\ ^Pure-hashed|\ diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 5da70a40285..25bed949ad9 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -124,7 +124,7 @@ If nil, the function `gitmerge-default-branch' guesses.") (let ((coding-system-for-read vc-git-log-output-coding-system)) (call-process "git" nil t nil "show" (format "%s:configure.ac" branch))) (goto-char (point-min))) - (re-search-forward "^AC_INIT([^,]+, \\([0-9]+\\)\\.") + (re-search-forward "^AC_INIT([^,]+, \\[?\\([0-9]+\\)\\.") (string-to-number (match-string 1)))) (defun gitmerge-default-branch () @@ -135,7 +135,7 @@ If nil, the function `gitmerge-default-branch' guesses.") (defun gitmerge-get-sha1 () "Get SHA1 from commit at point." (save-excursion - (goto-char (point-at-bol)) + (goto-char (line-beginning-position)) (when (looking-at "^[A-Z ]\\s-*\\([a-f0-9]+\\)") (match-string 1)))) @@ -187,7 +187,7 @@ If nil, the function `gitmerge-default-branch' guesses.") skip) (when commit (save-excursion - (goto-char (point-at-bol)) + (goto-char (line-beginning-position)) (when (looking-at "^\\([A-Z ]\\)\\s-*\\([a-f0-9]+\\)") (setq skip (string= (match-string 1) " ")) (goto-char (match-beginning 2)) @@ -195,7 +195,7 @@ If nil, the function `gitmerge-default-branch' guesses.") (dolist (ct gitmerge--commits) (when (string-match commit (car ct)) (setcdr ct (when skip "M")))) - (goto-char (point-at-bol)) + (goto-char (line-beginning-position)) (setq buffer-read-only nil) (delete-char 1) (insert (if skip "M" " ")) diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 02b4f318e26..a60fead2678 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -15,8 +15,8 @@ Steps to take before starting on the first pretest in any release sequence: 2. Consider increasing the value of the variable 'customize-changed-options-previous-release' in cus-edit.el to refer to a newer version of Emacs. (This is now done when cutting - the release branch, see admin/release-branch.txt.) - Commit cus-edit.el if changed. + the release branch, see admin/release-branch.txt, but it can't + hurt to double check its value.) Commit cus-edit.el if changed. 3. Remove any old pretests from https://alpha.gnu.org/gnu/emacs/pretest. You can use 'gnupload --delete' (see below for more gnupload details). @@ -24,8 +24,8 @@ Steps to take before starting on the first pretest in any release sequence: General steps (for each step, check for possible errors): -1. git pull # fetch from the repository - git status # check for locally modified files +1. git pull # fetch from the repository + git status # check for locally modified files Ensure that you have a clean, unmodified state. If you switched in-place from another branch to the release branch, @@ -49,6 +49,9 @@ General steps (for each step, check for possible errors): files will end up in the tarball. Otherwise, the *.eln files might not build correctly on the user's system. + ./autogen.sh + ./configure --with-native-compilation && make + For a release (as opposed to pretest), delete any left-over "---" and "+++" markers from etc/NEWS, as well as the "Temporary note" section at the beginning of that file, and commit etc/NEWS if it @@ -158,13 +161,15 @@ General steps (for each step, check for possible errors): 5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. - Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the - files changed by M-x set-version. The easiest way of doing that - is "C-x v d ROOT-DIR RET", then go to the first modified file, - press 'M' to mark all modified files, and finally 'v' to commit - them. Make sure the commit log message mentions all the changes - in all modified files, as by default 'v' doesn't necessarily do - so. + Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the files + changed by M-x set-version. Note that the set-version changes + should be committed separately, as described in step 3 above. + + The easiest way of doing that is "C-x v d ROOT-DIR RET", then go + to the first modified file, press 'M' to mark all modified files, + and finally 'v' to commit them. Make sure the commit log message + mentions all the changes in all modified files, as by default 'v' + doesn't necessarily do so. If someone else made a commit between step 1 and now, you need to repeat from step 4 onwards. (You can commit the files @@ -178,9 +183,10 @@ General steps (for each step, check for possible errors): yourself, find it at . Releases are of course at . - ./admin/diff-tar-files emacs-OLD.tar.gz emacs-NEW.tar.gz + ./admin/diff-tar-files emacs-OLD.tar emacs-NEW.tar - Alternatively: + Alternatively, if you want to use the compressed tarballs (which + diff-tar-files doesn't understand): tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort > old_tmp tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort > new_tmp @@ -198,7 +204,7 @@ General steps (for each step, check for possible errors): The output of this command might be easier to compare to the tarball than the one you get from find. -7. tar -xf emacs-NEW.tar; cd emacs-NEW +7. tar xf emacs-NEW.tar; cd emacs-NEW ./configure --prefix=/tmp/emacs && make check && make install Use 'script' or M-x compile to save the compilation log in @@ -282,7 +288,8 @@ General steps (for each step, check for possible errors): https://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or https://ftp.gnu.org/gnu/emacs/ for a release. - Download them and check the signatures. Check they build. + Download them and check the signatures and SHA1/SHA256 checksums. + Check they build (./configure --with-native-compilation). 11. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org. For a pretest, also bcc: platform-testers@gnu.org. @@ -300,12 +307,20 @@ General steps (for each step, check for possible errors): To create the included SHA1 and SHA256 checksums, run: - sha1sum emacs-NEW.tar.xz - sha256sum emacs-NEW.tar.xz + sha1sum emacs-NEW.tar.xz + sha256sum emacs-NEW.tar.xz + + You can optionally sign the announcement email, preferably using + the same PGP key that you used for signing the tarball. + (Use e.g. `M-x mml-secure-message-sign' in `message-mode' to sign + an email.) 12. After a release, update the Emacs pages as described below. -13. Bump the Emacs version on the release branch. +13. After a release, bump the Emacs version on the release branch. + There is no need to bump the version after a pretest; the version + is bumped before the next pretest or release instead. + If the released version was XX.Y, use 'set-version' from admin/admin.el to bump the version on the release branch to XX.Y.50. Commit the changes. @@ -313,8 +328,8 @@ General steps (for each step, check for possible errors): UPDATING THE EMACS WEB PAGES AFTER A RELEASE As soon as possible after a release, the Emacs web pages at -https://www.gnu.org/software/emacs/ should be updated. (See -admin/notes/www for general information.) +https://www.gnu.org/software/emacs/ should be updated. +(See admin/notes/www for general information.) The pages to update are: @@ -330,7 +345,7 @@ looks like this:
          -

          Emacs 27.1 is out, download it here!

          +

          Emacs 28.1 is out, download it here!

          diff --git a/admin/merge-gnulib b/admin/merge-gnulib index ea3d23686f4..4dd6a4d222f 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -51,7 +51,7 @@ GNULIB_MODULES=' ' AVOIDED_MODULES=' - btowc close crypto/af_alg dup fchdir fstat langinfo lock + btowc chmod close crypto/af_alg dup fchdir fstat langinfo lock mbrtowc mbsinit memchr mkdir msvc-inval msvc-nothrow nl_langinfo openat-die opendir pthread-h raise save-cwd select setenv sigprocmask stat stdarg stdbool diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index 9b3f1606a1b..84bc1b77d4e 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -474,7 +474,7 @@ THINGS TO DO definition. Exceptions found so far: x-select-text and - x-selection-value (old name: x-cut-buffer-or-selection-value). + x-selection-value. ** Have a look at fatal_error_hook. diff --git a/admin/notes/spelling b/admin/notes/spelling index b783227a37a..b20f68bf624 100644 --- a/admin/notes/spelling +++ b/admin/notes/spelling @@ -6,6 +6,6 @@ Re "behavior" vs "behaviour", etc. for new text (code, docs), choose the US variant. - It's probably (IMHO --ttn, 2017-10-13) not a high priority to - change existing text; use your best judgement (ask if unsure). + change existing text; use your best judgment (ask if unsure). - https://lists.gnu.org/r/emacs-devel/2005-06/msg00489.html diff --git a/admin/nt/dist-build/README-scripts b/admin/nt/dist-build/README-scripts index 6b1adbe03e1..e99fbe07062 100644 --- a/admin/nt/dist-build/README-scripts +++ b/admin/nt/dist-build/README-scripts @@ -131,7 +131,7 @@ The process is the same as for building from the master branch, except that the release branch should already exist as a worktree, and the version number must be added to the command line with `build-zips.sh -V 27 -s`. The final zips will be named after the branch rather than -the version (e.g emacs-27-2019-12-26.zip) rather than than the Emacs +the version (e.g emacs-27-2019-12-26.zip) rather than the Emacs version (e.g emacs-27.0.50.zip). diff --git a/admin/nt/dist-build/build-zips.sh b/admin/nt/dist-build/build-zips.sh index 77d20a5a7b9..39ac1fde604 100755 --- a/admin/nt/dist-build/build-zips.sh +++ b/admin/nt/dist-build/build-zips.sh @@ -148,7 +148,7 @@ done if [ -z $ACTUAL_VERSION ]; then ACTUAL_VERSION=` - sed -n 's/^AC_INIT(GNU Emacs,[ ]*\([^ ,)]*\).*/\1/p' < ../../../configure.ac + sed -n 's/^AC_INIT(\[*GNU Emacs]*,[ ]*\[*\([^] ,)]*\).*/\1/p' < ../../../configure.ac ` fi diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs index 9a73cf5a401..b0a1d342518 100755 --- a/admin/quick-install-emacs +++ b/admin/quick-install-emacs @@ -172,10 +172,10 @@ test x"$prefix" = x && { prefix="`get_config_var prefix`" || exit 4 ; } test x"$ARCH" = x && { ARCH="`get_config_var host`" || exit 4 ; } VERSION=` - sed -n 's/^AC_INIT([ ]*emacs[ ]*,[ ]*\([^ ),]*\).*/\1/p' <$SRC/configure.ac + sed -n 's/^AC_INIT([ ]*\[*emacs]*[ ]*,[ ]*\[*\([^] ),]*\).*/\1/p' <$SRC/configure.ac ` || exit 4 test -n "$VERSION" || VERSION=` - sed -n 's/^AC_INIT([ ]*GNU Emacs[ ]*,[ ]*\([^ ),]*\).*/\1/p' <$SRC/configure.ac + sed -n 's/^AC_INIT([ ]*\[*GNU Emacs]*[ ]*,[ ]*\[*\([^] ),]*\).*/\1/p' <$SRC/configure.ac ` || exit 4 test -n "$VERSION" || { printf '%s\n' >&2 "$me: no version in configure.ac"; exit 4; } diff --git a/admin/unidata/blocks.awk b/admin/unidata/blocks.awk index 5f392b5ad35..1c571feff38 100755 --- a/admin/unidata/blocks.awk +++ b/admin/unidata/blocks.awk @@ -224,9 +224,14 @@ FILENAME ~ "emoji-data.txt" && /^[0-9A-F].*; Emoji_Presentation / { END { idx = 0 - # ## These are here so that font_range can choose Emoji presentation - # ## for the preceding codepoint when it encounters a VS - override_start[idx] = "FE00" + ## This is here so that font_range can choose Emoji presentation + ## for the preceding codepoint when it encounters a VS-16 + ## (U+FE0F). See also font_range and the comments in composite.el + ## around the setup of `composition-function-table' for + ## U+FE00..U+FE0E. + ## It originally covered the whole FE00-FE0F range, but that + ## turned out to be a mistake. + override_start[idx] = "FE0F" override_end[idx] = "FE0F" for (k in override_start) diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index 0a9fd5108ce..78dd1c37288 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -1083,8 +1083,8 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." (defun unidata--ensure-compiled (&rest funcs) (dolist (fun funcs) - (or (byte-code-function-p (symbol-function fun)) - (byte-compile fun)))) + (unless (compiled-function-p (symbol-function fun)) + (byte-compile fun)))) (defun unidata-gen-table-name (prop index &rest _ignore) (let* ((table (unidata-gen-table-word-list prop index 'unidata-split-name)) diff --git a/admin/update_autogen b/admin/update_autogen index bfbf9d15c24..24513671712 100755 --- a/admin/update_autogen +++ b/admin/update_autogen @@ -4,7 +4,7 @@ ## Copyright (C) 2011-2022 Free Software Foundation, Inc. ## Author: Glenn Morris -## Maintainer: emacs-devel@gnu.org +## Maintainer: Stefan Kangas ## This file is part of GNU Emacs. @@ -81,7 +81,6 @@ ldefs_flag=1 lboot_flag= ## Parameters. -ldefs_in=lisp/loaddefs.el ldefs_out=lisp/ldefs-boot.el sources="configure.ac lib/Makefile.am" ## Files to copy into autogendir. @@ -177,8 +176,6 @@ modified=$(status ${autogendir:+$sources} ${ldefs_flag:+lisp}) || die echo "Running 'make maintainer-clean'..." make maintainer-clean #|| die "Cleaning error" - - rm -f $ldefs_in } @@ -289,18 +286,13 @@ make -C src "$@" bootstrap-emacs || die "make src error" echo "Running lisp/ make..." -make -C lisp "$@" autoloads EMACS=../src/bootstrap-emacs || die "make src error" +make -C lisp "$@" ldefs-boot.el EMACS=../src/bootstrap-emacs || die "make src error" -## Ignore comment differences. -[ ! "$lboot_flag" ] || \ - diff -q -I '^;' $ldefs_in $ldefs_out || \ - cp $ldefs_in $ldefs_out || die "cp ldefs_boot error" - # Refresh the prebuilt grammar-wy.el grammar_in=lisp/cedet/semantic/grammar-wy.el grammar_out=lisp/cedet/semantic/grm-wy-boot.el -make -C admin/grammars/ ../../$grammar_in +make -C admin/grammars/ ../../$grammar_in EMACS=../../src/bootstrap-emacs cp $grammar_in $grammar_out || die "cp grm_wy_boot error" diff --git a/autogen.sh b/autogen.sh index 03f647e576c..041468edcd9 100755 --- a/autogen.sh +++ b/autogen.sh @@ -35,7 +35,7 @@ progs="autoconf" ## Minimum versions we need: -autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac` +autoconf_min=`sed -n 's/^ *AC_PREREQ(\[\([0-9\.]*\)]).*/\1/p' configure.ac` ## $1 = program, eg "autoconf". diff --git a/build-aux/config.guess b/build-aux/config.guess index 160ecf0951b..1817bdce90d 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-05-08' +timestamp='2022-05-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -1378,8 +1378,11 @@ EOF BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; - x86_64:Haiku:*:*) - GUESS=x86_64-unknown-haiku + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE diff --git a/build-aux/config.sub b/build-aux/config.sub index 9b62e37c43c..dba16e84c77 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2021 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2021-12-25' +timestamp='2022-01-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -76,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2021 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." diff --git a/config.bat b/config.bat index e9a180c8eed..4adc477bc95 100644 --- a/config.bat +++ b/config.bat @@ -301,6 +301,7 @@ If Exist sys_time.in.h update sys_time.in.h sys_time.in-h If Exist sys_types.in.h update sys_types.in.h sys_types.in-h If Exist time.in.h update time.in.h time.in-h If Exist unistd.in.h update unistd.in.h unistd.in-h +If Exist stdckdint.in.h update stdckdint.in.h stdckdint.in-h If Exist gnulib.mk.in update gnulib.mk.in gnulib.mk-in Rem Only repository has the msdos/autogen directory If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp diff --git a/configure.ac b/configure.ac index a2b24e39616..43827e07a5f 100644 --- a/configure.ac +++ b/configure.ac @@ -21,9 +21,10 @@ dnl dnl You should have received a copy of the GNU General Public License dnl along with GNU Emacs. If not, see . -AC_PREREQ(2.65) +AC_PREREQ([2.65]) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 29.0.50, bug-gnu-emacs@gnu.org, , https://www.gnu.org/software/emacs/) +AC_INIT([GNU Emacs], [29.0.50], [bug-gnu-emacs@gnu.org], [], + [https://www.gnu.org/software/emacs/]) dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. @@ -64,13 +65,13 @@ for opt in "$@" CFLAGS CPPFLAGS LDFLAGS; do optsep=' ' done -AC_CONFIG_HEADERS(src/config.h:src/config.in) -AC_CONFIG_SRCDIR(src/lisp.h) -AC_CONFIG_AUX_DIR(build-aux) -AC_CONFIG_MACRO_DIR(m4) +AC_CONFIG_HEADERS([src/config.h:src/config.in]) +AC_CONFIG_SRCDIR([src/lisp.h]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([m4]) xcsdkdir= -AC_CHECK_PROGS(XCRUN, [xcrun]) +AC_CHECK_PROGS([XCRUN], [xcrun]) if test -n "$XCRUN"; then if test -z "$MAKE"; then dnl Call the variable MAKE_PROG, not MAKE, to avoid confusion with @@ -199,7 +200,7 @@ etcdocdir='${datadir}/emacs/${version}/etc' gamedir='${localstatedir}/games/emacs' dnl Special option to disable the most of other options. -AC_ARG_WITH(all, +AC_ARG_WITH([all], [AS_HELP_STRING([--without-all], [omit almost all features and build small executable with minimal dependencies])], @@ -278,41 +279,45 @@ AC_ARG_WITH([pop], *) with_pop=no-by-default;; esac]) if test "$with_pop" = yes; then - AC_DEFINE(MAIL_USE_POP) + AC_DEFINE([MAIL_USE_POP]) fi -AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl +AH_TEMPLATE([MAIL_USE_POP], [Define to support POP mail retrieval.])dnl OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP]) if test "$with_kerberos" != no; then - AC_DEFINE(KERBEROS) + AC_DEFINE([KERBEROS]) fi -AH_TEMPLATE(KERBEROS, +AH_TEMPLATE([KERBEROS], [Define to support Kerberos-authenticated POP mail retrieval.])dnl OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP]) if test "${with_kerberos5}" != no; then if test "${with_kerberos}" = no; then with_kerberos=yes - AC_DEFINE(KERBEROS) + AC_DEFINE([KERBEROS]) fi - AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.]) + AC_DEFINE([KERBEROS5], [1], + [Define to use Kerberos 5 instead of Kerberos 4.]) fi OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host]) dnl FIXME hesiod support may not be present, so it seems like an error dnl to define, or at least use, this unconditionally. if test "$with_hesiod" != no; then - AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.]) + AC_DEFINE([HESIOD], [1], + [Define to support using a Hesiod database to find the POP server.]) fi OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading]) if test "$with_mail_unlink" != no; then - AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.]) + AC_DEFINE([MAIL_UNLINK_SPOOL], [1], + [Define to unlink, rather than empty, mail spool after reading.]) fi AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME], [string giving default POP mail host])], - AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.])) + AC_DEFINE_UNQUOTED([MAILHOST], ["$withval"], + [String giving fallback POP mail host.])) AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE], [compile with sound support (VALUE one of: yes, alsa, oss, bsd-ossaudio, no; @@ -395,7 +400,8 @@ if test "$with_dumping" = "unexec" && test "$with_unexec" = "no"; then fi if test "$with_pdumper" = "yes"; then - AC_DEFINE([HAVE_PDUMPER], 1, [Define to build with portable dumper support]) + AC_DEFINE([HAVE_PDUMPER], [1], + [Define to build with portable dumper support]) HAVE_PDUMPER=yes else HAVE_PDUMPER=no @@ -403,7 +409,7 @@ fi AC_SUBST([HAVE_PDUMPER]) DUMPING=$with_dumping -AC_SUBST(DUMPING) +AC_SUBST([DUMPING]) dnl FIXME currently it is not the last. dnl This should be the last --with option, because --with-x is @@ -436,7 +442,7 @@ OPTION_DEFAULT_OFF([wide-int], at the cost of 10% to 30% slowdown of Lisp interpreter and larger memory footprint]) if test "$with_wide_int" = yes; then - AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.]) + AC_DEFINE([WIDE_EMACS_INT], [1], [Use long long for EMACS_INT if available.]) fi dnl _ON results in a '--without' option in the --help output, so @@ -523,7 +529,7 @@ OPTION_DEFAULT_OFF([be-cairo], [enable use of cairo under Haiku's Application Kit]) ## Makefile.in needs the cache file name. -AC_SUBST(cache_file) +AC_SUBST([cache_file]) ## This is an option because I do not know if all info/man support ## compressed files, nor how to test if they do so. @@ -531,7 +537,7 @@ OPTION_DEFAULT_ON([compress-install], [don't compress some files (.el, .info, etc.) when installing. Equivalent to: make GZIP_PROG= install]) -AC_ARG_WITH(gameuser,dnl +AC_ARG_WITH([gameuser], [AS_HELP_STRING([--with-gameuser=USER_OR_GROUP], [user for shared game score files. An argument prefixed by ':' specifies a group instead.])]) @@ -544,7 +550,7 @@ case ${with_gameuser} in *) gameuser=${with_gameuser} ;; esac -AC_ARG_WITH([gnustep-conf],dnl +AC_ARG_WITH([gnustep-conf], [AS_HELP_STRING([--with-gnustep-conf=FILENAME], [name of GNUstep configuration file to use on systems where the command 'gnustep-config' does not work; default $GNUSTEP_CONFIG_FILE, or @@ -554,24 +560,24 @@ test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \ test "X$GNUSTEP_CONFIG_FILE" = "X" && \ GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf -AC_ARG_ENABLE(ns-self-contained, +AC_ARG_ENABLE([ns-self-contained], [AS_HELP_STRING([--disable-ns-self-contained], [disable self contained build under NeXTstep])], - EN_NS_SELF_CONTAINED=$enableval, - EN_NS_SELF_CONTAINED=yes) + [EN_NS_SELF_CONTAINED=$enableval], + [EN_NS_SELF_CONTAINED=yes]) locallisppathset=no -AC_ARG_ENABLE(locallisppath, +AC_ARG_ENABLE([locallisppath], [AS_HELP_STRING([--enable-locallisppath=PATH], [directories Emacs should search for lisp files specific to this site])], -if test "${enableval}" = "no"; then +[if test "${enableval}" = "no"; then locallisppath= elif test "${enableval}" != "yes"; then locallisppath=${enableval} locallisppathset=yes -fi) +fi]) -AC_ARG_ENABLE(checking, +AC_ARG_ENABLE([checking], [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@], [enable expensive checks. With LIST, enable only specific categories of checks. @@ -604,17 +610,17 @@ do stringfreelist) ac_gc_check_string_free_list=1 ;; structs) CHECK_STRUCTS=true ;; glyphs) ac_glyphs_debug=1 ;; - *) AC_MSG_ERROR(unknown check category $check) ;; + *) AC_MSG_ERROR([unknown check category $check]) ;; esac done IFS="$ac_save_IFS" if test x$ac_enable_checking != x ; then - AC_DEFINE(ENABLE_CHECKING, 1, + AC_DEFINE([ENABLE_CHECKING], [1], [Define to 1 if expensive run-time data type and consistency checks are enabled.]) fi if $CHECK_STRUCTS; then - AC_DEFINE([CHECK_STRUCTS], 1, + AC_DEFINE([CHECK_STRUCTS], [1], [Define this to check whether someone updated the portable dumper code after changing the layout of a structure that it uses. If you change one of these structures, check that the pdumper.c @@ -623,21 +629,21 @@ if $CHECK_STRUCTS; then fi AC_SUBST([CHECK_STRUCTS]) if test x$ac_gc_check_stringbytes != x ; then - AC_DEFINE(GC_CHECK_STRING_BYTES, 1, + AC_DEFINE([GC_CHECK_STRING_BYTES], [1], [Define this temporarily to hunt a bug. If defined, the size of strings is redundantly recorded in sdata structures so that it can be compared to the sizes recorded in Lisp strings.]) fi if test x$ac_gc_check_string_overrun != x ; then - AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1, + AC_DEFINE([GC_CHECK_STRING_OVERRUN], [1], [Define this to check for short string overrun.]) fi if test x$ac_gc_check_string_free_list != x ; then - AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1, + AC_DEFINE([GC_CHECK_STRING_FREE_LIST], [1], [Define this to check the string free list.]) fi if test x$ac_glyphs_debug != x ; then - AC_DEFINE(GLYPH_DEBUG, 1, + AC_DEFINE([GLYPH_DEBUG], [1], [Define this to enable glyphs debugging code.]) fi @@ -645,7 +651,7 @@ dnl The name of this option is unfortunate. It predates, and has no dnl relation to, the "sampling-based elisp profiler" added in 24.3. dnl Actually, it stops it working. dnl https://lists.gnu.org/r/emacs-devel/2012-11/msg00393.html -AC_ARG_ENABLE(profiling, +AC_ARG_ENABLE([profiling], [AS_HELP_STRING([--enable-profiling], [build emacs with low-level, gprof profiling support. Mainly useful for debugging Emacs itself. May not work on @@ -656,15 +662,15 @@ if test x$ac_enable_profiling != x ; then else PROFILING_CFLAGS= fi -AC_SUBST(PROFILING_CFLAGS) +AC_SUBST([PROFILING_CFLAGS]) -AC_ARG_ENABLE(autodepend, +AC_ARG_ENABLE([autodepend], [AS_HELP_STRING([--enable-autodepend], [automatically generate dependencies to .h-files. Requires gcc, enabled if found.])], [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes]) -AC_ARG_ENABLE(gtk-deprecation-warnings, +AC_ARG_ENABLE([gtk-deprecation-warnings], [AS_HELP_STRING([--enable-gtk-deprecation-warnings], [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])], [ac_enable_gtk_deprecation_warnings="${enableval}"],[]) @@ -867,7 +873,7 @@ AC_DEFUN([_AC_PROG_CC_C89], [$2]) dnl Sets GCC=yes if using gcc. AC_PROG_CC([gcc cc cl clang "$XCRUN gcc" "$XCRUN clang"]) if test -n "$XCRUN"; then - AC_CHECK_PROGS(AR, [ar "$XCRUN ar"]) + AC_CHECK_PROGS([AR], [ar "$XCRUN ar"]) test -n "$AR" && export AR fi @@ -1009,7 +1015,7 @@ AC_ARG_ENABLE([check-lisp-object-type], [Enable compile time checks for the Lisp_Object data type, which can catch some bugs during development.])]) if test "$enable_check_lisp_object_type" = yes; then - AC_DEFINE([CHECK_LISP_OBJECT_TYPE], 1, + AC_DEFINE([CHECK_LISP_OBJECT_TYPE], [1], [Define to enable compile-time checks for the Lisp_Object data type.]) fi @@ -1158,7 +1164,7 @@ edit_cflags=" s/^ // " -AC_ARG_ENABLE(link-time-optimization, +AC_ARG_ENABLE([link-time-optimization], [AS_HELP_STRING([--enable-link-time-optimization], [build with link-time optimization (experimental; see INSTALL)])], @@ -1268,7 +1274,7 @@ fi rm -f conf$$ conf$$.file]) LN_S_FILEONLY=$emacs_cv_ln_s_fileonly -AC_SUBST(LN_S_FILEONLY) +AC_SUBST([LN_S_FILEONLY]) dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln' @@ -1287,13 +1293,13 @@ dnl if called via an absolute file name. dnl Use the entirely-identical-but-quieter ginstall-info instead if present. dnl Sadly some people may have an old ginstall-info installed on dnl non-Debian systems, so we can't use this. -dnl AC_PATH_PROGS(INSTALL_INFO, [ginstall-info install-info], :, -dnl $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin) +dnl AC_PATH_PROGS([INSTALL_INFO], [ginstall-info install-info], [:], +dnl [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin]) -AC_PATH_PROG(INSTALL_INFO, install-info, :, - $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin) +AC_PATH_PROG([INSTALL_INFO], [install-info], [:], + [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin]) dnl Don't use GZIP, which is used by gzip for additional parameters. -AC_PATH_PROG(GZIP_PROG, gzip) +AC_PATH_PROG([GZIP_PROG], [gzip]) test $with_compress_install != yes && test -n "$GZIP_PROG" && \ GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)" @@ -1362,7 +1368,7 @@ AC_SUBST([SETFATTR]) # Makeinfo on macOS is ancient, check whether there is a more recent # version installed by Homebrew. -AC_CHECK_PROGS(BREW, [brew]) +AC_CHECK_PROGS([BREW], [brew]) if test -n "$BREW"; then AC_PATH_PROG([MAKEINFO], [makeinfo], [], [`$BREW --prefix texinfo 2>/dev/null`/bin$PATH_SEPARATOR$PATH]) @@ -1370,7 +1376,7 @@ fi # Check MacPorts on macOS. if test $opsys = darwin; then - AC_PATH_PROG(HAVE_MACPORTS, port) + AC_PATH_PROG([HAVE_MACPORTS], [port]) fi ## Require makeinfo >= 4.13 (last of the 4.x series) to build the manuals. @@ -1410,7 +1416,7 @@ if test $opsys = mingw32; then else DOCMISC_W32= fi -AC_SUBST(DOCMISC_W32) +AC_SUBST([DOCMISC_W32]) dnl Add our options to ac_link now, after it is set up. @@ -1469,7 +1475,7 @@ AC_CACHE_CHECK([whether addresses are sanitized], [emacs_cv_sanitize_address=no])]) if test $with_unexec = yes; then - AC_DEFINE([HAVE_UNEXEC], 1, [Define if Emacs supports unexec.]) + AC_DEFINE([HAVE_UNEXEC], [1], [Define if Emacs supports unexec.]) if test "$emacs_cv_sanitize_address" = yes; then AC_MSG_WARN([[Addresses are sanitized; suggest --without-unexec]]) fi @@ -1506,7 +1512,7 @@ case "$opsys" in UNEXEC_OBJ=unexelf.o ;; esac -AC_SUBST(UNEXEC_OBJ) +AC_SUBST([UNEXEC_OBJ]) LD_SWITCH_SYSTEM= test "$with_unexec" = no || case "$opsys" in @@ -1536,7 +1542,7 @@ test "$with_unexec" = no || case "$opsys" in LD_SWITCH_SYSTEM="-Z" ;; esac -AC_SUBST(LD_SWITCH_SYSTEM) +AC_SUBST([LD_SWITCH_SYSTEM]) ac_link="$ac_link $LD_SWITCH_SYSTEM" @@ -1572,7 +1578,7 @@ case $canonical in fi ;; esac -AC_SUBST(C_SWITCH_MACHINE) +AC_SUBST([C_SWITCH_MACHINE]) C_SWITCH_SYSTEM= ## Some programs in src produce warnings saying certain subprograms @@ -1588,7 +1594,7 @@ if test "$opsys" = "mingw32"; then fi ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems. ## It is redundant in glibc2, since we define _GNU_SOURCE. -AC_SUBST(C_SWITCH_SYSTEM) +AC_SUBST([C_SWITCH_SYSTEM]) LIBS_SYSTEM= @@ -1610,7 +1616,7 @@ case "$opsys" in haiku) LIBS_SYSTEM="-lnetwork" ;; esac -AC_SUBST(LIBS_SYSTEM) +AC_SUBST([LIBS_SYSTEM]) ### Make sure subsequent tests use flags consistent with the build flags. @@ -1718,8 +1724,8 @@ case $opsys in esac -AC_SUBST(LIB_MATH) -AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE", +AC_SUBST([LIB_MATH]) +AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"], [The type of system you are compiling for; sets 'system-type'.]) AC_SUBST([SYSTEM_TYPE]) @@ -1727,11 +1733,11 @@ AC_SUBST([SYSTEM_TYPE]) pre_PKG_CONFIG_CFLAGS=$CFLAGS pre_PKG_CONFIG_LIBS=$LIBS -PKG_PROG_PKG_CONFIG(0.9.0) +PKG_PROG_PKG_CONFIG([0.9.0]) -dnl EMACS_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4) -dnl acts like PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, -dnl HAVE_GSTUFF=yes, HAVE_GSTUFF=no) -- see pkg-config man page -- +dnl EMACS_CHECK_MODULES([GSTUFF], [gtk+-2.0 >= 1.3 glib = 1.3.4]) +dnl acts like PKG_CHECK_MODULES([GSTUFF], [gtk+-2.0 >= 1.3 glib = 1.3.4], +dnl [HAVE_GSTUFF=yes], [HAVE_GSTUFF=no]) -- see pkg-config man page -- dnl except that it postprocesses CFLAGS as needed for --enable-gcc-warnings. dnl EMACS_CHECK_MODULES accepts optional 3rd and 4th arguments that dnl can take the place of the default HAVE_GSTUFF=yes and HAVE_GSTUFF=no @@ -1746,7 +1752,7 @@ HAVE_SOUND=no if test "${with_sound}" != "no"; then # Sound support for GNU/Linux, the free BSDs, MinGW, and Cygwin. AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h mmsystem.h], - have_sound_header=yes, [], [ + [have_sound_header=yes], [], [ #ifdef __MINGW32__ #define WIN32_LEAN_AND_MEAN #include @@ -1757,13 +1763,13 @@ if test "${with_sound}" != "no"; then if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then # Emulation library used on NetBSD. - AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=) + AC_CHECK_LIB([ossaudio], [_oss_ioctl], [LIBSOUND=-lossaudio], [LIBSOUND=]) test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \ AC_MSG_ERROR([bsd-ossaudio sound support requested but not found.]) dnl FIXME? If we did find ossaudio, should we set with_sound=bsd-ossaudio? dnl Traditionally, we go on to check for alsa too. Does that make sense? fi - AC_SUBST(LIBSOUND) + AC_SUBST([LIBSOUND]) if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then ALSA_REQUIRED=1.0.0 @@ -1772,7 +1778,7 @@ if test "${with_sound}" != "no"; then if test $HAVE_ALSA = yes; then LIBSOUND="$LIBSOUND $ALSA_LIBS" CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" - AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.]) + AC_DEFINE([HAVE_ALSA], [1], [Define to 1 if ALSA is available.]) elif test "${with_sound}" = "alsa"; then AC_MSG_ERROR([ALSA sound support requested but not found.]) fi @@ -1788,25 +1794,25 @@ if test "${with_sound}" != "no"; then dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__ dnl Adjust the --with-sound help text if you change this. gnu-linux|freebsd|netbsd|mingw32|cygwin) - AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.]) + AC_DEFINE([HAVE_SOUND], [1], [Define to 1 if you have sound support.]) HAVE_SOUND=yes ;; esac fi - AC_SUBST(CFLAGS_SOUND) + AC_SUBST([CFLAGS_SOUND]) fi dnl checks for header files AC_CHECK_HEADERS_ONCE( - linux/fs.h + [linux/fs.h malloc.h sys/systeminfo.h sys/sysinfo.h coff.h pty.h sys/resource.h sys/utsname.h pwd.h utmp.h util.h - sanitizer/lsan_interface.h) + sanitizer/lsan_interface.h]) AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE], [emacs_cv_personality_addr_no_randomize], @@ -1833,10 +1839,11 @@ if test "$ac_cv_header_sys_sysinfo_h" = yes; then emacs_cv_linux_sysinfo=yes, emacs_cv_linux_sysinfo=no)]) if test $emacs_cv_linux_sysinfo = yes; then - AC_DEFINE([HAVE_LINUX_SYSINFO], 1, [Define to 1 if you have Linux sysinfo function.]) + AC_DEFINE([HAVE_LINUX_SYSINFO], [1], + [Define to 1 if you have Linux sysinfo function.]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct sysinfo si; return si.mem_unit]])], - AC_DEFINE(LINUX_SYSINFO_UNIT, 1, + AC_DEFINE([LINUX_SYSINFO_UNIT], [1], [Define to 1 if Linux sysinfo sizes are in multiples of mem_unit bytes.])) fi fi @@ -1844,19 +1851,20 @@ fi dnl On Solaris 8 there's a compilation warning for term.h because dnl it doesn't define 'bool'. AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include ]],[[]])], - AC_DEFINE(HAVE_TERM_H, 1, [Define to 1 if you have the header file.])) + [AC_DEFINE([HAVE_TERM_H], [1], + [Define to 1 if you have the header file.])]) AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS_ONCE(sys/socket.h) -AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT +AC_CHECK_HEADERS_ONCE([sys/socket.h]) +AC_CHECK_HEADERS([net/if.h], [], [], [AC_INCLUDES_DEFAULT #if HAVE_SYS_SOCKET_H #include #endif]) -AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT +AC_CHECK_HEADERS([ifaddrs.h], [], [], [AC_INCLUDES_DEFAULT #if HAVE_SYS_SOCKET_H #include #endif]) -AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT +AC_CHECK_HEADERS([net/if_dl.h], [], [], [AC_INCLUDES_DEFAULT #if HAVE_SYS_SOCKET_H #include #endif]) @@ -1865,7 +1873,7 @@ dnl checks for structure members AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr, struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr, struct ifreq.ifr_addr, - struct ifreq.ifr_addr.sa_len], , , + struct ifreq.ifr_addr.sa_len], [], [], [AC_INCLUDES_DEFAULT #if HAVE_SYS_SOCKET_H #include @@ -1895,7 +1903,7 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then AUTO_DEPEND=yes fi fi -AC_SUBST(AUTO_DEPEND) +AC_SUBST([AUTO_DEPEND]) #### Choose a window system. @@ -1945,7 +1953,7 @@ ${x_library}/X11/%T/%N%S" fi done fi -AC_SUBST(LD_SWITCH_X_SITE_RPATH) +AC_SUBST([LD_SWITCH_X_SITE_RPATH]) if test "${x_includes}" != NONE && test -n "${x_includes}"; then C_SWITCH_X_SITE=$isystem`AS_ECHO(["$x_includes"]) | sed -e "s/:/ $isystem/g"` @@ -2029,17 +2037,20 @@ if test "${with_ns}" != no; then dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1. dnl If they had chosen to either define it or not, we could have dnl just used AC_CHECK_DECL here. - AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS, - emacs_cv_objc_exceptions, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + AC_CACHE_CHECK([if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS], + [emacs_cv_objc_exceptions], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0 1; #else fail; -#endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) ) +#endif]])], + [emacs_cv_objc_exceptions=yes], + [emacs_cv_objc_exceptions=no])]) if test $emacs_cv_objc_exceptions = yes; then dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers. - AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1, + AC_DEFINE([_NATIVE_OBJC_EXCEPTIONS], [1], [Define if GNUstep uses ObjC exceptions.]) GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fobjc-exceptions" fi @@ -2076,8 +2087,8 @@ Either fix this, or re-configure with the option '--without-ns'.])]) #endif #endif ])], - ns_osx_have_106=yes, - ns_osx_have_106=no) + [ns_osx_have_106=yes], + [ns_osx_have_106=no]) AC_MSG_RESULT([$ns_osx_have_106]) if test $ns_osx_have_106 = no; then @@ -2096,12 +2107,13 @@ Mac OS X 12.x or later. [emacs_cv_macosx_12_0=yes])) if test "${with_native_image_api}" = yes; then - AC_DEFINE(HAVE_NATIVE_IMAGE_API, 1, [Define to use native OS APIs for images.]) + AC_DEFINE([HAVE_NATIVE_IMAGE_API], [1], + [Define to use native OS APIs for images.]) NATIVE_IMAGE_API="yes (ns)" fi fi -AC_SUBST(LIBS_GNUSTEP) +AC_SUBST([LIBS_GNUSTEP]) INSTALL_ARCH_INDEP_EXTRA=install-etc ns_self_contained=no @@ -2115,7 +2127,7 @@ if test "${HAVE_NS}" = yes; then window_system=nextstep # set up packaging dirs if test "${EN_NS_SELF_CONTAINED}" = yes; then - AC_DEFINE(NS_SELF_CONTAINED, 1, [Build an NS bundled app]) + AC_DEFINE([NS_SELF_CONTAINED], [1], [Build an NS bundled app]) ns_self_contained=yes prefix=${ns_appresdir} exec_prefix=${ns_appbindir} @@ -2138,42 +2150,40 @@ if test "${HAVE_NS}" = yes; then fi CFLAGS="$tmp_CFLAGS" CPPFLAGS="$tmp_CPPFLAGS" -AC_SUBST(INSTALL_ARCH_INDEP_EXTRA) -AC_SUBST(ns_self_contained) -AC_SUBST(NS_OBJ) -AC_SUBST(NS_OBJC_OBJ) +AC_SUBST([INSTALL_ARCH_INDEP_EXTRA]) +AC_SUBST([ns_self_contained]) +AC_SUBST([NS_OBJ]) +AC_SUBST([NS_OBJC_OBJ]) if test "${HAVE_NS}" = yes; then + AC_LANG_PUSH([Objective C]) AC_CACHE_CHECK( [if the Objective C compiler supports instancetype], [emacs_cv_objc_instancetype], - [AC_LANG_PUSH([Objective C]) - AC_COMPILE_IFELSE( + [AC_COMPILE_IFELSE( [AC_LANG_SOURCE([[@interface Test + (instancetype)test; @end]])], - emacs_cv_objc_instancetype=yes, - emacs_cv_objc_instancetype=no) - AC_LANG_POP([Objective C])]) + [emacs_cv_objc_instancetype=yes], + [emacs_cv_objc_instancetype=no])]) if test x$emacs_cv_objc_instancetype = xyes ; then - AC_DEFINE(NATIVE_OBJC_INSTANCETYPE, 1, + AC_DEFINE([NATIVE_OBJC_INSTANCETYPE], [1], [Define if ObjC compiler supports instancetype natively.]) fi AC_CACHE_CHECK( [if the Objective C compiler defaults to C99], [emacs_cv_objc_c99], - [AC_LANG_PUSH([Objective C]) - AC_COMPILE_IFELSE( + [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([], [[for (int i = 0;;);]])], - emacs_cv_objc_c99=yes, - emacs_cv_objc_c99=no) - AC_LANG_POP([Objective C])]) + [emacs_cv_objc_c99=yes], + [emacs_cv_objc_c99=no])]) - if test x$emacs_cv_objc_c99 = xno ; then - GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -std=c99" - fi + if test x$emacs_cv_objc_c99 = xno ; then + GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -std=c99" + fi + AC_LANG_POP([Objective C]) fi HAVE_BE_APP=no @@ -2190,7 +2200,7 @@ re-configure with the option '--without-be-app'.])]) AC_LANG_POP([C++]) fi -AC_SUBST(HAVE_BE_APP) +AC_SUBST([HAVE_BE_APP]) HAVE_W32=no W32_OBJ= @@ -2238,11 +2248,11 @@ NTLIB= CM_OBJ="cm.o" XARGS_LIMIT= if test "${HAVE_W32}" = "yes"; then - AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.]) + AC_DEFINE([HAVE_NTGUI], [1], [Define to use native MS Windows GUI.]) if test "$with_toolkit_scroll_bars" = "no"; then AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for w32 build.]) fi - AC_CHECK_TOOL(WINDRES, [windres], + AC_CHECK_TOOL([WINDRES], [windres], [AC_MSG_ERROR([No resource compiler found.])]) W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o" W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o w32cygwinx.o" @@ -2255,8 +2265,8 @@ if test "${HAVE_W32}" = "yes"; then comma_version=`echo "${PACKAGE_VERSION}.0.0" | sed -e 's/\./,/g' -e 's/^\([[^,]]*,[[^,]]*,[[^,]]*,[[^,]]*\).*/\1/'` comma_space_version=`echo "$comma_version" | sed 's/,/, /g'` - AC_SUBST(comma_version) - AC_SUBST(comma_space_version) + AC_SUBST([comma_version]) + AC_SUBST([comma_space_version]) AC_CONFIG_FILES([nt/emacs.rc nt/emacsclient.rc]) if test "${opsys}" = "cygwin"; then W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lusp10 -lgdi32" @@ -2269,7 +2279,8 @@ if test "${HAVE_W32}" = "yes"; then dnl FIXME: This should probably be supported for Cygwin/w32 as dnl well, but the Cygwin build needs to link against -lgdiplus if test "${with_native_image_api}" = yes; then - AC_DEFINE(HAVE_NATIVE_IMAGE_API, 1, [Define to use native OS APIs for images.]) + AC_DEFINE([HAVE_NATIVE_IMAGE_API], [1], + [Define to use native OS APIs for images.]) NATIVE_IMAGE_API="yes (w32)" W32_OBJ="$W32_OBJ w32image.o" fi @@ -2293,20 +2304,20 @@ if test "${HAVE_W32}" = "no" && test "${opsys}" = "cygwin"; then W32_OBJ="w32cygwinx.o" fi -AC_SUBST(W32_OBJ) -AC_SUBST(W32_LIBS) -AC_SUBST(EMACSRES) -AC_SUBST(EMACS_MANIFEST) -AC_SUBST(CLIENTRES) -AC_SUBST(CLIENTW) -AC_SUBST(W32_RES_LINK) -AC_SUBST(FIRSTFILE_OBJ) -AC_SUBST(NTDIR) -AC_SUBST(CM_OBJ) -AC_SUBST(LIBS_ECLIENT) -AC_SUBST(LIB_WSOCK32) -AC_SUBST(NTLIB) -AC_SUBST(XARGS_LIMIT) +AC_SUBST([W32_OBJ]) +AC_SUBST([W32_LIBS]) +AC_SUBST([EMACSRES]) +AC_SUBST([EMACS_MANIFEST]) +AC_SUBST([CLIENTRES]) +AC_SUBST([CLIENTW]) +AC_SUBST([W32_RES_LINK]) +AC_SUBST([FIRSTFILE_OBJ]) +AC_SUBST([NTDIR]) +AC_SUBST([CM_OBJ]) +AC_SUBST([LIBS_ECLIENT]) +AC_SUBST([LIB_WSOCK32]) +AC_SUBST([NTLIB]) +AC_SUBST([XARGS_LIMIT]) if test "${HAVE_W32}" = "yes"; then window_system=w32 @@ -2323,7 +2334,7 @@ if test "$opsys" = "haiku"; then fi if test "${HAVE_BE_APP}" = "yes"; then - AC_DEFINE([HAVE_HAIKU], 1, + AC_DEFINE([HAVE_HAIKU], [1], [Define if Emacs will be built with Haiku windowing support]) fi @@ -2335,16 +2346,17 @@ if test "${HAVE_BE_APP}" = "yes"; then HAIKU_LIBS="-lbe -lgame -ltranslation -ltracker" # -lgame is needed for set_mouse_position. if test "${with_native_image_api}" = yes; then - AC_DEFINE(HAVE_NATIVE_IMAGE_API, 1, [Define to use native OS APIs for images.]) + AC_DEFINE([HAVE_NATIVE_IMAGE_API], [1], + [Define to use native OS APIs for images.]) NATIVE_IMAGE_API="yes (haiku)" HAIKU_OBJ="$HAIKU_OBJ haikuimage.o" fi fi -AC_SUBST(HAIKU_LIBS) -AC_SUBST(HAIKU_OBJ) -AC_SUBST(HAIKU_CXX_OBJ) -AC_SUBST(HAIKU_CFLAGS) +AC_SUBST([HAIKU_LIBS]) +AC_SUBST([HAIKU_OBJ]) +AC_SUBST([HAIKU_CXX_OBJ]) +AC_SUBST([HAIKU_CFLAGS]) ## $window_system is now set to the window system we will ## ultimately use. @@ -2391,16 +2403,16 @@ dnl use the toolkit if we have gtk, or X11R5 or newer. with_gtk3=yes USE_X_TOOLKIT=none HAVE_PGTK=yes - AC_DEFINE([HAVE_PGTK], 1, [Define to 1 if you have pure Gtk+-3.]) + AC_DEFINE([HAVE_PGTK], [1], [Define to 1 if you have pure Gtk+-3.]) ;; haiku ) term_header=haikuterm.h ;; esac -AC_SUBST(HAVE_PGTK) +AC_SUBST([HAVE_PGTK]) if test "$window_system" = none && test "X$with_x" != "Xno"; then - AC_CHECK_PROG(HAVE_XSERVER, X, true, false) + AC_CHECK_PROG([HAVE_XSERVER], [X], [true], [false]) if test "$HAVE_XSERVER" = true || test -n "$DISPLAY" || { @@ -2464,7 +2476,7 @@ fi GMALLOC_OBJ= HYBRID_MALLOC= if test "${system_malloc}" = "yes"; then - AC_DEFINE([SYSTEM_MALLOC], 1, + AC_DEFINE([SYSTEM_MALLOC], [1], [Define to 1 to use the system memory allocator, even if it is not Doug Lea style.]) GNU_MALLOC=no @@ -2472,7 +2484,7 @@ if test "${system_malloc}" = "yes"; then (The GNU allocators don't work with this system configuration.)" VMLIMIT_OBJ= elif test "$hybrid_malloc" = yes; then - AC_DEFINE(HYBRID_MALLOC, 1, + AC_DEFINE([HYBRID_MALLOC], [1], [Define to use gmalloc before dumping and the system malloc after.]) HYBRID_MALLOC=1 GNU_MALLOC=no @@ -2492,21 +2504,21 @@ else [emacs_cv_data_start=yes], [emacs_cv_data_start=no])]) if test $emacs_cv_data_start = yes; then - AC_DEFINE([HAVE_DATA_START], 1, + AC_DEFINE([HAVE_DATA_START], [1], [Define to 1 if data_start is the address of the start of the main data segment.]) fi fi AC_SUBST([HYBRID_MALLOC]) -AC_SUBST(GMALLOC_OBJ) -AC_SUBST(VMLIMIT_OBJ) +AC_SUBST([GMALLOC_OBJ]) +AC_SUBST([VMLIMIT_OBJ]) if test "$doug_lea_malloc" = "yes" && test "$hybrid_malloc" != yes; then if test "$GNU_MALLOC" = yes ; then GNU_MALLOC_reason=" (Using Doug Lea's new malloc from the GNU C Library.)" fi - AC_DEFINE(DOUG_LEA_MALLOC, 1, + AC_DEFINE([DOUG_LEA_MALLOC], [1], [Define to 1 if the system memory allocator is Doug Lea style, with malloc hooks and malloc_set_state.]) @@ -2530,18 +2542,19 @@ esac AC_FUNC_MMAP if test $use_mmap_for_buffers = yes; then - AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.]) + AC_DEFINE([USE_MMAP_FOR_BUFFERS], [1], + [Define to use mmap to allocate buffer text.]) REL_ALLOC=no fi LIBS="$LIBS_SYSTEM $LIBS" dnl FIXME replace main with a function we actually want from this library. -AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd") +AC_CHECK_LIB([Xbsd], [main], [LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd"]) dnl Check for the POSIX thread library. LIB_PTHREAD= -AC_CHECK_HEADERS_ONCE(pthread.h) +AC_CHECK_HEADERS_ONCE([pthread.h]) if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then AC_CACHE_CHECK([for pthread library], [emacs_cv_pthread_lib], @@ -2576,7 +2589,7 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then fi done]) if test "$emacs_cv_pthread_lib" != no; then - AC_DEFINE([HAVE_PTHREAD], 1, [Define to 1 if you have POSIX threads.]) + AC_DEFINE([HAVE_PTHREAD], [1], [Define to 1 if you have POSIX threads.]) case $emacs_cv_pthread_lib in -*) LIB_PTHREAD=$emacs_cv_pthread_lib;; esac @@ -2586,10 +2599,10 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then # definition of 'errno' in . case $opsys in hpux* | solaris) - AC_DEFINE([_REENTRANT], 1, + AC_DEFINE([_REENTRANT], [1], [Define to 1 if your system requires this in multithreaded code.]);; aix4-2) - AC_DEFINE([_THREAD_SAFE], 1, + AC_DEFINE([_THREAD_SAFE], [1], [Define to 1 if your system requires this in multithreaded code.]);; esac fi @@ -2600,12 +2613,12 @@ AC_MSG_CHECKING([for thread support]) threads_enabled=no if test "$with_threads" = yes; then if test "$emacs_cv_pthread_lib" != no; then - AC_DEFINE(THREADS_ENABLED, 1, + AC_DEFINE([THREADS_ENABLED], [1], [Define to 1 if you want elisp thread support.]) threads_enabled=yes elif test "${opsys}" = "mingw32"; then dnl MinGW can do native Windows threads even without pthreads - AC_DEFINE(THREADS_ENABLED, 1, + AC_DEFINE([THREADS_ENABLED], [1], [Define to 1 if you want elisp thread support.]) threads_enabled=yes fi @@ -2690,40 +2703,42 @@ if test "${HAVE_X11}" = "yes"; then [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])], - emacs_cv_xkb=yes, emacs_cv_xkb=no)]) + [emacs_cv_xkb=yes], + [emacs_cv_xkb=no])]) if test $emacs_cv_xkb = yes; then - AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.]) - AC_CHECK_FUNCS(XkbRefreshKeyboardMapping XkbFreeNames) + AC_DEFINE([HAVE_XKB], [1], [Define to 1 if you have the Xkb extension.]) + AC_CHECK_FUNCS([XkbRefreshKeyboardMapping XkbFreeNames]) fi - AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString XScreenNumberOfScreen) - AC_CHECK_FUNCS(XDisplayCells XDestroySubwindows) + AC_CHECK_FUNCS([XrmSetDatabase XScreenResourceString XScreenNumberOfScreen]) + AC_CHECK_FUNCS([XDisplayCells XDestroySubwindows]) fi if test "${window_system}" = "x11"; then - AC_MSG_CHECKING(X11 version 6) - AC_CACHE_VAL(emacs_cv_x11_version_6, + AC_MSG_CHECKING([X11 version 6]) + AC_CACHE_VAL([emacs_cv_x11_version_6], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[#if XlibSpecificationRelease < 6 fail; #endif -]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)]) +]])], [emacs_cv_x11_version_6=yes], + [emacs_cv_x11_version_6=no])]) if test $emacs_cv_x11_version_6 = yes; then - AC_MSG_RESULT(6 or newer) - AC_DEFINE(HAVE_X11R6, 1, + AC_MSG_RESULT([6 or newer]) + AC_DEFINE([HAVE_X11R6], [1], [Define to 1 if you have the X11R6 or newer version of Xlib.]) - AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.]) + AC_DEFINE([HAVE_X_I18N], [1], [Define if you have usable i18n support.]) AC_CHECK_MEMBERS([XICCallback.callback], [], [], [#include ]) ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style ## XIM support. case "$opsys" in solaris) : ;; - *) AC_DEFINE(HAVE_X11R6_XIM, 1, + *) AC_DEFINE([HAVE_X11R6_XIM], [1], [Define if you have usable X11R6-style XIM support.]) ;; esac else - AC_MSG_RESULT(before 6) + AC_MSG_RESULT([before 6]) fi fi @@ -2738,11 +2753,11 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" \ RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED" EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE]) - AC_SUBST(RSVG_CFLAGS) - AC_SUBST(RSVG_LIBS) + AC_SUBST([RSVG_CFLAGS]) + AC_SUBST([RSVG_LIBS]) if test $HAVE_RSVG = yes; then - AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.]) + AC_DEFINE([HAVE_RSVG], [1], [Define to 1 if using librsvg.]) CFLAGS="$CFLAGS $RSVG_CFLAGS" # Windows loads librsvg dynamically if test "${opsys}" = "mingw32"; then @@ -2759,17 +2774,14 @@ if test "${with_webp}" != "no"; then || test "${HAVE_W32}" = "yes" || test "${HAVE_NS}" = "yes" \ || test "${HAVE_BE_APP}" = "yes" || test "${HAVE_PGTK}" = "yes"; then WEBP_REQUIRED=0.6.0 - WEBP_MODULE="libwebp >= $WEBP_REQUIRED" + WEBP_MODULE="libwebpdemux >= $WEBP_REQUIRED" EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE]) - if test "$HAVE_WEBP" = "yes"; then - WEBP_LIBS="-lwebp -lwebpdemux" - fi - AC_SUBST(WEBP_CFLAGS) - AC_SUBST(WEBP_LIBS) + AC_SUBST([WEBP_CFLAGS]) + AC_SUBST([WEBP_LIBS]) fi if test $HAVE_WEBP = yes; then - AC_DEFINE(HAVE_WEBP, 1, [Define to 1 if using libwebp.]) + AC_DEFINE([HAVE_WEBP], [1], [Define to 1 if using libwebp.]) CFLAGS="$CFLAGS $WEBP_CFLAGS" # Windows loads libwebp dynamically if test "${opsys}" = "mingw32"; then @@ -2781,20 +2793,25 @@ fi ### Use -lsqlite3 if available, unless '--with-sqlite3=no' HAVE_SQLITE3=no if test "${with_sqlite3}" != "no"; then - AC_CHECK_LIB(sqlite3, sqlite3_open_v2, HAVE_SQLITE3=yes, HAVE_SQLITE3=no) + AC_CHECK_LIB([sqlite3], [sqlite3_open_v2], + [HAVE_SQLITE3=yes], + [HAVE_SQLITE3=no]) if test "$HAVE_SQLITE3" = "yes"; then SQLITE3_LIBS=-lsqlite3 - AC_SUBST(SQLITE3_LIBS) + AC_SUBST([SQLITE3_LIBS]) LIBS="$SQLITE3_LIBS $LIBS" - AC_DEFINE(HAVE_SQLITE3, 1, [Define to 1 if you have the libsqlite3 library (-lsqlite).]) + AC_DEFINE([HAVE_SQLITE3], [1], + [Define to 1 if you have the libsqlite3 library (-lsqlite).]) # Windows loads libsqlite dynamically if test "${opsys}" = "mingw32"; then SQLITE3_LIBS= fi - AC_CHECK_LIB(sqlite3, sqlite3_load_extension, - HAVE_SQLITE3_LOAD_EXTENSION=yes, HAVE_SQLITE3_LOAD_EXTENSION=no) + AC_CHECK_LIB([sqlite3], [sqlite3_load_extension], + [HAVE_SQLITE3_LOAD_EXTENSION=yes], + [HAVE_SQLITE3_LOAD_EXTENSION=no]) if test "$HAVE_SQLITE3_LOAD_EXTENSION" = "yes"; then - AC_DEFINE(HAVE_SQLITE3_LOAD_EXTENSION, 1, [Define to 1 if sqlite3 supports loading extensions.]) + AC_DEFINE([HAVE_SQLITE3_LOAD_EXTENSION], [1], + [Define to 1 if sqlite3 supports loading extensions.]) fi fi fi @@ -2811,7 +2828,8 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" EMACS_CHECK_MODULES([IMAGEMAGICK], [MagickWand >= 7]) if test $HAVE_IMAGEMAGICK = yes; then - AC_DEFINE([HAVE_IMAGEMAGICK7], 1, [Define to 1 if using ImageMagick7.]) + AC_DEFINE([HAVE_IMAGEMAGICK7], [1], + [Define to 1 if using ImageMagick7.]) else ## 6.3.5 is the earliest version known to work; see Bug#17339. ## 6.8.2 makes Emacs crash; see Bug#13867. @@ -2835,7 +2853,7 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" fi fi if test $HAVE_IMAGEMAGICK = yes; then - AC_DEFINE([HAVE_IMAGEMAGICK], 1, [Define to 1 if using ImageMagick.]) + AC_DEFINE([HAVE_IMAGEMAGICK], [1], [Define to 1 if using ImageMagick.]) else if test "${with_imagemagick}" != "no"; then AC_MSG_ERROR([ImageMagick wanted, but it does not compile. Maybe some library files are missing?]); @@ -2848,12 +2866,12 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" fi fi -AC_CHECK_LIB(anl, getaddrinfo_a, HAVE_GETADDRINFO_A=yes) +AC_CHECK_LIB([anl], [getaddrinfo_a], [HAVE_GETADDRINFO_A=yes]) if test "${HAVE_GETADDRINFO_A}" = "yes"; then - AC_DEFINE(HAVE_GETADDRINFO_A, 1, + AC_DEFINE([HAVE_GETADDRINFO_A], [1], [Define to 1 if you have getaddrinfo_a for asynchronous DNS resolution.]) GETADDRINFO_A_LIBS="-lanl" - AC_SUBST(GETADDRINFO_A_LIBS) + AC_SUBST([GETADDRINFO_A_LIBS]) fi HAVE_GTK=no @@ -2867,7 +2885,7 @@ if test "${opsys}" != "mingw32"; then if test "${window_system}" = "x11"; then GTK_REQUIRED=3.10 else - GTK_REQUIRED=3.20 + GTK_REQUIRED=3.22.23 fi GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED" @@ -2875,10 +2893,10 @@ if test "${opsys}" != "mingw32"; then EMACS_CHECK_MODULES([GTK], [$GTK_MODULES], [pkg_check_gtk=yes], [pkg_check_gtk=no]) if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then - AC_MSG_ERROR($GTK_PKG_ERRORS) + AC_MSG_ERROR([$GTK_PKG_ERRORS]) fi if test "$pkg_check_gtk" = "yes"; then - AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.]) + AC_DEFINE([HAVE_GTK3], [1], [Define to 1 if using GTK 3 or later.]) GTK_OBJ=emacsgtkfixed.o gtk_term_header=gtkutil.h USE_GTK_TOOLKIT="GTK3" @@ -2905,7 +2923,7 @@ if test "${opsys}" != "mingw32"; then if test "$pkg_check_gtk" = "no" && { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; } then - AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS) + AC_MSG_ERROR([$gtk3_pkg_errors$GTK_PKG_ERRORS]) fi test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2" fi @@ -2916,7 +2934,7 @@ OLD_LIBS=$LIBS if test x"$pkg_check_gtk" = xyes; then - AC_SUBST(GTK_LIBS) + AC_SUBST([GTK_LIBS]) CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" dnl Try to compile a simple GTK program. @@ -2948,7 +2966,7 @@ if test x"$pkg_check_gtk" = xyes; then else C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS" HAVE_GTK=yes - AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.]) + AC_DEFINE([USE_GTK], [1], [Define to 1 if using GTK.]) GTK_OBJ="gtkutil.o $GTK_OBJ" term_header=$gtk_term_header USE_X_TOOLKIT=none @@ -2960,7 +2978,7 @@ if test x"$pkg_check_gtk" = xyes; then fi fi -AC_SUBST(GTK_OBJ) +AC_SUBST([GTK_OBJ]) if test "${HAVE_GTK}" = "yes"; then @@ -2980,15 +2998,17 @@ if test "${HAVE_GTK}" = "yes"; then dnl but not declared if deprecated featured has been selected out. dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION. HAVE_GTK_FILE_SELECTION=no - AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes, - HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT + AC_CHECK_DECL([GTK_TYPE_FILE_SELECTION], + [HAVE_GTK_FILE_SELECTION=yes], + [HAVE_GTK_FILE_SELECTION=no], + [AC_INCLUDES_DEFAULT #include ]) if test "$HAVE_GTK_FILE_SELECTION" = yes; then - AC_CHECK_FUNCS(gtk_file_selection_new) + AC_CHECK_FUNCS([gtk_file_selection_new]) fi dnl This procedure causes a bug on certain Ubuntu GTK+2 builds - AC_CHECK_FUNCS(gtk_window_set_has_resize_grip) + AC_CHECK_FUNCS([gtk_window_set_has_resize_grip]) fi fi @@ -3001,10 +3021,10 @@ if test "$window_system" = "pgtk"; then PGTK_OBJ="pgtkfns.o pgtkterm.o pgtkselect.o pgtkmenu.o pgtkim.o xsettings.o" PGTK_LIBS="$GTK_LIBS" fi -AC_SUBST(PGTK_OBJ) -AC_SUBST(PGTK_LIBS) +AC_SUBST([PGTK_OBJ]) +AC_SUBST([PGTK_LIBS]) -AC_CHECK_FUNCS(malloc_trim) +AC_CHECK_FUNCS([malloc_trim]) dnl D-Bus has been tested under GNU/Linux only. Must be adapted for dnl other platforms. @@ -3013,25 +3033,25 @@ DBUS_OBJ= if test "${with_dbus}" = "yes"; then EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0]) if test "$HAVE_DBUS" = yes; then - AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.]) + AC_DEFINE([HAVE_DBUS], [1], [Define to 1 if using D-Bus.]) dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1. dnl dbus_type_is_valid and dbus_validate_* have been introduced in dnl D-Bus 1.5.12. OLD_LIBS=$LIBS LIBS="$LIBS $DBUS_LIBS" - AC_CHECK_FUNCS(dbus_watch_get_unix_fd \ + AC_CHECK_FUNCS([dbus_watch_get_unix_fd \ dbus_type_is_valid \ dbus_validate_bus_name \ dbus_validate_path \ dbus_validate_interface \ - dbus_validate_member) + dbus_validate_member]) LIBS=$OLD_LIBS DBUS_OBJ=dbusbind.o fi fi -AC_SUBST(DBUS_CFLAGS) -AC_SUBST(DBUS_LIBS) -AC_SUBST(DBUS_OBJ) +AC_SUBST([DBUS_CFLAGS]) +AC_SUBST([DBUS_LIBS]) +AC_SUBST([DBUS_OBJ]) dnl GSettings has been tested under GNU/Linux only. HAVE_GSETTINGS=no @@ -3056,7 +3076,7 @@ if test "${HAVE_X11}" = "yes" -o "${window_system}" = "pgtk" && test "${with_gse [emacs_cv_gsettings_in_gio=yes], [emacs_cv_gsettings_in_gio=no])]) if test "$emacs_cv_gsettings_in_gio" = "yes"; then - AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.]) + AC_DEFINE([HAVE_GSETTINGS], [1], [Define to 1 if using GSettings.]) SETTINGS_CFLAGS="$GSETTINGS_CFLAGS" SETTINGS_LIBS="$GSETTINGS_LIBS" test "$with_gconf" = "yes" || with_gconf=no @@ -3065,7 +3085,7 @@ if test "${HAVE_X11}" = "yes" -o "${window_system}" = "pgtk" && test "${with_gse LIBS=$old_LIBS fi fi -AC_SUBST(HAVE_GSETTINGS) +AC_SUBST([HAVE_GSETTINGS]) dnl GConf has been tested under GNU/Linux only. dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6. @@ -3073,7 +3093,7 @@ HAVE_GCONF=no if test "${HAVE_X11}" = "yes" -o "${window_system}" = "pgtk" && test "${with_gconf}" != "no"; then EMACS_CHECK_MODULES([GCONF], [gconf-2.0 >= 2.13]) if test "$HAVE_GCONF" = yes; then - AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.]) + AC_DEFINE([HAVE_GCONF], [1], [Define to 1 if using GConf.]) dnl Newer GConf doesn't link with g_objects, so this is not defined. SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS" SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS" @@ -3093,33 +3113,35 @@ if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then CFLAGS="$SAVE_CFLAGS" LIBS="$SAVE_LIBS" fi -AC_SUBST(SETTINGS_CFLAGS) -AC_SUBST(SETTINGS_LIBS) +AC_SUBST([SETTINGS_CFLAGS]) +AC_SUBST([SETTINGS_LIBS]) USE_STARTUP_NOTIFICATION=no if test "${HAVE_GTK}" = "yes"; then USE_STARTUP_NOTIFICATION=yes fi -AC_SUBST(USE_STARTUP_NOTIFICATION) +AC_SUBST([USE_STARTUP_NOTIFICATION]) dnl SELinux is available for GNU/Linux only. HAVE_LIBSELINUX=no LIBSELINUX_LIBS= if test "${with_selinux}" = "yes"; then - AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no) + AC_CHECK_LIB([selinux], [lgetfilecon], + [HAVE_LIBSELINUX=yes], + [HAVE_LIBSELINUX=no]) if test "$HAVE_LIBSELINUX" = yes; then - AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.]) + AC_DEFINE([HAVE_LIBSELINUX], [1], [Define to 1 if using SELinux.]) LIBSELINUX_LIBS=-lselinux fi fi -AC_SUBST(LIBSELINUX_LIBS) +AC_SUBST([LIBSELINUX_LIBS]) HAVE_GNUTLS=no if test "${with_gnutls}" != "no" ; then EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.2], [HAVE_GNUTLS=yes], [HAVE_GNUTLS=no]) if test "${HAVE_GNUTLS}" = "yes"; then - AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.]) + AC_DEFINE([HAVE_GNUTLS], [1], [Define if using GnuTLS.]) fi # Windows loads GnuTLS dynamically @@ -3128,8 +3150,8 @@ if test "${with_gnutls}" != "no" ; then fi fi -AC_SUBST(LIBGNUTLS_LIBS) -AC_SUBST(LIBGNUTLS_CFLAGS) +AC_SUBST([LIBGNUTLS_LIBS]) +AC_SUBST([LIBGNUTLS_CFLAGS]) HAVE_LIBSYSTEMD=no if test "${with_libsystemd}" = "yes" ; then @@ -3139,12 +3161,12 @@ if test "${with_libsystemd}" = "yes" ; then EMACS_CHECK_MODULES([LIBSYSTEMD], [libsystemd >= 222], [HAVE_LIBSYSTEMD=yes], [HAVE_LIBSYSTEMD=no]) if test "${HAVE_LIBSYSTEMD}" = "yes"; then - AC_DEFINE(HAVE_LIBSYSTEMD, 1, [Define if using libsystemd.]) + AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if using libsystemd.]) fi fi -AC_SUBST(LIBSYSTEMD_LIBS) -AC_SUBST(LIBSYSTEMD_CFLAGS) +AC_SUBST([LIBSYSTEMD_LIBS]) +AC_SUBST([LIBSYSTEMD_CFLAGS]) HAVE_JSON=no JSON_OBJ= @@ -3153,7 +3175,7 @@ if test "${with_json}" != no; then EMACS_CHECK_MODULES([JSON], [jansson >= 2.7], [HAVE_JSON=yes], [HAVE_JSON=no]) if test "${HAVE_JSON}" = yes; then - AC_DEFINE(HAVE_JSON, 1, [Define if using Jansson.]) + AC_DEFINE([HAVE_JSON], [1], [Define if using Jansson.]) JSON_OBJ=json.o fi @@ -3163,9 +3185,9 @@ if test "${with_json}" != no; then fi fi -AC_SUBST(JSON_LIBS) -AC_SUBST(JSON_CFLAGS) -AC_SUBST(JSON_OBJ) +AC_SUBST([JSON_LIBS]) +AC_SUBST([JSON_CFLAGS]) +AC_SUBST([JSON_OBJ]) HAVE_TREE_SITTER=no TREE_SITTER_OBJ= @@ -3198,9 +3220,9 @@ case $with_file_notification,$opsys in Consider using gfile instead.]) ;; w32,* | yes,mingw32) - AC_CHECK_HEADER(windows.h) + AC_CHECK_HEADER([windows.h]) if test "$ac_cv_header_windows_h" = yes ; then - AC_DEFINE(HAVE_W32NOTIFY, 1, [Define to 1 to use w32notify.]) + AC_DEFINE([HAVE_W32NOTIFY], [1], [Define to 1 to use w32notify.]) NOTIFY_OBJ=w32notify.o NOTIFY_SUMMARY="yes (w32)" fi ;; @@ -3209,11 +3231,11 @@ esac dnl inotify is available only on GNU/Linux. case $with_file_notification,$NOTIFY_OBJ in inotify, | yes,) - AC_CHECK_HEADER(sys/inotify.h) + AC_CHECK_HEADER([sys/inotify.h]) if test "$ac_cv_header_sys_inotify_h" = yes ; then - AC_CHECK_FUNC(inotify_init1) + AC_CHECK_FUNC([inotify_init1]) if test "$ac_cv_func_inotify_init1" = yes; then - AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.]) + AC_DEFINE([HAVE_INOTIFY], [1], [Define to 1 to use inotify.]) NOTIFY_OBJ=inotify.o NOTIFY_SUMMARY="yes -lglibc (inotify)" fi @@ -3225,16 +3247,16 @@ case $with_file_notification,$NOTIFY_OBJ in kqueue,* | yes,) EMACS_CHECK_MODULES([KQUEUE], [libkqueue]) if test "$HAVE_KQUEUE" = "yes"; then - AC_DEFINE(HAVE_KQUEUE, 1, [Define to 1 to use kqueue.]) + AC_DEFINE([HAVE_KQUEUE], [1], [Define to 1 to use kqueue.]) CPPFLAGS="$CPPFLAGS -I/usr/include/kqueue" NOTIFY_CFLAGS=$KQUEUE_CFLAGS NOTIFY_LIBS=$KQUEUE_LIBS NOTIFY_OBJ=kqueue.o NOTIFY_SUMMARY="yes -lkqueue" else - AC_SEARCH_LIBS(kqueue, []) + AC_SEARCH_LIBS([kqueue], []) if test "$ac_cv_search_kqueue" != no; then - AC_DEFINE(HAVE_KQUEUE, 1, [Define to 1 to use kqueue.]) + AC_DEFINE([HAVE_KQUEUE], [1], [Define to 1 to use kqueue.]) NOTIFY_OBJ=kqueue.o NOTIFY_SUMMARY="yes (kqueue)" fi @@ -3252,7 +3274,7 @@ Consider kqueue instead.]) else EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24]) if test "$HAVE_GFILENOTIFY" = "yes"; then - AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.]) + AC_DEFINE([HAVE_GFILENOTIFY], [1], [Define to 1 if using GFile.]) NOTIFY_CFLAGS=$GFILENOTIFY_CFLAGS NOTIFY_LIBS=$GFILENOTIFY_LIBS NOTIFY_OBJ=gfilenotify.o @@ -3267,11 +3289,12 @@ case $with_file_notification,$NOTIFY_OBJ in esac if test -n "$NOTIFY_OBJ"; then - AC_DEFINE(USE_FILE_NOTIFY, 1, [Define to 1 if using file notifications.]) + AC_DEFINE([USE_FILE_NOTIFY], [1], + [Define to 1 if using file notifications.]) fi -AC_SUBST(NOTIFY_CFLAGS) -AC_SUBST(NOTIFY_LIBS) -AC_SUBST(NOTIFY_OBJ) +AC_SUBST([NOTIFY_CFLAGS]) +AC_SUBST([NOTIFY_LIBS]) +AC_SUBST([NOTIFY_OBJ]) dnl Do not put whitespace before the #include statements below. dnl Older compilers (eg sunos4 cc) choke on it. @@ -3279,36 +3302,37 @@ HAVE_XAW3D=no LUCID_LIBW= if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then if test "$with_xaw3d" != no; then - AC_CACHE_VAL(emacs_cv_xaw3d, + AC_CACHE_VAL([emacs_cv_xaw3d], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[]])], - [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb, - emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)], - emacs_cv_xaw3d=no)]) + [AC_CHECK_LIB([Xaw3d], [XawScrollbarSetThumb], + [emacs_cv_xaw3d=yes], + [emacs_cv_xaw3d=no])], + [emacs_cv_xaw3d=no])]) else emacs_cv_xaw3d=no fi if test $emacs_cv_xaw3d = yes; then - AC_MSG_CHECKING(for xaw3d) + AC_MSG_CHECKING([for xaw3d]) AC_MSG_RESULT([yes; using Lucid toolkit]) USE_X_TOOLKIT=LUCID HAVE_XAW3D=yes LUCID_LIBW=-lXaw3d - AC_DEFINE(HAVE_XAW3D, 1, + AC_DEFINE([HAVE_XAW3D], [1], [Define to 1 if you have the Xaw3d library (-lXaw3d).]) else - AC_MSG_CHECKING(for xaw3d) - AC_MSG_RESULT(no) - AC_MSG_CHECKING(for libXaw) - AC_CACHE_VAL(emacs_cv_xaw, + AC_MSG_CHECKING([for xaw3d]) + AC_MSG_RESULT([no]) + AC_MSG_CHECKING([for libXaw]) + AC_CACHE_VAL([emacs_cv_xaw], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[]])], - emacs_cv_xaw=yes, - emacs_cv_xaw=no)]) + [emacs_cv_xaw=yes], + [emacs_cv_xaw=no])]) if test $emacs_cv_xaw = yes; then AC_MSG_RESULT([yes; using Lucid toolkit]) USE_X_TOOLKIT=LUCID @@ -3330,17 +3354,18 @@ X_TOOLKIT_TYPE=$USE_X_TOOLKIT LIBXTR6= LIBXMU= if test "${USE_X_TOOLKIT}" != "none"; then - AC_MSG_CHECKING(X11 toolkit version) - AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6, + AC_MSG_CHECKING([X11 toolkit version]) + AC_CACHE_VAL([emacs_cv_x11_toolkit_version_6], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[#if XtSpecificationRelease < 6 fail; #endif -]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)]) +]])], [emacs_cv_x11_toolkit_version_6=yes], + [emacs_cv_x11_toolkit_version_6=no])]) HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6 if test $emacs_cv_x11_toolkit_version_6 = yes; then - AC_MSG_RESULT(6 or newer) - AC_DEFINE(HAVE_X11XTR6, 1, + AC_MSG_RESULT([6 or newer]) + AC_DEFINE([HAVE_X11XTR6], [1], [Define to 1 if you have the X11R6 or newer version of Xt.]) LIBXTR6="-lSM -lICE" case "$opsys" in @@ -3348,7 +3373,7 @@ fail; unixware) LIBXTR6="$LIBXTR6 -lw" ;; esac else - AC_MSG_RESULT(before 6) + AC_MSG_RESULT([before 6]) fi dnl If using toolkit, check whether libXmu.a exists. @@ -3366,8 +3391,8 @@ dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link. LIBS=$OLDLIBS dnl ac_cv_search_XmuConvertStandardSelection is also referenced below. fi -AC_SUBST(LIBXTR6) -AC_SUBST(LIBXMU) +AC_SUBST([LIBXTR6]) +AC_SUBST([LIBXMU]) LIBXP= if test "${USE_X_TOOLKIT}" = "MOTIF"; then @@ -3385,21 +3410,21 @@ if test "${USE_X_TOOLKIT}" = "MOTIF"; then else emacs_cv_openmotif=no fi - AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1, + AC_CACHE_CHECK([for (Open)Motif version 2.1], [emacs_cv_motif_version_2_1], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1) int x = 5; #else Motif version prior to 2.1. #endif]])], - emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)]) + [emacs_cv_motif_version_2_1=yes], + [emacs_cv_motif_version_2_1=no])]) if test $emacs_cv_motif_version_2_1 = yes; then - AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp) + AC_CHECK_LIB([Xp], [XpCreateContext], [LIBXP=-lXp]) if test x$emacs_cv_openmotif = xyes; then REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS" fi else - AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif, # We put this in CFLAGS temporarily to precede other -I options # that might be in CFLAGS temporarily. # We put this in CPPFLAGS where it precedes the other -I options. @@ -3407,9 +3432,14 @@ Motif version prior to 2.1. OLD_CFLAGS=$CFLAGS CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS" CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS" - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], - [[int x = 5;]])], - emacs_cv_lesstif=yes, emacs_cv_lesstif=no)]) + AC_CACHE_CHECK([for LessTif where some systems put it], [emacs_cv_lesstif], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[int x = 5;]])], + [emacs_cv_lesstif=yes], + [emacs_cv_lesstif=no])]) if test $emacs_cv_lesstif = yes; then # Make sure this -I option remains in CPPFLAGS after it is set # back to REAL_CPPFLAGS. @@ -3431,34 +3461,34 @@ dnl Use toolkit scroll bars if configured for GTK or X toolkit and either dnl using Motif or Xaw3d is available, and unless dnl --with-toolkit-scroll-bars=no was specified. -AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS, +AH_TEMPLATE([USE_TOOLKIT_SCROLL_BARS], [Define to 1 if we should use toolkit scroll bars.])dnl USE_TOOLKIT_SCROLL_BARS=no if test "${with_toolkit_scroll_bars}" != "no"; then if test "${USE_X_TOOLKIT}" != "none"; then if test "${USE_X_TOOLKIT}" = "MOTIF"; then - AC_DEFINE(USE_TOOLKIT_SCROLL_BARS) + AC_DEFINE([USE_TOOLKIT_SCROLL_BARS]) HAVE_XAW3D=no USE_TOOLKIT_SCROLL_BARS=yes elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then - AC_DEFINE(USE_TOOLKIT_SCROLL_BARS) + AC_DEFINE([USE_TOOLKIT_SCROLL_BARS]) USE_TOOLKIT_SCROLL_BARS=yes fi elif test "${HAVE_GTK}" = "yes"; then - AC_DEFINE(USE_TOOLKIT_SCROLL_BARS) + AC_DEFINE([USE_TOOLKIT_SCROLL_BARS]) USE_TOOLKIT_SCROLL_BARS=yes elif test "${HAVE_NS}" = "yes"; then - AC_DEFINE(USE_TOOLKIT_SCROLL_BARS) + AC_DEFINE([USE_TOOLKIT_SCROLL_BARS]) USE_TOOLKIT_SCROLL_BARS=yes elif test "${HAVE_W32}" = "yes"; then - AC_DEFINE(USE_TOOLKIT_SCROLL_BARS) + AC_DEFINE([USE_TOOLKIT_SCROLL_BARS]) USE_TOOLKIT_SCROLL_BARS=yes elif test "${HAVE_BE_APP}" = "yes"; then - AC_DEFINE(USE_TOOLKIT_SCROLL_BARS) + AC_DEFINE([USE_TOOLKIT_SCROLL_BARS]) USE_TOOLKIT_SCROLL_BARS=yes fi -elif test "${window_system}" != "x11" && "${window_system}" != "none"; then - AC_MSG_ERROR(Non-toolkit scroll bars are not implemented for your system) +elif test "${window_system}" != "x11" && test "${window_system}" != "none"; then + AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for your system]) fi dnl See if XIM is available. @@ -3467,14 +3497,14 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include ]], [[XIMProc callback;]])], [HAVE_XIM=yes - AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])], - HAVE_XIM=no) + AC_DEFINE([HAVE_XIM], [1], [Define to 1 if XIM is available])], + [HAVE_XIM=no]) dnl Note this is non-standard. --with-xim does not control whether dnl XIM support is compiled in, it only affects the runtime default of dnl use_xim in xterm.c. if test "${with_xim}" != "no"; then - AC_DEFINE(USE_XIM, 1, + AC_DEFINE([USE_XIM], [1], [Define to 1 to default runtime use of XIM to on.]) fi @@ -3490,8 +3520,8 @@ if test "${HAVE_X11}" = "yes"; then [AC_CHECK_LIB([Xrender], [XRenderQueryExtension], [HAVE_XRENDER=yes])]) if test $HAVE_XRENDER = yes; then XRENDER_LIBS="-lXrender" - AC_SUBST(XRENDER_LIBS) - AC_DEFINE([HAVE_XRENDER], 1, [Define to 1 if XRender is available.]) + AC_SUBST([XRENDER_LIBS]) + AC_DEFINE([HAVE_XRENDER], [1], [Define to 1 if XRender is available.]) fi fi @@ -3500,20 +3530,21 @@ if test "${HAVE_X11}" = "yes"; then if test "${with_cairo}" != "no"; then CAIRO_REQUIRED=1.8.0 CAIRO_MODULE="cairo >= $CAIRO_REQUIRED" - EMACS_CHECK_MODULES(CAIRO, $CAIRO_MODULE) + EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE]) if test $HAVE_CAIRO = yes; then CAIRO_XCB_MODULE="cairo-xcb >= $CAIRO_REQUIRED" - EMACS_CHECK_MODULES(CAIRO_XCB, $CAIRO_XCB_MODULE) + EMACS_CHECK_MODULES([CAIRO_XCB], [$CAIRO_XCB_MODULE]) if test $HAVE_CAIRO_XCB = yes; then CAIRO_CFLAGS="$CAIRO_CFLAGS $CAIRO_XCB_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $CAIRO_XCB_LIBS" - AC_DEFINE(USE_CAIRO_XCB, 1, [Define to 1 if cairo XCB surfaces are available.]) + AC_DEFINE([USE_CAIRO_XCB], [1], + [Define to 1 if cairo XCB surfaces are available.]) fi - AC_DEFINE(USE_CAIRO, 1, [Define to 1 if using cairo.]) + AC_DEFINE([USE_CAIRO], [1], [Define to 1 if using cairo.]) CFLAGS="$CFLAGS $CAIRO_CFLAGS" LIBS="$LIBS $CAIRO_LIBS" - AC_SUBST(CAIRO_CFLAGS) - AC_SUBST(CAIRO_LIBS) + AC_SUBST([CAIRO_CFLAGS]) + AC_SUBST([CAIRO_LIBS]) else AC_MSG_WARN([cairo requested but not found.]) fi @@ -3533,12 +3564,12 @@ if test "$with_xwidgets" != "no"; then XWIDGETS_OBJ="xwidget.o" if test "$HAVE_X_WINDOWS" = "yes" && test "${with_cairo}" = "no"; then CAIRO_XLIB_MODULES="cairo >= 1.8.0 cairo-xlib >= 1.8.0" - EMACS_CHECK_MODULES(CAIRO_XLIB, $CAIRO_XLIB_MODULES) + EMACS_CHECK_MODULES([CAIRO_XLIB], [$CAIRO_XLIB_MODULES]) if test $HAVE_CAIRO_XLIB = "yes"; then CAIRO_CFLAGS="$CAIRO_XLIB_CFLAGS" CAIRO_LIBS="$CAIRO_XLIB_LIBS" - AC_SUBST(CAIRO_CFLAGS) - AC_SUBST(CAIRO_LIBS) + AC_SUBST([CAIRO_CFLAGS]) + AC_SUBST([CAIRO_LIBS]) else AC_MSG_ERROR([xwidgets requested, but a suitable cairo installation wasn't found]) fi @@ -3553,7 +3584,7 @@ if test "$with_xwidgets" != "no"; then XWIDGETS_OBJ="xwidget.o" NS_OBJC_OBJ="$NS_OBJC_OBJ nsxwidget.o" dnl Update NS_OBJC_OBJ with added nsxwidget.o - AC_SUBST(NS_OBJC_OBJ) + AC_SUBST([NS_OBJC_OBJ]) else AC_MSG_ERROR([xwidgets requested, it requires GTK3 as X window toolkit or macOS Cocoa as window system.]) fi @@ -3561,37 +3592,37 @@ if test "$with_xwidgets" != "no"; then test $HAVE_XWIDGETS = yes || AC_MSG_ERROR([xwidgets requested but WebKitGTK+ or WebKit framework not found.]) - AC_DEFINE([HAVE_XWIDGETS], 1, [Define to 1 if you have xwidgets support.]) + AC_DEFINE([HAVE_XWIDGETS], [1], [Define to 1 if you have xwidgets support.]) fi -AC_SUBST(XWIDGETS_OBJ) +AC_SUBST([XWIDGETS_OBJ]) if test "$window_system" = "pgtk"; then CAIRO_REQUIRED=1.12.0 CAIRO_MODULE="cairo >= $CAIRO_REQUIRED" - EMACS_CHECK_MODULES(CAIRO, $CAIRO_MODULE) + EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE]) if test $HAVE_CAIRO = yes; then - AC_DEFINE(USE_CAIRO, 1, [Define to 1 if using cairo.]) + AC_DEFINE([USE_CAIRO], [1], [Define to 1 if using cairo.]) else AC_MSG_ERROR([cairo required but not found.]) fi CFLAGS="$CFLAGS $CAIRO_CFLAGS" LIBS="$LIBS $CAIRO_LIBS" - AC_SUBST(CAIRO_CFLAGS) - AC_SUBST(CAIRO_LIBS) + AC_SUBST([CAIRO_CFLAGS]) + AC_SUBST([CAIRO_LIBS]) fi if test "${HAVE_BE_APP}" = "yes"; then if test "${with_be_cairo}" != "no"; then CAIRO_REQUIRED=1.8.0 CAIRO_MODULE="cairo >= $CAIRO_REQUIRED" - EMACS_CHECK_MODULES(CAIRO, $CAIRO_MODULE) + EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE]) if test $HAVE_CAIRO = yes; then - AC_DEFINE(USE_BE_CAIRO, 1, [Define to 1 if using cairo on Haiku.]) + AC_DEFINE([USE_BE_CAIRO], [1], [Define to 1 if using cairo on Haiku.]) CFLAGS="$CFLAGS $CAIRO_CFLAGS" LIBS="$LIBS $CAIRO_LIBS" - AC_SUBST(CAIRO_CFLAGS) - AC_SUBST(CAIRO_LIBS) + AC_SUBST([CAIRO_CFLAGS]) + AC_SUBST([CAIRO_LIBS]) else AC_MSG_WARN([cairo requested but not found.]) fi @@ -3611,11 +3642,12 @@ if test "${HAVE_X11}" = "yes"; then dnl The following is needed to set FREETYPE_LIBS. EMACS_CHECK_MODULES([FREETYPE], [freetype2]) - test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(cairo requires libfreetype) + test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR([cairo requires libfreetype]) EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0]) - test "$HAVE_FONTCONFIG" = "no" && AC_MSG_ERROR(cairo requires libfontconfig) + test "$HAVE_FONTCONFIG" = "no" && + AC_MSG_ERROR([cairo requires libfontconfig]) dnl For the "Does Emacs use" message at the end. HAVE_XFT=no else @@ -3642,13 +3674,15 @@ if test "${HAVE_X11}" = "yes"; then CPPFLAGS="$CPPFLAGS $XFT_CFLAGS" CFLAGS="$CFLAGS $XFT_CFLAGS" LIBS="$XFT_LIBS $LIBS" - AC_CHECK_HEADER(X11/Xft/Xft.h, - AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS) , , + AC_CHECK_HEADER([X11/Xft/Xft.h], + [AC_CHECK_LIB([Xft], [XftFontOpen], [HAVE_XFT=yes], + [], [$XFT_LIBS])], + [], [[#include ]]) if test "${HAVE_XFT}" = "yes"; then - AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.]) - AC_SUBST(XFT_LIBS) + AC_DEFINE([HAVE_XFT], [1], [Define to 1 if you have the Xft library.]) + AC_SUBST([XFT_LIBS]) C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS" fi # "${HAVE_XFT}" = "yes" CPPFLAGS=$OLD_CPPFLAGS @@ -3671,34 +3705,35 @@ if test "${HAVE_X11}" = "yes"; then dnl The following is needed to set FREETYPE_LIBS. EMACS_CHECK_MODULES([FREETYPE], [freetype2]) - test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype) + test "$HAVE_FREETYPE" = "no" && + AC_MSG_ERROR([libxft requires libfreetype]) fi fi # $HAVE_CAIRO != yes HAVE_LIBOTF=no if test "${HAVE_FREETYPE}" = "yes"; then - AC_DEFINE(HAVE_FREETYPE, 1, + AC_DEFINE([HAVE_FREETYPE], [1], [Define to 1 if using the freetype and fontconfig libraries.]) OLD_CFLAGS=$CFLAGS OLD_LIBS=$LIBS CFLAGS="$CFLAGS $FREETYPE_CFLAGS" LIBS="$FREETYPE_LIBS $LIBS" - AC_CHECK_FUNCS(FT_Face_GetCharVariantIndex) + AC_CHECK_FUNCS([FT_Face_GetCharVariantIndex]) CFLAGS=$OLD_CFLAGS LIBS=$OLD_LIBS if test "${with_libotf}" != "no"; then EMACS_CHECK_MODULES([LIBOTF], [libotf]) if test "$HAVE_LIBOTF" = "yes"; then - AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.]) - AC_CHECK_LIB(otf, OTF_get_variation_glyphs, - HAVE_OTF_GET_VARIATION_GLYPHS=yes, - HAVE_OTF_GET_VARIATION_GLYPHS=no) + AC_DEFINE([HAVE_LIBOTF], [1], [Define to 1 if using libotf.]) + AC_CHECK_LIB([otf], [OTF_get_variation_glyphs], + [HAVE_OTF_GET_VARIATION_GLYPHS=yes], + [HAVE_OTF_GET_VARIATION_GLYPHS=no]) if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then - AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1, + AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1], [Define to 1 if libotf has OTF_get_variation_glyphs.]) fi if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then - AC_DEFINE(HAVE_OTF_KANNADA_BUG, 1, + AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1], [Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.]) fi fi @@ -3712,7 +3747,7 @@ if test "${HAVE_X11}" = "yes"; then if test "${with_m17n_flt}" != "no"; then EMACS_CHECK_MODULES([M17N_FLT], [m17n-flt]) if test "$HAVE_M17N_FLT" = "yes"; then - AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.]) + AC_DEFINE([HAVE_M17N_FLT], [1], [Define to 1 if using libm17n-flt.]) fi fi fi @@ -3721,20 +3756,20 @@ else # "${HAVE_X11}" != "yes" EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0]) EMACS_CHECK_MODULES([FREETYPE], [freetype2]) if test "$HAVE_FONTCONFIG" != yes -o "$HAVE_FREETYPE" != yes; then - AC_MSG_ERROR(fontconfig and freetype is required.) + AC_MSG_ERROR([fontconfig and freetype is required.]) fi HAVE_LIBOTF=no - AC_DEFINE(HAVE_FREETYPE, 1, + AC_DEFINE([HAVE_FREETYPE], [1], [Define to 1 if using the freetype and fontconfig libraries.]) if test "${with_libotf}" != "no"; then EMACS_CHECK_MODULES([LIBOTF], [libotf]) if test "$HAVE_LIBOTF" = "yes"; then - AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.]) - AC_CHECK_LIB(otf, OTF_get_variation_glyphs, - HAVE_OTF_GET_VARIATION_GLYPHS=yes, - HAVE_OTF_GET_VARIATION_GLYPHS=no) + AC_DEFINE([HAVE_LIBOTF], [1], [Define to 1 if using libotf.]) + AC_CHECK_LIB([otf], [OTF_get_variation_glyphs], + [HAVE_OTF_GET_VARIATION_GLYPHS=yes], + [HAVE_OTF_GET_VARIATION_GLYPHS=no]) if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then - AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1, + AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1], [Define to 1 if libotf has OTF_get_variation_glyphs.]) fi fi @@ -3761,7 +3796,7 @@ if test "${HAVE_X11}" = "yes" && test "${HAVE_FREETYPE}" = "yes" \ if test "${with_harfbuzz}" != "no"; then EMACS_CHECK_MODULES([HARFBUZZ], [harfbuzz >= $harfbuzz_required_ver]) if test "$HAVE_HARFBUZZ" = "yes"; then - AC_DEFINE(HAVE_HARFBUZZ, 1, [Define to 1 if using HarfBuzz.]) + AC_DEFINE([HAVE_HARFBUZZ], [1], [Define to 1 if using HarfBuzz.]) ### mingw32 and Cygwin-w32 don't use -lharfbuzz, since they load ### the library dynamically. if test "${HAVE_W32}" = "yes"; then @@ -3775,36 +3810,38 @@ fi if test "${HAVE_BE_APP}" = "yes"; then if test $HAVE_CAIRO = "yes"; then EMACS_CHECK_MODULES([FREETYPE], [freetype2 >= 2.5.0]) - test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(cairo on Haiku requires libfreetype) + test "$HAVE_FREETYPE" = "no" && + AC_MSG_ERROR([cairo on Haiku requires libfreetype]) EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0]) - test "$HAVE_FONTCONFIG" = "no" && AC_MSG_ERROR(cairo on Haiku requires libfontconfig) + test "$HAVE_FONTCONFIG" = "no" && + AC_MSG_ERROR([cairo on Haiku requires libfontconfig]) fi HAVE_LIBOTF=no if test "${HAVE_FREETYPE}" = "yes"; then - AC_DEFINE(HAVE_FREETYPE, 1, + AC_DEFINE([HAVE_FREETYPE], [1], [Define to 1 if using the freetype and fontconfig libraries.]) OLD_CFLAGS=$CFLAGS OLD_LIBS=$LIBS CFLAGS="$CFLAGS $FREETYPE_CFLAGS" LIBS="$FREETYPE_LIBS $LIBS" - AC_CHECK_FUNCS(FT_Face_GetCharVariantIndex) + AC_CHECK_FUNCS([FT_Face_GetCharVariantIndex]) CFLAGS=$OLD_CFLAGS LIBS=$OLD_LIBS if test "${with_libotf}" != "no"; then EMACS_CHECK_MODULES([LIBOTF], [libotf]) if test "$HAVE_LIBOTF" = "yes"; then - AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.]) - AC_CHECK_LIB(otf, OTF_get_variation_glyphs, - HAVE_OTF_GET_VARIATION_GLYPHS=yes, - HAVE_OTF_GET_VARIATION_GLYPHS=no) + AC_DEFINE([HAVE_LIBOTF], [1], [Define to 1 if using libotf.]) + AC_CHECK_LIB([otf], [OTF_get_variation_glyphs], + [HAVE_OTF_GET_VARIATION_GLYPHS=yes], + [HAVE_OTF_GET_VARIATION_GLYPHS=no]) if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then - AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1, + AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1], [Define to 1 if libotf has OTF_get_variation_glyphs.]) fi if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then - AC_DEFINE(HAVE_OTF_KANNADA_BUG, 1, + AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1], [Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.]) fi fi @@ -3818,41 +3855,41 @@ if test "${HAVE_BE_APP}" = "yes" && test "${HAVE_FREETYPE}" = "yes"; then if test "${with_harfbuzz}" != "no"; then EMACS_CHECK_MODULES([HARFBUZZ], [harfbuzz >= $harfbuzz_required_ver]) if test "$HAVE_HARFBUZZ" = "yes"; then - AC_DEFINE(HAVE_HARFBUZZ, 1, [Define to 1 if using HarfBuzz.]) + AC_DEFINE([HAVE_HARFBUZZ], [1], [Define to 1 if using HarfBuzz.]) fi fi fi ### End of font-backend section. -AC_SUBST(FREETYPE_CFLAGS) -AC_SUBST(FREETYPE_LIBS) -AC_SUBST(FONTCONFIG_CFLAGS) -AC_SUBST(FONTCONFIG_LIBS) -AC_SUBST(HARFBUZZ_CFLAGS) -AC_SUBST(HARFBUZZ_LIBS) -AC_SUBST(LIBOTF_CFLAGS) -AC_SUBST(LIBOTF_LIBS) -AC_SUBST(M17N_FLT_CFLAGS) -AC_SUBST(M17N_FLT_LIBS) +AC_SUBST([FREETYPE_CFLAGS]) +AC_SUBST([FREETYPE_LIBS]) +AC_SUBST([FONTCONFIG_CFLAGS]) +AC_SUBST([FONTCONFIG_LIBS]) +AC_SUBST([HARFBUZZ_CFLAGS]) +AC_SUBST([HARFBUZZ_LIBS]) +AC_SUBST([LIBOTF_CFLAGS]) +AC_SUBST([LIBOTF_LIBS]) +AC_SUBST([M17N_FLT_CFLAGS]) +AC_SUBST([M17N_FLT_LIBS]) XCB_LIBS= if test "${HAVE_X11}" = "yes"; then - AC_CHECK_HEADER(X11/Xlib-xcb.h, - AC_CHECK_LIB(xcb, xcb_translate_coordinates, HAVE_XCB=yes)) + AC_CHECK_HEADER([X11/Xlib-xcb.h], + [AC_CHECK_LIB([xcb], [xcb_translate_coordinates], [HAVE_XCB=yes])]) if test "${HAVE_XCB}" = "yes"; then - AC_CHECK_LIB(X11-xcb, XGetXCBConnection, HAVE_X11_XCB=yes) + AC_CHECK_LIB([X11-xcb], [XGetXCBConnection], [HAVE_X11_XCB=yes]) if test "${HAVE_X11_XCB}" = "yes"; then - AC_CHECK_LIB(xcb-util, xcb_aux_sync, HAVE_XCB_UTIL=yes) + AC_CHECK_LIB([xcb-util], [xcb_aux_sync], [HAVE_XCB_UTIL=yes]) if test "${HAVE_XCB_UTIL}" = "yes"; then - AC_DEFINE(USE_XCB, 1, + AC_DEFINE([USE_XCB], [1], [Define to 1 if you have the XCB library and X11-XCB library for mixed X11/XCB programming.]) XCB_LIBS="-lX11-xcb -lxcb -lxcb-util" else - AC_CHECK_LIB(xcb-aux, xcb_aux_sync, HAVE_XCB_AUX=yes) + AC_CHECK_LIB([xcb-aux], [xcb_aux_sync], [HAVE_XCB_AUX=yes]) if test "${HAVE_XCB_AUX}" = "yes"; then - AC_DEFINE(USE_XCB, 1, + AC_DEFINE([USE_XCB], [1], [Define to 1 if you have the XCB library and X11-XCB library for mixed X11/XCB programming.]) XCB_LIBS="-lX11-xcb -lxcb -lxcb-aux" @@ -3861,7 +3898,7 @@ if test "${HAVE_X11}" = "yes"; then fi fi fi -AC_SUBST(XCB_LIBS) +AC_SUBST([XCB_LIBS]) ### Use -lXpm if available, unless '--with-xpm=no'. ### mingw32 doesn't use -lXpm, since it loads the library dynamically. @@ -3873,18 +3910,18 @@ if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then if test "${with_xpm}" != "no"; then SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -L/usr/lib/noX" - AC_CHECK_HEADER(noX/xpm.h, - [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)]) + AC_CHECK_HEADER([noX/xpm.h], + [AC_CHECK_LIB([Xpm], [XpmReadFileToImage], [HAVE_XPM=yes])]) if test "${HAVE_XPM}" = "yes"; then AC_CACHE_CHECK([for XpmReturnAllocPixels preprocessor define], [emacs_cv_cpp_xpm_return_alloc_pixels], - [AC_EGREP_CPP(no_return_alloc_pixels, + [AC_EGREP_CPP([no_return_alloc_pixels], [#include "noX/xpm.h" #ifndef XpmReturnAllocPixels no_return_alloc_pixels #endif - ], emacs_cv_cpp_xpm_return_alloc_pixels=no, - emacs_cv_cpp_xpm_return_alloc_pixels=yes)]) + ], [emacs_cv_cpp_xpm_return_alloc_pixels=no], + [emacs_cv_cpp_xpm_return_alloc_pixels=yes])]) if test "$emacs_cv_cpp_xpm_return_alloc_pixels" = "no"; then HAVE_XPM=no @@ -3894,7 +3931,8 @@ no_return_alloc_pixels fi if test "${HAVE_XPM}" = "yes"; then - AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) + AC_DEFINE([HAVE_XPM], [1], + [Define to 1 if you have the Xpm library (-lXpm).]) LIBXPM=-lXpm fi fi @@ -3907,18 +3945,19 @@ if test "${HAVE_X11}" = "yes"; then esac if test "${with_xpm}" != "no"; then - AC_CHECK_HEADER(X11/xpm.h, - [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)]) + AC_CHECK_HEADER([X11/xpm.h], + [AC_CHECK_LIB([Xpm], [XpmReadFileToPixmap], + [HAVE_XPM=yes], [], [-lX11])]) if test "${HAVE_XPM}" = "yes"; then AC_CACHE_CHECK([for XpmReturnAllocPixels preprocessor define], [emacs_cv_cpp_xpm_return_alloc_pixels], - [AC_EGREP_CPP(no_return_alloc_pixels, + [AC_EGREP_CPP([no_return_alloc_pixels], [#include "X11/xpm.h" #ifndef XpmReturnAllocPixels no_return_alloc_pixels #endif - ], emacs_cv_cpp_xpm_return_alloc_pixels=no, - emacs_cv_cpp_xpm_return_alloc_pixels=yes)]) + ], [emacs_cv_cpp_xpm_return_alloc_pixels=no], + [emacs_cv_cpp_xpm_return_alloc_pixels=yes])]) if test "$emacs_cv_cpp_xpm_return_alloc_pixels" = "no"; then HAVE_XPM=no @@ -3927,7 +3966,8 @@ no_return_alloc_pixels fi if test "${HAVE_XPM}" = "yes"; then - AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) + AC_DEFINE([HAVE_XPM], [1], + [Define to 1 if you have the Xpm library (-lXpm).]) LIBXPM=-lXpm elif test "$opsys,$LUCID_LIBW" = aix4-2,-lXaw; then dnl AIX -lXaw needs -lXpm linked too; see Bug#17598 Message#152. @@ -3941,16 +3981,17 @@ fi ### run time). if test "${opsys}" = "mingw32"; then if test "${with_xpm}" != "no"; then - AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [ + AC_CHECK_HEADER([X11/xpm.h], [HAVE_XPM=yes], [HAVE_XPM=no], [ #define FOR_MSW 1]) fi if test "${HAVE_XPM}" = "yes"; then - AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) + AC_DEFINE([HAVE_XPM], [1], + [Define to 1 if you have the Xpm library (-lXpm).]) fi fi -AC_SUBST(LIBXPM) +AC_SUBST([LIBXPM]) ### Use -ljpeg if available, unless '--with-jpeg=no'. HAVE_JPEG=no @@ -3989,7 +4030,7 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \ done]) if test "$emacs_cv_jpeglib" != no; then HAVE_JPEG=yes - AC_DEFINE([HAVE_JPEG], 1, + AC_DEFINE([HAVE_JPEG], [1], [Define to 1 if you have the jpeg library (typically -ljpeg).]) ### mingw32 doesn't use -ljpeg, since it loads the library ### dynamically when needed, and doesn't want a run-time @@ -3999,7 +4040,7 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \ fi fi fi -AC_SUBST(LIBJPEG) +AC_SUBST([LIBJPEG]) HAVE_LCMS2=no LCMS2_CFLAGS= @@ -4008,14 +4049,15 @@ if test "${with_lcms2}" != "no"; then EMACS_CHECK_MODULES([LCMS2], [lcms2]) fi if test "${HAVE_LCMS2}" = "yes"; then - AC_DEFINE([HAVE_LCMS2], 1, [Define to 1 if you have the lcms2 library (-llcms2).]) + AC_DEFINE([HAVE_LCMS2], [1], + [Define to 1 if you have the lcms2 library (-llcms2).]) ### mingw32 doesn't use -llcms2, since it loads the library dynamically. if test "${opsys}" = "mingw32"; then LCMS2_LIBS= fi fi -AC_SUBST(LCMS2_CFLAGS) -AC_SUBST(LCMS2_LIBS) +AC_SUBST([LCMS2_CFLAGS]) +AC_SUBST([LCMS2_LIBS]) HAVE_ZLIB=no LIBZ= @@ -4028,13 +4070,14 @@ if test "${with_zlib}" != "no"; then esac fi if test "${HAVE_ZLIB}" = "yes"; then - AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).]) + AC_DEFINE([HAVE_ZLIB], [1], + [Define to 1 if you have the zlib library (-lz).]) ### mingw32 doesn't use -lz, since it loads the library dynamically. if test "${opsys}" = "mingw32"; then LIBZ= fi fi -AC_SUBST(LIBZ) +AC_SUBST([LIBZ]) ### Dynamic library support case $opsys in @@ -4099,19 +4142,20 @@ fi if test "${HAVE_MODULES}" = yes; then MODULES_OBJ="emacs-module.o" NEED_DYNLIB=yes - AC_DEFINE(HAVE_MODULES, 1, [Define to 1 if dynamic modules are enabled]) - AC_DEFINE_UNQUOTED(MODULES_SUFFIX, "$MODULES_SUFFIX", - [System extension for dynamic modules]) + AC_DEFINE([HAVE_MODULES], [1], [Define to 1 if dynamic modules are enabled]) + AC_DEFINE_UNQUOTED([MODULES_SUFFIX], ["$MODULES_SUFFIX"], + [System extension for dynamic libraries]) if test -n "${MODULES_SECONDARY_SUFFIX}"; then - AC_DEFINE_UNQUOTED(MODULES_SECONDARY_SUFFIX, "$MODULES_SECONDARY_SUFFIX", - [Alternative system extension for dynamic modules.]) + AC_DEFINE_UNQUOTED([MODULES_SECONDARY_SUFFIX], + ["$MODULES_SECONDARY_SUFFIX"], + [Alternative system extension for dynamic libraries.]) fi fi -AC_SUBST(MODULES_OBJ) -AC_SUBST(LIBMODULES) -AC_SUBST(HAVE_MODULES) -AC_SUBST(MODULES_SUFFIX) -AC_SUBST(MODULES_SECONDARY_SUFFIX) +AC_SUBST([MODULES_OBJ]) +AC_SUBST([LIBMODULES]) +AC_SUBST([HAVE_MODULES]) +AC_SUBST([MODULES_SUFFIX]) +AC_SUBST([MODULES_SECONDARY_SUFFIX]) AC_CONFIG_FILES([src/emacs-module.h]) AC_SUBST_FILE([module_env_snippet_25]) @@ -4125,7 +4169,7 @@ module_env_snippet_27="$srcdir/src/module-env-27.h" module_env_snippet_28="$srcdir/src/module-env-28.h" module_env_snippet_29="$srcdir/src/module-env-29.h" emacs_major_version="${PACKAGE_VERSION%%.*}" -AC_SUBST(emacs_major_version) +AC_SUBST([emacs_major_version]) ### Emacs Lisp native compiler support @@ -4223,8 +4267,8 @@ if test "${with_native_compilation}" != "no"; then if test -n "`$BREW --prefix --installed libgccjit 2>/dev/null`"; then MAC_CFLAGS="-I$(dirname $($BREW ls -v libgccjit | \ grep libgccjit.h))" - MAC_LIBS="-L$(dirname $($BREW ls -v libgccjit| \ - grep -E 'libgccjit\.(so|dylib)$'))" + MAC_LIBS="-L$(dirname $($BREW ls -v libgccjit \ + | grep -m1 -E 'libgccjit\.(so|dylib)$'))" fi fi @@ -4252,8 +4296,9 @@ if test "${with_native_compilation}" != "no"; then fi # Check if libgccjit is available. - AC_CHECK_LIB(gccjit, gcc_jit_context_acquire, [], [libgccjit_not_found]) - AC_CHECK_HEADERS(libgccjit.h, [], [libgccjit_dev_not_found]) + AC_CHECK_LIB([gccjit], [gcc_jit_context_acquire], + [], [libgccjit_not_found]) + AC_CHECK_HEADERS([libgccjit.h], [], [libgccjit_dev_not_found]) # Check if libgccjit really works. AC_RUN_IFELSE([libgccjit_smoke_test], [], [libgccjit_broken]) HAVE_NATIVE_COMP=yes @@ -4270,22 +4315,23 @@ if test "${with_native_compilation}" != "no"; then LIBGCCJIT_LIBS="-lgccjit -ldl" ;; esac NEED_DYNLIB=yes - AC_DEFINE(HAVE_NATIVE_COMP, 1, [Define to 1 if native compiler is available.]) + AC_DEFINE([HAVE_NATIVE_COMP], [1], + [Define to 1 if native compiler is available.]) CFLAGS=$SAVE_CFLAGS LIBS=$SAVE_LIBS fi -AC_DEFINE_UNQUOTED(NATIVE_ELISP_SUFFIX, ".eln", +AC_DEFINE_UNQUOTED([NATIVE_ELISP_SUFFIX], [".eln"], [System extension for native compiled elisp]) -AC_SUBST(HAVE_NATIVE_COMP) -AC_SUBST(LIBGCCJIT_CFLAGS) -AC_SUBST(LIBGCCJIT_LIBS) +AC_SUBST([HAVE_NATIVE_COMP]) +AC_SUBST([LIBGCCJIT_CFLAGS]) +AC_SUBST([LIBGCCJIT_LIBS]) DYNLIB_OBJ= if test "${NEED_DYNLIB}" = yes; then DYNLIB_OBJ="dynlib.o" fi -AC_SUBST(DYNLIB_OBJ) +AC_SUBST([DYNLIB_OBJ]) ### Use -lpng if available, unless '--with-png=no'. HAVE_PNG=no @@ -4357,8 +4403,8 @@ if test $HAVE_PNG = yes; then ]]) CFLAGS=$SAVE_CFLAGS fi -AC_SUBST(LIBPNG) -AC_SUBST(PNG_CFLAGS) +AC_SUBST([LIBPNG]) +AC_SUBST([PNG_CFLAGS]) ### Use -ltiff if available, unless '--with-tiff=no'. ### mingw32 doesn't use -ltiff, since it loads the library dynamically. @@ -4366,29 +4412,32 @@ HAVE_TIFF=no LIBTIFF= if test "${opsys}" = "mingw32"; then if test "${with_tiff}" != "no"; then - AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no) + AC_CHECK_HEADER([tiffio.h], [HAVE_TIFF=yes], [HAVE_TIFF=no]) fi if test "${HAVE_TIFF}" = "yes"; then - AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).]) + AC_DEFINE([HAVE_TIFF], [1], + [Define to 1 if you have the tiff library (-ltiff).]) fi elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \ || test "${HAVE_NS}" = "yes" || test "${HAVE_BE_APP}" = "yes" \ || test "$window_system" = "pgtk"; then if test "${with_tiff}" != "no"; then - AC_CHECK_HEADER(tiffio.h, + AC_CHECK_HEADER([tiffio.h], [tifflibs="-lz -lm" # At least one tiff package requires the jpeg library. if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi - AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)]) + AC_CHECK_LIB([tiff], [TIFFGetVersion], [HAVE_TIFF=yes], [], + [$tifflibs])]) fi if test "${HAVE_TIFF}" = "yes"; then - AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).]) + AC_DEFINE([HAVE_TIFF], [1], + [Define to 1 if you have the tiff library (-ltiff).]) dnl FIXME -lz -lm, as per libpng? LIBTIFF=-ltiff fi fi -AC_SUBST(LIBTIFF) +AC_SUBST([LIBTIFF]) ### Use -lgif or -lungif if available, unless '--with-gif=no'. ### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically. @@ -4396,34 +4445,40 @@ HAVE_GIF=no LIBGIF= if test "${opsys}" = "mingw32"; then if test "${with_gif}" != "no"; then - AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no) + AC_CHECK_HEADER([gif_lib.h], [HAVE_GIF=yes], [HAVE_GIF=no]) fi if test "${HAVE_GIF}" = "yes"; then - AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.]) + AC_DEFINE([HAVE_GIF], [1], + [Define to 1 if you have a gif (or ungif) library.]) fi elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \ || test "${HAVE_W32}" = "yes" || test "${HAVE_NS}" = "yes" \ || test "${HAVE_BE_APP}" = "yes" || test "$window_system" = "pgtk" \ && test "${with_gif}" != "no"; then - AC_CHECK_HEADER(gif_lib.h, + AC_CHECK_HEADER([gif_lib.h], # EGifPutExtensionLast only exists from version libungif-4.1.0b1. # Earlier versions can crash Emacs, but version 5.0 removes EGifPutExtensionLast. - [AC_CHECK_LIB(gif, GifMakeMapObject, HAVE_GIF=yes, - [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])]) + [AC_CHECK_LIB([gif], [GifMakeMapObject], [HAVE_GIF=yes], + [AC_CHECK_LIB([gif], [EGifPutExtensionLast], + [HAVE_GIF=yes], + [HAVE_GIF=maybe])])]) if test "$HAVE_GIF" = yes; then LIBGIF=-lgif elif test "$HAVE_GIF" = maybe; then # If gif_lib.h but no libgif, try libungif. - AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no) + AC_CHECK_LIB([ungif], [EGifPutExtensionLast], + [HAVE_GIF=yes], + [HAVE_GIF=no]) test "$HAVE_GIF" = yes && LIBGIF=-lungif fi if test "${HAVE_GIF}" = "yes"; then - AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.]) + AC_DEFINE([HAVE_GIF], [1], + [Define to 1 if you have a gif (or ungif) library.]) fi fi -AC_SUBST(LIBGIF) +AC_SUBST([LIBGIF]) dnl Check for required libraries. MISSING= @@ -4489,28 +4544,33 @@ fi HAVE_GPM=no LIBGPM= if test "${with_gpm}" != "no"; then - AC_CHECK_HEADER(gpm.h, - [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)]) + AC_CHECK_HEADER([gpm.h], + [AC_CHECK_LIB([gpm], [Gpm_Open], [HAVE_GPM=yes])]) if test "${HAVE_GPM}" = "yes"; then - AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).]) + AC_DEFINE([HAVE_GPM], [1], + [Define to 1 if you have the gpm library (-lgpm).]) LIBGPM=-lgpm fi fi -AC_SUBST(LIBGPM) +AC_SUBST([LIBGPM]) dnl Check for malloc/malloc.h on darwin -AC_CHECK_HEADERS_ONCE(malloc/malloc.h) +AC_CHECK_HEADERS_ONCE([malloc/malloc.h]) GNUSTEP_CFLAGS= ### Use NeXTstep API to implement GUI. if test "${HAVE_NS}" = "yes"; then - AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on macOS.]) + AC_DEFINE([HAVE_NS], [1], + [Define to 1 if you are using the NeXTstep API, + either GNUstep or Cocoa on macOS.]) if test "${NS_IMPL_COCOA}" = "yes"; then - AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under macOS.]) + AC_DEFINE([NS_IMPL_COCOA], [1], + [Define to 1 if you are using NS windowing under macOS.]) fi if test "${NS_IMPL_GNUSTEP}" = "yes"; then - AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.]) + AC_DEFINE([NS_IMPL_GNUSTEP], [1], + [Define to 1 if you are using NS windowing under GNUstep.]) if test $NS_GNUSTEP_CONFIG != yes; then # See also .m.o rule in src/Makefile.in. */ # FIXME: are all these flags really needed? Document here why. */ @@ -4526,15 +4586,16 @@ fi HAVE_X_SM=no LIBXSM= if test "${HAVE_X11}" = "yes"; then - AC_CHECK_HEADER(X11/SM/SMlib.h, - [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)]) + AC_CHECK_HEADER([X11/SM/SMlib.h], + [AC_CHECK_LIB([SM], [SmcOpenConnection], [HAVE_X_SM=yes], [], [-lICE])]) if test "${HAVE_X_SM}" = "yes"; then - AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).]) + AC_DEFINE([HAVE_X_SM], [1], + [Define to 1 if you have the SM library (-lSM).]) LIBXSM="-lSM -lICE" fi fi -AC_SUBST(LIBXSM) +AC_SUBST([LIBXSM]) ### Use XRandr (-lXrandr) if available HAVE_XRANDR=no @@ -4546,8 +4607,8 @@ if test "${HAVE_X11}" = "yes"; then # Test old way in case pkg-config doesn't have it (older machines). # Include Xrender.h by hand to work around bug in older Xrandr.h # (e.g. RHEL5) and silence (harmless) configure warning (bug#18465). - AC_CHECK_HEADER(X11/extensions/Xrandr.h, - [AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)], + AC_CHECK_HEADER([X11/extensions/Xrandr.h], + [AC_CHECK_LIB([Xrandr], [XRRGetScreenResources], [HAVE_XRANDR=yes])], [], [AC_INCLUDES_DEFAULT #include ]) if test $HAVE_XRANDR = yes; then @@ -4555,11 +4616,12 @@ if test "${HAVE_X11}" = "yes"; then fi fi if test $HAVE_XRANDR = yes; then - AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.]) + AC_DEFINE([HAVE_XRANDR], [1], + [Define to 1 if you have the XRandr extension.]) fi fi -AC_SUBST(XRANDR_CFLAGS) -AC_SUBST(XRANDR_LIBS) +AC_SUBST([XRANDR_CFLAGS]) +AC_SUBST([XRANDR_LIBS]) ### Use Xinerama (-lXinerama) if available HAVE_XINERAMA=no @@ -4569,18 +4631,20 @@ if test "${HAVE_X11}" = "yes"; then EMACS_CHECK_MODULES([XINERAMA], [$XINERAMA_MODULES]) if test $HAVE_XINERAMA = no; then # Test old way in case pkg-config doesn't have it (older machines). - AC_CHECK_HEADER(X11/extensions/Xinerama.h, - [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)]) + AC_CHECK_HEADER([X11/extensions/Xinerama.h], + [AC_CHECK_LIB([Xinerama], [XineramaQueryExtension], + [HAVE_XINERAMA=yes])]) if test $HAVE_XINERAMA = yes; then XINERAMA_LIBS=-lXinerama fi fi if test $HAVE_XINERAMA = yes; then - AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.]) + AC_DEFINE([HAVE_XINERAMA], [1], + [Define to 1 if you have the Xinerama extension.]) fi fi -AC_SUBST(XINERAMA_CFLAGS) -AC_SUBST(XINERAMA_LIBS) +AC_SUBST([XINERAMA_CFLAGS]) +AC_SUBST([XINERAMA_LIBS]) ### Use Xfixes (-lXfixes) if available HAVE_XFIXES=no @@ -4590,18 +4654,19 @@ if test "${HAVE_X11}" = "yes"; then EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES]) if test $HAVE_XFIXES = no; then # Test old way in case pkg-config doesn't have it (older machines). - AC_CHECK_HEADER(X11/extensions/Xfixes.h, - [AC_CHECK_LIB(Xfixes, XFixesHideCursor, HAVE_XFIXES=yes)]) + AC_CHECK_HEADER([X11/extensions/Xfixes.h], + [AC_CHECK_LIB([Xfixes], [XFixesHideCursor], [HAVE_XFIXES=yes])]) if test $HAVE_XFIXES = yes; then XFIXES_LIBS=-lXfixes fi fi if test $HAVE_XFIXES = yes; then - AC_DEFINE(HAVE_XFIXES, 1, [Define to 1 if you have the Xfixes extension.]) + AC_DEFINE([HAVE_XFIXES], [1], + [Define to 1 if you have the Xfixes extension.]) fi fi -AC_SUBST(XFIXES_CFLAGS) -AC_SUBST(XFIXES_LIBS) +AC_SUBST([XFIXES_CFLAGS]) +AC_SUBST([XFIXES_LIBS]) ## Use XInput 2.0 if available HAVE_XINPUT2=no @@ -4609,11 +4674,12 @@ if test "${HAVE_X11}" = "yes" && test "${with_xinput2}" != "no"; then EMACS_CHECK_MODULES([XINPUT], [xi]) if test $HAVE_XINPUT = yes; then # Now check for XInput2.h - AC_CHECK_HEADER(X11/extensions/XInput2.h, - [AC_CHECK_LIB(Xi, XIGrabButton, HAVE_XINPUT2=yes)]) + AC_CHECK_HEADER([X11/extensions/XInput2.h], + [AC_CHECK_LIB([Xi], [XIGrabButton], [HAVE_XINPUT2=yes])]) fi if test $HAVE_XINPUT2 = yes; then - AC_DEFINE(HAVE_XINPUT2, 1, [Define to 1 if the X Input Extension version 2.0 or later is present.]) + AC_DEFINE([HAVE_XINPUT2], [1], + [Define to 1 if the X Input Extension version 2.0 or later is present.]) if test "$USE_GTK_TOOLKIT" = "GTK2"; then AC_MSG_WARN([You are building Emacs with GTK+ 2 and the X Input Extension version 2. This might lead to problems if your version of GTK+ is not built with support for XInput 2.]) @@ -4627,31 +4693,36 @@ This might lead to problems if your version of GTK+ is not built with support fo [], [], [#include ]) fi fi -AC_SUBST(XINPUT_CFLAGS) -AC_SUBST(XINPUT_LIBS) +AC_SUBST([XINPUT_CFLAGS]) +AC_SUBST([XINPUT_LIBS]) XSYNC_LIBS= XSYNC_CFLAGS= HAVE_XSYNC=no if test "${HAVE_X11}" = "yes"; then - AC_CHECK_HEADER(X11/extensions/sync.h, - AC_CHECK_LIB(Xext, XSyncQueryExtension, HAVE_XSYNC=yes), + AC_CHECK_HEADER([X11/extensions/sync.h], + [AC_CHECK_LIB([Xext], [XSyncQueryExtension], [HAVE_XSYNC=yes])], [], [#include ]) if test "${HAVE_XSYNC}" = "yes"; then - AC_DEFINE(HAVE_XSYNC, 1, [Define to 1 if the X Synchronization Extension is available.]) + AC_DEFINE([HAVE_XSYNC], [1], + [Define to 1 if the X Synchronization Extension is available.]) XSYNC_LIBS="-lXext" + OLDLIBS="$LIBS" + LIBS="-lXext $LIBS" # Set this temporarily for AC_CHECK_FUNC + AC_CHECK_FUNCS([XSyncTriggerFence]) # Check for version 3.1 + LIBS="$OLDLIBS" fi fi -AC_SUBST(XSYNC_LIBS) -AC_SUBST(XSYNC_CFLAGS) +AC_SUBST([XSYNC_LIBS]) +AC_SUBST([XSYNC_CFLAGS]) ### Use Xdbe (-lXdbe) if available HAVE_XDBE=no if test "${HAVE_X11}" = "yes"; then if test "${with_xdbe}" != "no"; then - AC_CHECK_HEADER(X11/extensions/Xdbe.h, - [AC_CHECK_LIB(Xext, XdbeAllocateBackBufferName, HAVE_XDBE=yes)], + AC_CHECK_HEADER([X11/extensions/Xdbe.h], + [AC_CHECK_LIB([Xext], [XdbeAllocateBackBufferName], [HAVE_XDBE=yes])], [], [#include ]) @@ -4660,44 +4731,49 @@ if test "${HAVE_X11}" = "yes"; then XDBE_LIBS=-lXext fi if test $HAVE_XDBE = yes; then - AC_DEFINE(HAVE_XDBE, 1, [Define to 1 if you have the Xdbe extension.]) + AC_DEFINE([HAVE_XDBE], [1], [Define to 1 if you have the Xdbe extension.]) fi fi -AC_SUBST(XDBE_CFLAGS) -AC_SUBST(XDBE_LIBS) +AC_SUBST([XDBE_CFLAGS]) +AC_SUBST([XDBE_LIBS]) ### Use the Nonrectangular Window Shape extension if available. HAVE_XSHAPE=no HAVE_XCB_SHAPE=no if test "${HAVE_X11}" = "yes"; then - AC_CHECK_HEADER(X11/extensions/shape.h, - [AC_CHECK_LIB(Xext, XShapeQueryVersion, HAVE_XSHAPE=yes)], + AC_CHECK_HEADER([X11/extensions/shape.h], + [AC_CHECK_LIB([Xext], [XShapeQueryVersion], [HAVE_XSHAPE=yes])], [], [#include ]) if test $HAVE_XSHAPE = yes; then XSHAPE_LIBS=-lXext - AC_CHECK_HEADER(xcb/shape.h, - [AC_CHECK_LIB(xcb-shape, xcb_shape_combine, HAVE_XCB_SHAPE=yes)], [], + AC_CHECK_HEADER([xcb/shape.h], + [AC_CHECK_LIB([xcb-shape], [xcb_shape_combine], [HAVE_XCB_SHAPE=yes])], + [], [#include ]) if test $HAVE_XCB_SHAPE = yes && test "$XCB_LIBS" != ""; then XSHAPE_LIBS="$XSHAPE_LIBS -lxcb-shape" - AC_DEFINE(HAVE_XCB_SHAPE, 1, [Define to 1 if XCB supports the Nonrectangular Window Shape extension.]) + AC_DEFINE([HAVE_XCB_SHAPE], [1], + [Define to 1 if XCB supports the + Nonrectangular Window Shape extension.]) fi fi if test $HAVE_XSHAPE = yes; then - AC_DEFINE(HAVE_XSHAPE, 1, [Define to 1 if you have the Nonrectangular Window Shape extension.]) + AC_DEFINE([HAVE_XSHAPE], [1], + [Define to 1 if you have the Nonrectangular Window Shape extension.]) fi fi -AC_SUBST(XSHAPE_CFLAGS) -AC_SUBST(XSHAPE_LIBS) +AC_SUBST([XSHAPE_CFLAGS]) +AC_SUBST([XSHAPE_LIBS]) ### Use Xcomposite (-lXcomposite) if available HAVE_XCOMPOSITE=no if test "${HAVE_X11}" = "yes"; then - AC_CHECK_HEADER(X11/extensions/Xcomposite.h, - [AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, HAVE_XCOMPOSITE=yes)], + AC_CHECK_HEADER([X11/extensions/Xcomposite.h], + [AC_CHECK_LIB([Xcomposite], [XCompositeRedirectWindow], + [HAVE_XCOMPOSITE=yes])], [], [#include ]) @@ -4705,11 +4781,12 @@ if test "${HAVE_X11}" = "yes"; then XCOMPOSITE_LIBS=-lXcomposite fi if test $HAVE_XCOMPOSITE = yes; then - AC_DEFINE(HAVE_XCOMPOSITE, 1, [Define to 1 if you have the XCOMPOSITE extension.]) + AC_DEFINE([HAVE_XCOMPOSITE], [1], + [Define to 1 if you have the XCOMPOSITE extension.]) fi fi -AC_SUBST(XCOMPOSITE_CFLAGS) -AC_SUBST(XCOMPOSITE_LIBS) +AC_SUBST([XCOMPOSITE_CFLAGS]) +AC_SUBST([XCOMPOSITE_LIBS]) ### Use libxml (-lxml2) if available ### mingw32 doesn't use -lxml2, since it loads the library dynamically. @@ -4729,8 +4806,8 @@ if test "${with_xml2}" != "no"; then esac fi CPPFLAGS="$CPPFLAGS -isystem${xcsdkdir}/usr/include/libxml2" - AC_CHECK_HEADER(libxml/HTMLparser.h, - [AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, , + AC_CHECK_HEADER([libxml/HTMLparser.h], + [AC_CHECK_DECL([HTML_PARSE_RECOVER], [HAVE_LIBXML2=yes], [], [#include ])]) CPPFLAGS="$SAVE_CPPFLAGS" if test "${HAVE_LIBXML2}" = "yes"; then @@ -4740,21 +4817,24 @@ if test "${with_xml2}" != "no"; then fi if test "${HAVE_LIBXML2}" = "yes"; then if test "${opsys}" != "mingw32"; then - AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no, + AC_CHECK_LIB([xml2], [htmlReadMemory], + [HAVE_LIBXML2=yes], + [HAVE_LIBXML2=no], [$LIBXML2_LIBS]) else LIBXML2_LIBS="" fi if test "${HAVE_LIBXML2}" = "yes"; then - AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).]) + AC_DEFINE([HAVE_LIBXML2], [1], + [Define to 1 if you have the libxml library (-lxml2).]) else LIBXML2_LIBS="" LIBXML2_CFLAGS="" fi fi fi -AC_SUBST(LIBXML2_LIBS) -AC_SUBST(LIBXML2_CFLAGS) +AC_SUBST([LIBXML2_LIBS]) +AC_SUBST([LIBXML2_CFLAGS]) BLESSMAIL_TARGET= LIBS_MAIL= @@ -4858,9 +4938,13 @@ AC_SUBST([HAVE_LIBSECCOMP]) AC_SUBST([LIBSECCOMP_LIBS]) AC_SUBST([LIBSECCOMP_CFLAGS]) +AC_CHECK_SIZEOF([long]) +SIZEOF_LONG="$ac_cv_sizeof_long" +AC_SUBST([SIZEOF_LONG]) + OLD_LIBS=$LIBS LIBS="$LIB_PTHREAD $LIB_MATH $LIBS" -AC_CHECK_FUNCS(accept4 fchdir gethostname \ +AC_CHECK_FUNCS([accept4 fchdir gethostname \ getrusage get_current_dir_name \ lrand48 random rint trunc \ select getpagesize setlocale newlocale \ @@ -4870,7 +4954,7 @@ sendto recvfrom getsockname getifaddrs freeifaddrs \ gai_strerror sync \ getpwent endpwent getgrent endgrent \ cfmakeraw cfsetspeed __executable_start log2 pthread_setname_np \ -pthread_set_name_np) +pthread_set_name_np]) LIBS=$OLD_LIBS if test "$ac_cv_func_pthread_setname_np" = "yes"; then @@ -4885,7 +4969,7 @@ if test "$ac_cv_func_pthread_setname_np" = "yes"; then [emacs_cv_pthread_setname_np_1arg=no])]) if test "$emacs_cv_pthread_setname_np_1arg" = "yes"; then AC_DEFINE( - HAVE_PTHREAD_SETNAME_NP_1ARG, 1, + [HAVE_PTHREAD_SETNAME_NP_1ARG], [1], [Define to 1 if pthread_setname_np takes a single argument.]) else AC_CACHE_CHECK( @@ -4899,7 +4983,7 @@ if test "$ac_cv_func_pthread_setname_np" = "yes"; then [emacs_cv_pthread_setname_np_3arg=no])]) if test "$emacs_cv_pthread_setname_np_3arg" = "yes"; then AC_DEFINE( - HAVE_PTHREAD_SETNAME_NP_3ARG, 1, + [HAVE_PTHREAD_SETNAME_NP_3ARG], [1], [Define to 1 if pthread_setname_np takes three arguments.]) fi fi @@ -4932,28 +5016,28 @@ AC_CACHE_CHECK([for __builtin_frame_address], [emacs_cv_func___builtin_frame_address=yes], [emacs_cv_func___builtin_frame_address=no])]) if test $emacs_cv_func___builtin_frame_address = yes; then - AC_DEFINE([HAVE___BUILTIN_FRAME_ADDRESS], 1, + AC_DEFINE([HAVE___BUILTIN_FRAME_ADDRESS], [1], [Define to 1 if you have the '__builtin_frame_address' function.]) fi AC_CACHE_CHECK([for __builtin_unwind_init], - emacs_cv_func___builtin_unwind_init, + [emacs_cv_func___builtin_unwind_init], [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])], - emacs_cv_func___builtin_unwind_init=yes, - emacs_cv_func___builtin_unwind_init=no)]) + [emacs_cv_func___builtin_unwind_init=yes], + [emacs_cv_func___builtin_unwind_init=no])]) if test $emacs_cv_func___builtin_unwind_init = yes; then - AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1, + AC_DEFINE([HAVE___BUILTIN_UNWIND_INIT], [1], [Define to 1 if you have the '__builtin_unwind_init' function.]) fi -AC_CHECK_HEADERS_ONCE(sys/un.h) +AC_CHECK_HEADERS_ONCE([sys/un.h]) AC_FUNC_FSEEKO # UNIX98 PTYs. -AC_CHECK_FUNCS(grantpt) +AC_CHECK_FUNCS([grantpt]) # PTY-related GNU extensions. -AC_CHECK_FUNCS(getpt posix_openpt) +AC_CHECK_FUNCS([getpt posix_openpt]) dnl Run a test program that contains a call to tputs, a call that is dnl never executed. This tests whether a pre-'main' dynamic linker @@ -5025,14 +5109,15 @@ case "$opsys" in freebsd) AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo]) - AC_CACHE_VAL(emacs_cv_freebsd_terminfo, + AC_CACHE_VAL([emacs_cv_freebsd_terminfo], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[#if __FreeBSD_version < 400000 fail; #endif -]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)]) +]])], [emacs_cv_freebsd_terminfo=yes], + [emacs_cv_freebsd_terminfo=no])]) - AC_MSG_RESULT($emacs_cv_freebsd_terminfo) + AC_MSG_RESULT([$emacs_cv_freebsd_terminfo]) if test $emacs_cv_freebsd_terminfo = yes; then LIBS_TERMCAP="-lncurses" @@ -5067,7 +5152,8 @@ esac TERMCAP_OBJ=tparam.o if test $TERMINFO = yes; then - AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.]) + AC_DEFINE([TERMINFO], [1], + [Define to 1 if you use terminfo instead of termcap.]) TERMCAP_OBJ=terminfo.o AC_CACHE_CHECK([whether $LIBS_TERMCAP library defines BC], [emacs_cv_terminfo_defines_BC], @@ -5078,15 +5164,15 @@ if test $TERMINFO = yes; then [emacs_cv_terminfo_defines_BC=no]) LIBS=$OLD_LIBS]) if test "$emacs_cv_terminfo_defines_BC" = yes; then - AC_DEFINE([TERMINFO_DEFINES_BC], 1, [Define to 1 if the + AC_DEFINE([TERMINFO_DEFINES_BC], [1], [Define to 1 if the terminfo library defines the variables BC, PC, and UP.]) fi fi if test "X$LIBS_TERMCAP" = "X-lncurses"; then - AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.]) + AC_DEFINE([USE_NCURSES], [1], [Define to 1 if you use ncurses.]) fi -AC_SUBST(LIBS_TERMCAP) -AC_SUBST(TERMCAP_OBJ) +AC_SUBST([LIBS_TERMCAP]) +AC_SUBST([TERMCAP_OBJ]) # GNU/Linux-specific timer functions. AC_CACHE_CHECK([for timerfd interface], [emacs_cv_have_timerfd], @@ -5099,7 +5185,7 @@ AC_CACHE_CHECK([for timerfd interface], [emacs_cv_have_timerfd], [emacs_cv_have_timerfd=yes], [emacs_cv_have_timerfd=no])]) if test "$emacs_cv_have_timerfd" = yes; then - AC_DEFINE([HAVE_TIMERFD], 1, + AC_DEFINE([HAVE_TIMERFD], [1], [Define to 1 if timerfd functions are supported as in GNU/Linux.]) fi @@ -5126,25 +5212,26 @@ LIBRESOLV= if test "$with_hesiod" != no ; then # Don't set $LIBS here -- see comments above. FIXME which comments? resolv=no - AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, , - [AC_CHECK_LIB(resolv, res_send, resolv=yes, - [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])]) + AC_CHECK_FUNC([res_send], [], [AC_CHECK_FUNC([__res_send], [], + [AC_CHECK_LIB([resolv], [res_send], [resolv=yes], + [AC_CHECK_LIB([resolv], [__res_send], [resolv=yes])])])]) if test "$resolv" = yes ; then RESOLVLIB=-lresolv else RESOLVLIB= fi hesiod=no - AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost, - hesiod=yes, :, $RESOLVLIB)]) + AC_CHECK_FUNC([hes_getmailhost], [], + [AC_CHECK_LIB([hesiod], [hes_getmailhost], + [hesiod=yes], [:], [$RESOLVLIB])]) if test x"$hesiod" = xyes; then LIBHESIOD=-lhesiod LIBRESOLV=$RESOLVLIB fi fi -AC_SUBST(LIBHESIOD) -AC_SUBST(LIBRESOLV) +AC_SUBST([LIBHESIOD]) +AC_SUBST([LIBRESOLV]) # These tell us which Kerberos-related libraries to use. COM_ERRLIB= @@ -5155,45 +5242,51 @@ KRB4LIB= if test "${with_kerberos}" != no; then OLD_LIBS=$LIBS - AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no) + AC_CHECK_LIB([com_err], [com_err], [have_com_err=yes], [have_com_err=no]) if test $have_com_err = yes; then COM_ERRLIB=-lcom_err LIBS="$COM_ERRLIB $LIBS" fi - AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no) + AC_CHECK_LIB([crypto], [mit_des_cbc_encrypt], + [have_crypto=yes], + [have_crypto=no]) if test $have_crypto = yes; then CRYPTOLIB=-lcrypto LIBS="$CRYPTOLIB $LIBS" fi - AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no) + AC_CHECK_LIB([k5crypto], [mit_des_cbc_encrypt], + [have_k5crypto=yes], + [have_k5crypto=no]) if test $have_k5crypto = yes; then CRYPTOLIB=-lk5crypto LIBS="$CRYPTOLIB $LIBS" fi - AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no) + AC_CHECK_LIB([krb5], [krb5_init_context], [have_krb5=yes], [have_krb5=no]) if test $have_krb5=yes; then KRB5LIB=-lkrb5 LIBS="$KRB5LIB $LIBS" fi dnl FIXME Simplify. Does not match 22 logic, thanks to default_off? if test "${with_kerberos5}" = no; then - AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no ) + AC_CHECK_LIB([des425], [des_cbc_encrypt], + [have_des425=yes], + [have_des425=no]) if test $have_des425 = yes; then DESLIB=-ldes425 LIBS="$DESLIB $LIBS" else - AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no) + AC_CHECK_LIB([des], [des_cbc_encrypt], [have_des=yes], [have_des=no]) if test $have_des = yes; then DESLIB=-ldes LIBS="$DESLIB $LIBS" fi fi - AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no) + AC_CHECK_LIB([krb4], [krb_get_cred], [have_krb4=yes], [have_krb4=no]) if test $have_krb4 = yes; then KRB4LIB=-lkrb4 LIBS="$KRB4LIB $LIBS" else - AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no) + AC_CHECK_LIB([krb], [krb_get_cred], [have_krb=yes], [have_krb=no]) if test $have_krb = yes; then KRB4LIB=-lkrb LIBS="$KRB4LIB $LIBS" @@ -5202,25 +5295,25 @@ if test "${with_kerberos}" != no; then fi if test "${with_kerberos5}" != no; then - AC_CHECK_HEADERS(krb5.h, - [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,, + AC_CHECK_HEADERS([krb5.h], + [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text], [], [], [#include ])]) else - AC_CHECK_HEADERS(krb.h,, - [AC_CHECK_HEADERS(kerberosIV/krb.h,, - [AC_CHECK_HEADERS(kerberos/krb.h)])]) + AC_CHECK_HEADERS([krb.h], [], + [AC_CHECK_HEADERS([kerberosIV/krb.h], [], + [AC_CHECK_HEADERS([kerberos/krb.h])])]) fi - AC_CHECK_HEADERS(com_err.h) + AC_CHECK_HEADERS([com_err.h]) LIBS=$OLD_LIBS fi -AC_SUBST(COM_ERRLIB) -AC_SUBST(CRYPTOLIB) -AC_SUBST(KRB5LIB) -AC_SUBST(DESLIB) -AC_SUBST(KRB4LIB) +AC_SUBST([COM_ERRLIB]) +AC_SUBST([CRYPTOLIB]) +AC_SUBST([KRB5LIB]) +AC_SUBST([DESLIB]) +AC_SUBST([KRB4LIB]) -AC_CHECK_HEADERS(valgrind/valgrind.h) +AC_CHECK_HEADERS([valgrind/valgrind.h]) AC_CHECK_MEMBERS([struct unipair.unicode], [], [], [[#include ]]) @@ -5230,7 +5323,7 @@ AC_FUNC_FORK dnl AC_CHECK_FUNCS_ONCE wouldn’t be right for snprintf, which needs dnl the current CFLAGS etc. -AC_CHECK_FUNCS(snprintf) +AC_CHECK_FUNCS([snprintf]) dnl posix_spawn. The chdir and setsid functionality is relatively dnl recent, so we check for it specifically. @@ -5274,12 +5367,12 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM( CFLAGS="$OLDCFLAGS" LIBS="$OLDLIBS"]) if test "${emacs_cv_links_glib}" = "yes"; then - AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if GLib is linked in.]) + AC_DEFINE([HAVE_GLIB], [1], [Define to 1 if GLib is linked in.]) if test "$HAVE_NS" = no ; then XGSELOBJ=xgselect.o fi fi -AC_SUBST(XGSELOBJ) +AC_SUBST([XGSELOBJ]) dnl Adapted from Haible's version. AC_CACHE_CHECK([for nl_langinfo and CODESET], [emacs_cv_langinfo_codeset], @@ -5289,7 +5382,7 @@ AC_CACHE_CHECK([for nl_langinfo and CODESET], [emacs_cv_langinfo_codeset], [emacs_cv_langinfo_codeset=no]) ]) if test "$emacs_cv_langinfo_codeset" = yes; then - AC_DEFINE([HAVE_LANGINFO_CODESET], 1, + AC_DEFINE([HAVE_LANGINFO_CODESET], [1], [Define if you have and nl_langinfo (CODESET).]) AC_CACHE_CHECK([for nl_langinfo and _NL_PAPER_WIDTH], @@ -5300,7 +5393,7 @@ if test "$emacs_cv_langinfo_codeset" = yes; then [emacs_cv_langinfo__nl_paper_width=no]) ]) if test "$emacs_cv_langinfo__nl_paper_width" = yes; then - AC_DEFINE([HAVE_LANGINFO__NL_PAPER_WIDTH], 1, + AC_DEFINE([HAVE_LANGINFO__NL_PAPER_WIDTH], [1], [Define if you have and nl_langinfo (_NL_PAPER_WIDTH).]) fi fi @@ -5313,15 +5406,17 @@ dnl The following looks like a useful start. dnl dnl AC_SYS_POSIX_TERMIOS dnl if test $ac_cv_sys_posix_termios = yes; then -dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions -dnl and macros for terminal control.]) -dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.]) +dnl AC_DEFINE([HAVE_TERMIOS], [1], +dnl [Define to 1 if you have POSIX-style +dnl functions and macros for terminal control.]) +dnl AC_DEFINE([HAVE_TCATTR], [1], +dnl [Define to 1 if you have tcgetattr and tcsetattr.]) dnl fi dnl Turned on June 1996 supposing nobody will mind it. dnl MinGW emulates passwd database, so this feature doesn't make sense there. if test "${opsys}" != "mingw32"; then - AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that & + AC_DEFINE([AMPERSAND_FULL_NAME], [1], [Define to use the convention that & in the full name stands for the login id.]) fi @@ -5329,22 +5424,23 @@ dnl Everybody supports this, except MS. dnl Seems like the kind of thing we should be testing for, though. ## Note: PTYs are broken on darwin <6. Use at your own risk. if test "${opsys}" != "mingw32"; then - AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.]) + AC_DEFINE([HAVE_PTYS], [1], [Define if the system supports pty devices.]) fi dnl Everybody supports this, except MS-DOS. dnl Seems like the kind of thing we should be testing for, though. -AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports +AC_DEFINE([HAVE_SOCKETS], [1], [Define if the system supports 4.2-compatible sockets.]) -AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".]) +AH_TEMPLATE([INTERNAL_TERMINAL], + [This is substituted when $TERM is "internal".]) -AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get +AH_TEMPLATE([NULL_DEVICE], [Name of the file to open to get a null file, or a data sink.]) if test "${opsys}" = "mingw32"; then - AC_DEFINE(NULL_DEVICE, ["NUL:"]) + AC_DEFINE([NULL_DEVICE], ["NUL:"]) else - AC_DEFINE(NULL_DEVICE, ["/dev/null"]) + AC_DEFINE([NULL_DEVICE], ["/dev/null"]) fi if test "${opsys}" = "mingw32"; then @@ -5352,7 +5448,8 @@ if test "${opsys}" = "mingw32"; then else SEPCHAR=':' fi -AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.]) +AC_DEFINE_UNQUOTED([SEPCHAR], ['$SEPCHAR'], + [Character that separates PATH elements.]) dnl This is for MinGW, and is used in test/Makefile.in. dnl The MSYS Bash has heuristics for replacing ':' with ';' when it dnl decides that a command-line argument to be passed to a MinGW program @@ -5362,34 +5459,35 @@ dnl sees a colon-separated list of file names; e.g. ":." is left alone, dnl which breaks in-tree builds. So we do this manually instead. dnl Note that we cannot rely on PATH_SEPARATOR, as that one will always dnl be computed as ':' in MSYS Bash. -AC_SUBST(SEPCHAR) +AC_SUBST([SEPCHAR]) dnl Everybody supports this, except MS-DOS. -AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.]) +AC_DEFINE([subprocesses], [1], [Define to enable asynchronous subprocesses.]) -AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.]) +AC_DEFINE([USER_FULL_NAME], [pw->pw_gecos], [How to get a user's full name.]) -AC_DEFINE(DIRECTORY_SEP, ['/'], +AC_DEFINE([DIRECTORY_SEP], ['/'], [Character that separates directories in a file name.]) if test "${opsys}" = "mingw32"; then - AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == ':')], + AC_DEFINE([IS_DEVICE_SEP(_c_)], [((_c_) == ':')], [Returns true if character is a device separator.]) - AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')], + AC_DEFINE([IS_DIRECTORY_SEP(_c_)], [((_c_) == '/' || (_c_) == '\\')], [Returns true if character is a directory separator.]) - AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))], + AC_DEFINE([IS_ANY_SEP(_c_)], + [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_))], [Returns true if character is any form of separator.]) else - AC_DEFINE(IS_DEVICE_SEP(_c_), 0, + AC_DEFINE([IS_DEVICE_SEP(_c_)], 0, [Returns true if character is a device separator.]) - AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)], + AC_DEFINE([IS_DIRECTORY_SEP(_c_)], [((_c_) == DIRECTORY_SEP)], [Returns true if character is a directory separator.]) - AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))], + AC_DEFINE([IS_ANY_SEP(_c_)], [(IS_DIRECTORY_SEP (_c_))], [Returns true if character is any form of separator.]) fi @@ -5414,7 +5512,7 @@ if test "$USE_X_TOOLKIT" != "none"; then [[#include #include ]], [[_XEditResCheckMessages (0, 0, 0, 0);]])], - [AC_DEFINE([X_TOOLKIT_EDITRES], 1, + [AC_DEFINE([X_TOOLKIT_EDITRES], [1], [Define to 1 if we should use XEditRes.])]) LIBS=$OLDLIBS fi @@ -5426,7 +5524,7 @@ case $opsys in dnl instead, there's a system variable _sys_nsig. Unfortunately, we dnl need the constant to dimension an array. So wire in the appropriate dnl value here. - AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.]) + AC_DEFINE([NSIG_MINIMUM], [32], [Minimum value of NSIG.]) ;; esac @@ -5459,7 +5557,7 @@ case $opsys in dnl of this file, so that we do not check for get_current_dir_name dnl on AIX. But that might be fragile if something else ends dnl up testing for get_current_dir_name as a dependency. - AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if + AC_DEFINE([BROKEN_GET_CURRENT_DIR_NAME], [1], [Define if get_current_dir_name should not be used.]) ;; @@ -5477,7 +5575,7 @@ case $opsys in dnl successfully after processing (for example with CRs added if the dnl terminal is set up that way which it is here). The same bytes will dnl be seen again in a later read(2), without the CRs. - AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to + AC_DEFINE([BROKEN_PTY_READ_AFTER_EAGAIN], [1], [Define on FreeBSD to work around an issue when reading from a PTY.]) ;; esac @@ -5485,13 +5583,13 @@ esac case $opsys in gnu-* | solaris ) dnl FIXME Can't we test if this exists (eg /proc/$$)? - AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.]) + AC_DEFINE([HAVE_PROCFS], [1], [Define if you have the /proc filesystem.]) ;; esac case $opsys in darwin | dragonfly | freebsd | netbsd | openbsd ) - AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to + AC_DEFINE([DONT_REOPEN_PTY], [1], [Define if process.c does not need to close a pty to make it a controlling terminal (it is already a controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).]) ;; @@ -5504,7 +5602,7 @@ case $opsys in esac dnl Used in sound.c -AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device", +AC_DEFINE_UNQUOTED([DEFAULT_SOUND_DEVICE], ["$sound_device"], [Name of the default sound device.]) @@ -5531,7 +5629,7 @@ dnl to read the input and send it to the true Emacs process dnl through a pipe. case $opsys in darwin | gnu-linux | gnu-kfreebsd) - AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.]) + AC_DEFINE([INTERRUPT_INPUT], [1], [Define to read input using SIGIO.]) ;; esac @@ -5543,73 +5641,78 @@ dnl NARROWPROTO, we will see the wrong function prototypes for X functions dnl taking float or double parameters. case $opsys in cygwin|gnu|gnu-linux|gnu-kfreebsd|freebsd|netbsd|openbsd) - AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration + AC_DEFINE([NARROWPROTO], [1], [Define if system's imake configuration file defines 'NeedWidePrototypes' as 'NO'.]) ;; esac dnl Used in process.c, this must be a loop, even if it only runs once. -AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.]) +AH_TEMPLATE([PTY_ITERATION], [How to iterate over PTYs.]) dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z, dnl trying suffixes 0-16. -AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of +AH_TEMPLATE([FIRST_PTY_LETTER], [Letter to use in finding device name of first PTY, if PTYs are supported.]) -AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.]) -AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control +AH_TEMPLATE([PTY_OPEN], [How to open a PTY, if non-standard.]) +AH_TEMPLATE([PTY_NAME_SPRINTF], [How to get the device name of the control end of a PTY, if non-standard.]) -AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty +AH_TEMPLATE([PTY_TTY_NAME_SPRINTF], [How to get device name of the tty end of a PTY, if non-standard.]) case $opsys in aix4-2 ) - AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)]) + AC_DEFINE([PTY_ITERATION], [int c; for (c = 0; !c ; c++)]) dnl You allocate a pty by opening /dev/ptc to get the master side. dnl To get the name of the slave side, you just ttyname() the master side. - AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");]) - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));]) + AC_DEFINE([PTY_NAME_SPRINTF], [strcpy (pty_name, "/dev/ptc");]) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], [strcpy (pty_name, ttyname (fd));]) ;; cygwin ) - AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)]) + AC_DEFINE([PTY_ITERATION], [int i; for (i = 0; i < 1; i++)]) dnl multi-line AC_DEFINEs are hard. :( - AC_DEFINE(PTY_OPEN, [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (false)]) - AC_DEFINE(PTY_NAME_SPRINTF, []) - AC_DEFINE(PTY_TTY_NAME_SPRINTF, []) + AC_DEFINE([PTY_OPEN], + [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (false)]) + AC_DEFINE([PTY_NAME_SPRINTF], []) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], []) ;; gnu | qnxnto ) - AC_DEFINE(FIRST_PTY_LETTER, ['p']) + AC_DEFINE([FIRST_PTY_LETTER], ['p']) ;; gnu-linux | gnu-kfreebsd | dragonfly | freebsd | openbsd | netbsd | darwin | nacl ) dnl if HAVE_GRANTPT if test "x$ac_cv_func_grantpt" = xyes; then - AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.]) - AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)]) + AC_DEFINE([UNIX98_PTYS], [1], [Define if the system has Unix98 PTYs.]) + AC_DEFINE([PTY_ITERATION], [int i; for (i = 0; i < 1; i++)]) dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD dnl to prevent sigchld_handler from intercepting the child's death. - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], + [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) dnl if HAVE_POSIX_OPENPT if test "x$ac_cv_func_posix_openpt" = xyes; then - AC_DEFINE(PTY_OPEN, [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (false)]) - AC_DEFINE(PTY_NAME_SPRINTF, []) + AC_DEFINE([PTY_OPEN], + [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (false)]) + AC_DEFINE([PTY_NAME_SPRINTF], []) dnl if HAVE_GETPT elif test "x$ac_cv_func_getpt" = xyes; then - AC_DEFINE(PTY_OPEN, [fd = getpt ()]) - AC_DEFINE(PTY_NAME_SPRINTF, []) + AC_DEFINE([PTY_OPEN], [fd = getpt ()]) + AC_DEFINE([PTY_NAME_SPRINTF], []) else - AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");]) + AC_DEFINE([PTY_NAME_SPRINTF], [strcpy (pty_name, "/dev/ptmx");]) fi else - AC_DEFINE(FIRST_PTY_LETTER, ['p']) + AC_DEFINE([FIRST_PTY_LETTER], ['p']) fi ;; hpux*) - AC_DEFINE(FIRST_PTY_LETTER, ['p']) - AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);]) - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);]) + AC_DEFINE([FIRST_PTY_LETTER], ['p']) + AC_DEFINE([PTY_NAME_SPRINTF], + [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);]) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], + [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);]) ;; solaris ) @@ -5617,22 +5720,25 @@ case $opsys in dnl O_CLOEXEC when opening the pty, and keep the SIGCHLD handler dnl from intercepting that death. If any child but grantpt's should die dnl within, it should be caught after sigrelse(2). - AC_DEFINE(PTY_OPEN, [fd = open (pty_name, O_RDWR | O_NONBLOCK)]) - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) + AC_DEFINE([PTY_OPEN], [fd = open (pty_name, O_RDWR | O_NONBLOCK)]) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], + [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) ;; unixware ) dnl Comments are as per solaris. - AC_DEFINE(PTY_OPEN, [fd = open (pty_name, O_RDWR | O_NONBLOCK)]) - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) + AC_DEFINE([PTY_OPEN], [fd = open (pty_name, O_RDWR | O_NONBLOCK)]) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], + [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) ;; haiku*) - AC_DEFINE(FIRST_PTY_LETTER, ['s']) - AC_DEFINE(PTY_NAME_SPRINTF, []) + AC_DEFINE([FIRST_PTY_LETTER], ['s']) + AC_DEFINE([PTY_NAME_SPRINTF], []) dnl on Haiku pty names aren't distinctive, thus the use of posix_openpt - AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_NONBLOCK)]) - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) + AC_DEFINE([PTY_OPEN], [fd = posix_openpt (O_RDWR | O_NONBLOCK)]) + AC_DEFINE([PTY_TTY_NAME_SPRINTF], + [{ char *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) ;; esac @@ -5641,21 +5747,22 @@ case $opsys in solaris | unixware ) dnl This change means that we don't loop through allocate_pty too dnl many times in the (rare) event of a failure. - AC_DEFINE(FIRST_PTY_LETTER, ['z']) - AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");]) + AC_DEFINE([FIRST_PTY_LETTER], ['z']) + AC_DEFINE([PTY_NAME_SPRINTF], [strcpy (pty_name, "/dev/ptmx");]) dnl Push various streams modules onto a PTY channel. Used in process.c. - AC_DEFINE(SETUP_SLAVE_PTY, [if (ioctl (std_in, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (std_in, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (std_in, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.]) + AC_DEFINE([SETUP_SLAVE_PTY], + [if (ioctl (std_in, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (std_in, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (std_in, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.]) ;; esac -AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by +AH_TEMPLATE([SIGNALS_VIA_CHARACTERS], [Make process_send_signal work by "typing" a signal character on the pty.]) case $opsys in dnl Perry Smith says this is correct for AIX. aix4-2 | cygwin | gnu | dragonfly | freebsd | netbsd | openbsd | darwin ) - AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1) + AC_DEFINE([SIGNALS_VIA_CHARACTERS], [1]) ;; dnl 21 Jun 06: Eric Hanchrow says this works. @@ -5668,35 +5775,41 @@ case $opsys in #if LINUX_VERSION_CODE < 0x20400 # error "Linux version too old" #endif - ]], [[]])], emacs_cv_signals_via_chars=yes, emacs_cv_signals_via_chars=no)]) + ]], [[]])], + [emacs_cv_signals_via_chars=yes], + [emacs_cv_signals_via_chars=no])]) - test "$emacs_cv_signals_via_chars" = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1) + test "$emacs_cv_signals_via_chars" = yes && + AC_DEFINE([SIGNALS_VIA_CHARACTERS], [1]) ;; esac -AH_TEMPLATE(TAB3, [Undocumented.]) +AH_TEMPLATE([TAB3], [Undocumented.]) case $opsys in - darwin) AC_DEFINE(TAB3, OXTABS) ;; + darwin) AC_DEFINE([TAB3], [OXTABS]) ;; gnu | dragonfly | freebsd | netbsd | openbsd ) - AC_DEFINE(TABDLY, OXTABS, [Undocumented.]) - AC_DEFINE(TAB3, OXTABS) + AC_DEFINE([TABDLY], [OXTABS], [Undocumented.]) + AC_DEFINE([TAB3], [OXTABS]) ;; gnu-linux | gnu-kfreebsd ) - AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ + AC_PREPROC_IFELSE( + [AC_LANG_PROGRAM( + [[ #ifndef __ia64__ # error "not ia64" #endif - ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(), + ]], [[]])], + [AC_DEFINE([GC_MARK_SECONDARY_STACK()], [do { extern void *__libc_ia64_register_backing_store_base; __builtin_ia64_flushrs (); mark_memory (__libc_ia64_register_backing_store_base, __builtin_ia64_bsp ());} while (false)], - [Mark a secondary stack, like the register stack on the ia64.]), []) + [Mark a secondary stack, like the register stack on the ia64.])], []) ;; hpux*) - AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call + AC_DEFINE([RUN_TIME_REMAP], [1], [Define if emacs.c needs to call run_time_remap; for HPUX.]) ;; esac @@ -5704,7 +5817,7 @@ esac dnl This won't be used automatically yet. We also need to know, at least, dnl that the stack is continuous. -AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all +AH_TEMPLATE([GC_SETJMP_WORKS], [Define if setjmp is known to save all registers relevant for conservative garbage collection in the jmp_buf.]) @@ -5724,18 +5837,18 @@ case $opsys in #else # error "setjmp not known to work on this arch" #endif - ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1)) + ]], [[]])], [AC_DEFINE([GC_SETJMP_WORKS], [1])]) ;; esac if test x$GCC = xyes; then dnl GC_SETJMP_WORKS is nearly always appropriate for GCC. - AC_DEFINE(GC_SETJMP_WORKS, 1) + AC_DEFINE([GC_SETJMP_WORKS], [1]) else case $opsys in aix* | dragonfly | freebsd | netbsd | openbsd | solaris ) - AC_DEFINE(GC_SETJMP_WORKS, 1) + AC_DEFINE([GC_SETJMP_WORKS], [1]) ;; esac fi dnl GCC? @@ -5755,7 +5868,7 @@ AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp], [emacs_cv_func__setjmp=yes], [emacs_cv_func__setjmp=no])]) if test $emacs_cv_func__setjmp = yes; then - AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.]) + AC_DEFINE([HAVE__SETJMP], [1], [Define to 1 if _setjmp and _longjmp work.]) fi # We need to preserve signal mask to handle C stack overflows. @@ -5770,13 +5883,13 @@ AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp], [emacs_cv_func_sigsetjmp=yes], [emacs_cv_func_sigsetjmp=no])]) if test $emacs_cv_func_sigsetjmp = yes; then - AC_DEFINE([HAVE_SIGSETJMP], 1, + AC_DEFINE([HAVE_SIGSETJMP], [1], [Define to 1 if sigsetjmp and siglongjmp work.]) fi case $emacs_cv_func_sigsetjmp,$emacs_cv_alternate_stack,$opsys in yes,yes,* | *,*,mingw32) - AC_DEFINE([HAVE_STACK_OVERFLOW_HANDLING], 1, + AC_DEFINE([HAVE_STACK_OVERFLOW_HANDLING], [1], [Define to 1 if C stack overflow can be handled in some cases.]);; esac @@ -5785,7 +5898,7 @@ case $opsys in dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY dnl subprocesses the usual way. But TIOCSIGNAL does work for PTYs, dnl and this is all we need. - AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.]) + AC_DEFINE([TIOCSIGSEND], [TIOCSIGNAL], [Some platforms redefine this.]) ;; esac @@ -5793,7 +5906,7 @@ esac case $opsys in hpux* | solaris ) dnl Used in xfaces.c. - AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on + AC_DEFINE([XOS_NEEDS_TIME_H], [1], [Compensate for a bug in Xos.h on some systems, where it requires time.h.]) ;; esac @@ -5801,64 +5914,67 @@ esac dnl Define symbols to identify the version of Unix this is. dnl Define all the symbols that apply correctly. -AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.]) -AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.]) -AH_TEMPLATE(USG, [Define if the system is compatible with System III.]) -AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.]) +AH_TEMPLATE([DOS_NT], [Define if the system is MS DOS or MS Windows.]) +AH_TEMPLATE([MSDOS], [Define if the system is MS DOS.]) +AH_TEMPLATE([USG], [Define if the system is compatible with System III.]) +AH_TEMPLATE([USG5_4], + [Define if the system is compatible with System V Release 4.]) case $opsys in aix4-2) - AC_DEFINE(USG, []) + AC_DEFINE([USG], []) dnl This symbol should be defined on AIX Version 3 ??????? AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ #ifndef _AIX # error "_AIX not defined" #endif - ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.])) + ]], [[]])], [], [AC_DEFINE([_AIX], [], [Define if the system is AIX.])]) ;; cygwin) - AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.]) + AC_DEFINE([CYGWIN], [1], [Define if the system is Cygwin.]) ;; darwin) dnl Not __APPLE__, as this may not be defined on non-macOS Darwin. dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to dnl distinguish macOS from pure Darwin. - AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.]) + AC_DEFINE([DARWIN_OS], [], [Define if the system is Darwin.]) ;; gnu-linux | gnu-kfreebsd ) - AC_DEFINE(USG, []) - AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.]) + AC_DEFINE([USG], []) + AC_DEFINE([GNU_LINUX], [], + [Define if ths system is compatible with GNU/Linux.]) ;; hpux*) - AC_DEFINE(USG, []) - AC_DEFINE(HPUX, [], [Define if the system is HPUX.]) + AC_DEFINE([USG], []) + AC_DEFINE([HPUX], [], [Define if the system is HPUX.]) ;; mingw32) - AC_DEFINE(DOS_NT, []) - AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.]) + AC_DEFINE([DOS_NT], []) + AC_DEFINE([WINDOWSNT], [1], [Define if compiling for native MS Windows.]) if test "x$ac_enable_checking" != "x" ; then - AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.]) + AC_DEFINE([EMACSDEBUG], [1], + [Define to 1 to enable w32 debug facilities.]) fi ;; solaris) - AC_DEFINE(USG, []) - AC_DEFINE(USG5_4, []) - AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.]) + AC_DEFINE([USG], []) + AC_DEFINE([USG5_4], []) + AC_DEFINE([SOLARIS2], [], [Define if the system is Solaris.]) ;; unixware) - AC_DEFINE(USG, []) - AC_DEFINE(USG5_4, []) + AC_DEFINE([USG], []) + AC_DEFINE([USG5_4], []) ;; haiku) - AC_DEFINE(HAIKU, [], [Define if the system is Haiku.]) + AC_DEFINE([HAIKU], [], [Define if the system is Haiku.]) ;; esac @@ -5939,13 +6055,13 @@ case $opsys in hpux11) dnl It works to open the pty's tty in the parent (Emacs), then dnl close and reopen it in the child. - AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it + AC_DEFINE([USG_SUBTTY_WORKS], [1], [Define for USG systems where it works to open a pty's tty in the parent process, then close and reopen it in the child.]) ;; solaris) - AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes + AC_DEFINE([_STRUCTURED_PROC], [1], [Needed for system_process_attributes on Solaris.]) ;; esac @@ -5968,72 +6084,72 @@ fi version=$PACKAGE_VERSION copyright="Copyright (C) 2022 Free Software Foundation, Inc." -AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"], +AC_DEFINE_UNQUOTED([COPYRIGHT], ["$copyright"], [Short copyright string for this version of Emacs.]) -AC_SUBST(copyright) +AC_SUBST([copyright]) ### Specify what sort of things we'll be editing into Makefile and config.h. ### Use configuration here uncanonicalized to avoid exceeding size limits. -AC_SUBST(version) -AC_SUBST(configuration) +AC_SUBST([version]) +AC_SUBST([configuration]) ## Unused? -AC_SUBST(canonical) -AC_SUBST(srcdir) -AC_SUBST(prefix) -AC_SUBST(exec_prefix) -AC_SUBST(bindir) -AC_SUBST(datadir) -AC_SUBST(gsettingsschemadir) -AC_SUBST(sharedstatedir) -AC_SUBST(libexecdir) -AC_SUBST(mandir) -AC_SUBST(infodir) -AC_SUBST(lispdirrel) -AC_SUBST(lispdir) -AC_SUBST(standardlisppath) -AC_SUBST(locallisppath) -AC_SUBST(lisppath) -AC_SUBST(x_default_search_path) -AC_SUBST(etcdir) -AC_SUBST(archlibdir) -AC_SUBST(etcdocdir) -AC_SUBST(bitmapdir) -AC_SUBST(gamedir) -AC_SUBST(gameuser) -AC_SUBST(gamegroup) +AC_SUBST([canonical]) +AC_SUBST([srcdir]) +AC_SUBST([prefix]) +AC_SUBST([exec_prefix]) +AC_SUBST([bindir]) +AC_SUBST([datadir]) +AC_SUBST([gsettingsschemadir]) +AC_SUBST([sharedstatedir]) +AC_SUBST([libexecdir]) +AC_SUBST([mandir]) +AC_SUBST([infodir]) +AC_SUBST([lispdirrel]) +AC_SUBST([lispdir]) +AC_SUBST([standardlisppath]) +AC_SUBST([locallisppath]) +AC_SUBST([lisppath]) +AC_SUBST([x_default_search_path]) +AC_SUBST([etcdir]) +AC_SUBST([archlibdir]) +AC_SUBST([etcdocdir]) +AC_SUBST([bitmapdir]) +AC_SUBST([gamedir]) +AC_SUBST([gameuser]) +AC_SUBST([gamegroup]) ## FIXME? Nothing uses @LD_SWITCH_X_SITE@. ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the ## end of LIBX_BASE, but nothing ever set it. -AC_SUBST(LD_SWITCH_X_SITE) -AC_SUBST(C_SWITCH_X_SITE) -AC_SUBST(GNUSTEP_CFLAGS) -AC_SUBST(CFLAGS) +AC_SUBST([LD_SWITCH_X_SITE]) +AC_SUBST([C_SWITCH_X_SITE]) +AC_SUBST([GNUSTEP_CFLAGS]) +AC_SUBST([CFLAGS]) ## Used in lwlib/Makefile.in. -AC_SUBST(X_TOOLKIT_TYPE) -AC_SUBST(ns_appdir) -AC_SUBST(ns_appbindir) -AC_SUBST(ns_applibexecdir) -AC_SUBST(ns_applibdir) -AC_SUBST(ns_appresdir) -AC_SUBST(ns_appsrc) -AC_SUBST(GNU_OBJC_CFLAGS) -AC_SUBST(OTHER_FILES) +AC_SUBST([X_TOOLKIT_TYPE]) +AC_SUBST([ns_appdir]) +AC_SUBST([ns_appbindir]) +AC_SUBST([ns_applibexecdir]) +AC_SUBST([ns_applibdir]) +AC_SUBST([ns_appresdir]) +AC_SUBST([ns_appsrc]) +AC_SUBST([GNU_OBJC_CFLAGS]) +AC_SUBST([OTHER_FILES]) if test -n "${term_header}"; then - AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}", + AC_DEFINE_UNQUOTED([TERM_HEADER], ["${term_header}"], [Define to the header for the built-in window system.]) fi -AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}", +AC_DEFINE_UNQUOTED([EMACS_CONFIGURATION], ["${canonical}"], [Define to the canonical Emacs configuration name.]) -AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}", +AC_DEFINE_UNQUOTED([EMACS_CONFIG_OPTIONS], "${emacs_config_options}", [Define to the options passed to configure.]) XMENU_OBJ= XOBJ= FONT_OBJ= if test "${HAVE_X_WINDOWS}" = "yes" ; then - AC_DEFINE(HAVE_X_WINDOWS, 1, + AC_DEFINE([HAVE_X_WINDOWS], [1], [Define to 1 if you want to use the X window system.]) XMENU_OBJ=xmenu.o XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o" @@ -6060,20 +6176,20 @@ fi if test "${HAVE_HARFBUZZ}" = "yes" ; then FONT_OBJ="$FONT_OBJ hbfont.o" fi -AC_SUBST(FONT_OBJ) -AC_SUBST(XMENU_OBJ) -AC_SUBST(XOBJ) -AC_SUBST(FONT_OBJ) +AC_SUBST([FONT_OBJ]) +AC_SUBST([XMENU_OBJ]) +AC_SUBST([XOBJ]) +AC_SUBST([FONT_OBJ]) WIDGET_OBJ= MOTIF_LIBW= if test "${USE_X_TOOLKIT}" != "none" ; then WIDGET_OBJ=widget.o - AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.]) + AC_DEFINE([USE_X_TOOLKIT], [1], [Define to 1 if using an X toolkit.]) if test "${USE_X_TOOLKIT}" = "LUCID"; then - AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.]) + AC_DEFINE([USE_LUCID], [1], [Define to 1 if using the Lucid X toolkit.]) elif test "${USE_X_TOOLKIT}" = "MOTIF"; then - AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.]) + AC_DEFINE([USE_MOTIF], [1], [Define to 1 if using the Motif X toolkit.]) MOTIF_LIBW=-lXm case "$opsys" in gnu-linux) @@ -6095,7 +6211,7 @@ if test "${USE_X_TOOLKIT}" != "none" ; then MOTIF_LIBW="$MOTIF_LIBW $LIBXP" fi fi -AC_SUBST(WIDGET_OBJ) +AC_SUBST([WIDGET_OBJ]) TOOLKIT_LIBW= case "$USE_X_TOOLKIT" in @@ -6106,7 +6222,7 @@ esac if test "$HAVE_XWIDGETS" = "yes"; then TOOLKIT_LIBW="$TOOLKIT_LIBW -lXcomposite" fi -AC_SUBST(TOOLKIT_LIBW) +AC_SUBST([TOOLKIT_LIBW]) if test "${opsys}" != "mingw32"; then if test "$USE_X_TOOLKIT" = "none"; then @@ -6115,16 +6231,16 @@ if test "${opsys}" != "mingw32"; then LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext" fi fi -AC_SUBST(LIBXT_OTHER) +AC_SUBST([LIBXT_OTHER]) if test "${HAVE_X11}" = "yes" ; then - AC_DEFINE(HAVE_X11, 1, + AC_DEFINE([HAVE_X11], [1], [Define to 1 if you want to use version 11 of X windows.]) LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" else LIBX_OTHER= fi -AC_SUBST(LIBX_OTHER) +AC_SUBST([LIBX_OTHER]) HAVE_OLDXMENU=no if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; then @@ -6137,7 +6253,7 @@ else LIBXMENU='$(lwlibdir)/liblw.a' AUTODEPEND_PARENTS="$AUTODEPEND_PARENTS lwlib" fi -AC_SUBST(LIBXMENU) +AC_SUBST([LIBXMENU]) AC_CACHE_CHECK([for struct alignment], [emacs_cv_struct_alignment], @@ -6150,7 +6266,7 @@ AC_CACHE_CHECK([for struct alignment], [emacs_cv_struct_alignment=yes], [emacs_cv_struct_alignment=no])]) if test "$emacs_cv_struct_alignment" = yes; then - AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], 1, + AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], [1], [Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the structure to an N-byte boundary.]) fi @@ -6164,24 +6280,24 @@ AC_CACHE_CHECK([for statement expressions], [emacs_cv_statement_expressions=yes], [emacs_cv_statement_expressions=no])]) if test "$emacs_cv_statement_expressions" = yes; then - AC_DEFINE([HAVE_STATEMENT_EXPRESSIONS], 1, + AC_DEFINE([HAVE_STATEMENT_EXPRESSIONS], [1], [Define to 1 if statement expressions work.]) fi if test "${GNU_MALLOC}" = "yes" ; then - AC_DEFINE(GNU_MALLOC, 1, + AC_DEFINE([GNU_MALLOC], [1], [Define to 1 if you want to use the GNU memory allocator.]) fi RALLOC_OBJ= if test "${REL_ALLOC}" = "yes" ; then - AC_DEFINE(REL_ALLOC, 1, + AC_DEFINE([REL_ALLOC], [1], [Define REL_ALLOC if you want to use the relocating allocator for buffer space.]) test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o fi -AC_SUBST(RALLOC_OBJ) +AC_SUBST([RALLOC_OBJ]) if test "$opsys" = "cygwin"; then CYGWIN_OBJ="cygw32.o" @@ -6197,9 +6313,9 @@ else PRE_ALLOC_OBJ=lastfile.o POST_ALLOC_OBJ= fi -AC_SUBST(CYGWIN_OBJ) -AC_SUBST(PRE_ALLOC_OBJ) -AC_SUBST(POST_ALLOC_OBJ) +AC_SUBST([CYGWIN_OBJ]) +AC_SUBST([PRE_ALLOC_OBJ]) +AC_SUBST([POST_ALLOC_OBJ]) dnl Call this 'FORTIFY_SOUR' so that it sorts before the 'FORTIFY_SOURCE' dnl verbatim defined above. The tricky name is apropos, as this hack @@ -6247,7 +6363,7 @@ LIBS=$SAVE_LIBS # timer_getoverrun needs the same library as timer_settime OLD_LIBS=$LIBS LIBS="$LIB_TIMER_TIME $LIBS" -AC_CHECK_FUNCS(timer_getoverrun) +AC_CHECK_FUNCS([timer_getoverrun]) LIBS=$OLD_LIBS if test "${opsys}" = "mingw32"; then @@ -6361,16 +6477,17 @@ fi LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS" -AC_SUBST(LD_SWITCH_SYSTEM_TEMACS) +AC_SUBST([LD_SWITCH_SYSTEM_TEMACS]) ## Common for all window systems if test "$window_system" != "none"; then - AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.]) - AC_DEFINE(POLL_FOR_INPUT, 1, [Define if you poll periodically to detect C-g.]) + AC_DEFINE([HAVE_WINDOW_SYSTEM], [1], [Define if you have a window system.]) + AC_DEFINE([POLL_FOR_INPUT], [1], + [Define if you poll periodically to detect C-g.]) WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o" fi -AC_SUBST(WINDOW_SYSTEM_OBJ) +AC_SUBST([WINDOW_SYSTEM_OBJ]) AH_TOP([/* GNU Emacs site configuration template file. @@ -6487,7 +6604,7 @@ for opt in ACL BE_APP CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTING AS_VAR_APPEND([emacs_config_features], ["$optsep$opt"]) optsep=' ' done -AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}", +AC_DEFINE_UNQUOTED([EMACS_CONFIG_FEATURES], ["${emacs_config_features}"], [Summary of some of the main features enabled by configure.]) AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D} @@ -6531,7 +6648,7 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D Does Emacs support legacy unexec dumping? ${with_unexec} Which dumping strategy does Emacs use? ${with_dumping} Does Emacs have native lisp compiler? ${HAVE_NATIVE_COMP} - Does Emacs use version 2 of the the X Input Extension? ${HAVE_XINPUT2} + Does Emacs use version 2 of the X Input Extension? ${HAVE_XINPUT2} Does Emacs generate a smaller-size Japanese dictionary? ${with_small_ja_dic} "]) @@ -6566,7 +6683,7 @@ case $opsys,$emacs_uname_r in echo ;; cygwin,3.0.[[0-7]]'('* | cygwin,3.1.[[0-2]]'('*) - AC_DEFINE([HAVE_CYGWIN_O_PATH_BUG], 1, + AC_DEFINE([HAVE_CYGWIN_O_PATH_BUG], [1], [Define to 1 if opening a FIFO, socket, or symlink with O_PATH is buggy.]);; esac @@ -6588,7 +6705,7 @@ if test "$HAVE_NS" = "yes"; then nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in]) ns_check_file=Contents/Info.plist fi - AC_SUBST(ns_check_file) + AC_SUBST([ns_check_file]) fi AC_CONFIG_FILES([Makefile lib/gnulib.mk]) @@ -6629,10 +6746,10 @@ fi dnl -d admin SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'` -AC_SUBST(SUBDIR_MAKEFILES_IN) +AC_SUBST([SUBDIR_MAKEFILES_IN]) SMALL_JA_DIC=$with_small_ja_dic -AC_SUBST(SMALL_JA_DIC) +AC_SUBST([SMALL_JA_DIC]) dnl You might wonder (I did) why epaths.h is generated by running make, dnl rather than just letting configure generate it from epaths.in. diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index c1c5f5407da..048b7bd99a5 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -8529,7 +8529,7 @@ * text.texi (Cell Justification): * trouble.texi (After a Crash): * xresources.texi (GTK styles): - Delete duplicate duplicate words. + Delete duplicate words. 2005-07-17 Richard M. Stallman diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi index 07f66ec10ac..77f40c7df2d 100644 --- a/doc/emacs/abbrevs.texi +++ b/doc/emacs/abbrevs.texi @@ -106,8 +106,10 @@ taken as the expansion. For example, to define the abbrev @samp{foo} as mentioned above, insert the text @samp{find outer otter} and then type @kbd{C-u 3 C-x a g f o o @key{RET}}. - An argument of zero to @kbd{C-x a g} means to use the contents of the -region as the expansion of the abbrev being defined. + If you're using @code{transient-mark-mode} (which is the default), +the active region will be used as the expansion of the abbrev being +defined. If not, an argument of zero to @kbd{C-x a g} means to use +the contents of the region. @kindex C-x a l @findex add-mode-abbrev diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 94e9d2760ec..120c957ff86 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -616,10 +616,11 @@ select it in another window (@code{clone-indirect-buffer-other-window}). The text of the indirect buffer is always identical to the text of its base buffer; changes made by editing either one are visible immediately -in the other. But in all other respects, the indirect buffer and its +in the other. ``Text'' here includes both the characters and their text +properties. But in all other respects, the indirect buffer and its base buffer are completely separate. They can have different names, different values of point, different narrowing, different markers, -different major modes, and different local variables. +different overlays, different major modes, and different local variables. An indirect buffer cannot visit a file, but its base buffer can. If you try to save the indirect buffer, that actually works by saving the @@ -649,6 +650,14 @@ both using the minibuffer. When this hook runs, the newly created indirect buffer is the current buffer. +Note: When a modification is made to the text of a buffer, the +modification hooks are run only in the base buffer, because most of +the functions on those hooks are not prepared to work correctly in +indirect buffers. So if you need a modification hook function in an +indirect buffer, you need to manually add that function to the hook +@emph{in the base buffer} and then make the function operate in the +desired indirect buffer. + @node Buffer Convenience @section Convenience Features and Customization of Buffer Handling diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index 46a2291b74d..ff7ab83190c 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -511,6 +511,9 @@ Set up a customization buffer for just one user option, @var{option}. @item M-x customize-face @key{RET} @var{face} @key{RET} Set up a customization buffer for just one face, @var{face}. +@item M-x customize-icon @key{RET} @var{face} @key{RET} +Set up a customization buffer for just one icon, @var{icon}. + @item M-x customize-group @key{RET} @var{group} @key{RET} Set up a customization buffer for just one group, @var{group}. @@ -2300,6 +2303,8 @@ as a function from Lisp programs. @cindex startup (init file) @cindex XDG_CONFIG_HOME +@c When updating this, also update ``Setting up a customization file'' +@c in efaq.texi. When Emacs is started, it normally tries to load a Lisp program from an @dfn{initialization file}, or @dfn{init file} for short. This file, if it exists, specifies how to initialize Emacs for you. @@ -2449,6 +2454,9 @@ keys which send non-@acronym{ASCII} characters. Write a single-quote (@code{'}) followed by the Lisp object you want. @end table + For more information on the Emacs Lisp syntax, @pxref{Introduction,,, +elisp, The Emacs Lisp Reference Manual}. + @node Init Examples @subsection Init File Examples diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 9e14e0f9a99..33e9270d42d 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -41,6 +41,7 @@ you to operate on the listed files. @xref{Directories}. * Operating on Files:: How to copy, rename, print, compress, etc. either one file or several files. * Shell Commands in Dired:: Running a shell command on the marked files. +* Shell Command Guessing:: Guessing shell commands for files. * Transforming File Names:: Using patterns to rename multiple files. * Comparison in Dired:: Running @code{diff} by way of Dired. * Subdirectories in Dired:: Adding subdirectories to the Dired buffer. @@ -844,6 +845,26 @@ This is like @samp{ln -s}. The argument @var{new} is the directory to make the links in, or (if making just one link) the name to give the link. +@findex dired-do-relsymlink +@kindex Y @r{(Dired)} +@item Y @var{new} @key{RET} +Make relative symbolic links to the specified files +(@code{dired-do-relsymlink}). The argument @var{new} is the directory +to make the links in, or (if making just one link) the name to give +the link. This is like @code{dired-do-symlink} but creates relative +symbolic links. For example: + +@example + foo -> ../bar/foo +@end example + +@noindent +It does not create absolute ones like: + +@example + foo -> /path/that/may/change/any/day/bar/foo +@end example + @findex dired-do-chmod @kindex M @r{(Dired)} @cindex changing file permissions (in Dired) @@ -963,6 +984,18 @@ Byte compile the specified Emacs Lisp files (@code{dired-do-byte-compile}). @xref{Byte Compilation,, Byte Compilation, elisp, The Emacs Lisp Reference Manual}. +@findex dired-do-info +@kindex I @r{(Dired)} +@cindex running info on files (in Dired) +@item I +Run Info on this file (assumed to be a file in Info format). + +@findex dired-do-man +@kindex N @r{(Dired)} +@cindex running man on files (in Dired) +@item N +Run man on this file (assumed to be a file in @code{nroff} format). + @kindex A @r{(Dired)} @findex dired-do-find-regexp @cindex search multiple files (in Dired) @@ -1089,6 +1122,73 @@ buffer (@pxref{Dired Updating}). @xref{Single Shell}, for information about running shell commands outside Dired. +@node Shell Command Guessing +@section Shell Command Guessing +@cindex guessing shell commands for files (in Dired) + +Based upon the name of a file, Dired tries to guess what shell command +you might want to apply to it. For example, if you have point on a +file named @file{foo.tar} and you press @kbd{!}, Dired will guess that +you want to run @samp{tar xvf}, and suggest that as the default shell +command. + +You can type @kbd{M-n} to get the default into the minibuffer for +editing. If there are several commands for a given file, type +@kbd{M-n} several times to see each matching command in order. + +Dired only tries to guess a command for a single file, never for a +list of marked files. + +@defvar dired-guess-shell-alist-default +This variable specifies the predefined rules for guessing shell +commands suitable for certain files. Set this to @code{nil} to turn +guessing off. The elements of @code{dired-guess-shell-alist-user} +(defined by the user) will override these rules. +@end defvar + +@defvar dired-guess-shell-alist-user +If non-@code{nil}, this variable specifies the user-defined alist of +file regexps and their suggested commands. These rules take +precedence over the predefined rules in the variable +@code{dired-guess-shell-alist-default} when +@code{dired-do-shell-command} is run). The default is @code{nil}. + +Each element of the alist looks like + +@example +(@var{regexp} @var{command}@dots{}) +@end example + +@noindent +where each @var{command} can either be a string or a Lisp expression +that evaluates to a string. If several commands are given, all of +them will temporarily be pushed onto the history. + +A @samp{*} in the shell command stands for the file name that matched +@var{regexp}. When Emacs invokes the @var{command}, it replaces each +instance of @samp{*} with the matched file name. + +To add rules for @samp{.foo} and @samp{.bar} file extensions, add this +to your Init file: + +@example +(setq dired-guess-shell-alist-user + (list + (list "\\.foo$" "@var{foo-command}") ; fixed rule + ;; possibly more rules... + (list "\\.bar$" ; rule with condition test + '(if @var{condition} + "@var{bar-command-1}" + "@var{bar-command-2}")))) +@end example + +@noindent +This will override any predefined rules for the same extensions. +@end defvar + +You can find more user options with @kbd{M-x customize-group @key{RET} +dired-guess @key{RET}}. + @node Transforming File Names @section Transforming File Names in Dired @@ -1138,9 +1238,12 @@ Rename each of the selected files to a lower-case name @itemx % S @var{from} @key{RET} @var{to} @key{RET} @kindex % S @r{(Dired)} @findex dired-do-symlink-regexp -These four commands rename, copy, make hard links and make soft links, -in each case computing the new name by regular-expression substitution -from the name of the old file. +@itemx % Y @var{from} @key{RET} @var{to} @key{RET} +@kindex % Y @r{(Dired)} +@findex dired-do-relsymlink-regexp +These five commands rename, copy, make hard links, make soft links, +and make relative soft links, in each case computing the new name by +regular-expression substitution from the name of the old file. @end table The four regular-expression substitution commands effectively @@ -1298,6 +1401,12 @@ parent directory. @kindex > @r{(Dired)} @item > Move down to the next directory-file line (@code{dired-next-dirline}). + +@findex dired-goto-subdir +@kindex M-G @r{(Dired)} +@item M-G +Prompt for a directory and move to its directory-file line +(@code{dired-goto-subdir}). @end table @node Hiding Subdirectories diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 16d6d5567e2..b7c8825efa2 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -24,6 +24,7 @@ the text is displayed. * Faces:: How to change the display style using faces. * Colors:: Specifying colors for faces. * Standard Faces:: The main predefined faces. +* Icons:: How to change how icons look. * Text Scale:: Increasing or decreasing text size in a buffer. * Font Lock:: Minor mode for syntactic highlighting using faces. * Highlight Interactively:: Tell Emacs what text to highlight. @@ -851,10 +852,44 @@ This face is used to display on text-mode terminals the menu item that would be selected if you click a mouse or press @key{RET}. @end table +@node Icons +@section Icons +@cindex icons, on clickable buttons + +Emacs sometimes displays clickable buttons (or other informative +icons), and you can customize how these look on display. + +@vindex icon-preference +The main customization point here is the @code{icon-preference} user +option. By using this, you can tell Emacs your overall preferences +for icons. This is a list of icon types, and the first icon type +that's supported will be used. The supported types are: + +@table @code +@item image +Use an image for the icon. + +@item emoji +Use a colorful emoji for the icon. + +@item symbol +Use a monochrome symbol for the icon. + +@item text +Use a simple text for the icon. +@end table + +In addition, each individual icon can be customized with @kbd{M-x +customize-icon}, and themes can further alter the looks of the icons. + +To get a quick description of an icon, use the @kbd{M-x describe-icon} +command. + @node Text Scale @section Text Scale -@cindex adjust buffer face height +@cindex adjust buffer font size +@cindex font size of @code{default} face, increase or decrease @findex text-scale-adjust @kindex C-x C-+ @kindex C-x C-- @@ -862,17 +897,27 @@ would be selected if you click a mouse or press @key{RET}. @kindex C-x C-0 @kindex C-wheel-down @kindex C-wheel-up - To increase the height of the default face in the current buffer, -type @kbd{C-x C-+} or @kbd{C-x C-=}. To decrease it, type @kbd{C-x -C--}. To restore the default (global) face height, type @kbd{C-x -C-0}. These keys are all bound to the same command, + To increase the font size of the @code{default} face in the current +buffer, type @kbd{C-x C-+} or @kbd{C-x C-=}. To decrease it, type +@kbd{C-x C--}. To restore the default (global) font size, type +@kbd{C-x C-0}. These keys are all bound to the same command, @code{text-scale-adjust}, which looks at the last key typed to -determine which action to take. +determine which action to take and adjusts the font size accordingly +by changing the height of the default face. + + Most faces don't have an explicit setting of the @code{:height} +attribute, and thus inherit the height from the @code{default} face. +Those faces are also scaled by the above commands. + + Faces other than @code{default} that have an explicit setting of the +@code{:height} attribute are not affected by these font size changes. +The @code{header-line} face is an exception: it will be scaled even if +it has an explicit setting of the @code{:height} attribute. Similarly, scrolling the mouse wheel with the @kbd{Ctrl} modifier pressed, when the mouse pointer is above buffer text, will increase or -decrease the height of the default face, depending on the direction of -the scrolling. +decrease the font size of the affected faces, depending on the +direction of the scrolling. The final key of these commands may be repeated without the leading @kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face @@ -882,21 +927,37 @@ of 1.2; to change this factor, customize the variable to the @code{text-scale-adjust} command restores the default height, the same as typing @kbd{C-x C-0}. -@cindex increase buffer face height +@cindex adjust global font size +@findex global-text-scale-adjust +@vindex global-text-scale-adjust-resizes-frames +@kindex C-x C-M-+ +@kindex C-x C-M-= +@kindex C-x C-M-- +@kindex C-x C-M-0 +@kindex C-M-wheel-down +@kindex C-M-wheel-up + Similarly, to change the sizes of the fonts globally, type @kbd{C-x +C-M-+}, @kbd{C-x C-M-=}, @kbd{C-x C-M--} or @kbd{C-x C-M-0}, or scroll +the mouse wheel with both the @kbd{Ctrl} and @kbd{Meta} modifiers +pressed. To enable frame resizing when the font size is changed +globally, customize the variable +@code{global-text-scale-adjust-resizes-frames} (@pxref{Easy +Customization}). + +@cindex increase buffer font size @findex text-scale-increase -@cindex decrease buffer face height +@cindex decrease buffer font size @findex text-scale-decrease The commands @code{text-scale-increase} and -@code{text-scale-decrease} increase or decrease the height of the -default face, just like @kbd{C-x C-+} and @kbd{C-x C--} respectively. -You may find it convenient to bind to these commands, rather than -@code{text-scale-adjust}. +@code{text-scale-decrease} increase or decrease the size of the font +in the current buffer, just like @kbd{C-x C-+} and @kbd{C-x C--} +respectively. You may find it convenient to bind to these commands, +rather than @code{text-scale-adjust}. -@cindex set buffer face height +@cindex set buffer font size @findex text-scale-set - The command @code{text-scale-set} scales the height of the default -face in the current buffer to an absolute level specified by its -prefix argument. + The command @code{text-scale-set} scales the size of the font in the +current buffer to an absolute level specified by its prefix argument. @findex text-scale-mode The above commands automatically enable the minor mode diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index ad0fa5f0cd0..b43c966f872 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -1183,7 +1183,6 @@ The Emacs Initialization File Dealing with Emacs Trouble -* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete. * Stuck Recursive:: '[...]' in mode line around the parentheses. * Screen Garbled:: Garbage on the screen. * Text Garbled:: Garbage in the text. @@ -1191,7 +1190,7 @@ Dealing with Emacs Trouble * Crashing:: What Emacs does when it crashes. * After a Crash:: Recovering editing in an Emacs session that crashed. * Emergency Escape:: What to do if Emacs stops responding. -* Long Lines:: Mitigating slowness due to extremely long lines. +* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete. Reporting Bugs diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 062185fb4af..5b3b15cd38f 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -420,6 +420,9 @@ With prefix argument (@kbd{C-u}), mark the current buffer as changed. Save the current buffer with a specified file name (@code{write-file}). @item M-x set-visited-file-name Change the file name under which the current buffer will be saved. +@item M-x rename-visited-file +The same as @kbd{M-x set-visited-file-name}, but also rename the file +the buffer is visiting (if any). @end table @kindex C-x C-s @@ -652,10 +655,10 @@ Never make numbered backups; always make single backups. The usual way to set this variable is globally, through your init file or the customization buffer. However, you can set @code{version-control} locally in an individual buffer to control the -making of backups for that buffer's file (@pxref{Locals}). You can -have Emacs set @code{version-control} locally whenever you visit a -given file (@pxref{File Variables}). Some modes, such as Rmail mode, -set this variable. +making of backups for that buffer's file (@pxref{Locals}). Some +modes, such as Rmail mode, set this variable. You can also have Emacs +set @code{version-control} locally whenever you visit a given file +(@pxref{File Variables}). @cindex @env{VERSION_CONTROL} environment variable If you set the environment variable @env{VERSION_CONTROL}, to tell @@ -2222,13 +2225,16 @@ recently-opened files, reading file names from a buffer. @findex recentf-mode @vindex recentf-mode +@findex recentf-open @findex recentf-save-list @findex recentf-edit-list - If you enable Recentf mode, with @kbd{M-x recentf-mode}, the -@samp{File} menu includes a submenu containing a list of recently -opened files. @kbd{M-x recentf-save-list} saves the current -@code{recentf-list} to a file, and @kbd{M-x recentf-edit-list} edits -it. + If you enable Recentf mode, with @kbd{M-x recentf-mode}, Emacs +maintains a list of recently opened files. To open a file from this +list, use the @kbd{M-x recentf-open} command. When this mode is +enabled, the @samp{File} menu will include a submenu that you can use +to visit one of these files. @kbd{M-x recentf-save-list} saves the +current @code{recentf-list} to a file, and @kbd{M-x recentf-edit-list} +edits it. @c FIXME partial-completion-mode (complete.el) is obsolete. The @kbd{M-x ffap} command generalizes @code{find-file} with more @@ -2267,12 +2273,14 @@ behavior by using the options @code{image-auto-resize} and @findex image-transform-set-scale @findex image-transform-reset To resize the image manually you can use the command -@code{image-transform-fit-to-window} bound to @kbd{s w} -that fits the image to both the window height and width. -To scale the image specifying a scale factor, use the command -@code{image-transform-set-scale} bound to @kbd{s s}. -To reset all transformations to the initial state, use -@code{image-transform-reset} bound to @kbd{s 0}. +@code{image-transform-fit-to-window} bound to @kbd{s w} that fits the +image to both the window height and width. To scale the image to a +percentage of its original size, use the command +@code{image-transform-set-percent} bound to @kbd{s p}. To scale +the image specifying a scale factor, use the command +@code{image-transform-set-scale} bound to @kbd{s s}. To reset all +transformations to the initial state, use @code{image-transform-reset} +bound to @kbd{s 0}. @findex image-next-file @findex image-previous-file @@ -2349,6 +2357,29 @@ can be used to transform the image in question to @acronym{PNG} before displaying. GraphicsMagick, ImageMagick and @command{ffmpeg} are currently supported for image conversions. +@findex image-converter-add-handler + In addition, you may wish to add special handlers for certain image +formats. These can be added with the +@code{image-converter-add-handler} function. For instance, to allow +viewing Krita files as simple images, you could say something like: + +@lisp +(image-converter-add-handler + "kra" + (lambda (file data-p) + (if data-p + (error "Can't decode non-files") + (call-process "unzip" nil t nil + "-qq" "-c" "-x" file "mergedimage.png")))) +@end lisp + +The function takes two parameters, where the first is a file name +suffix, and the second is a function to do the ``conversion''. This +function takes two parameters, where the first is the file name or a +string with the data, and the second says whether the first parameter +is data or not, and should output an image in +@code{image-convert-to-format} format in the current buffer. + @findex thumbs-mode @cindex mode, Thumbs The Image-Dired package can also be used to view images as diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index fa248c1a586..d78cbffaa71 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -223,8 +223,8 @@ mouse-wheel-mode}. The variables @code{mouse-wheel-follow-mouse} and buffers are scrolled. The variable @code{mouse-wheel-progressive-speed} determines whether the scroll speed is linked to how fast you move the wheel. This mode also -supports increasing or decreasing the height of the default face, by -default bound to scrolling with the @key{Ctrl} modifier. +supports increasing or decreasing the font size, by default bound to +scrolling with the @key{Ctrl} modifier. @vindex mouse-wheel-scroll-amount-horizontal Emacs also supports horizontal scrolling with the @key{Shift} @@ -1249,6 +1249,13 @@ To drag text from Emacs to other programs, set the option @code{mouse-drag-and-drop-region-cross-program} to a non-@code{nil} value. + On the X window system, some programs can drop files on Emacs, +expecting Emacs to save them. Normally, Emacs will prompt for a file +name under which the file will be saved, and then open the file, but +that behavior can be changed by changing the variable +@code{x-dnd-direct-save-function}. @xref{Drag and Drop,,, elisp, The +Emacs Lisp Reference Manual}. + @node Menu Bars @section Menu Bars @cindex menu bar mode diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index a78a2c9e2d7..9a537019974 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi @@ -182,6 +182,7 @@ corresponding Control character. @xref{User Input,C-M-}. Case conversion means changing text from upper case to lower case or vice versa. @xref{Case}. +@cindex ignore case @item Case Folding Case folding means ignoring the differences between case variants of the same letter: upper-case, lower-case, and title-case. Emacs @@ -1456,8 +1457,8 @@ level by aborting (q.v.@:) and quitting (q.v.). @xref{Quitting}. @item Transient Mark Mode The default behavior of the mark (q.v.@:) and region (q.v.), in which setting the mark activates it and highlights the region, is called -Transient Mark mode. In GNU Emacs 23 and onwards, it is enabled by -default. @xref{Disabled Transient Mark}. +Transient Mark mode. It is enabled by default. @xref{Disabled +Transient Mark}. @item Transposition Transposing two units of text means putting each one into the place diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index 11ee9dc2b2f..d206dee3859 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi @@ -542,6 +542,11 @@ previous hyperlink. These commands act cyclically; for instance, typing @key{TAB} at the last hyperlink moves back to the first hyperlink. +@vindex help-clean-buttons + By default, many links in the help buffer are displayed surrounded +by quote characters. If the @code{help-clean-buttons} user option is +non-@code{nil}, these quote characters are removed from the buffer. + @kindex n @r{(Help mode)} @kindex p @r{(Help mode)} @findex help-goto-next-page diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 4435f6e4946..bb8d51158ae 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -610,14 +610,14 @@ yanks the contents of the clipboard at point. @cindex primary selection @cindex selection, primary - Under the X Window System, there exists a @dfn{primary selection} -containing the last stretch of text selected in an X application -(usually by dragging the mouse). Typically, this text can be inserted -into other X applications by @kbd{mouse-2} clicks. The primary -selection is separate from the clipboard. Its contents are more -fragile; they are overwritten each time you select text with the -mouse, whereas the clipboard is only overwritten by explicit cut -or copy commands. + Under the X Window System, PGTK and Haiku, there exists a +@dfn{primary selection} containing the last stretch of text selected +in an X application (usually by dragging the mouse). Typically, this +text can be inserted into other X applications by @kbd{mouse-2} +clicks. The primary selection is separate from the clipboard. Its +contents are more fragile; they are overwritten each time you select +text with the mouse, whereas the clipboard is only overwritten by +explicit cut or copy commands. Under X, whenever the region is active (@pxref{Mark}), the text in the region is saved in the primary selection. This applies regardless @@ -639,6 +639,13 @@ regions to the primary selection entirely. (@kbd{C-y}) to insert this text if @code{select-enable-primary} is set (@pxref{Clipboard}). +@cindex lost-selection-mode + By default, Emacs keeps the region active even after text is +selected in another program; this is contrary to typical X behavior. +To make Emacs deactivate the region after another program places data +in the primary selection, enable the global minor mode +@code{lost-selection-mode}. + @cindex MS-Windows, and primary selection MS-Windows provides no primary selection, but Emacs emulates it within a single Emacs session by storing the selected text internally. diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index e5b3664a4cc..60169d8d8c8 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -2222,8 +2222,8 @@ where you were with @kbd{M-,}. @kindex C-M-, @findex xref-go-forward - Go forward to a place from where you previously went back using @kbd{M-,}. -This is useful if you find that you went back too far. + If you previously went back too far with @kbd{M-,}, @kbd{C-M-,} +(@code{xref-go-forward}) can be used to go forward again. @findex xref-etags-mode Some major modes install @code{xref} support facilities that might diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index 4e71793b66e..e71d653210a 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -734,11 +734,14 @@ highlighting. This feature uses the special text property @section Minibuffer History @cindex minibuffer history @cindex history of minibuffer input +@cindex completion, walking through candidates - Every argument that you enter with the minibuffer is saved in a -@dfn{minibuffer history list} so you can easily use it again later. -You can use the following arguments to quickly fetch an earlier -argument into the minibuffer: + Everything you type in the minibuffer is saved in a @dfn{minibuffer +history list} so you can easily use it again later. This includes +completion candidates (such as file names, buffer names, command +names, etc.@:) and any other kind of minibuffer input. You can use +the following commands to quickly fetch an earlier or alternative +response into the minibuffer: @table @kbd @item M-p diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 9709c6ddc1f..da1b87b48bd 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1,6 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2022 Free Software -@c Foundation, Inc. +@c Copyright (C) 1985--2022 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex @chapter Miscellaneous Commands @@ -1643,11 +1642,11 @@ interface is similar to the @code{more} program. @cindex remote host @cindex connecting to remote host @cindex Telnet -@cindex Rlogin +@cindex SSH You can login to a remote computer, using whatever commands you -would from a regular terminal (e.g., using the @command{ssh} or -@command{telnet} or @code{rlogin} commands), from a Term window. +would from a regular terminal (e.g., the @command{ssh} command), from +a Term window. A program that asks you for a password will normally suppress echoing of the password, so the password will not show up in the @@ -2870,99 +2869,6 @@ new major mode which provides a command to switch back. These approaches give you more flexibility to go back to unfinished tasks in the order you choose. -@ignore -@c Apart from edt and viper, this is all obsolete. -@c (Can't believe we were saying "most other editors" into 2014!) -@c There seems no point having a node just for those, which both have -@c their own manuals. -@node Emulation -@section Emulation -@cindex emulating other editors -@cindex other editors -@cindex EDT -@cindex vi -@cindex WordStar - - GNU Emacs can be programmed to emulate (more or less) most other -editors. Standard facilities can emulate these: - -@table @asis -@item CRiSP/Brief (PC editor) -@findex crisp-mode -@vindex crisp-override-meta-x -@findex scroll-all-mode -@cindex CRiSP mode -@cindex Brief emulation -@cindex emulation of Brief -@cindex mode, CRiSP -@kbd{M-x crisp-mode} enables key bindings to emulate the CRiSP/Brief -editor. Note that this rebinds @kbd{M-x} to exit Emacs unless you set -the variable @code{crisp-override-meta-x}. You can also use the -command @kbd{M-x scroll-all-mode} or set the variable -@code{crisp-load-scroll-all} to emulate CRiSP's scroll-all feature -(scrolling all windows together). - -@item EDT (DEC VMS editor) -@findex edt-emulation-on -@findex edt-emulation-off -Turn on EDT emulation with @kbd{M-x edt-emulation-on}; restore normal -command bindings with @kbd{M-x edt-emulation-off}. - -Most of the EDT emulation commands are keypad keys, and most standard -Emacs key bindings are still available. The EDT emulation rebindings -are done in the global keymap, so there is no problem switching -buffers or major modes while in EDT emulation. - -@item TPU (DEC VMS editor) -@findex tpu-edt-on -@cindex TPU -@kbd{M-x tpu-edt-on} turns on emulation of the TPU editor emulating EDT. - -@item vi (Berkeley editor) -@findex viper-mode -Viper is an emulator for vi. It implements several levels of -emulation; level 1 is closest to vi itself, while level 5 departs -somewhat from strict emulation to take advantage of the capabilities of -Emacs. To invoke Viper, type @kbd{M-x viper-mode}; it will guide you -the rest of the way and ask for the emulation level. @inforef{Top, -Viper, viper}. - -@item vi (another emulator) -@findex vi-mode -@kbd{M-x vi-mode} enters a major mode that replaces the previously -established major mode. All of the vi commands that, in real vi, enter -input mode are programmed instead to return to the previous major -mode. Thus, ordinary Emacs serves as vi's input mode. - -Because vi emulation works through major modes, it does not work -to switch buffers during emulation. Return to normal Emacs first. - -If you plan to use vi emulation much, you probably want to bind a key -to the @code{vi-mode} command. - -@item vi (alternate emulator) -@findex vip-mode -@kbd{M-x vip-mode} invokes another vi emulator, said to resemble real vi -more thoroughly than @kbd{M-x vi-mode}. Input mode in this emulator -is changed from ordinary Emacs so you can use @key{ESC} to go back to -emulated vi command mode. To get from emulated vi command mode back to -ordinary Emacs, type @kbd{C-z}. - -This emulation does not work through major modes, and it is possible -to switch buffers in various ways within the emulator. It is not -so necessary to assign a key to the command @code{vip-mode} as -it is with @code{vi-mode} because terminating insert mode does -not use it. - -@inforef{Top, VIP, vip}, for full information. - -@item WordStar (old wordprocessor) -@findex wordstar-mode -@kbd{M-x wordstar-mode} provides a major mode with WordStar-like -key bindings. -@end table -@end ignore - @node Hyperlinking @section Hyperlinking and Web Navigation Features diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index e30d623a77c..dd0787cd38d 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -986,9 +986,9 @@ printer, put this in your @file{.emacs} file: @section Specifying Fonts on MS-Windows @cindex font specification (MS Windows) - Starting with Emacs 23, fonts are specified by their name, size -and optional properties. The format for specifying fonts comes from the -fontconfig library used in modern Free desktops: + Fonts are specified by their name, size and optional properties. +The format for specifying fonts comes from the fontconfig library used +in modern Free desktops: @example [Family[-PointSize]][:Option1=Value1[:Option2=Value2[...]]] diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index eb4f5b0edab..7e16c82cf5c 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -483,6 +483,16 @@ The default value is just @code{'(all)}. installed will be ignored. The @samp{muse} package will be listed in the package menu with the @samp{held} status. +@findex package-recompile +@findex package-recompile-all + Emacs byte code is quite stable, but it's possible for byte code to +become outdated, or for the compiled files to rely on macros that have +changed in new versions of Emacs. You can use the command @w{@kbd{M-x +package-recompile}} to recompile a particular package, or +@w{@kbd{M-x package-recompile-all}} to recompile all the packages. (The +latter command might take quite a while to run if you have many +installed packages.) + @node Package Files @section Package Files and Directory Layout @cindex package directory diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index f4e12d29e99..582e764c55f 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -228,8 +228,9 @@ customizing the @code{isearch-wrap-pause} user option. If it is @code{t} (the default), signal an error. (Repeating the search will wrap around.) If @code{no}, issue a @code{ding} and wrap immediately after reaching the last match. If @code{no-ding}, wrap immediately, -but don't @code{ding}. Finally, if @code{nil}, never wrap, but just -stop at the last match. +but don't @code{ding}. With the values @code{no} and @code{no-ding} +the search will try to wrap around also on typing a character. +Finally, if @code{nil}, never wrap, but just stop at the last match. @cindex search ring @findex isearch-ring-advance @@ -1428,16 +1429,18 @@ of its accented cousins like @code{@"a} and @code{@'a}, i.e., the match disregards the diacritics that distinguish these variants. In addition, @code{a} matches other characters that resemble it, or have it as part of their graphical representation, -such as U+249C @sc{parenthesized latin small letter a} and U+2100 -@sc{account of} (which looks like a small @code{a} over @code{c}). +such as U+00AA @sc{feminine ordinal indicator} and U+24D0 +@sc{circled latin small letter a} (which looks like a small @code{a} +inside a circle). Similarly, the @acronym{ASCII} double-quote character @code{"} matches all the other variants of double quotes defined by the Unicode standard. Finally, character folding can make a sequence of one or more characters match another sequence of a different length: for example, the sequence of two characters @code{ff} matches U+FB00 -@sc{latin small ligature ff}. Character sequences that are not identical, -but match under character folding are known as @dfn{equivalent -character sequences}. +@sc{latin small ligature ff} and the sequence @code{(a)} matches +U+249C @sc{parenthesized latin small letter a}. Character sequences +that are not identical, but match under character folding are known as +@dfn{equivalent character sequences}. @kindex M-s ' @r{(Incremental Search)} @findex isearch-toggle-char-fold diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index 8da96de1cb4..887e5c6170f 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -151,7 +151,6 @@ garbled displays, running out of memory, and crashes and hangs. Emacs. @menu -* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete. * Stuck Recursive:: '[...]' in mode line around the parentheses. * Screen Garbled:: Garbage on the screen. * Text Garbled:: Garbage in the text. @@ -159,66 +158,9 @@ Emacs. * Crashing:: What Emacs does when it crashes. * After a Crash:: Recovering editing in an Emacs session that crashed. * Emergency Escape:: What to do if Emacs stops responding. -* Long Lines:: Mitigating slowness due to extremely long lines. +* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete. @end menu -@node DEL Does Not Delete -@subsection If @key{DEL} Fails to Delete -@cindex @key{DEL} vs @key{BACKSPACE} -@cindex @key{BACKSPACE} vs @key{DEL} -@cindex @key{DEL} does not delete - - Every keyboard has a large key, usually labeled @key{BACKSPACE}, -which is ordinarily used to erase the last character that you typed. -In Emacs, this key is supposed to be equivalent to @key{DEL}. - - When Emacs starts up on a graphical display, it determines -automatically which key should be @key{DEL}. In some unusual cases, -Emacs gets the wrong information from the system, and @key{BACKSPACE} -ends up deleting forwards instead of backwards. - - Some keyboards also have a @key{Delete} key, which is ordinarily -used to delete forwards. If this key deletes backward in Emacs, that -too suggests Emacs got the wrong information---but in the opposite -sense. - - On a text terminal, if you find that @key{BACKSPACE} prompts for a -Help command, like @kbd{Control-h}, instead of deleting a character, -it means that key is actually sending the @samp{BS} character. Emacs -ought to be treating @key{BS} as @key{DEL}, but it isn't. - -@findex normal-erase-is-backspace-mode - In all of those cases, the immediate remedy is the same: use the -command @kbd{M-x normal-erase-is-backspace-mode}. This toggles -between the two modes that Emacs supports for handling @key{DEL}, so -if Emacs starts in the wrong mode, this should switch to the right -mode. On a text terminal, if you want to ask for help when @key{BS} -is treated as @key{DEL}, use @key{F1} instead of @kbd{C-h}; @kbd{C-?} -may also work, if it sends character code 127. - - To fix the problem in every Emacs session, put one of the following -lines into your initialization file (@pxref{Init File}). For the -first case above, where @key{BACKSPACE} deletes forwards instead of -backwards, use this line to make @key{BACKSPACE} act as @key{DEL}: - -@lisp -(normal-erase-is-backspace-mode 0) -@end lisp - -@noindent -For the other two cases, use this line: - -@lisp -(normal-erase-is-backspace-mode 1) -@end lisp - -@vindex normal-erase-is-backspace - Another way to fix the problem for every Emacs session is to -customize the variable @code{normal-erase-is-backspace}: the value -@code{t} specifies the mode where @key{BS} or @key{BACKSPACE} is -@key{DEL}, and @code{nil} specifies the other mode. @xref{Easy -Customization}. - @node Stuck Recursive @subsection Recursive Editing Levels @cindex stuck in recursive editing @@ -490,40 +432,62 @@ program. emergency escape---but there are cases where it won't work, when a system call hangs or when Emacs is stuck in a tight loop in C code. -@node Long Lines -@subsection Long Lines -@cindex long lines +@node DEL Does Not Delete +@subsection If @key{DEL} Fails to Delete +@cindex @key{DEL} vs @key{BACKSPACE} +@cindex @key{BACKSPACE} vs @key{DEL} +@cindex @key{DEL} does not delete - For a variety of reasons (some of which are fundamental to the Emacs -redisplay code and the complex range of possibilities it handles; -others of which are due to modes and features which do not scale well -in unusual circumstances), Emacs can perform poorly when extremely -long lines are present (where ``extremely long'' usually means at -least many thousands of characters). + Every keyboard has a large key, usually labeled @key{BACKSPACE}, +which is ordinarily used to erase the last character that you typed. +In Emacs, this key is supposed to be equivalent to @key{DEL}. -@cindex @code{so-long} mode -@findex global-so-long-mode -@vindex so-long-action - A particular problem is that Emacs may ``hang'' for a long time at -the point of visiting a file with extremely long lines. This can be -mitigated by enabling the @file{so-long} library, which detects when a -visited file contains abnormally long lines, and takes steps to -disable features which are liable to cause slowness in that situation. -To enable this library, type @kbd{M-x global-so-long-mode @key{RET}}, -or turn on the @code{global-so-long-mode} in your init file -(@pxref{Init File}), or customize the @code{global-so-long-mode} -option. You can tailor this mode's operation by customizing the -variable @code{so-long-action}. + When Emacs starts up on a graphical display, it determines +automatically which key should be @key{DEL}. In some unusual cases, +Emacs gets the wrong information from the system, and @key{BACKSPACE} +ends up deleting forwards instead of backwards. - The @file{so-long} library can also significantly improve -performance when moving and editing in a buffer with long lines. -Performance is still likely to degrade as you get deeper into the long -lines, but the improvements from using this library can nevertheless -be substantial. + Some keyboards also have a @key{Delete} key, which is ordinarily +used to delete forwards. If this key deletes backward in Emacs, that +too suggests Emacs got the wrong information---but in the opposite +sense. -@findex so-long-commentary - Use @kbd{M-x so-long-commentary} to view the documentation for this -library and learn more about how to enable and configure it. + On a text terminal, if you find that @key{BACKSPACE} prompts for a +Help command, like @kbd{Control-h}, instead of deleting a character, +it means that key is actually sending the @samp{BS} character. Emacs +ought to be treating @key{BS} as @key{DEL}, but it isn't. + +@findex normal-erase-is-backspace-mode + In all of those cases, the immediate remedy is the same: use the +command @kbd{M-x normal-erase-is-backspace-mode}. This toggles +between the two modes that Emacs supports for handling @key{DEL}, so +if Emacs starts in the wrong mode, this should switch to the right +mode. On a text terminal, if you want to ask for help when @key{BS} +is treated as @key{DEL}, use @key{F1} instead of @kbd{C-h}; @kbd{C-?} +may also work, if it sends character code 127. + + To fix the problem in every Emacs session, put one of the following +lines into your initialization file (@pxref{Init File}). For the +first case above, where @key{BACKSPACE} deletes forwards instead of +backwards, use this line to make @key{BACKSPACE} act as @key{DEL}: + +@lisp +(normal-erase-is-backspace-mode 0) +@end lisp + +@noindent +For the other two cases, use this line: + +@lisp +(normal-erase-is-backspace-mode 1) +@end lisp + +@vindex normal-erase-is-backspace + Another way to fix the problem for every Emacs session is to +customize the variable @code{normal-erase-is-backspace}: the value +@code{t} specifies the mode where @key{BS} or @key{BACKSPACE} is +@key{DEL}, and @code{nil} specifies the other mode. @xref{Easy +Customization}. @node Bugs @section Reporting Bugs diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index 2c2700bc15b..ab0df3563f5 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -382,7 +382,9 @@ which prevents blank areas of a frame that have not yet been painted from being displayed. If set to @samp{extended}, it will enable use of an alternative frame synchronization protocol, which might be supported by some compositing window managers that don't support the -protocol Emacs uses by default. +protocol Emacs uses by default, and causes Emacs to synchronize +display with the monitor refresh rate when a compatible compositing +window manager is in use. @item @code{verticalScrollBars} (class @code{ScrollBars}) Give frames scroll bars on the left if @samp{left}, on the right if @@ -449,6 +451,12 @@ Foreground color for a selected item. Foreground color. @item disabledForeground Foreground color for a disabled menu item. +@item highlightForeground +Foreground color for a menu item highlighted by the mouse or key +navigation. +@item highlightBackground +Background color for a menu item highlighted by the mouse or key +navigation. @ifnottex @item horizontalSpacing Horizontal spacing in pixels between items. Default is 3. diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 049c8a65a8f..47a5a870fde 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -2020,7 +2020,6 @@ the arguments to the function @code{concat} are the strings @w{@code{"The "}} and @w{@code{" red foxes."}} and the list @code{(number-to-string (+ 2 fill-column))}. -@c For GNU Emacs 22, need number-to-string @smallexample (concat "The " (number-to-string (+ 2 fill-column)) " red foxes.") @end smallexample @@ -10297,9 +10296,8 @@ loop with a list. @cindex @file{*scratch*} buffer The function requires several lines for its output. If you are -reading this in a recent instance of GNU Emacs, -@c GNU Emacs 21, GNU Emacs 22, or a later version, -you can evaluate the following expression inside of Info, as usual. +reading this in a recent instance of GNU Emacs, you can evaluate the +following expression inside of Info, as usual. If you are using an earlier version of Emacs, you need to copy the necessary expressions to your @file{*scratch*} buffer and evaluate @@ -15134,16 +15132,16 @@ Emacs may produce different results.) @end group @group -(lengths-list-file "./lisp/makesum.el") - @result{} (85 181) +(lengths-list-file "./lisp/hex-util.el") + @result{} (82 71) @end group @group (recursive-lengths-list-many-files '("./lisp/macros.el" "./lisp/mail/mailalias.el" - "./lisp/makesum.el")) - @result{} (283 263 480 90 38 32 29 95 178 180 321 218 324 85 181) + "./lisp/hex-util.el")) + @result{} (283 263 480 90 38 32 29 95 178 180 321 218 324 82 71) @end group @end smallexample @@ -15235,27 +15233,13 @@ Sorting the list returned by the @code{recursive-lengths-list-many-files} function is straightforward; it uses the @code{<} function: -@ignore -2006 Oct 29 -In GNU Emacs 22, eval -(progn - (cd "/usr/local/share/emacs/22.0.50/") - (sort - (recursive-lengths-list-many-files - '("./lisp/macros.el" - "./lisp/mail/mailalias.el" - "./lisp/makesum.el")) - '<)) - -@end ignore - @smallexample @group (sort (recursive-lengths-list-many-files '("./lisp/macros.el" "./lisp/mailalias.el" - "./lisp/makesum.el")) + "./lisp/hex-util.el")) '<) @end group @end smallexample @@ -15265,7 +15249,7 @@ In GNU Emacs 22, eval which produces: @smallexample -(29 32 38 85 90 95 178 180 181 218 263 283 321 324 480) +(29 32 38 71 82 90 95 178 180 218 263 283 321 324 480) @end smallexample @noindent @@ -15313,7 +15297,7 @@ as a list that looks like this (but with more elements): @group ("./lisp/macros.el" "./lisp/mail/rmail.el" - "./lisp/makesum.el") + "./lisp/hex-util.el") @end group @end smallexample @@ -17711,17 +17695,6 @@ or start GNU Emacs with the command @code{emacs -nbc}. (setq grep-command "grep -i -nH -e ") @end smallexample -@ignore -@c Evidently, no longer needed in GNU Emacs 22 - -item Automatically uncompress compressed files when visiting them - -smallexample -(load "uncompress") -end smallexample - -@end ignore - @item Find an existing buffer, even if it has a different name@* This avoids problems with symbolic links. diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi index 1cbe8bc0933..6a1d125701c 100644 --- a/doc/lispref/buffers.texi +++ b/doc/lispref/buffers.texi @@ -981,14 +981,22 @@ of Satisfied if @var{expr} doesn't satisfy @code{buffer-match-p} with the same buffer and @code{arg}. @item or -Satisfied if @var{oper} is a list and @emph{any} condition if +Satisfied if @var{expr} is a list and @emph{any} condition in @var{expr} satisfies @code{buffer-match-p}, with the same buffer and @code{arg}. @item and -Satisfied if @var{oper} is a list and @emph{all} condition if -@var{expr} satisfies @code{buffer-match-p}, with the same buffer and +Satisfied if @var{expr} is a list and @emph{all} conditions in +@var{expr} satisfy @code{buffer-match-p}, with the same buffer and @code{arg}. +@item derived-mode +Satisfied if the buffer's major mode derives from @var{expr}. +@item major-mode +Satisfied if the buffer's major mode is equal to @var{expr}. Prefer +using @code{derived-mode} instead when both can work. @end table +@item t +Satisfied by any buffer. A convenient alternative to @code{""} (empty +string), @code{(and)} (empty conjunction) or @code{always}. @end itemize @end defun diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 0a82bba3bc7..ede1c4d7622 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -443,9 +443,9 @@ specification. If the key sequence that invoked the command has and @acronym{ASCII} characters, do not count where @samp{e} is concerned. @item f -A file name of an existing file (@pxref{File Names}). The default -directory is @code{default-directory}. Existing, Completion, Default, -Prompt. +A file name of an existing file (@pxref{File Names}). @xref{Reading +File Names}, for details about default values. Existing, Completion, +Default, Prompt. @item F A file name. The file need not exist. Completion, Default, Prompt. @@ -897,6 +897,10 @@ keymaps. This command is the normal definition of @kbd{M-S-x} (that's ``meta shift x''). @end deffn +Both these commands prompt for a command name, but with different +completion rules. You can toggle between these two modes by using the +@kbd{M-S-x} command while being prompted. + @node Distinguish Interactive @section Distinguish Interactive Calls @cindex distinguish interactive calls @@ -2074,7 +2078,7 @@ and @var{kind} as arguments. @item load-changed This xwidget event indicates that the @var{xwidget} has reached a particular point of the page-loading process. When these events are -sent, @var{arg} will contain a string that futher describes the status +sent, @var{arg} will contain a string that further describes the status of the widget: @table @samp @@ -2208,6 +2212,17 @@ and @code{mouse-wheel-down-alternate-event} defined in @file{mwheel.el} to determine what event types to expect for the mouse wheel. +@vindex mouse-wheel-left-event +@vindex mouse-wheel-right-event +Similarly, some mice can generate @code{mouse-wheel-left-event} and +@code{mouse-wheel-right-event} and can be used to scroll if +@code{mouse-wheel-tilt-scroll} is non-@code{nil}. However, some mice +also generate other events at the same time as they're generating +these scroll events which may get in the way. The way to fix this is +generally to unbind these events (for instance, @code{mouse-6} or +@code{mouse-7}, but this is very hardware and operating system +dependent). + @cindex @code{pinch} event @item (pinch @var{position} @var{dx} @var{dy} @var{scale} @var{angle}) This kind of event is generated by the user performing a ``pinch'' @@ -2686,7 +2701,10 @@ the character at that position. @cindex timestamp of a mouse event @defun posn-timestamp position Return the timestamp in @var{position}. This is the time at which the -event occurred, in milliseconds. +event occurred, in milliseconds. Such a timestamp is reported +relative to an arbitrary starting time that varies according to the +window system in use. On the X Window System, for example, it is the +number of milliseconds since the X server was started. @end defun These functions compute a position list given particular buffer @@ -2962,7 +2980,7 @@ returns the key sequence as a vector, never as a string. If an input character is upper-case (or has the shift modifier) and has no key binding, but its lower-case equivalent has one, then @code{read-key-sequence} converts the character to lower case. (This -behaviour can be disabled by setting the +behavior can be disabled by setting the @code{translate-upper-case-key-bindings} user option to @code{nil}.) Note that @code{lookup-key} does not perform case conversion in this way. @@ -3198,7 +3216,7 @@ causes it to evaluate @code{help-form} and display the result. It then continues to wait for a valid input character, or keyboard-quit. @end defun -@defun read-multiple-choice prompt choices &optional help-string show-help +@defun read-multiple-choice prompt choices &optional help-string show-help long-form Ask user a multiple choice question. @var{prompt} should be a string that will be displayed as the prompt. @@ -3217,6 +3235,11 @@ If optional argument @var{show-help} is non-@code{nil}, the help buffer will be displayed immediately, before any user input. If it is a string, use it as the name of the help buffer. +If optional argument @var{long-form} is non-@code{nil}, the user +will have to type in long-form answers (using @code{completing-read}) +instead of hitting a single key. The answers must be among the second +elements of the values in the @var{choices} list. + The return value is the matching value from @var{choices}. @lisp diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index 3670225dc49..60fc11a22ed 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -979,7 +979,11 @@ Its value should be a number between @minus{}1 and 3. Values between 0 and 3 specify the optimization levels equivalent to the corresponding compiler @option{-O0}, @option{-O1}, etc.@: command-line options of the compiler. The value @minus{}1 means disable -native-compilation; functions and files will be only byte-compiled. +native-compilation: functions and files will be only byte-compiled; +however, the @file{*.eln} files will still be produced, they will just +contain the compiled code in bytecode form. (This can be achieved at +function granularity by using the @w{@code{(declare (speed -1))}} +form, @pxref{Declare Form}.) The default value is 2. @end defopt diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index 528421bf3b4..6ba35cffffe 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -672,6 +672,10 @@ The value must be a valid color name. The widget provides completion for color names, as well as a sample and a button for selecting a color name from a list of color names shown in a @file{*Colors*} buffer. + +@item fringe-bitmap +The value must be a valid fringe bitmap name. The widget provides +completion. @end table @node Composite Types diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index 058c9319544..9ae40949d1e 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -77,6 +77,7 @@ debugger recursively. @xref{Recursive Editing}. @menu * Error Debugging:: Entering the debugger when an error happens. +* Debugging Redisplay:: Getting backtraces from redisplay errors. * Infinite Loops:: Stopping and debugging a program that doesn't exit. * Function Debugging:: Entering it when a certain function is called. * Variable Debugging:: Entering it when a variable is modified. @@ -105,6 +106,10 @@ debugger, set the variable @code{debug-on-error} to non-@code{nil}. (The command @code{toggle-debug-on-error} provides an easy way to do this.) +Note that, for technical reasons, you cannot use the facilities +defined in this subsection to debug errors in Lisp that the redisplay +code has invoked. @xref{Debugging Redisplay}, for help with these. + @defopt debug-on-error This variable determines whether the debugger is called when an error is signaled and not handled. If @code{debug-on-error} is @code{t}, @@ -213,6 +218,45 @@ file, use the option @samp{--debug-init}. This binds bypasses the @code{condition-case} which normally catches errors in the init file. +@node Debugging Redisplay +@subsection Debugging Redisplay Errors +@cindex redisplay errors +@cindex debugging redisplay errors + +When an error occurs in Lisp code which redisplay has invoked, Emacs's +usual debugging mechanisms are unusable, for technical reasons. This +subsection describes how to get a backtrace from such an error, which +should be helpful in debugging it. + +These directions apply to Lisp forms used, for example, in +@code{:eval} mode line constructs (@pxref{Mode Line Data}), and in all +hooks invoked from redisplay, such as: + +@itemize +@item +@code{fontification-functions} (@pxref{Auto Faces}). +@item +@code{window-scroll-functions} (@pxref{Window Hooks}). +@end itemize + +Note that if you have had an error in a hook function called from +redisplay, the error handling might have removed this function from +the hook. You will thus need to reinitialize that hook somehow, +perhaps with @code{add-hook}, to be able to replay the bug. + +To generate a backtrace in these circumstances, set the variable +@code{backtrace-on-redisplay-error} to non-@code{nil}. When the error +occurs, Emacs will dump the backtrace to the buffer +@file{*Redisplay-trace*}, but won't automatically display it in a +window. This is to avoid needlessly corrupting the redisplay you are +debugging. You will thus need to display the buffer yourself, with a +command such as @code{switch-to-buffer-other-frame} @key{C-x 5 b}. + +@defvar backtrace-on-redisplay-error +Set this variable to non-@code{nil} to enable the generation of a +backtrace when an error occurs in any Lisp called from redisplay. +@end defvar + @node Infinite Loops @subsection Debugging Infinite Loops @cindex infinite loops diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index b98c2f8fa93..a56f467e0b5 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -27,6 +27,7 @@ that Emacs presents to the user. * Window Dividers:: Separating windows visually. * Display Property:: Images, margins, text size, etc. * Images:: Displaying images in Emacs buffers. +* Icons:: Displaying icons in Emacs buffers. * Xwidgets:: Displaying native widgets in Emacs buffers. * Buttons:: Adding clickable buttons to Emacs buffers. * Abstract Display:: Emacs's Widget for Object Collections. @@ -2474,6 +2475,7 @@ Otherwise, it returns @code{nil}. The following table lists all the face attributes, their possible values, and their effects. +@cindex unspecified, face attribute value Apart from the values given below, each face attribute can have the value @code{unspecified}. This special value means that the face doesn't specify that attribute directly. An @code{unspecified} @@ -2482,7 +2484,13 @@ description @code{:inherit} attribute below); or, failing that, to an underlying face (@pxref{Displaying Faces}). (However, @code{unspecified} is not a valid value in @code{defface}.) - The @code{default} face must specify all attributes. +@cindex reset, face attribute value + A face attribute can also have the value @code{reset}. This special +value stands for the value of the corresponding attribute of the +@code{default} face. + + The @code{default} face must explicitly specify all attributes, and +cannot use the special value @code{reset}. Some of these attributes are meaningful only on certain kinds of displays. If your display cannot handle a certain attribute, the @@ -2615,14 +2623,17 @@ Draw a box with lines of width 1, in the foreground color. Draw a box with lines of width 1, in color @var{color}. @item @code{(:line-width (@var{vwidth} . @var{hwidth}) :color @var{color} :style @var{style})} -This way you can explicitly specify all aspects of the box. The values -@var{vwidth} and @var{hwidth} specifies respectively the width of the -vertical and horizontal lines to draw; they default to (1 . 1). -A negative horizontal or vertical width @minus{}@var{n} means to draw a line -of width @var{n} that occupies the space of the underlying text, thus -avoiding any increase in the character height or width. For simplification -the width could be specified with only a single number @var{n} instead -of a list, such case is equivalent to @code{((abs @var{n}) . @var{n})}. +You can explicitly specify all aspects of the box with a plist on this +form. Any element in this plist can be omitted. + +The values @var{vwidth} and @var{hwidth} specifies respectively the +width of the vertical and horizontal lines to draw; they default to (1 +. 1). A negative horizontal or vertical width @minus{}@var{n} means +to draw a line of width @var{n} that occupies the space of the +underlying text, thus avoiding any increase in the character height or +width. For simplification the width could be specified with only a +single number @var{n} instead of a list, such case is equivalent to +@code{((abs @var{n}) . @var{n})}. The value @var{style} specifies whether to draw a 3D box. If it is @code{released-button}, the box looks like a 3D button that is not @@ -2706,6 +2717,13 @@ doesn't specify an explicit value for a face, the value from the original face definition by @code{defface} is inherited (@pxref{Defining Faces}). +Some modes, like @code{hl-line-mode}, use a face with an +@code{:extend} property to mark the entire current line. Note, +however, that Emacs will always allow you to move point after the +final character in a buffer, and if the buffer ends with a newline +character, point can be placed on what is seemingly a line at the end +of the buffer---but Emacs can't highlight that ``line'', because it +doesn't really exist. @end table @defun font-family-list &optional frame @@ -3465,6 +3483,12 @@ function finishes are the ones that really matter. For efficiency, we recommend writing these functions so that they usually assign faces to around 400 to 600 characters at each call. + +When the buffer text includes very long lines, these functions are +called with the buffer narrowed to a relatively small region around +@var{pos}, and with narrowing locked, so the functions cannot use +@code{widen} to gain access to the rest of the buffer. +@xref{Narrowing}. @end defvar @node Basic Faces @@ -4605,6 +4629,7 @@ Used to indicate buffer boundaries. Used for different types of fringe cursors. @item @code{exclamation-mark}, @code{question-mark} +@itemx @code{large-circle} Not used by core Emacs features. @end table @@ -5710,6 +5735,12 @@ are supported, unless the image type is @code{imagemagick}. Positive values rotate clockwise, negative values counter-clockwise. Rotation is performed after scaling and cropping. +@item :flip @var{flip} +If this is @code{t}, the image will be horizontally flipped. +Currently it has no effect if the image type is @code{imagemagick}. +Vertical flipping can be achieved by rotating the image 180 degrees +and toggling this value. + @item :transform-smoothing @var{smooth} If this is @code{t}, any image transform will have smoothing applied; if @code{nil}, no smoothing will be applied. The exact algorithm used @@ -5858,6 +5889,14 @@ When you click the mouse when the mouse pointer is over a hot-spot, an event is composed by combining the @var{id} of the hot-spot with the mouse event; for instance, @code{[area4 mouse-1]} if the hot-spot's @var{id} is @code{area4}. + +Note that the map's coordinates should reflect the displayed image +after all transforms have been done (rotation, scaling and so on), and +also note that Emacs (by default) performs auto-scaling of images, so +to make things match up, you should either specify @code{:scale 1.0} +when creating the image, or use the result of +@code{image-compute-scaling-factor} to compute the elements of the +map. @end table @defun image-mask-p spec &optional frame @@ -5923,13 +5962,10 @@ There are three formats you can use for @var{data}: @itemize @bullet @item A vector of strings or bool-vectors, each specifying one line of the -image. Do specify @code{:height} and @code{:width}. +image. Do specify @code{:data-height} and @code{:data-width}. @item A string containing the same byte sequence as an XBM file would contain. -You must not specify @code{:height} and @code{:width} in this case, -because omitting them is what indicates the data has the format of an -XBM file. The file contents specify the height and width of the image. @item A string or a bool-vector containing the bits of the image (plus @@ -5937,26 +5973,11 @@ perhaps some extra bits at the end that will not be used). It should contain at least @w{@code{@var{stride} * @var{height}}} bits, where @var{stride} is the smallest multiple of 8 greater than or equal to the width of the image. In this case, you should specify -@code{:height}, @code{:width} and @code{:stride}, both to indicate -that the string contains just the bits rather than a whole XBM file, -and to specify the size of the image. +@code{:data-height}, @code{:data-width} and @code{:stride}, both to +indicate that the string contains just the bits rather than a whole +XBM file, and to specify the size of the image. @end itemize -@item :width @var{width} -The value, @var{width}, specifies the width of the image, in pixels. - -@item :height @var{height} -The value, @var{height}, specifies the height of the image, in pixels. - -Note that @code{:width} and @code{:height} can only be used if passing -in data that doesn't specify the width and height (e.g., a string or a -vector containing the bits of the image). @acronym{XBM} files usually -specify this themselves, and it's an error to use these two properties -on these files. Also note that @code{:width} and @code{:height} are -used by most other image formats to specify what the displayed image -is supposed to be, which usually means performing some sort of -scaling. This isn't supported for @acronym{XBM} images. - @item :stride @var{stride} The number of bool vector entries stored for each row; the smallest multiple of 8 greater than or equal to @var{width}. @@ -6977,6 +6998,165 @@ bytes. An image of size 200x100 with 24 bits per color will have a cache size of 60000 bytes, for instance. @end defun +@node Icons +@section Icons + +Emacs sometimes uses buttons (for clicking on) or small graphics (to +illustrate something). Since Emacs is available on a wide variety of +systems with different capabilities, and users have different +preferences, Emacs provides a facility to handle this in a convenient +way, allowing customization, graceful degradation, accessibility, as +well as themability: @dfn{Icons}. + +The central macro here is @code{define-icon}, and here's a simple +example: + +@lisp +(define-icon outline-open button + '((image "right.svg" "open.xpm" "open.pbm" :height line) + (emoji "▶️") + (symbol "▶" "➤") + (text "open" :face icon-button)) + "Icon used for buttons for opening a section in outline buffers." + :version "29.1" + :help-echo "Open this section") +@end lisp + +Which alternative will actually be displayed depends on the value of +the user option @code{icon-preference} (@pxref{Icons,,, emacs, The GNU +Emacs Manual}) and on the results of run-time checks for what the +current frame's terminal can actually display. + +The macro in the example above defines @code{outline-open} as an icon, +and inherits properties from the icon called @code{button} (so this is +meant as a clickable button to be inserted in a buffer). It is +followed by a list of @dfn{icon types} along with the actual icon +shapes themselves. In addition, there's a doc string and various +keywords that contain additional information and properties. + +To instantiate an icon, you use @code{icon-string}, which will +consult the current Customize theming, and the @code{icon-preference} +user option, and finally what the Emacs is able to actually display. +If @code{icon-preference} is @code{(image emoji symbol text)} (i.e., +allowing all of these forms of icons), in this case, +@code{icon-string} will first check that Emacs is able to display +images at all, and then whether it has support for each of those +different image formats. If that fails, Emacs will check whether +Emacs can display emojis (in the current frame). If that fails, it'll +check whether it can display the symbol in question. If that fails, +it'll use the plain text version. + +For instance, if @code{icon-preference} doesn't contain @code{image} +or @code{emoji}, it'll skip those entries. + +Code can confidently call @code{icon-string} in all circumstances and +be sure that something readable will appear on the screen, no +matter whether the user is on a graphical terminal or a text terminal, +and no matter which features Emacs was built with. + +@defmac define-icon name parent specs doc &rest keywords +Define an icon @var{name}, a symbol, with the display alternatives in +@var{spec}, that can be later instantiated using @code{icon-string}. +The @var{name} is the name of the resulting keyword. + +The resulting icon will inherit specs from @var{parent}, and from +their parent's parents, and so on, and the lowest descendent element +wins. + +@var{specs} is a list of icon specifications. The first element of each +specification is the type, and the rest is something that can be used +as an icon of that type, and then optionally followed by a keyword +list. The following icon types are available: + +@cindex icon types +@table @code +@item image +In this case, there may be many images listed as candidates. Emacs +will choose the first one that the current Emacs instance can show. +If an image is listed is an absolute file name, it's used as is, but it's +otherwise looked up in the list @code{image-load-path} +(@pxref{Defining Images}). + +@item emoji +This should be a (possibly colorful) emoji. + +@item symbol +This should be a (monochrome) symbol character. + +@item text +Icons should also have a textual fallback. This can also be used for +the visually impaired: if @code{icon-preference} is just +@code{(text)}, all icons will be replaced by text. +@end table + +Various keywords may follow the list of icon specifications. For +instance: + +@example +(symbol "▶" "➤" :face icon-button) +@end example + +Unknown keywords are ignored. The following keywords are allowed: + +@cindex icon keywords +@table @code +@item :face +The face to be used for the icon. + +@item :height +This is only valid for @code{image} icons, and can be either a number +(which specifies the height in pixels), or the symbol @code{line}, +which will use the default line height in the currently selected +window. +@end table + +@var{doc} should be a doc string. + +@var{keywords} is a list of keyword/value pairs. The following +keywords are allowed: + +@table @code +@item :version +The (approximate) Emacs version this button first appeared. (This +keyword is mandatory.) + +@item :group +The customization group this icon belongs in. If not present, it is +inferred. + +@item :help-echo +The help string shown when hovering over the icon with the mouse +pointer. +@end table +@end defmac + +@defun icon-string icon +This function returns a string suitable for display in the current +buffer for @var{icon}. +@end defun + +@defun icon-elements icon +Alternatively, you can get a ``deconstructed'' version of @var{icon} +with this function. It returns a plist (@pxref{Property Lists}) where +the keys are @code{string}, @code{face} and @var{image}. (The latter +is only present if the icon is represented by an image.) This can be +useful if the icon isn't to be inserted directly in the buffer, but +needs some sort of pre-processing first. +@end defun + +Icons can be customized with @kbd{M-x customize-icon}. Themes can +specify changes to icons with, for instance: + +@lisp +(custom-theme-set-icons + 'my-theme + '(outline-open ((image :height 100) + (text " OPEN "))) + '(outline-close ((image :height 100) + (text " CLOSE " :face warning)))) +@end lisp + + @node Xwidgets @section Embedded Native Widgets @cindex xwidget @@ -7309,6 +7489,7 @@ the usual Emacs @code{highlight} face. @item keymap @kindex keymap @r{(button property)} +@vindex button-map The button's keymap, defining bindings active within the button region. By default this is the usual button region keymap, stored in the variable @code{button-map}, which defines @key{RET} and @@ -7523,6 +7704,7 @@ Return @code{t} if button-type @var{type} is a subtype of @var{supertype}. These are commands and functions for locating and operating on buttons in an Emacs buffer. +@cindex buffer-button-map @code{push-button} is the command that a user uses to actually push a button, and is bound by default in the button itself to @key{RET} and to @key{mouse-2} using a local keymap in the button's overlay or @@ -8360,7 +8542,11 @@ hexadecimal notation. @item an @acronym{ASCII} string Display a box containing that string. The string should contain at -most 6 @acronym{ASCII} characters. +most 6 @acronym{ASCII} characters. As an exception, if the string +includes just one character, on text-mode terminals that character +will be displayed without a box; this allows to handle such +``acronyms'' as a replacement character for characters that cannot be +displayed by the terminal. @item a cons cell @code{(@var{graphical} . @var{text})} Display with @var{graphical} on graphical displays, and with @@ -8426,9 +8612,9 @@ Characters of Unicode General Category [Cf], such as U+200E images, such as U+00AD @sc{soft hyphen}. @item variation-selectors -Unicode VS-1 through VS-16 (U+FE00 through U+FE0F), which are used to -select between different glyphs for the same codepoints (typically -emojis). +Unicode VS-1 through VS-256 (U+FE00 through U+FE0F and U+E0100 through +U+E01EF), which are used to select between different glyphs for the same +codepoints (typically emojis). @item no-font Characters for which there is no suitable font, or which cannot be @@ -8556,7 +8742,7 @@ displayed in the echo area. @vindex use-system-tooltips When Emacs is built with the GTK+ toolkit or Haiku windowing support, it by default displays tooltips using toolkit functions, and the -appearance of the tooltips is then controlled by by the toolkit's +appearance of the tooltips is then controlled by the toolkit's settings. Toolkit-provided tooltips can be disabled by changing the value of the variable @code{use-system-tooltips} to @code{nil}. The rest of this subsection describes how to control non-toolkit tooltips, diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 0fc5271d5ad..56f7b7bdfad 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -701,7 +701,11 @@ on this process. @item e @var{exp} @key{RET} Evaluate expression @var{exp} in the context outside of Edebug (@code{edebug-eval-expression}). That is, Edebug tries to minimize -its interference with the evaluation. By default, this command +its interference with the evaluation. The result is shown in the echo +area, or, if this command is given a prefix, pop up a new buffer and +pretty-print the result there. + +By default, this command suppresses the debugger during evaluation, so that an error in the evaluated expression won't add a new error on top of the existing one. Set the @code{debug-allow-recursive-debug} user option to a @@ -715,7 +719,8 @@ Evaluate expression @var{exp} in the context of Edebug itself Evaluate the expression before point, in the context outside of Edebug (@code{edebug-eval-last-sexp}). With the prefix argument of zero (@kbd{C-u 0 C-x C-e}), don't shorten long items (like strings and -lists). +lists). Any other prefix will result in the value being +pretty-printed in a separate buffer. @end table @cindex lexical binding (Edebug) @@ -836,7 +841,6 @@ you continue execution, and recreated next time it is needed. @cindex printing (Edebug) @cindex printing circular structures -@pindex cust-print If an expression in your program produces a value containing circular list structure, you may get an error when Edebug attempts to print it. diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index ea8683a6d8e..986fb22c75b 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -2445,6 +2445,15 @@ You can use this function for directory names and for file names, because it recognizes abbreviations even as part of the name. @end defun +@defun file-parent-directory filename +This function returns the directory name of the parent directory of +@var{filename}. If @var{filename} is at the root directory of the +filesystem, it returns @code{nil}. A relative @var{filename} is +assumed to be relative to @code{default-directory}, and the return +value will also be relative in that case. If the return value is +non-@code{nil}, it ends in a slash. +@end defun + @node File Name Expansion @subsection Functions that Expand Filenames @cindex expansion of file names diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 16f7ad312a4..262b86672da 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1746,15 +1746,16 @@ fit will be clipped by the window manager. @item fullscreen This parameter specifies whether to maximize the frame's width, height or both. Its value can be @code{fullwidth}, @code{fullheight}, -@code{fullboth}, or @code{maximized}. A @dfn{fullwidth} frame is as -wide as possible, a @dfn{fullheight} frame is as tall as possible, and -a @dfn{fullboth} frame is both as wide and as tall as possible. A -@dfn{maximized} frame is like a ``fullboth'' frame, except that it -usually keeps its title bar and the buttons for resizing and closing -the frame. Also, maximized frames typically avoid hiding any task bar -or panels displayed on the desktop. A ``fullboth'' frame, on the -other hand, usually omits the title bar and occupies the entire -available screen space. +@code{fullboth}, or @code{maximized}.@footnote{On PGTK frames, setting +the values @code{fullheight} and @code{fullwidth} has no effect.} A +@dfn{fullwidth} frame is as wide as possible, a @dfn{fullheight} frame +is as tall as possible, and a @dfn{fullboth} frame is both as wide and +as tall as possible. A @dfn{maximized} frame is like a ``fullboth'' +frame, except that it usually keeps its title bar and the buttons for +resizing and closing the frame. Also, maximized frames typically +avoid hiding any task bar or panels displayed on the desktop. A +``fullboth'' frame, on the other hand, usually omits the title bar and +occupies the entire available screen space. Full-height and full-width frames are more similar to maximized frames in this regard. However, these typically display an external @@ -2179,10 +2180,20 @@ If non-@code{nil}, the frame is visible on all virtual desktops on systems with virtual desktops. @vindex shaded@r{, a frame parameter} -@item sticky +@item shaded If non-@code{nil}, tell the window manager to display the frame in a way that its contents are hidden, leaving only the title bar. +@vindex use-frame-synchronization@r{, a frame parameter} +@item use-frame-synchronization +If non-@code{nil}, synchronize the frame redisplay with the refresh +rate of the monitor to avoid graphics tearing. At present, this is +only implemented on Haiku and the X window system inside no-toolkit +and X toolkit builds, does not work correctly with toolkit scroll +bars, and requires a compositing manager supporting the relevant +display synchronization protocols. The @code{synchronizeResize} X +resource must also be set to the string @code{"extended"}. + @vindex inhibit-double-buffering@r{, a frame parameter} @item inhibit-double-buffering If non-@code{nil}, the frame is drawn to the screen without double @@ -4090,6 +4101,20 @@ They can either be the same data types that are typically accepted by specific drag-n-drop protocol being used. Plain text may be @code{"STRING"} or @code{"text/plain"}, for example. +@vindex x-dnd-direct-save-function + However, @code{x-dnd-types-alist} does not handle a special kind of +drop sent by a program which wants Emacs to save a file in a location +Emacs must determine by itself. These drops are handled via the +variable @code{x-dnd-direct-save-function}, which should be a function +that accepts two arguments. If the first argument is non-@code{nil}, +then the second argument is a string describing the name (with no +leading directory) that the other program recommends the file be saved +under, and the function should return the complete file name under +which it will be saved. Otherwise, the file has already been saved, +and the second argument is the complete name of the file. The +function should then perform whatever action is appropriate (i.e., +open the file or refresh the directory listing.) + @cindex initiating drag-and-drop On capable window systems, Emacs also supports dragging contents from its frames to windows of other applications. @@ -4186,6 +4211,13 @@ This function is like @code{dnd-begin-file-drag}, except that dropping multiple files, then the first file will be used instead. @end defun +@defun dnd-direct-save file name &optional frame allow-same-frame +This function is similar to @code{dnd-begin-file-drag} (with the +default action of copy), but instead of specifying the action you +specify the name of the copy created by the target program in +@code{name}. +@end defun + @cindex initiating drag-and-drop, low-level The high-level interfaces described above are implemented on top of a lower-level primitive. If you need to drag content other than files @@ -4251,6 +4283,40 @@ chosen by the target. For example, callers should delete the buffer text that was dragged if this function returns @code{XdndActionMove}. @end defun +@cindex drag and drop protocols, X + + On X Windows, several different drag-and-drop protocols are +supported by @code{x-begin-drag}. When dragging content that is known +to not be supported by a specific drag-and-drop protocol, it might be +desirable to turn that protocol off, by changing the values of the +following variables: + +@defvar x-dnd-disable-motif-protocol +When this is non-@code{nil}, the Motif drag and drop protocols are +disabled, and dropping onto programs that only understand them will +not work. +@end defvar + +@defvar x-dnd-use-offix-drop +When this is @code{nil}, the OffiX (old KDE) drag and drop protocol is +disabled. When this is the symbol @code{files}, the OffiX protocol +will only be used if @code{"FILE_NAME"} is one of the targets given to +@code{x-begin-drag}. Any other value means to use the OffiX protocol +to drop all supported content. +@end defvar + +@defvar x-dnd-use-unsupported-drop +When one of the @code{"STRING"}, @code{"UTF8_STRING"}, +@code{"COMPOUND_TEXT"} or @code{"TEXT"} targets is present in the list +given to @code{x-begin-drag}, Emacs will try to use synthesized mouse +events and the primary selection to insert the text if the drop target +doesn't support any drag-and-drop protocol at all. + +A side effect is that Emacs will become the owner of the primary +selection upon such a drop. If that is not desired, then the drop +emulation can be disabled by setting this variable to @code{nil}. +@end defvar + @node Color Names @section Color Names diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index e3de6009e90..983dfe2ec59 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -217,6 +217,16 @@ function. For example: @end example @end defun +@defun compiled-function-p object +This function returns @code{t} if @var{object} is a function object +that is not in the form of ELisp source code but something like +machine code or byte code instead. More specifically it returns +@code{t} if the function is built-in (a.k.a.@: ``primitive'', +@pxref{What Is a Function}), or byte-compiled (@pxref{Byte +Compilation}), or natively-compiled (@pxref{Native Compilation}), or +a function loaded from a dynamic module (@pxref{Dynamic Modules}). +@end defun + @defun subr-arity subr This works like @code{func-arity}, but only for built-in functions and without symbol indirection. It signals an error for non-built-in @@ -2497,6 +2507,34 @@ the current buffer. @item (modes @var{modes}) Specify that this command is meant to be applicable for @var{modes} only. + +@item (interactive-args @var{arg} ...) +Specify the arguments that should be stored for @code{repeat-command}. +Each @var{arg} is on the form @code{@var{argument-name} @var{form}}. + +@item (pure @var{val}) +If @var{val} is non-@code{nil}, this function is @dfn{pure} +(@pxref{What Is a Function}). This is the same as the @code{pure} +property of the function's symbol (@pxref{Standard Properties}). + +@item (side-effect-free @var{val}) +If @var{val} is non-@code{nil}, this function is free of side effects, +so the byte compiler can ignore calls whose value is ignored. This is +the same as the @code{side-effect-free} property of the function's +symbol, @pxref{Standard Properties}. + +@item (speed @var{n}) +Specify the value of @code{native-comp-speed} in effect for native +compilation of this function (@pxref{Native-Compilation Variables}). +This allows function-level control of the optimization level used for +native code emitted for the function. In particular, if @var{n} is +@minus{}1, native compilation of the function will emit bytecode +instead of native code for the function. + +@item no-font-lock-keyword +This is valid for macros only. Macros with this declaration are +highlighted by font-lock (@pxref{Font Lock Mode}) as normal functions, +not specially as macros. @end table @end defmac diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi index a566d898240..25a56bd7151 100644 --- a/doc/lispref/hash.texi +++ b/doc/lispref/hash.texi @@ -203,7 +203,8 @@ association in @var{table}. @defun puthash key value table This function enters an association for @var{key} in @var{table}, with value @var{value}. If @var{key} already has an association in -@var{table}, @var{value} replaces the old associated value. +@var{table}, @var{value} replaces the old associated value. This +function always returns @var{value}. @end defun @defun remhash key table @@ -219,10 +220,7 @@ otherwise. In Emacs Lisp, @code{remhash} always returns @code{nil}. @defun clrhash table This function removes all the associations from hash table @var{table}, so that it becomes empty. This is also called @dfn{clearing} the hash -table. - -@b{Common Lisp note:} In Common Lisp, @code{clrhash} returns the empty -@var{table}. In Emacs Lisp, it returns @code{nil}. +table. @code{clrhash} returns the empty @var{table}. @end defun @defun maphash function table @@ -289,9 +287,13 @@ If two objects @var{obj1} and @var{obj2} are @code{equal}, then are the same integer. If the two objects are not @code{equal}, the values returned by -@code{sxhash-equal} are usually different, but not always; once in a -rare while, by luck, you will encounter two distinct-looking objects -that give the same result from @code{sxhash-equal}. +@code{sxhash-equal} are usually different, but not always. +@code{sxhash-equal} is designed to be reasonably fast (since it's used +for indexing hash tables) so it won't recurse deeply into nested +structures. In addition; once in a rare while, by luck, you will +encounter two distinct-looking simple objects that give the same +result from @code{sxhash-equal}. So you can't, in general, use +@code{sxhash-equal} to check whether an object has changed. @b{Common Lisp note:} In Common Lisp a similar function is called @code{sxhash}. Emacs provides this name as a compatibility alias for @@ -322,15 +324,13 @@ the same integer. compared case-insensitively. @example -(defun case-fold-string= (a b) - (eq t (compare-strings a nil nil b nil nil t))) -(defun case-fold-string-hash (a) +(defun string-hash-ignore-case (a) (sxhash-equal (upcase a))) -(define-hash-table-test 'case-fold - 'case-fold-string= 'case-fold-string-hash) +(define-hash-table-test 'ignore-case + 'string-equal-ignore-case 'string-hash-ignore-case) -(make-hash-table :test 'case-fold) +(make-hash-table :test 'ignore-case) @end example Here is how you could define a hash table test equivalent to the diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index 107d036202e..339e1387d2e 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -280,7 +280,6 @@ kbd-macro-termination-hook signal-hook-function C functions: -redisplay-end-trigger-functions x-lost-selection-functions x-sent-selection-functions @@ -290,7 +289,6 @@ auto-fill-function command-error-function compose-chars-after-function composition-function-table -deferred-action-function input-method-function load-read-function load-source-file-function diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index a037c228f13..2be31d63a62 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -374,7 +374,8 @@ number of keys. Here's a very basic example: @end lisp This function creates a new sparse keymap, defines the keystrokes in -@var{pairs}, and returns the new keymap. +@var{pairs}, and returns the new keymap. It signals an error if there +are duplicate key bindings in @var{pairs}. @var{pairs} is a list of alternating key bindings and key definitions, as accepted by @code{keymap-set}. In addition, the key can be the @@ -438,7 +439,8 @@ variable. This is what virtually all modes do---a mode called This macro defines @var{name} as a variable, passes @var{options} and @var{pairs} to @code{define-keymap}, and uses the result as the -default value for the variable. +default value for the variable. It signals an error if there are +duplicate key bindings in @var{pairs}. @var{options} is like the keywords in @code{define-keymap}, but there's an additional @code{:doc} keyword that provides the doc @@ -579,11 +581,10 @@ override any non-@code{nil} binding in any other of the @var{maps}. @code{button-buffer-map} and @code{special-mode-map}: @example -(defvar help-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map - (make-composed-keymap button-buffer-map special-mode-map)) - ... map) ... ) +(defvar-keymap help-mode-map + :parent (make-composed-keymap button-buffer-map + special-mode-map) + ...) @end example @@ -1064,6 +1065,20 @@ The optional argument @var{on-exit}, if non-@code{nil}, specifies a function that is called, with no arguments, after @var{keymap} is deactivated. +The optional argument @var{message} specifies the message to display +after activating the transient map. If @var{message} is a string, it +is the format string for the message, and any @samp{%k} specifier in +that string is replaced with the list of keys from the transient map. +Any other non-@code{nil} value of @var{message} stands for the default +message format @samp{Repeat with %k}. + +@vindex set-transient-map-timeout +If the optional argument @var{timeout} is non-@code{nil}, it should be +a number that specifies how many seconds of idle time to wait before +deactivating @var{keymap}. The value of the variable +@code{set-transient-map-timeout}, if non-@code{nil}, overrides the +value of this argument. + This function works by adding and removing @var{keymap} from the variable @code{overriding-terminal-local-map}, which takes precedence over all other active keymaps (@pxref{Searching Keymaps}). @@ -1869,6 +1884,7 @@ to make entries in @code{input-decode-map} beyond those that can be deduced from Termcap and Terminfo. @xref{Terminal-Specific}. @end defvar +@cindex function-key-map @defvar local-function-key-map This variable holds a keymap similar to @code{input-decode-map} except that it describes key sequences which should be translated to @@ -2209,6 +2225,11 @@ If @var{no-remap} is @code{nil}, return the bindings for non-@code{nil}, return the bindings for @var{command}, ignoring the fact that it is remapped. @end table + +If a command maps to a key binding like @code{[some-event]}, and +@code{some-event} has a symbol plist containing a non-@code{nil} +@code{non-key-event} property, then that binding is ignored by +@code{where-is-internal}. @end defun @deffn Command describe-bindings &optional prefix buffer-or-name diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index 4a862ab0de2..5c5c615f85d 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -340,6 +340,44 @@ If @var{n} is zero, @code{nthcdr} returns all of @end example @end defun +@defun take n list +This function returns the @var{n} first elements of @var{list}. Essentially, +it returns the part of @var{list} that @code{nthcdr} skips. + +@code{take} returns @var{list} if shorter than @var{n} elements; +it returns @code{nil} if @var{n} is zero or negative. + +@example +@group +(take 3 '(a b c d)) + @result{} (a b c) +@end group +@group +(take 10 '(a b c d)) + @result{} (a b c d) +@end group +@group +(take 0 '(a b c d)) + @result{} nil +@end group +@end example +@end defun + +@defun ntake n list +This is a version of @code{take} that works by destructively modifying +the list structure of the argument. That makes it faster, but the +original value of @var{list} may be lost. + +@code{ntake} returns @var{list} unmodified if shorter than @var{n} +elements; it returns @code{nil} if @var{n} is zero or negative. +Otherwise, it returns @var{list} truncated to its first @var{n} +elements. + +This means that it is usually a good idea to use the return value and +not just rely on the truncation effect unless @var{n} is known to be +positive. +@end defun + @defun last list &optional n This function returns the last link of @var{list}. The @code{car} of this link is the list's last element. If @var{list} is null, @@ -1925,9 +1963,10 @@ and later discarded; this is not possible with a property list. The following functions can be used to manipulate property lists. They all compare property names using @code{eq}. -@defun plist-get plist property +@defun plist-get plist property &optional predicate This returns the value of the @var{property} property stored in the -property list @var{plist}. It accepts a malformed @var{plist} +property list @var{plist}. Comparisons are done with @var{predicate}, +and defaults to @code{eq}. It accepts a malformed @var{plist} argument. If @var{property} is not found in the @var{plist}, it returns @code{nil}. For example, @@ -1943,9 +1982,10 @@ returns @code{nil}. For example, @end example @end defun -@defun plist-put plist property value +@defun plist-put plist property value &optional predicate This stores @var{value} as the value of the @var{property} property in -the property list @var{plist}. It may modify @var{plist} destructively, +the property list @var{plist}. Comparisons are done with @var{predicate}, +and defaults to @code{eq}. It may modify @var{plist} destructively, or it may construct a new list structure without altering the old. The function returns the modified property list, so you can store that back in the place where you got @var{plist}. For example, @@ -1961,19 +2001,20 @@ in the place where you got @var{plist}. For example, @end defun @defun lax-plist-get plist property -Like @code{plist-get} except that it compares properties -using @code{equal} instead of @code{eq}. +This obsolete function is like @code{plist-get} except that it +compares properties using @code{equal} instead of @code{eq}. @end defun @defun lax-plist-put plist property value -Like @code{plist-put} except that it compares properties -using @code{equal} instead of @code{eq}. +This obsolete function is like @code{plist-put} except that it +compares properties using @code{equal} instead of @code{eq}. @end defun -@defun plist-member plist property +@defun plist-member plist property &optional predicate This returns non-@code{nil} if @var{plist} contains the given -@var{property}. Unlike @code{plist-get}, this allows you to distinguish -between a missing property and a property with the value @code{nil}. -The value is actually the tail of @var{plist} whose @code{car} is -@var{property}. +@var{property}. Comparisons are done with @var{predicate}, and +defaults to @code{eq}. Unlike @code{plist-get}, this allows you to +distinguish between a missing property and a property with the value +@code{nil}. The value is actually the tail of @var{plist} whose +@code{car} is @var{property}. @end defun diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 8a2bb5fa2db..4e4f12dc324 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -149,10 +149,9 @@ up the execution of uncompiled code. Sometimes, this macro expansion cannot be done, owing to a cyclic dependency. In the simplest example of this, the file you are loading refers to a macro defined in another file, and that file in turn requires the file you are -loading. This is generally harmless. Emacs prints a warning +loading. Emacs will issue an error about (@samp{Eager macro-expansion skipped due to cycle@dots{}}) -giving details of the problem, but it still loads the file, just -leaving the macro unexpanded for now. You may wish to restructure +giving details of the problem. You have to restructure your code so that this does not happen. Loading a compiled file does not cause macroexpansion, because this should already have happened during compilation. @xref{Compiling Macros}. @@ -441,7 +440,7 @@ similarly-named file in a directory earlier on @code{load-path}. For instance, suppose @code{load-path} is set to @example - ("/opt/emacs/site-lisp" "/usr/share/emacs/23.3/lisp") + ("/opt/emacs/site-lisp" "/usr/share/emacs/29.1/lisp") @end example @noindent @@ -699,14 +698,13 @@ Switch to *doctor* buffer and start giving psychotherapy. @noindent @cindex @code{fn} in function's documentation string -The backslash and newline immediately following the double-quote are a -convention used only in the preloaded uncompiled Lisp files such as -@file{loaddefs.el}; they tell @code{make-docfile} to put the -documentation string in the @file{etc/DOC} file. @xref{Building Emacs}. -See also the commentary in @file{lib-src/make-docfile.c}. @samp{(fn)} -in the usage part of the documentation string is replaced with the -function's name when the various help functions (@pxref{Help -Functions}) display it. +While the @file{loaddefs.el} isn't for editing, we try to keep it +somewhat readable for people. For instance, control characters in +@code{defvar} values are escaped, and we insert a backslash and +newline immediately following the double-quote of the doc string to +keep the line length down. @samp{(fn)} in the usage part of the +documentation string is replaced with the function's name when the +various help functions (@pxref{Help Functions}) display it. If you write a function definition with an unusual macro that is not one of the known and recognized function definition methods, use of an @@ -729,7 +727,7 @@ variables to control this: The value of this constant is a regexp that matches autoload cookies. @code{loaddefs-generate} copies the Lisp form that follows the cookie into the autoload file it generates. This will match comments -like like @samp{;;;###autoload} and @samp{;;;###calc-autoload}. +like @samp{;;;###autoload} and @samp{;;;###calc-autoload}. @end defvar @defvar generated-autoload-file @@ -768,7 +766,7 @@ the corresponding list of files to load for it. Entries to this mapping are added by calls to @code{register-definition-prefixes} which are generated by @code{loaddefs-generate} (@pxref{Autoload}). Files which don't contain any definitions worth -loading (test files, for examples), should set +loading (test files, for example), should set @code{autoload-compute-prefixes} to @code{nil} as a file-local variable. @@ -1033,7 +1031,7 @@ with a call to @code{provide}. The order of the elements in the @cindex symbol, where defined @cindex where was a symbol defined -@defun symbol-file symbol &optional type +@defun symbol-file symbol &optional type native-p This function returns the name of the file that defined @var{symbol}. If @var{type} is @code{nil}, then any kind of definition is acceptable. If @var{type} is @code{defun}, @code{defvar}, or @code{defface}, that @@ -1044,6 +1042,14 @@ The value is normally an absolute file name. It can also be @code{nil}, if the definition is not associated with any file. If @var{symbol} specifies an autoloaded function, the value can be a relative file name without extension. + +If the optional third argument @var{native-p} is non-@code{nil}, and +Emacs was built with native compilation support (@pxref{Native +Compilation}), this function will try to find the @file{.eln} file +that defined @var{symbol}, instead of the @file{.elc} or @file{.el} +file. If such a @file{.eln} file is found and is not outdated, the +function will return its absolute file name; otherwise it will report +the name of either the source or the byte-compiled file. @end defun The basis for @code{symbol-file} is the data in the variable diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi index 90497728a1c..d18b553dc19 100644 --- a/doc/lispref/maps.texi +++ b/doc/lispref/maps.texi @@ -125,6 +125,7 @@ setup-language-environment-map, describe-language-environment-map, menu-bar-epatch-menu, menu-bar-ediff-merge-menu, menu-bar-ediff-menu, etc. @end ignore +@cindex minibuffer-inactive-mode-map @item minibuffer-inactive-mode-map A full keymap used in the minibuffer when it is not active.@* @xref{Minibuffer Edit,, Editing in the Minibuffer, emacs, The GNU Emacs Manual}. @@ -156,6 +157,7 @@ The global keymap used for the @kbd{C-x @key{RET}} prefix key. @vindex narrow-map A sparse keymap for subcommands of the prefix @kbd{C-x n}. +@cindex prog-mode-map @item prog-mode-map The keymap used by Prog mode.@* @xref{Basic Major Modes}. @@ -171,6 +173,7 @@ for multi-buffer replacements. @xref{Search and Replace, query-replace-map}. @item search-map A sparse keymap that provides global bindings for search-related commands. +@cindex special-mode-map @item special-mode-map The keymap used by Special mode.@* @xref{Basic Major Modes}. @@ -179,6 +182,7 @@ The keymap used by Special mode.@* The global keymap used for the @kbd{C-x t} prefix key for tab-bar related commands.@* @xref{Tab Bars,,, emacs, The GNU Emacs Manual}. +@cindex tab-bar-map @item tab-bar-map The keymap defining the contents of the tab bar.@* @xref{Tab Bars,,, emacs, The GNU Emacs Manual}. diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 2e40cb25ef8..ba8b548554b 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -271,7 +271,7 @@ normal-mode}), but tries to force it not to choose any modes in @defun clean-mode Changing the major mode clears out most local variables, but it -doesn't remove all artefacts in the buffer (like text properties and +doesn't remove all artifacts in the buffer (like text properties and overlays). It's rare to change a buffer from one major mode to another (except from @code{fundamental-mode} to everything else), so this is usually not a concern. It can sometimes be convenient (mostly @@ -1356,11 +1356,10 @@ the conventions listed above: ;; @r{Create the keymap for this mode.} @group (defvar-keymap text-mode-map - "C-M-i" #'ispell-complete-word - @dots{}) - "Keymap for `text-mode'. -Many other modes, such as `mail-mode', `outline-mode' and -`indented-text-mode', inherit all the commands defined in this map.") + :doc "Keymap for `text-mode'. +Many other modes, such as `mail-mode' and `outline-mode', inherit all +the commands defined in this map." + "C-M-i" #'ispell-complete-word) @end group @end smallexample @@ -3476,7 +3475,8 @@ fontification functions, and gives it two arguments, @var{start} and @var{end}, which specify the region to be fontified or refontified. If @var{function} performs fontifications, it can return a list of the form @w{@code{(jit-lock-bounds @var{beg} . @var{end})}}, to indicate -the bounds of the region it actually fontified; JIT font-lock will use +the bounds of the region it actually fontified; Just-In-Time (a.k.a.@: +@acronym{``JIT''}) font-lock will use this information to optimize subsequent redisplay cycles and regions of buffer text it will pass to future calls to @var{function}. @@ -3496,6 +3496,19 @@ If @var{function} was previously registered as a fontification function using @code{jit-lock-register}, this function unregisters it. @end defun +@cindex debugging font-lock +@cindex jit-lock functions, debugging +@deffn Command jit-lock-debug-mode &optional arg +This is a minor mode whose purpose is to help in debugging code that +is run by JIT font-lock. When this mode is enabled, most of the code +that JIT font-lock normally runs during redisplay cycles, where Lisp +errors are suppressed, is instead run by a timer. Thus, this mode +allows using debugging aids such as @code{debug-on-error} +(@pxref{Error Debugging}) and Edebug (@pxref{Edebug}) for finding and +fixing problems in font-lock code and any other code run by JIT +font-lock. +@end deffn + @node Levels of Font Lock @subsection Levels of Font Lock diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index 1bae1924557..7b5e9adee29 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -2022,6 +2022,9 @@ with references to further information. @item byte-code-function-p @xref{Byte-Code Type, byte-code-function-p}. +@item compiled-function-p +@xref{Byte-Code Type, compiled-function-p}. + @item case-table-p @xref{Case Tables, case-table-p}. diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 11a0d02338f..35828018417 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -1541,20 +1541,20 @@ Year numbers count since the year 1 BCE, and do not skip zero as traditional Gregorian years do; for example, the year number @minus{}37 represents the Gregorian year 38 BCE@. -@defun time-convert time &optional form +@defun time-convert time form This function converts a time value into a Lisp timestamp. -The optional @var{form} argument specifies the timestamp form to be -returned. If @var{form} is the symbol @code{integer}, this function -returns an integer count of seconds. If @var{form} is a positive -integer, it specifies a clock frequency and this function returns an -integer-pair timestamp @code{(@var{ticks} . @var{form})}. If @var{form} is +The @var{form} argument specifies the timestamp form to be returned. +If @var{form} is the symbol @code{integer}, this function returns an +integer count of seconds. If @var{form} is a positive integer, it +specifies a clock frequency and this function returns an integer-pair +timestamp @code{(@var{ticks} . @var{form})}. If @var{form} is @code{t}, this function treats it as a positive integer suitable for representing the timestamp; for example, it is treated as 1000000000 if @var{time} is @code{nil} and the platform timestamp has nanosecond resolution. If @var{form} is @code{list}, this function returns an integer list @code{(@var{high} @var{low} @var{micro} @var{pico})}. -Although an omitted or @code{nil} @var{form} currently acts like +Although a @code{nil} @var{form} currently acts like @code{list}, this is planned to change in a future Emacs version, so callers requiring list timestamps should pass @code{list} explicitly. @@ -1754,9 +1754,10 @@ at the 15th of the month when adding months. Alternatively, you can use the @cindex time formatting @cindex formatting time values - These functions convert time values to text in a string, and vice versa. -Time values include @code{nil}, finite numbers, and Lisp timestamps -(@pxref{Time of Day}). + These functions convert time values to text in a string, and vice +versa. Time values are either represented as a Lisp timestamp +(@pxref{Time of Day}) or a decoded time structure (@pxref{Time +Conversion}). @defun date-to-time string This function parses the time-string @var{string} and returns the @@ -1769,22 +1770,11 @@ The operating system limits the range of time and zone values. @end defun @defun parse-time-string string -This function parses the time-string @var{string} into a list of the -following form: - -@example -(@var{sec} @var{min} @var{hour} @var{day} @var{mon} @var{year} @var{dow} @var{dst} @var{tz}) -@end example - -@noindent -The format of this list is the same as what @code{decode-time} accepts -(@pxref{Time Conversion}), and is described in more detail there. Any -@code{dst} element that cannot be determined from the input is set to -@minus{}1, and any other unknown element is set to -@code{nil}. The argument @var{string} should resemble an RFC 822 (or later) or -ISO 8601 string, like ``Fri, 25 Mar 2016 16:24:56 +0100'' or -``1998-09-12T12:21:54-0200'', but this function will attempt to parse -less well-formed time strings as well. +This function parses the time-string @var{string} into a decoded time +structure (@pxref{Time Conversion}). The argument @var{string} should +resemble an RFC 822 (or later) or ISO 8601 string, like ``Fri, 25 Mar +2016 16:24:56 +0100'' or ``1998-09-12T12:21:54-0200'', but this +function will attempt to parse less well-formed time strings as well. @end defun @vindex ISO 8601 date/time strings @@ -1801,11 +1791,11 @@ time structures, except the final one, which returns three of them @end defun @defun format-time-string format-string &optional time zone - -This function converts @var{time} (or the current time, if -@var{time} is omitted or @code{nil}) to a string according to -@var{format-string}. The conversion uses the time zone rule @var{zone}, which -defaults to the current time zone rule. @xref{Time Zone Rules}. The argument +This function converts @var{time} (which should be a Lisp timestamp, +and defaults to the current time if @var{time} is omitted or +@code{nil}) to a string according to @var{format-string}. The +conversion uses the time zone rule @var{zone}, which defaults to the +current time zone rule. @xref{Time Zone Rules}. The argument @var{format-string} may contain @samp{%}-sequences which say to substitute parts of the time. Here is a table of what the @samp{%}-sequences mean: @@ -2077,7 +2067,12 @@ This returns @code{t} if the time value @var{t1} is less than the time value @defun time-equal-p t1 t2 This returns @code{t} if the two time values @var{t1} and @var{t2} are -equal. +equal. The result is @code{nil} if either argument is a NaN. +For the purpose of comparison, a @code{nil} argument represents the +current time with infinite resolution, so this function returns +@code{nil} if one argument is @code{nil} and the other is not, and +callers can therefore use @code{nil} to represent an unknown time +value that does not equal any timestamp. @end defun @defun time-subtract t1 t2 @@ -2748,6 +2743,13 @@ if it is non-@code{nil}; this can be overridden by binding @code{coding-system-for-write} to a coding system of you choice (@pxref{Explicit Encoding}). +In batch mode, Emacs will enlarge the value of the +@code{gc-cons-percentage} variable from the default of @samp{0.1} up to +@samp{1.0}. Batch jobs that are supposed to run for a long time +should adjust the limit back down again, because this means that less +garbage collection will be performed by default (and more memory +consumed). + @defvar noninteractive This variable is non-@code{nil} when Emacs is running in batch mode. @end defvar diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index ca1166caac4..7945232bf8f 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -387,6 +387,16 @@ Return the position that @code{(end-of-line @var{count})} would move to. @end defun +@defun pos-bol &optional count +Like @code{line-beginning-position}, but ignores fields (and is more +efficient). +@end defun + +@defun pos-eol &optional count +Like @code{line-end-position}, but ignores fields (and is more +efficient). +@end defun + @deffn Command forward-line &optional count @cindex beginning of line This function moves point forward @var{count} lines, to the beginning of @@ -1002,6 +1012,12 @@ positions. In an interactive call, @var{start} and @var{end} are set to the bounds of the current region (point and the mark, with the smallest first). + +Note that, in rare circumstances, Emacs may decide to leave, for +performance reasons, the accessible portion of the buffer unchanged +after a call to @code{narrow-to-region}. This can happen when a Lisp +program is called via low-level hooks, such as +@code{jit-lock-functions}, @code{post-command-hook}, etc. @end deffn @deffn Command narrow-to-page &optional move-count @@ -1027,6 +1043,12 @@ It is equivalent to the following expression: @end example @end deffn +Note that, in rare circumstances, Emacs may decide to leave, for +performance reasons, the accessible portion of the buffer unchanged +after a call to @code{widen}. This can happen when a Lisp program is +called via low-level hooks, such as @code{jit-lock-functions}, +@code{post-command-hook}, etc. + @defun buffer-narrowed-p This function returns non-@code{nil} if the buffer is narrowed, and @code{nil} otherwise. diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 8c8f8fd6b2a..db6b4c35ef7 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -705,12 +705,13 @@ coding system will apply. @xref{Default Coding Systems}. Initialize the type of device used to communicate with the subprocess. Possible values are @code{pty} to use a pty, @code{pipe} to use a pipe, or @code{nil} to use the default derived from the value of the -@code{process-connection-type} variable. This parameter and the value -of @code{process-connection-type} are ignored if a non-@code{nil} -value is specified for the @code{:stderr} parameter; in that case, the -type will always be @code{pipe}. On systems where ptys are not -available (MS-Windows), this parameter is likewise ignored, and pipes -are used unconditionally. +@code{process-connection-type} variable. If @var{type} is a cons cell +@w{@code{(@var{input} . @var{output})}}, then @var{input} will be used +for standard input and @var{output} for standard output (and standard +error if @code{:stderr} is @code{nil}). + +On systems where ptys are not available (MS-Windows), this parameter +is ignored, and pipes are used unconditionally. @item :noquery @var{query-flag} Initialize the process query flag to @var{query-flag}. @@ -1242,15 +1243,24 @@ that are already closed, the value is either 0 or 256, depending on whether the connection was closed normally or abnormally. @end defun -@defun process-tty-name process +@defun process-tty-name process &optional stream This function returns the terminal name that @var{process} is using for its communication with Emacs---or @code{nil} if it is using pipes instead of a pty (see @code{process-connection-type} in -@ref{Asynchronous Processes}). If @var{process} represents a program -running on a remote host, the terminal name used by that program on -the remote host is provided as process property @code{remote-tty}. If -@var{process} represents a network, serial, or pipe connection, the -value is @code{nil}. +@ref{Asynchronous Processes}). By default, this function returns the +terminal name if any of @var{process}'s standard streams use a +terminal. If @var{stream} is one of @code{stdin}, @code{stdout}, or +@code{stderr}, this function returns the terminal name (or @code{nil}, +as above) that @var{process} uses for that stream specifically. You +can use this to determine whether a particular stream uses a pipe or a +pty. + +If @var{process} represents a program running on a remote host, this +function returns the @emph{local} terminal name that communicates with +@var{process}; you can get the terminal name used by that program on +the remote host with the process property @code{remote-tty}. If +@var{process} represents a network, serial, or pipe connection, this +function always returns @code{nil}. @end defun @defun process-coding-system process @@ -1512,7 +1522,7 @@ This variable is a list of functions to be called for for @code{signal-process}. These functions are called in the order of the list, until one of them returns non-@code{nil}. The default function, which shall always be the last in this list, is -@code{signal-default-interrupt-process}. +@code{internal-default-signal-process}. This is the mechanism, how Tramp implements @code{signal-process}. @end defvar @@ -1530,20 +1540,11 @@ a buffer, which is called the associated buffer of the process default filter discards the output. If the subprocess writes to its standard error stream, by default -the error output is also passed to the process filter function. If -Emacs uses a pseudo-TTY (pty) for communication with the subprocess, -then it is impossible to separate the standard output and standard -error streams of the subprocess, because a pseudo-TTY has only one -output channel. In that case, if you want to keep the output to those -streams separate, you should redirect one of them to a file---for -example, by using an appropriate shell command via -@code{start-process-shell-command} or a similar function. - - Alternatively, you could use the @code{:stderr} parameter with a +the error output is also passed to the process filter function. +Alternatively, you could use the @code{:stderr} parameter with a non-@code{nil} value in a call to @code{make-process} (@pxref{Asynchronous Processes, make-process}) to make the destination -of the error output separate from the standard output; in that case, -Emacs will use pipes for communicating with the subprocess. +of the error output separate from the standard output. When a subprocess terminates, Emacs reads any pending output, then stops reading output from that subprocess. Therefore, if the @@ -1959,7 +1960,6 @@ because @var{seconds} can be floating point to specify waiting a fractional number of seconds. If @var{seconds} is 0, the function accepts whatever output is pending but does not wait. -@c Emacs 22.1 feature If @var{process} is a process, and the argument @var{just-this-one} is non-@code{nil}, only output from that process is handled, suspending output from other processes until some output has been received from that @@ -3204,20 +3204,39 @@ If the vector does not include the port number, @var{p}, or if @code{:@var{p}} suffix. @end defun -@defun network-lookup-address-info name &optional family -This function is used to perform hostname lookups on @var{name}, which -is expected to be an ASCII-only string, otherwise an error is -signaled. Call @code{puny-encode-domain} on @var{name} -first if you wish to lookup internationalized hostnames. +@defun network-lookup-address-info name &optional family hints +This function perform hostname lookups on @var{name}, which is +expected to be an ASCII-only string, otherwise it signals an error. Call +@code{puny-encode-domain} on @var{name} first if you wish to lookup +internationalized hostnames. -If successful it returns a list of Lisp representations of network -addresses, otherwise it returns @code{nil}. In the latter case, it -also displays the error message hopefully explaining what went wrong. +If successful, this function returns a list of Lisp representations of network +addresses (@pxref{Network Processes}, for a description of the +format), otherwise return @code{nil}. In the latter case, it also logs +an error message hopefully explaining what went wrong. -By default both IPv4 and IPv6 lookups are attempted. The optional -argument @var{family} controls this behavior, specifying the symbol -@code{ipv4} or @code{ipv6} restricts lookups to IPv4 and IPv6 +By default, this function attempts both IPv4 and IPv6 lookups. The +optional argument @var{family} controls this behavior, specifying the +symbol @code{ipv4} or @code{ipv6} restricts lookups to IPv4 and IPv6 respectively. + +If optional argument @var{hints} is @code{numeric}, the function +treats the @var{name} as a numerical IP address (and does not perform DNS +lookups). This can be used to check whether a string is a valid +numerical representation of an IP address, or to convert a numerical +string to its canonical representation. e.g.@: + +@example +(network-lookup-address-info "127.1" 'ipv4 'numeric) + @result{} ([127 0 0 1 0]) + +(network-lookup-address-info "::1" nil 'numeric) + @result{} ([0 0 0 0 0 0 0 1 0]) +@end example + +Be warned that there are some surprising valid forms, +especially for IPv4, e.g @samp{0xe3010203} and @samp{0343.1.2.3} are both +valid, as are @samp{0} and @samp{1} (but they are invalid for IPv6). @end defun @node Serial Ports @@ -3493,43 +3512,40 @@ any null bytes in the packed input string will appear in the unpacked output. @item strz &optional @var{len} -If @var{len} is not provided: Variable-length null-terminated unibyte -string (@pxref{Text Representations}). When packing, the entire input -string is copied to the packed output. The following byte will be -null (zero) unless a pre-allocated string was provided to -@code{bindat-pack}, in which case that byte is left unmodified. The -length of the packed output is the length of the input string plus one -(for the null terminator). The input string must not contain any null +If @var{len} is not provided, this is a variable-length +null-terminated unibyte string (@pxref{Text Representations}). When +packing into @code{strz}, the entire input string is copied to the +packed output followed by a null (zero) byte. (If pre-allocated +string is provided for packing into @code{strz}, that pre-allocated +string should have enough space for the additional null byte appended +to the output string contents, @pxref{Bindat Functions}). The length +of the packed output is the length of the input string plus one (for +the null terminator). The input string must not contain any null bytes. If the input string is multibyte with only ASCII and @code{eight-bit} characters, it is converted to unibyte before it is -packed; other multibyte strings signal an error. When unpacking, the -resulting string contains all bytes up to (but excluding) the null -byte. +packed; other multibyte strings signal an error. When unpacking a +@code{strz}, the resulting output string will contain all bytes up to +(but excluding) the null byte that terminated the input string. -@quotation Caution -If a pre-allocated string is provided to @code{bindat-pack}, the -packed output will not be properly null-terminated unless the -pre-allocated string already has a null byte at the appropriate -location. -@end quotation +If @var{len} is provided, @code{strz} behaves the same as @code{str}, +but with a couple of differences: -If @var{len} is provided: @code{strz} behaves the same as @code{str} -with one difference: When unpacking, the first null byte encountered -in the packed string and all subsequent bytes are excluded from the -unpacked result. - -@quotation Caution -The packed output will not be null-terminated unless one of the -following is true: -@itemize +@itemize @bullet @item -The input string is shorter than @var{len} bytes and either no pre-allocated -string was provided to @code{bindat-pack} or the appropriate byte in -the pre-allocated string was already null. +When packing, a null terminator is written after the packed input +string if the number of characters in the input string is less than +@var{len}. + @item -The input string contains a null byte within the first @var{len} -bytes. +When unpacking, the first null byte encountered in the packed string +is interpreted as the terminating byte, and it and all subsequent +bytes are excluded from the result of the unpacking. @end itemize + +@quotation Caution +The packed output will not be null-terminated unless the input string +is shorter than @var{len} bytes or it contains a null byte within the +first @var{len} bytes. @end quotation @item vec @var{len} [@var{type}] @@ -3550,7 +3566,7 @@ and @code{#x1c} @code{#x28} to @w{@code{(3 5 10 11 12)}}. @item fill @var{len} @var{len} bytes used as a mere filler. In packing, these bytes are -are left unchanged, which normally means they remain zero. +left unchanged, which normally means they remain zero. When unpacking, this just returns nil. @item align @var{len} diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 21a2c6c51e4..5ee139a11d3 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1898,7 +1898,7 @@ attempts. Other zero-width assertions may also bring benefits by causing a match to fail early. @item -Avoid or-patterns in favour of character alternatives: write +Avoid or-patterns in favor of character alternatives: write @samp{[ab]} instead of @samp{a\|b}. Recall that @samp{\s-} and @samp{\sw} are equivalent to @samp{[[:space:]]} and @samp{[[:word:]]}, respectively. @@ -1933,7 +1933,7 @@ purposes. @ifnottex @item -Consider using @code{rx} (@pxref{Rx Notation}); it can optimise some +Consider using @code{rx} (@pxref{Rx Notation}); it can optimize some or-patterns automatically and will never introduce capturing groups unless explicitly requested. @end ifnottex diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index c3f4cff3015..39230d0adc4 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -577,6 +577,20 @@ starting from the first one for which @var{predicate} returns @code{nil}. @end example @end defun +@defun seq-split sequence length + This function returns a list consisting of sub-sequences of +@var{sequence} of (at most) length @var{length}. (The final element +may be shorter than @var{length} if the length of @var{sequence} isn't +a multiple of @var{length}. + +@example +@group +(seq-split [0 1 2 3 4] 2) +@result{} ([0 1] [2 3] [4]) +@end group +@end example +@end defun + @defun seq-do function sequence This function applies @var{function} to each element of @var{sequence} in turn (presumably for side effects), and returns diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index addf195fad2..374381e5955 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -560,6 +560,12 @@ Representations}. @code{string-equal} is another name for @code{string=}. @end defun +@defun string-equal-ignore-case string1 string2 +@code{string-equal-ignore-case} compares strings ignoring case +differences, like @code{char-equal} when @code{case-fold-search} is +@code{t}. +@end defun + @cindex locale-dependent string equivalence @defun string-collate-equalp string1 string2 &optional locale ignore-case This function returns @code{t} if @var{string1} and @var{string2} are @@ -567,11 +573,19 @@ equal with respect to collation rules. A collation rule is not only determined by the lexicographic order of the characters contained in @var{string1} and @var{string2}, but also further rules about relations between these characters. Usually, it is defined by the -@var{locale} environment Emacs is running with. +@var{locale} environment Emacs is running with and by the Standard C +library against which Emacs was linked@footnote{ +For more information about collation rules and their locale +dependencies, see @uref{https://unicode.org/reports/tr10/, The Unicode +Collation Algorithm}. Some Standard C libraries, such as the +@acronym{GNU} C Library (a.k.a.@: @dfn{glibc}) implement large +portions of the Unicode Collation Algorithm and use the associated +locale data, Common Locale Data Repository, or @acronym{CLDR}. +}. -For example, characters with different coding points but -the same meaning might be considered as equal, like different grave -accent Unicode characters: +For example, characters with different code points but the same +meaning, like different grave accent Unicode characters, might, in +some locales, be considered as equal: @example @group @@ -759,7 +773,8 @@ The strings are compared by the numeric values of their characters. For instance, @var{str1} is considered less than @var{str2} if its first differing character has a smaller numeric value. If @var{ignore-case} is non-@code{nil}, characters are converted to -upper-case before comparing them. Unibyte strings are converted to +upper-case, using the current buffer's case-table (@pxref{Case +Tables}), before comparing them. Unibyte strings are converted to multibyte for comparison (@pxref{Text Representations}), so that a unibyte string and its conversion to multibyte are always regarded as equal. diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 622f03d2a85..8b859042ad0 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -243,10 +243,8 @@ using a function specified by the variable The default filter function consults the obsolete wrapper hook @code{filter-buffer-substring-functions} (see the documentation string of the macro @code{with-wrapper-hook} for the details about this -obsolete facility), and the obsolete variable -@code{buffer-substring-filters}. If both of these are @code{nil}, it -returns the unaltered text from the buffer, i.e., what -@code{buffer-substring} would return. +obsolete facility). If it is @code{nil}, it returns the unaltered +text from the buffer, i.e., what @code{buffer-substring} would return. If @var{delete} is non-@code{nil}, the function deletes the text between @var{start} and @var{end} after copying it, like @@ -282,22 +280,12 @@ the same as those of @code{filter-buffer-substring}. The first hook function is passed a @var{fun} that is equivalent to the default operation of @code{filter-buffer-substring}, i.e., it -returns the buffer-substring between @var{start} and @var{end} -(processed by any @code{buffer-substring-filters}) and optionally -deletes the original text from the buffer. In most cases, the hook -function will call @var{fun} once, and then do its own processing of -the result. The next hook function receives a @var{fun} equivalent to -this, and so on. The actual return value is the result of all the -hook functions acting in sequence. -@end defvar - -@defvar buffer-substring-filters -The value of this obsolete variable should be a list of functions -that accept a single string argument and return another string. -The default @code{filter-buffer-substring} function passes the buffer -substring to the first function in this list, and the return value of -each function is passed to the next function. The return value of the -last function is passed to @code{filter-buffer-substring-functions}. +returns the buffer-substring between @var{start} and @var{end} and +optionally deletes the original text from the buffer. In most cases, +the hook function will call @var{fun} once, and then do its own +processing of the result. The next hook function receives a @var{fun} +equivalent to this, and so on. The actual return value is the result +of all the hook functions acting in sequence. @end defvar @defun current-word &optional strict really-word @@ -2378,6 +2366,9 @@ begins. @xref{Usual Display}. amount of horizontal scrolling. Consequently, a column value can be arbitrarily high. The first (or leftmost) column is numbered 0. They also ignore overlays and text properties, aside from invisibility. +Invisible text is considered as having zero width, unless +@code{buffer-invisibility-spec} specifies that invisible text should +be displayed as ellipsis (@pxref{Invisible Text}). @defun current-column This function returns the horizontal position of point, measured in @@ -2451,6 +2442,10 @@ This function returns the indentation of the current line, which is the horizontal position of the first nonblank character. If the contents are entirely blank, then this is the horizontal position of the end of the line. + +This function considers invisible text as having zero width, unless +@code{buffer-invisibility-spec} specifies that invisible text should +be displayed as ellipsis. @xref{Invisible Text}. @end defun @deffn Command indent-to column &optional minimum @@ -3406,7 +3401,7 @@ for @var{object} is the current buffer. Search for the next region that has text property @var{prop} set to @var{value} according to @var{predicate}. -This function is modelled after @code{search-forward} and friends in +This function is modeled after @code{search-forward} and friends in that it moves point, but it returns a structure that describes the match instead of returning it in @code{match-beginning} and friends. @@ -3485,7 +3480,7 @@ This will give you a list of all those URLs. @end defun @defun text-property-search-backward prop &optional value predicate not-current -This is just like @code{text-property-search-backward}, but searches +This is just like @code{text-property-search-forward}, but searches backward instead. Point is placed at the beginning of the matched region instead of the end, though. @end defun @@ -5478,12 +5473,15 @@ available in this Emacs session. When libxml2 support is available, the following functions can be used to parse HTML or XML text into Lisp object trees. -@defun libxml-parse-html-region start end &optional base-url discard-comments +@defun libxml-parse-html-region &optional start end base-url discard-comments This function parses the text between @var{start} and @var{end} as HTML, and returns a list representing the HTML @dfn{parse tree}. It attempts to handle real-world HTML by robustly coping with syntax mistakes. +If @var{start} or @var{end} are @code{nil}, they default to the values +from @code{point-min} and @code{point-max}, respectively. + The optional argument @var{base-url}, if non-@code{nil}, should be a string specifying the base URL for relative URLs occurring in links. @@ -5529,7 +5527,7 @@ buffer. The argument @var{dom} should be a list as generated by @end defun @cindex parsing xml -@defun libxml-parse-xml-region start end &optional base-url discard-comments +@defun libxml-parse-xml-region &optional start end base-url discard-comments This function is the same as @code{libxml-parse-html-region}, except that it parses the text as XML rather than HTML (so it is stricter about syntax). diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index 30146a89ebf..3a1f6de12b2 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -689,6 +689,18 @@ line. This looks nice in the source code, but looks bizarre when users view the documentation. Remember that the indentation before the starting double-quote is not part of the string! +@item +When documentation should display an ASCII apostrophe or grave accent, +use @samp{\\='} or @samp{\\=`} in the documentation string literal so +that the character is displayed as-is. + +@item +In documentation strings, do not quote expressions that are not Lisp symbols, +as these expressions can stand for themselves. For example, write +@samp{Return the list (NAME TYPE RANGE) ...}@: instead of +@samp{Return the list `(NAME TYPE RANGE)' ...}@: or +@samp{Return the list \\='(NAME TYPE RANGE) ...}. + @anchor{Docstring hyperlinks} @item @cindex curly quotes @@ -700,7 +712,7 @@ two exceptions: write @code{t} and @code{nil} without surrounding punctuation. For example: @example - CODE can be `lambda', nil, or t. +CODE can be `lambda', nil, or t. @end example Note that when Emacs displays these doc strings, Emacs will usually @@ -856,7 +868,7 @@ find an alternate phrasing that conveys the meaning. @item Try to avoid using abbreviations such as ``e.g.'' (for ``for example''), ``i.e.'' (for ``that is''), ``no.'' (for ``number''), -``c.f.'' (for ``in contrast to'') and ``w.r.t.'' (for ``with respect +``cf.'' (for ``compare''/``see also'') and ``w.r.t.'' (for ``with respect to'') as much as possible. It is almost always clearer and easier to read the expanded version.@footnote{We do use these occasionally, but try not to overdo it.} diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index c29547d00db..80d6a01412b 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -327,7 +327,7 @@ Example of a loop summing a list of numbers: @anchor{Tail recursion} Recursive calls to @var{name} that occur in @emph{tail -positions} in @var{body} are guaranteed to be optimised as @emph{tail +positions} in @var{body} are guaranteed to be optimized as @emph{tail calls}, which means that they will not consume any additional stack space no matter how deeply the recursion runs. Such recursive calls will effectively jump to the top of the loop with new values for the @@ -1363,7 +1363,7 @@ disappear without prior notice. The byte-compiler can also warn about lexical variables that are special in other Emacs Lisp files, often indicating a missing -@code{defvar} declaration. This useful but somewhat specialised check +@code{defvar} declaration. This useful but somewhat specialized check requires three steps: @enumerate @@ -2679,17 +2679,46 @@ cdar nthcdr A call to any of the following Emacs-specific functions: @smallexample -alist-get process-get -frame-parameter process-sentinel -terminal-parameter window-buffer -keymap-parent window-display-table -match-data window-dedicated-p -overlay-get window-hscroll -overlay-start window-parameter -overlay-end window-point -process-buffer window-start -process-filter default-value +alist-get overlay-start +default-value overlay-get +face-background process-buffer +face-font process-filter +face-foreground process-get +face-stipple process-sentinel +face-underline-p terminal-parameter +file-modes window-buffer +frame-parameter window-dedicated-p +frame-parameters window-display-table +get-register window-hscroll +getenv window-parameter +keymap-parent window-point +match-data window-start +overlay-end @end smallexample + +@item +A call of the form @code{(substring @var{subplace} @var{n} [@var{m}])}, +where @var{subplace} is itself a valid generalized variable whose +current value is a string, and where the value stored is also a +string. The new string is spliced into the specified part of the +destination string. For example: + +@example +(setq a (list "hello" "world")) + @result{} ("hello" "world") +(cadr a) + @result{} "world" +(substring (cadr a) 2 4) + @result{} "rl" +(setf (substring (cadr a) 2 4) "o") + @result{} "o" +(cadr a) + @result{} "wood" +a + @result{} ("hello" "wood") +@end example + +@c FIXME? Also 'eq'? (see gv.el) @end itemize @noindent @@ -2822,6 +2851,16 @@ expression manipulating @var{place} via @var{getter} and @var{setter}. Consult the source file @file{gv.el} for more details. +@defun make-obsolete-generalized-variable obsolete-name current-name when +This function makes the byte compiler warn that the generalized +variable @var{obsolete-name} is obsolete. If @var{current-name} is a +symbol, then the warning message says to use @var{current-name} +instead of @var{obsolete-name}. If @var{current-name} is a string, +this is the message. @var{when} should be a string indicating when +the variable was first made obsolete (usually a version number +string). +@end defun + @cindex CL note---no @code{setf} functions @quotation @b{Common Lisp note:} Common Lisp defines another way to specify the @@ -2843,7 +2882,7 @@ Common Lisp, this is not an error since the function @code{(setf it, that value won't be automatically restored. Users usually set normal variables in their startup files, or use Customize (@pxref{Customization}) to set user options permanently, and various -packages have various files wher they store the data (e.g., Gnus +packages have various files where they store the data (e.g., Gnus stores this in @file{.newsrc.eld} and the URL library stores cookies in @file{~/.emacs.d/url/cookies}). diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 704ed30366c..c7f014e2f3b 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -737,7 +737,7 @@ with any other @var{round} it returns the internal value of @cindex window width @cindex width of a window @cindex total width of a window -The @dfn{total width} of a window is the number of lines comprising its +The @dfn{total width} of a window is the number of columns comprising its body and its left and right decorations (@pxref{Basic Windows}). @defun window-total-width &optional window round @@ -747,7 +747,7 @@ the selected window. If @var{window} is internal, the return value is the total width occupied by its descendant windows. If a window's pixel width is not an integral multiple of its frame's -character width, the number of lines occupied by the window is rounded +character width, the number of columns occupied by the window is rounded internally. This is done in a way such that, if the window is a parent window, the sum of the total widths of all its children internally equals the total width of their parent. This means that although two @@ -1158,11 +1158,13 @@ frame to its buffer using the command @code{fit-frame-to-buffer}. This command adjusts the size of @var{frame} to display the contents of its buffer exactly. @var{frame} can be any live frame and defaults to the selected one. Fitting is done only if @var{frame}'s root window is -live. The arguments @var{max-height}, @var{min-height}, @var{max-width} -and @var{min-width} specify bounds on the new total size of -@var{frame}'s root window. @var{min-height} and @var{min-width} default -to the values of @code{window-min-height} and @code{window-min-width} -respectively. +live. + +The arguments @var{max-height}, @var{min-height}, @var{max-width} and +@var{min-width}, if non-@code{nil}, specify bounds on the new body size +of @var{frame}'s root window. A non-@code{nil} value specified by any +of these arguments overrides the corresponding value specified by +the option @code{fit-frame-to-buffer-sizes} described below. If the optional argument @var{only} is @code{vertically}, this function may resize the frame vertically only. If @var{only} is @@ -1187,10 +1189,10 @@ here can be overridden for a specific frame by that frame's @defopt fit-frame-to-buffer-sizes This option specifies size boundaries for @code{fit-frame-to-buffer}. -It specifies the total maximum and minimum lines and maximum and minimum -columns of the root window of any frame that shall be fit to its buffer. -If any of these values is non-@code{nil}, it overrides the corresponding -argument of @code{fit-frame-to-buffer}. +It specifies the maximum and minimum lines and maximum and minimum +columns of the root window's body of any frame that shall be fit to its +buffer. Any value this option specifies will be overridden by the +corresponding argument of @code{fit-frame-to-buffer}, if non-@code{nil}. @end defopt @deffn Command shrink-window-if-larger-than-buffer &optional window diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index d9c5173c072..1d881a5fc7f 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -248,6 +248,7 @@ emacs = "${EMACS}" -batch --no-site-file --no-site-lisp --eval '(setq load-prefe define org_template $(1:.org=.texi): $(1) ${top_srcdir}/lisp/org/ox-texinfo.el $${AM_V_GEN}cd "$${srcdir}" && $${emacs} -l ox-texinfo \ + --eval '(setq gc-cons-threshold 50000000)' \ -f org-texinfo-export-to-texinfo-batch $$(notdir $$<) $$(notdir $$@) endef diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 829d7f4fa03..9dc63af6bcc 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi @@ -384,7 +384,7 @@ This function creates a new item in @var{collection} with label @var{item} and password @var{password}. The label @var{item} does not have to be unique in @var{collection}. @var{attributes} are key-value pairs set for the created item. The keys are keyword symbols, -starting with a colon. Example: +starting with a colon; values are strings. Example: @example ;;; The collection is "session", the label is "my item" @@ -466,6 +466,10 @@ then fall back to @file{~/.authinfo.gpg}. "~/.authinfo.gpg")) @end example +Attribute values in the auth-source spec, which are not strings (like +port numbers), are stringified prior calling the @file{secrets.el} +functions. + @node The Unix password store @chapter The Unix password store @@ -652,14 +656,8 @@ before @file{~/.authinfo}, the auth-source library will try to read the GnuPG encrypted @file{.gpg} file first, before the unencrypted file. -In Emacs 23 or later there is an option @code{auto-encryption-mode} to -automatically decrypt @file{*.gpg} files. It is enabled by default. -If you are using earlier versions of Emacs, you will need: - -@lisp -(require 'epa-file) -(epa-file-enable) -@end lisp +There is an option @code{auto-encryption-mode} to automatically +decrypt @file{*.gpg} files. It is enabled by default. If you want your GnuPG passwords to be cached, set up @code{gpg-agent} or EasyPG Assistant diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi index a3b0f16df9c..93c65692d01 100644 --- a/doc/misc/autotype.texi +++ b/doc/misc/autotype.texi @@ -92,7 +92,6 @@ completions and expansions of text at point. * Copyrights:: Inserting and updating copyrights. * Executables:: Turning interpreter scripts into executables. * Timestamps:: Updating dates and times in modified files. -* QuickURL:: Inserting URLs based on text at point. * Tempo:: Flexible template insertion. * Hippie Expand:: Expansion of text trying various methods. * Skeleton Language:: Making skeleton commands insert what you want. @@ -274,13 +273,13 @@ empty file is visited. This is accomplished by putting @vindex auto-insert-alist What gets inserted, if anything, is determined by the variable -@code{auto-insert-alist}. The @sc{car}s of this list are each either -a mode name, making an element applicable when a buffer is in that -mode. Or they can be a string, which is a regexp matched against the -buffer's file name. In that way different kinds of files that have -the same mode in Emacs can be distinguished. The @sc{car}s may also -be cons cells consisting of mode name or regexp as above and an -additional descriptive string. +@code{auto-insert-alist}. The @sc{car} of each element of this list +is either a mode name, making the element applicable when a buffer is +in that mode, or a string, which is a regexp matched against a +buffer's file name (the latter allows to distinguish between different +kinds of files that have the same mode in Emacs). The @sc{car} of an +element may also be a cons cell, consisting of mode name or regexp, as +above, and an additional descriptive string. When a matching element is found, the @sc{cdr} says what to do. It may be a string, which is a file name, whose contents are to be inserted, if @@ -478,31 +477,6 @@ The time stamp is written between the brackets or quotes: Time-stamp: <1998-02-18 10:20:51 gildea> @end example -@node QuickURL -@chapter QuickURL: Inserting URLs Based on Text at Point - -@vindex quickurl-url-file -@findex quickurl -@cindex URLs -@kbd{M-x quickurl} can be used to insert a URL into a buffer based on -the text at point. The URLs are stored in an external file defined by -the variable @code{quickurl-url-file} as a list of either cons cells of -the form @code{(@var{key} . @var{URL})} or -lists of the form @code{(@var{key} @var{URL} @var{comment})}. These -specify that @kbd{M-x quickurl} should insert @var{URL} if the word -@var{key} is at point, for example: - -@example -(("FSF" "https://www.fsf.org/" "The Free Software Foundation") - ("emacs" . "https://www.gnu.org/software/emacs/")) -@end example - -@findex quickurl-add-url -@findex quickurl-list -@kbd{M-x quickurl-add-url} can be used to add a new @var{key}/@var{URL} -pair. @kbd{M-x quickurl-list} provides interactive editing of the URL -list. - @node Tempo @chapter Tempo: Flexible Template Insertion diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 9bda6af1c5b..98f59b89c01 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -1,7 +1,7 @@ \input texinfo @c -*- mode: texinfo; coding: utf-8 -*- +@setfilename ../../info/calc.info @comment %**start of header (This is for running Texinfo on a region.) @c smallbook -@setfilename ../../info/calc.info @c [title] @settitle GNU Emacs Calc Manual @include docstyle.texi diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 6134b977517..a6747b1096a 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -920,69 +920,6 @@ cl-caaar@dots{}cl-cddddr cl-first@dots{}cl-tenth Note that for @code{cl-getf} (as for @code{nthcdr}), the list argument of the function must itself be a valid @var{place} form. -@item -General Emacs Lisp functions: -@example -buffer-file-name getenv -buffer-modified-p global-key-binding -buffer-name local-key-binding -buffer-string mark -buffer-substring mark-marker -current-buffer marker-position -current-case-table mouse-position -current-column point -current-global-map point-marker -current-input-mode point-max -current-local-map point-min -current-window-configuration read-mouse-position -default-file-modes screen-height -documentation-property screen-width -face-background selected-window -face-background-pixmap selected-screen -face-font selected-frame -face-foreground standard-case-table -face-underline-p syntax-table -file-modes visited-file-modtime -frame-height window-height -frame-parameters window-width -frame-visible-p x-get-secondary-selection -frame-width x-get-selection -get-register -@end example - -Most of these have directly corresponding ``set'' functions, like -@code{use-local-map} for @code{current-local-map}, or @code{goto-char} -for @code{point}. A few, like @code{point-min}, expand to longer -sequences of code when they are used with @code{setf} -(@code{(narrow-to-region x (point-max))} in this case). - -@item -A call of the form @code{(substring @var{subplace} @var{n} [@var{m}])}, -where @var{subplace} is itself a valid generalized variable whose -current value is a string, and where the value stored is also a -string. The new string is spliced into the specified part of the -destination string. For example: - -@example -(setq a (list "hello" "world")) - @result{} ("hello" "world") -(cadr a) - @result{} "world" -(substring (cadr a) 2 4) - @result{} "rl" -(setf (substring (cadr a) 2 4) "o") - @result{} "o" -(cadr a) - @result{} "wood" -a - @result{} ("hello" "wood") -@end example - -The generalized variable @code{buffer-substring}, listed above, -also works in this way by replacing a portion of the current buffer. - -@c FIXME? Also 'eq'? (see cl-lib.el) - @c Currently commented out in cl.el. @ignore @item @@ -1381,19 +1318,10 @@ bar A @code{setq} of a symbol macro is treated the same as a @code{setf}. I.e., @code{(setq foo 4)} in the above would be equivalent to -@code{(setf foo 4)}, which in turn expands to @code{(setf (car bar) 4)}. - -Likewise, a @code{let} or @code{let*} binding a symbol macro is -treated like a @code{cl-letf} or @code{cl-letf*}. This differs from true -Common Lisp, where the rules of lexical scoping cause a @code{let} -binding to shadow a @code{symbol-macrolet} binding. In this package, -such shadowing does not occur, even when @code{lexical-binding} is -@c See https://debbugs.gnu.org/12119 -@code{t}. (This behavior predates the addition of lexical binding to -Emacs Lisp, and may change in future to respect @code{lexical-binding}.) -At present in this package, only @code{lexical-let} and -@code{lexical-let*} will shadow a symbol macro. @xref{Obsolete -Lexical Binding}. +@code{(setf foo 4)}, which in turn expands to @code{(setf (car bar) +4)}. A @code{let} (or @code{let*}, @code{lambda}, ...) binding of +the same symbol will locally shadow the symbol macro as is the case in +Common Lisp. There is no analogue of @code{defmacro} for symbol macros; all symbol macros are local. A typical use of @code{cl-symbol-macrolet} is in the @@ -3756,7 +3684,7 @@ a merged sequence which is (stably) sorted according to The functions described here operate on lists. @menu -* List Functions:: @code{cl-caddr}, @code{cl-first}, @code{cl-list*}, etc. +* List Functions:: @code{cl-first}, @code{cl-list*}, etc. * Substitution of Expressions:: @code{cl-subst}, @code{cl-sublis}, etc. * Lists as Sets:: @code{cl-member}, @code{cl-adjoin}, @code{cl-union}, etc. * Association Lists:: @code{cl-assoc}, @code{cl-acons}, @code{cl-pairlis}, etc. @@ -3769,14 +3697,6 @@ The functions described here operate on lists. This section describes a number of simple operations on lists, i.e., chains of cons cells. -@defun cl-caddr x -This function is equivalent to @code{(car (cdr (cdr @var{x})))}. -Likewise, this package aliases all 24 @code{c@var{xxx}r} functions -where @var{xxx} is up to four @samp{a}s and/or @samp{d}s. -All of these functions are @code{setf}-able, and calls to them -are expanded inline by the byte-compiler for maximum efficiency. -@end defun - @defun cl-first x This function is a synonym for @code{(car @var{x})}. Likewise, the functions @code{cl-second}, @code{cl-third}, @dots{}, through @@ -4553,8 +4473,8 @@ For example, @end example @end ignore -Note that @code{cl-adjoin}, @code{cl-caddr}, and @code{cl-member} all -have built-in compiler macros to optimize them in common cases. +Note that @code{cl-adjoin} and @code{cl-member} have built-in compiler +macros to optimize them in common cases. @end defun @appendixsec Error Checking diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index 754ccf4065c..002164ed91f 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi @@ -92,7 +92,6 @@ For @file{dired-x.el} as distributed with GNU Emacs @value{EMACSVER}. * Introduction:: * Installation:: * Omitting Files in Dired:: -* Shell Command Guessing:: * Virtual Dired:: * Advanced Mark Commands:: * Multiple Dired Directories:: @@ -135,9 +134,6 @@ Some features provided by Dired Extra: Omitting uninteresting files from Dired listing (@pxref{Omitting Files in Dired}). @item -Guessing shell commands in Dired buffers -(@pxref{Shell Command Guessing}). -@item Running Dired command in non-Dired buffers (@pxref{Virtual Dired}). @item @@ -165,10 +161,6 @@ When @file{dired-x.el} is loaded, some standard Dired functions from Dired}), if it is active. @code{dired-find-buffer-nocreate} and @code{dired-initial-position} respect the value of @code{dired-find-subdir} (@pxref{Miscellaneous Commands}). -@code{dired-clean-up-after-deletion} respects the value of -@code{dired-clean-up-buffers-too}. @code{dired-read-shell-command} uses -@code{dired-guess-shell-command} (@pxref{Shell Command Guessing}) to -offer a smarter default command. @node Installation @chapter Installation @@ -186,7 +178,6 @@ In your @file{~/.emacs} file, or in the system-wide initialization file (with-eval-after-load 'dired (require 'dired-x) ;; Set dired-x global variables here. For example: - ;; (setq dired-guess-shell-gnutar "gtar") ;; (setq dired-x-hands-off-my-keys nil) )) (add-hook 'dired-mode-hook @@ -438,111 +429,6 @@ Loading @file{dired-x.el} will install Dired Omit by putting call @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup} in your @code{dired-mode-hook}. -@node Shell Command Guessing -@chapter Shell Command Guessing -@cindex guessing shell commands for files. - -Based upon the name of a file, Dired tries to guess what shell -command you might want to apply to it. For example, if you have point -on a file named @file{foo.tar} and you press @kbd{!}, Dired will guess -you want to @samp{tar xvf} it and suggest that as the default shell -command. - -The default is mentioned in brackets and you can type @kbd{M-n} to get -the default into the minibuffer and then edit it, e.g., to change -@samp{tar xvf} to @samp{tar tvf}. If there are several commands for a given -file, e.g., @samp{xtex} and @samp{dvips} for a @file{.dvi} file, you can type -@kbd{M-n} several times to see each of the matching commands. - -Dired only tries to guess a command for a single file, never for a list -of marked files. - -The following variables control guessing of shell commands: - -@defvar dired-guess-shell-alist-default -This variable specifies the predefined rules for guessing shell -commands suitable for certain files. Set this to @code{nil} to turn -guessing off. The elements of @code{dired-guess-shell-alist-user} -(defined by the user) will override these rules. -@end defvar - -@defvar dired-guess-shell-alist-user -If non-@code{nil}, this variables specifies the user-defined alist of -file regexps and their suggested commands. These rules take -precedence over the predefined rules in the variable -@code{dired-guess-shell-alist-default} (to which they are prepended) -when @code{dired-do-shell-command} is run). The default is -@code{nil}. - -Each element of the alist looks like - -@example -(@var{regexp} @var{command}@dots{}) -@end example - -@noindent -where each @var{command} can either be a string or a Lisp expression -that evaluates to a string. If several commands are given, all of -them will temporarily be pushed onto the history. - -A @samp{*} in the shell command stands for the file name that matched -@var{regexp}. When Emacs invokes the @var{command}, it replaces each -instance of @samp{*} with the matched file name. - -You can set this variable in your @file{~/.emacs}. For example, -to add rules for @samp{.foo} and @samp{.bar} file extensions, write - -@example -(setq dired-guess-shell-alist-user - (list - (list "\\.foo$" "@var{foo-command}");; fixed rule - ;; possibly more rules... - (list "\\.bar$";; rule with condition test - '(if @var{condition} - "@var{bar-command-1}" - "@var{bar-command-2}")))) -@end example - -@noindent -This will override any predefined rules for the same extensions. -@end defvar - -@defvar dired-guess-shell-case-fold-search -If this variable is non-@code{nil}, -@code{dired-guess-shell-alist-default} and -@code{dired-guess-shell-alist-user} are matched case-insensitively. -The default is @code{t}. -@end defvar - -@cindex passing GNU Tar its @samp{z} switch. -@defvar dired-guess-shell-gnutar -If this variable is non-@code{nil}, it specifies the name of the GNU -Tar executable (e.g., @file{tar} or @file{gnutar}). GNU Tar's -@samp{z} switch is used for compressed archives. If you don't have -GNU Tar, set this to @code{nil}: a pipe using @command{zcat} is then -used instead. The default is @code{nil}. -@end defvar - -@cindex @code{gzip} -@defvar dired-guess-shell-gzip-quiet -A non-@code{nil} value of this variable means that @samp{-q} is passed -to @command{gzip}, possibly overriding a verbose option in the @env{GZIP} -environment variable. The default is @code{t}. -@end defvar - -@cindex @code{znew} -@defvar dired-guess-shell-znew-switches nil -This variable specifies a string of switches passed to @command{znew}. -An example is @samp{-K} which will make @command{znew} keep a @file{.Z} -file when it is smaller than the @file{.gz} file. The default is -@code{nil}: no additional switches are passed to @command{znew}. -@end defvar - -@defvar dired-shell-command-history nil -This variable holds the history list for commands that read -dired-shell commands. -@end defvar - @node Virtual Dired @chapter Virtual Dired @@ -884,15 +770,6 @@ normal and a wildcard buffer for the same directory, @kbd{C-x d @key{RET}} will toggle between those two. @end table -@table @kbd -@findex dired-goto-subdir -@kindex M-G -@item M-G -(@code{dired-goto-subdir}) Go to the header line of an inserted directory. -This command reads its argument, with completion derived from the names of the -inserted subdirectories. -@end table - @table @code @item dired-vm @@ -920,55 +797,6 @@ to @kbd{V}. Otherwise, @code{dired-bind-rmail} will be bound. @findex dired-rmail Bound to @kbd{V} if @code{dired-bind-vm} is @code{nil}. Run Rmail on this file (assumed to be mail folder in Rmail format). - -@item dired-info -@kindex I -@cindex running info. -@findex dired-info -Bound to @kbd{I}. Run Info on this file (assumed to be a file in Info -format). - -@vindex dired-bind-info -If the variable @code{dired-bind-info} is @code{nil}, @code{dired-info} will -not be bound to @kbd{I}. - -@item dired-man -@cindex running man. -@kindex N -@findex dired-man -Bound to @kbd{N}. Run man on this file (assumed to be a file in @code{nroff} -format). - -@vindex dired-bind-man -If the variable @code{dired-bind-man} is @code{nil}, @code{dired-man} will not -be bound to @kbd{N}. - -@item dired-do-relsymlink -@cindex relative symbolic links. -@kindex Y -@findex dired-do-relsymlink -Bound to @kbd{Y}. Relative symlink all marked (or next ARG) files into a -directory, or make a relative symbolic link to the current file. This creates -relative symbolic links like - -@example - foo -> ../bar/foo -@end example - -@noindent -not absolute ones like - -@example - foo -> /ugly/path/that/may/change/any/day/bar/foo -@end example - -@item dired-do-relsymlink-regexp -@kindex %Y -@findex dired-do-relsymlink-regexp -Bound to @kbd{%Y}. Relative symlink all marked files containing -@var{regexp} to @var{newname}. See functions -@code{dired-do-rename-regexp} and @code{dired-do-relsymlink} for more -info. @end table @node Bugs diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index af8e2153dd8..9867883b24a 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi @@ -1551,14 +1551,14 @@ This is a URL to be sent to a web site for documentation. @item :web-site-directory @* A directory where web pages can be found by Emacs. -For remote locations use a path compatible with ange-ftp or EFS@. +For remote locations use a path compatible with ange-ftp. You can also use TRAMP for use with rcp & scp. @item :web-site-file @* A file which contains the website for this project. This file can be relative to slot @code{web-site-directory}. -This can be a local file, use ange-ftp, EFS, or TRAMP. +This can be a local file, use ange-ftp or TRAMP. @item :ftp-site Type: @code{string} @* diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi index 39b09b29b3f..cbc7556aa82 100644 --- a/doc/misc/ediff.texi +++ b/doc/misc/ediff.texi @@ -947,12 +947,14 @@ This function can also be invoked from the Menubar. However, in some cases, the change will take place only after you execute one of the Ediff commands, such as going to the next difference or redisplaying. +@c --> The below can be revisited once the toolbar has been ported to Emacs: +@ignore @item ediff-toggle-use-toolbar @findex ediff-toggle-use-toolbar -Available in XEmacs only. The Ediff toolbar provides quick access to some -of the common Ediff functions. This function toggles the display of the -toolbar. If invoked from the menubar, the function may take sometimes -effect only after you execute an Ediff command, such as going to the next +The Ediff toolbar provides quick access to some of the common Ediff +functions. This function toggles the display of the toolbar. If +invoked from the menubar, the function may take sometimes effect only +after you execute an Ediff command, such as going to the next difference. @item ediff-use-toolbar-p @@ -961,6 +963,7 @@ The use of the toolbar can also be specified via the variable @code{ediff-use-toolbar-p} (default is @code{t}). This variable can be set only in @file{.emacs}: do @strong{not} change it interactively. Use the function @code{ediff-toggle-use-toolbar} instead. +@end ignore @item ediff-revert-buffers-then-recompute-diffs @findex ediff-revert-buffers-then-recompute-diffs diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi index 55175a3b89f..46c257e42e5 100644 --- a/doc/misc/efaq-w32.texi +++ b/doc/misc/efaq-w32.texi @@ -130,10 +130,8 @@ from Windows 98 onward, and all versions of the NT family starting from NT 4.0; this includes all the modern versions from Windows XP and on. The Windows port is built using the Win32 API and supports most features of the X version, including variable width fonts, images and -tooltips. - -Emacs on Windows can be compiled as either a 32-bit or a 64-bit -executable, using the MinGW GCC compiler and development tools. +tooltips. Emacs on Windows can be compiled as either a 64-bit or a +32-bit executable. @node Other versions of Emacs @section What other versions of Emacs run on Windows? @@ -177,8 +175,8 @@ best-effort basis in the @file{windows} subdirectory of the above ftp site (as zip files digitally signed by the person who built them). See the @file{README} file in that directory for more information. Building Emacs from source yourself should be straightforward, -following the instructions in @file{nt/INSTALL}, so we encourage you -to give it a try. @xref{Compiling}. +following the instructions in the @file{nt} directory, so we +encourage you to give it a try. @xref{Compiling}. @cindex latest development version of Emacs @cindex Emacs Development @@ -190,21 +188,27 @@ development site. @section How can I compile Emacs myself? @cindex compiling Emacs -To compile Emacs on Windows, you will need the MinGW port of GCC and -Binutils, the MinGW runtime and development environment, and the MSYS -suite of tools. For the details, see the file @file{nt/INSTALL} in -the Emacs source distribution. +To compile Emacs on a 64-bit version of Windows 7 or newer, we +recommend to use the MinGW-w64 port of GCC and Binutils with the MSYS2 +suite of tools. For the details, see the file @file{nt/INSTALL.W64} +in the Emacs source distribution. + +If you need to build or run Emacs on MS Windows before Windows 7, you +have to use the MinGW port of GCC and the MSYS suite of tools. The +file @file{nt/INSTALL} in Emacs source distribution contains the +details. Support for displaying images, as well as XML/HTML rendering and TLS networking requires external libraries, the headers and import libraries for which will need to be installed where your compiler can find them. Again, the details, including URLs of sites where you can -download these libraries are in @file{nt/INSTALL}. @xref{Other useful -ports}, for auxiliary tools you may wish to install and use in -conjunction with Emacs. +download these libraries are in @file{nt/INSTALL.W64} or +@file{nt/INSTALL}. @xref{Other useful ports}, for auxiliary tools you +may wish to install and use in conjunction with Emacs. After unpacking the source, or checking out of the repository, be sure -to read the instructions in @file{nt/README} and @file{nt/INSTALL}. +to read the instructions in @file{nt/README} and the respective +install file. @node Debugging @section How do I use a debugger on Emacs? @@ -222,18 +226,18 @@ specific notes about debugging Emacs. @cindex debugging Emacs with GDB GDB is the GNU debugger, which can be used to debug Emacs when it has -been compiled with MinGW GCC@. The best results will be obtained if -you start gdb from the @file{src} directory as @kbd{gdb ./emacs.exe}. +been compiled with GCC@. The best results will be obtained if you +start gdb from the @file{src} directory as @kbd{gdb ./emacs.exe}. This will load the init file @file{.gdbinit}@footnote{ Latest versions of GDB might refuse to load the init file for security reasons, unless you customize GDB; alternatively, use an explicit @kbd{source ./gdbinit} command after entering GDB. } in that directory, to define some extra commands for working with -lisp while debugging, and set up breakpoints to catch abnormal -aborts. +lisp while debugging, and set up breakpoints to catch abnormal aborts. -A Windows port of GDB can be found on MinGW download sites and on some -others. +A Windows port of GDB is installed with MinGW64-w64 and MSYS2 +(@samp{mingw-w64--toolchain} group) or can be found on MinGW +download sites and on some others. @c ------------------------------------------------------------ @node Installing Emacs @@ -307,8 +311,8 @@ bsdtar -xf emacs-@value{EMACSVER}.tar.xz Expect @command{bsdtar} to unpack the whole distribution without any complaints. -Once you unpack the source distribution, look in @file{nt/INSTALL} -file for build instructions. +Once you unpack the source distribution, look in the @file{nt} +directory for build instructions. @node Installing binaries @section How do I install Emacs after unpacking the binary zip? @@ -926,9 +930,9 @@ an indication of whether the font is outline (.TTF, .ATM) or raster (.FON) based when fonts are listed, which may let you differentiate between two fonts with the same name and different technologies. -Starting with Emacs 23, the preferred font name format will be moving -to the simpler and more flexible fontconfig format. XLFD names will -continue to be supported for backward compatibility. +Starting with Emacs 23, the preferred font name format is the simpler +and more flexible fontconfig format. XLFD names will continue to be +supported for backward compatibility. @example XLFD: -*-Courier New-normal-r-*-*-13-*-*-*-c-*-iso8859-1 @@ -1645,8 +1649,8 @@ obtained the packages from if you want to use them. In your @env{HOME} directory create a file called @file{.mailcap}, with contents like the following: @example -application/zip "C:/Program Files/7-Zip/7zFM.exe" -video/* "C:/Program Files/VideoLAN/VLC/vlc.exe" +application/zip; "C:/Program Files/7-Zip/7zFM.exe" +video/*; "C:/Program Files/VideoLAN/VLC/vlc.exe" @end example @strong{Warning:} Associating MIME types with @command{start} or other @@ -1754,11 +1758,13 @@ A number of implementations are listed on the Emacs has support for spell checking on demand (@code{ispell}) and as your type (@code{flyspell}). Both packages depend on a copy of @command{ispell} 3.2 or a compatible spell-checking program. -GNU Aspell is a popular choice these days, Windows installers are -available from the @uref{http://aspell.net/win32/, official site}. +GNU Aspell is a popular choice these days, outdated Windows installers +are available from the @uref{http://aspell.net/win32/, official site}. Another possibility is Hunspell, which is available from @uref{https://sourceforge.net/projects/ezwinports/files/?source=navbar, -the ezwinports site}. +the ezwinports site}. If you're using the MSYS2 distribution, you can +install a recent version of either GNU Aspell or Hunspell through the +package manager Pacman. @xref{Other useful ports}. Once installed, you will need to configure @code{ispell-program-name} to tell ispell and flyspell to use @command{aspell} or @@ -2096,9 +2102,9 @@ suggestions} for improving the interaction of perldb and Emacs. @menu * Cygwin:: -* MinGW:: +* MinGW-w64:: * EZWinPorts:: -* UWIN:: +* MinGW:: * GnuWin32:: * GTK:: * Read man pages:: @@ -2133,22 +2139,25 @@ Cygwin on your system @env{PATH} for this reason. Instead you can make the Cygwin tools available within Emacs by setting @code{exec-path} in your init file. -@node MinGW -@section MinGW and MSYS -@cindex mingw tools -@cindex msys environment -@cindex subprocesses, mingw and msys +@node MinGW-w64 +@section MinGW-w64 and MSYS2 +@cindex mingw-w64 tools +@cindex msys2 environment +@cindex subprocesses, mingw-w64 and msys2 -@uref{http://www.mingw.org/} +@uref{https://www.msys2.org/} -MinGW is a set of development tools that produce native Windows +MinGW-w64 is a set of development tools that produce native Windows executables, not dependent on Cygwin's POSIX emulation DLLs. +MinGW-w64 has forked the original MinGW in 2007 in order to provide +support for 64 bits and new APIs. -MSYS is a POSIX shell and minimal set of tools that are commonly used in -configure scripts. Like Cygwin, this environment uses a non-native -filesystem mapping to appear more POSIX like to the scripts that it -runs. This is intended to complement the MinGW tools to make it easier -to port software to Windows. +MSYS2 is software distribution and a building platform for Windows. +MSYS2 is an independent rewrite of MSYS, based on modern Cygwin and +MinGW-w64 with the aim of better interoperability with native Windows +software. It plays the same role MSYS does in MinGW. Being a +distribution, MSYS2 provides tools to build software as well as more +than 2.600 precompiled packages ready for use. @node EZWinPorts @section EZWinPorts @@ -2161,16 +2170,22 @@ software. This includes all the optional libraries used by Emacs @command{man} command, Grep, xz, bzip2, bsdtar, ID Utils, Findutils, Hunspell, Gawk, GNU Make, Groff, GDB. -@node UWIN -@section UWIN -@cindex uwin environment -@cindex subprocesses, uwin +@node MinGW +@section MinGW and MSYS +@cindex mingw tools +@cindex msys environment +@cindex subprocesses, mingw and msys -@uref{http://www.research.att.com/sw/tools/uwin/} +@uref{https://osdn.net/projects/mingw/} -UWIN is another POSIX emulation environment, like Cygwin and MSYS, -that provides a large number of ported tools. The shell used by UWIN -is @command{ksh}, the Korn shell. +MinGW is another set of development tools that produce native Windows +executables, not dependent on Cygwin's POSIX emulation DLLs. + +MSYS is a POSIX shell and minimal set of tools that are commonly used in +configure scripts. Like Cygwin, this environment uses a non-native +filesystem mapping to appear more POSIX like to the scripts that it +runs. This is intended to complement the MinGW tools to make it easier +to port software to Windows. @node GnuWin32 @section GnuWin32 diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index a98c4b6a614..a3459abd041 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -27,9 +27,6 @@ latest version of the FAQ is archived. The FAQ may be copied and redistributed under these conditions, except that the FAQ may not be embedded in a larger literary work unless that work itself allows free copying and redistribution. - -[This version has been heavily edited since it was included in the Emacs -distribution in 1999.] @end quotation @end copying @@ -545,11 +542,11 @@ printed manual}. @cindex Reference cards, in other languages @item You can get a printed reference card listing commands and keys to -invoke them. You can order one from the FSF for $2 (or 10 for $18), -or you can print your own from the @file{etc/refcards/refcard.tex} or -@file{etc/refcards/refcard.pdf} files in the Emacs distribution. -The Emacs distribution comes with translations of the reference card -into several languages; look for files named +invoke them. You can order one from the FSF, or you can print your +own from the @file{etc/refcards/refcard.tex} or +@file{etc/refcards/refcard.pdf} files in the Emacs distribution. The +Emacs distribution comes with translations of the reference card into +several languages; look for files named @file{etc/refcards/@var{lang}-refcard.*}, where @var{lang} is a two-letter code of the language. For example, the German version of the reference card is in the files @file{etc/refcards/de-refcard.tex} @@ -696,9 +693,10 @@ of the file in parentheses, like this: @item You can create your own Info directory. You can tell Emacs where that Info directory is by adding its pathname to the value of the variable -@code{Info-default-directory-list}. For example, to use a private Info -directory which is a subdirectory of your home directory named @file{Info}, -you could put this in your @file{.emacs} file: +@code{Info-default-directory-list}. For example, to use a private +Info directory which is a subdirectory of your home directory named +@file{Info}, you could put this in your init file (@pxref{Setting up a +customization file}): @lisp (add-to-list 'Info-default-directory-list "~/Info/") @@ -1607,36 +1605,39 @@ is better to write ``Emacs and XEmacs.'' @end menu @node Setting up a customization file -@section How do I set up a @file{.emacs} file properly? +@section How do I set up an init file properly? @cindex @file{.emacs} file, setting up -@cindex @file{.emacs} file, locating +@cindex @file{.emacs.d/init.el} file, setting up @cindex Init file, setting up +@cindex Init file, locating @cindex Customization file, setting up +When Emacs is started, it normally tries to load a Lisp program from +an @dfn{initialization file}, or @dfn{init file} for short. This +file, if it exists, specifies how to initialize Emacs for you. +Traditionally, file @file{~/.emacs} is used as the init file, although +Emacs also looks at @file{~/.emacs.el}, @file{~/.emacs.d/init.el}, +@file{~/.config/emacs/init.el}, or other locations. @xref{Init File,,, emacs, The GNU Emacs Manual}. -In general, new Emacs users should not be provided with @file{.emacs} +Emacs includes the Customize facility (@pxref{Using Customize}). This +allows users who are unfamiliar with Emacs Lisp to modify their +init files in a relatively straightforward way, using menus +rather than Lisp code. + +While Customize might indeed make it easier to configure Emacs, +consider taking a bit of time to learn Emacs Lisp and modifying your +init file directly. Simple configuration options are described +rather completely in @ref{Init File,,, emacs, The GNU Emacs Manual}, +for users interested in performing frequently requested, basic tasks. + +In general, new Emacs users should not be provided with init files, because this can cause confusing non-standard behavior. Then they send questions to @url{https://lists.gnu.org/mailman/listinfo/help-gnu-emacs, the help-gnu-emacs mailing list} asking why Emacs isn't behaving as documented. -Emacs includes the Customize facility (@pxref{Using Customize}). This -allows users who are unfamiliar with Emacs Lisp to modify their -@file{.emacs} files in a relatively straightforward way, using menus -rather than Lisp code. - -While Customize might indeed make it easier to configure Emacs, -consider taking a bit of time to learn Emacs Lisp and modifying your -@file{.emacs} directly. Simple configuration options are described -rather completely in @ref{Init File,,, emacs, The GNU Emacs Manual}, -for users interested in performing frequently requested, basic tasks. - -Sometimes users are unsure as to where their @file{.emacs} file should -be found. Visiting the file as @file{~/.emacs} from Emacs will find -the correct file. - @node Using Customize @section How do I start using Customize? @cindex Customize groups @@ -1743,21 +1744,22 @@ always use custom terminal definition with @samp{setb24} and @samp{setf24}. @node Debugging a customization file -@section How do I debug a @file{.emacs} file? -@cindex Debugging @file{.emacs} file -@cindex @file{.emacs} debugging +@section How do I debug an init file? +@cindex Debugging @file{.emacs.d/init.el} file +@cindex Debugging init file +@cindex @file{.emacs.d/init.el} debugging @cindex Init file debugging @cindex @samp{-debug-init} option Start Emacs with the @samp{-debug-init} command-line option. This -enables the Emacs Lisp debugger before evaluating your @file{.emacs} +enables the Emacs Lisp debugger before evaluating your init file, and places you in the debugger if something goes wrong. The top line in the @file{trace-back} buffer will be the error message, and the second or third line of that buffer will display the Lisp code from your -@file{.emacs} file that caused the problem. +init file that caused the problem. You can also evaluate an individual function or argument to a function -in your @file{.emacs} file by moving the cursor to the end of the +in your init file by moving the cursor to the end of the function or argument and typing @kbd{C-x C-e} (@kbd{M-x eval-last-sexp}). @@ -1787,7 +1789,8 @@ You can similarly display the current column with @end lisp @noindent -in your @file{.emacs} file. This feature is off by default. +in your init file (@pxref{Setting up a customization file}). This +feature is off by default. The @code{"%c"} format specifier in the variable @code{mode-line-format} will insert the current column's value into the mode line. See the @@ -1806,9 +1809,8 @@ optional display. Alternatively, you can use the customize @code{display-line-numbers-type} with the same value as you would use with @code{display-line-numbers}. -There is also the @samp{linum} package (distributed with Emacs since -version 23.1) which will henceforth become obsolete. Users and -developers are encouraged to use @samp{display-line-numbers} instead. +There is also the @samp{linum} package which will henceforth become +obsolete. We recommend using @samp{display-line-numbers} instead. @node Displaying the current file name in the titlebar @section How can I modify the titlebar to contain the current file name? @@ -1834,7 +1836,7 @@ machine at which Emacs was invoked. This is done by setting To modify the behavior such that frame titlebars contain the buffer's name regardless of the number of existing frames, include the following -in your @file{.emacs}: +in your init file (@pxref{Setting up a customization file}): @lisp (setq frame-title-format "%b") @@ -1844,9 +1846,10 @@ in your @file{.emacs}: @section How do I turn on abbrevs by default just in mode @var{mymode}? @cindex Abbrevs, turning on by default -Abbrev mode expands abbreviations as you type them. To turn it on in a -specific buffer, use @kbd{M-x abbrev-mode}. To turn it on in every -buffer by default, put this in your @file{.emacs} file: +Abbrev mode expands abbreviations as you type them. To turn it on in +a specific buffer, use @kbd{M-x abbrev-mode}. To turn it on in every +buffer by default, put this in your init file (@pxref{Setting up a +customization file}): @lisp (setq-default abbrev-mode t) @@ -1896,7 +1899,8 @@ the script. Use @kbd{C-h v} (or @kbd{M-x describe-variable}) on @cindex Highlighting and replacing text Use @code{delete-selection-mode}, which you can start automatically by -placing the following Lisp form in your @file{.emacs} file: +placing the following Lisp form in your init file (@pxref{Setting up a +customization file}): @lisp (delete-selection-mode 1) @@ -2034,9 +2038,10 @@ The default maximum line width is 70, determined by the variable To turn on @code{auto-fill-mode} just once for one buffer, use @kbd{M-x auto-fill-mode}. -To turn it on for every buffer in a certain mode, you must use the hook -for that mode. For example, to turn on @code{auto-fill} mode for all -text buffers, including the following in your @file{.emacs} file: +To turn it on for every buffer in a certain mode, you must use the +hook for that mode. For example, to turn on @code{auto-fill} mode for +all text buffers, including the following in your init file +(@pxref{Setting up a customization file}): @lisp (add-hook 'text-mode-hook 'turn-on-auto-fill) @@ -2091,7 +2096,8 @@ option: emacs -f server-start @end example -or by invoking @code{server-start} from @file{.emacs}: +or by invoking @code{server-start} from init file (@pxref{Setting up a +customization file}): @lisp (if (@var{some conditions are met}) (server-start)) @@ -2162,7 +2168,8 @@ f() @} @end example -@noindent To achieve this, add the following line to your @file{.emacs}: +@noindent To achieve this, add the following line to your init file +(@pxref{Setting up a customization file}): @lisp (c-set-offset 'case-label '+) @@ -2213,7 +2220,8 @@ the line or the block according to what you just specified. @item If you don't like the result, go back to step 1. Otherwise, add the -following line to your @file{.emacs}: +following line to your init file (@pxref{Setting up a customization +file}): @lisp (c-set-offset '@var{syntactic-symbol} @var{offset}) @@ -2243,8 +2251,8 @@ customizations inside a C mode hook, like this: @noindent Using @code{c-mode-hook} avoids the need to put a @w{@code{(require -'cc-mode)}} into your @file{.emacs} file, because @code{c-set-offset} -might be unavailable when @code{cc-mode} is not loaded. +'cc-mode)}} into your init file, because @code{c-set-offset} might be +unavailable when @code{cc-mode} is not loaded. Note that @code{c-mode-hook} runs for C source files only; use @code{c++-mode-hook} for C@t{++} sources, @code{java-mode-hook} for @@ -2316,8 +2324,8 @@ usage: xset [-display host:dpy] option ... @cindex Previous line, indenting according to @cindex Text indentation -Such behavior is automatic (in Text mode) in Emacs 20 and later. From the -@file{etc/NEWS} file for Emacs 20.2: +Such behavior is automatic (in Text mode). From the @file{etc/NEWS} +file for Emacs 20.2: @example ** In Text mode, now only blank lines separate paragraphs. This makes @@ -2355,7 +2363,8 @@ new paragraph. There are many packages available to deal with this @cindex Pairs of parentheses, highlighting @cindex Matching parentheses -Call @code{show-paren-mode} in your @file{.emacs} file: +Call @code{show-paren-mode} in your init file (@pxref{Setting up a +customization file}): @lisp (show-paren-mode 1) @@ -2460,8 +2469,9 @@ Emacs Lisp @dfn{form}: @item If you want it evaluated every time you run Emacs, put it in a file -named @file{.emacs} in your home directory. This is known as ``your -@file{.emacs} file,'' and contains all of your personal customizations. +named @file{.emacs.d/init.el} in your home directory. This is known +as ``your init file,'' and contains all of your personal +customizations (@pxref{Setting up a customization file}). @item You can type the form in the @file{*scratch*} buffer, and then type @@ -2499,7 +2509,7 @@ about them. Set the default value of the variable @code{tab-width}. For example, to set @key{TAB} stops every 10 characters, insert the following in your -@file{.emacs} file: +init file (@pxref{Setting up a customization file}): @lisp (setq-default tab-width 10) @@ -2641,8 +2651,9 @@ Quick command-line switch descriptions are also available. For example, You probably don't want to do this, since backups are useful, especially when something goes wrong. -To avoid seeing backup files (and other ``uninteresting'' files) in Dired, -load @code{dired-x} by adding the following to your @file{.emacs} file: +To avoid seeing backup files (and other ``uninteresting'' files) in +Dired, load @code{dired-x} by adding the following to your init file +(@pxref{Setting up a customization file}): @lisp (with-eval-after-load 'dired @@ -2651,7 +2662,7 @@ load @code{dired-x} by adding the following to your @file{.emacs} file: With @code{dired-x} loaded, @kbd{C-x M-o} toggles omitting in each dired buffer. You can make omitting the default for new dired buffers by putting the -following in your @file{.emacs}: +following in your init file: @lisp (add-hook 'dired-mode-hook 'dired-omit-mode) @@ -2891,31 +2902,32 @@ and cause an annoying delay in display, so several features exist to work around this. @cindex Just-In-Time syntax highlighting -In Emacs 21 and later, turning on @code{font-lock-mode} automatically -activates the new @dfn{Just-In-Time fontification} provided by -@code{jit-lock-mode}. @code{jit-lock-mode} defers the fontification of -portions of buffer until you actually need to see them, and can also -fontify while Emacs is idle. This makes display of the visible portion -of a buffer almost instantaneous. For details about customizing -@code{jit-lock-mode}, type @kbd{C-h f jit-lock-mode @key{RET}}. +Turning on @code{font-lock-mode} automatically activates +@dfn{Just-In-Time fontification} provided by @code{jit-lock-mode}. +@code{jit-lock-mode} defers the fontification of portions of buffer +until you actually need to see them, and can also fontify while Emacs +is idle. This makes display of the visible portion of a buffer almost +instantaneous. For details about customizing @code{jit-lock-mode}, +type @kbd{C-h f jit-lock-mode @key{RET}}. @cindex Levels of syntax highlighting @cindex Decoration level, in @code{font-lock-mode} -In versions of Emacs before 21, different levels of decoration are -available, from slight to gaudy. More decoration means you need to wait -more time for a buffer to be fontified (or a faster machine). To -control how decorated your buffers should become, set the value of -@code{font-lock-maximum-decoration} in your @file{.emacs} file, with a -@code{nil} value indicating default (usually minimum) decoration, and a -@code{t} value indicating the maximum decoration. For the gaudiest -possible look, then, include the line +Different levels of decoration are available, from slight to gaudy. +More decoration means you need to wait more time for a buffer to be +fontified (or a faster machine). To control how decorated your +buffers should become, set the value of +@code{font-lock-maximum-decoration} in your init file (@pxref{Setting +up a customization file}), with a @code{nil} value indicating default +(usually minimum) decoration, and a @code{t} value indicating the +maximum decoration. For the gaudiest possible look, then, include the +line @lisp (setq font-lock-maximum-decoration t) @end lisp @noindent -in your @file{.emacs} file. You can also set this variable such that +in your init file. You can also set this variable such that different modes are highlighted in a different ways; for more information, see the documentation for @code{font-lock-maximum-decoration} with @kbd{C-h v} (or @kbd{M-x @@ -2942,7 +2954,8 @@ customize-variable @key{RET} scroll-conservatively @key{RET}} and set it to a large value like, say, 10000. For an explanation of what this means, @pxref{Auto Scrolling,,, emacs, The GNU Emacs Manual}. -Alternatively, use the following Lisp form in your @file{.emacs}: +Alternatively, use the following Lisp form in your init file +(@pxref{Setting up a customization file}): @lisp (setq scroll-conservatively most-positive-fixnum) @@ -2971,7 +2984,8 @@ default, a backslash (@samp{\}) will appear in the mode line. @cindex Single space following periods @cindex Periods, one space following -Add the following line to your @file{.emacs} file: +Add the following line to your init file (@pxref{Setting up a +customization file}): @lisp (setq sentence-end-double-space nil) @@ -2985,11 +2999,7 @@ Add the following line to your @file{.emacs} file: In many systems, @code{ls} is aliased to @samp{ls --color}, which prints using ANSI color escape sequences. Emacs includes the @code{ansi-color} package, which lets Shell mode recognize these -escape sequences. In Emacs 23.2 and later, the package is enabled by -default; in earlier versions you can enable it by typing @kbd{M-x -ansi-color-for-comint-mode} in the Shell buffer, or by adding -@code{(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)} to -your init file. +escape sequences. It is enabled by default. @node Fullscreen mode on MS-Windows @section How can I start Emacs in fullscreen mode on MS-Windows? @@ -2997,15 +3007,15 @@ your init file. @cindex Fullscreen mode Beginning with Emacs 24.4 either run Emacs with the @samp{--maximized} -command-line option or put the following form in your @file{.emacs} -file: +command-line option or put the following form in your init file +(@pxref{Setting up a customization file}): @lisp (add-hook 'emacs-startup-hook 'toggle-frame-maximized) @end lisp With older versions use the function @code{w32-send-sys-command}. For -example, you can put the following in your @file{.emacs} file: +example, you can put the following in your init file: @lisp (add-hook 'emacs-startup-hook @@ -3063,10 +3073,9 @@ Emacs has an inherent fixed limitation on the size of buffers. This limit is stricter than the maximum size of objects supported by other programs on the same architecture. -The maximum buffer size on 32-bit machines is 512 MBytes beginning -with version 23.2. If Emacs was built using the -@code{--with-wide-int} flag, the maximum buffer size on 32-bit -machines is 2 GB. +The maximum buffer size on 32-bit machines is 512 MBytes. If Emacs +was built using the @code{--with-wide-int} flag, the maximum buffer +size on 32-bit machines is 2 GB. Emacs compiled on a 64-bit machine can handle much larger buffers; up to @code{most-positive-fixnum} (2.3 exabytes). @@ -3130,8 +3139,8 @@ with the following Lisp form, The above solutions try to prevent the shell from producing the @samp{^M} characters in the first place. If this is not possible (e.g., if you use a Windows shell), you can get Emacs to remove these -characters from the buffer by adding this to your @file{.emacs} init -file: +characters from the buffer by adding this to your init file +(@pxref{Setting up a customization file}): @smalllisp (add-hook 'comint-output-filter-functions #'comint-strip-ctrl-m) @@ -3153,8 +3162,8 @@ stty -icrnl -onlcr -echo susp ^Z @cindex @code{explicit-shell-file-name} This might happen because Emacs tries to look for the shell in a wrong place. If you know where your shell executable is, set the variable -@code{explicit-shell-file-name} in your @file{.emacs} file to point to -its full file name. +@code{explicit-shell-file-name} in your init file (@pxref{Setting up a +customization file}) to point to its full file name. @cindex Antivirus programs, and Shell Mode Some people have trouble with Shell Mode on MS-Windows because of @@ -3196,18 +3205,18 @@ if ("$term" == emacs) set term=dumb @node Errors with init files @section Why does Emacs say @samp{Error in init file}? -@cindex Error in @file{.emacs} +@cindex Error in @file{.emacs.d/init.el} @cindex Error in init file @cindex Init file, errors in -@cindex @file{.emacs} file, errors in -@cindex Debugging @file{.emacs} file +@cindex @file{.emacs.d/init.el} file, errors in +@cindex Debugging init file -An error occurred while loading either your @file{.emacs} file or the +An error occurred while loading either your init file or the system-wide file @file{site-lisp/default.el}. Emacs pops the @file{*Messages*} buffer, and puts there some additional information about the error, to provide some hints for debugging. -For information on how to debug your @file{.emacs} file, see +For information on how to debug your init file, see @ref{Debugging a customization file}. It may be the case that you need to load some package first, or use a @@ -3493,8 +3502,8 @@ and any Emacs Info files that might be in @file{/usr/local/share/info/}. @cindex Apple computers, Emacs for @cindex Macintosh, Emacs for @cindex macOS, Emacs for -Beginning with version 22.1, Emacs supports macOS natively. -See the file @file{nextstep/INSTALL} in the distribution. +Emacs supports macOS natively. See the file @file{nextstep/INSTALL} +in the distribution. @cindex FAQ for Emacs on MS-Windows @cindex Emacs for MS-Windows @@ -3503,8 +3512,8 @@ There is a separate FAQ for Emacs on MS-Windows, @pxref{Top,,,efaq-w32,FAQ for Emacs on MS Windows}. @cindex GNUstep, Emacs for -Beginning with version 23.1, Emacs supports GNUstep natively. -See the file @file{nextstep/INSTALL} in the distribution. +Emacs supports GNUstep natively. See the file @file{nextstep/INSTALL} +in the distribution. @cindex MS-DOS, Emacs for @cindex DOS, Emacs for @@ -3720,9 +3729,10 @@ information is available from @cindex Keys, binding to commands @cindex Commands, binding keys to -Keys can be bound to commands either interactively or in your -@file{.emacs} file. To interactively bind keys for all modes, type -@kbd{M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}}. +Keys can be bound to commands either interactively or in your init +file (@pxref{Setting up a customization file}). To interactively bind +keys for all modes, type @kbd{M-x global-set-key @key{RET} @var{key} +@var{cmd} @key{RET}}. To bind a key just in the current major mode, type @kbd{M-x local-set-key @key{RET} @var{key} @var{cmd} @key{RET}}. @@ -3733,7 +3743,7 @@ To make the process of binding keys interactively easier, use the following ``trick'': First bind the key interactively, then immediately type @kbd{C-x @key{ESC} @key{ESC} C-a C-k C-g}. Now, the command needed to bind the key is in the kill ring, and can be yanked into your -@file{.emacs} file. If the key binding is global, no changes to the +init file. If the key binding is global, no changes to the command are required. For example, @lisp @@ -3741,9 +3751,9 @@ command are required. For example, @end lisp @noindent -can be placed directly into the @file{.emacs} file. If the key binding is -local, the command is used in conjunction with the @samp{add-hook} function. -For example, in TeX mode, a local binding might be +can be placed directly into your init file. If the key binding is +local, the command is used in conjunction with the @samp{add-hook} +function. For example, in TeX mode, a local binding might be @lisp (add-hook 'tex-mode-hook @@ -3801,14 +3811,15 @@ of these forms before attempting to bind the key sequence: @end lisp @node Terminal setup code works after Emacs has begun -@section Why doesn't this [terminal or window-system setup] code work in my @file{.emacs} file, but it works just fine after Emacs starts up? -@cindex Terminal setup code in @file{.emacs} +@section Why doesn't this [terminal or window-system setup] code work in my init file, but it works just fine after Emacs starts up? +@cindex Terminal setup code in init file -During startup, Emacs initializes itself according to a given code/file -order. If some of the code executed in your @file{.emacs} file needs to -be postponed until the initial terminal or window-system setup code has -been executed but is not, then you will experience this problem (this -code/file execution order is not enforced after startup). +During startup, Emacs initializes itself according to a given +code/file order. If some of the code executed in your init file +(@pxref{Setting up a customization file}) needs to be postponed until +the initial terminal or window-system setup code has been executed but +is not, then you will experience this problem (this code/file +execution order is not enforced after startup). To postpone the execution of Emacs Lisp code until after terminal or window-system setup, treat the code as a @dfn{lambda list} and add it to @@ -4229,8 +4240,7 @@ Emacs Manual}. For more sophisticated methods, @cindex bidirectional scripts Emacs supports display and editing of bidirectional scripts, such as -Arabic, Farsi, and Hebrew, since version 24.1. -@xref{New in Emacs 24, bidirectional display}. +Arabic, Farsi, and Hebrew. @node How to add fonts @@ -4258,7 +4268,8 @@ arrange for these two commands to run whenever you log in, e.g., by adding them to your window-system startup file, such as @file{~/.xsessionrc} or @file{~/.gnomerc}. -Now, add the following line to your @file{~/.emacs} init file: +Now, add the following line to your init file (@pxref{Setting up a +customization file}): @lisp (add-to-list 'bdf-directory-list "/usr/share/emacs/fonts/bdf") @@ -4268,15 +4279,15 @@ Now, add the following line to your @file{~/.emacs} init file: (Again, modify the file name if you installed the fonts elsewhere.) Finally, if you wish to use the installed fonts with @code{ps-print}, -add the following line to your @file{~/.emacs}: +add the following line to your init file: @lisp (setq ps-multibyte-buffer 'bdf-font-except-latin) @end lisp -You can now use the Emacs font menu to select the @samp{bdf: 16-dot medium} -fontset, or you can select it by setting the default font in your -@file{~/.emacs}: +You can now use the Emacs font menu to select the @samp{bdf: 16-dot +medium} fontset, or you can select it by setting the default font in +your init file: @lisp (set-frame-font "fontset-bdf") @@ -4338,9 +4349,9 @@ yourself by putting @end lisp @noindent -in your @file{.emacs} file. You can automatically include an @samp{FCC} -field by putting something like the following in your @file{.emacs} -file: +in your init file (@pxref{Setting up a customization file}). You can +automatically include an @samp{FCC} field by putting something like +the following in your init file: @lisp (setq mail-archive-file-name (expand-file-name "~/outgoing")) @@ -4372,8 +4383,7 @@ To expand them before this, use @kbd{M-x expand-mail-aliases}. Emacs normally only reads the @file{.mailrc} file once per session, when you start to compose your first mail message. If you edit the file after this, you can use @kbd{M-x build-mail-aliases} to make Emacs -reread it. Prior to Emacs 24.1, this is not an interactive command, so -you must instead type @kbd{M-: (build-mail-aliases) @key{RET}}. +reread it. @item If you like, you can expand mail aliases as abbrevs, as soon as you @@ -4471,7 +4481,7 @@ gnus @end example It is probably unwise to automatically start your mail or news reader -from your @file{.emacs} file. This would cause problems if you needed to run +from your init file. This would cause problems if you needed to run two copies of Emacs at the same time. Also, this would make it difficult for you to start Emacs quickly when you needed to. diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi index 640712edf33..5f4e1a639be 100644 --- a/doc/misc/emacs-mime.texi +++ b/doc/misc/emacs-mime.texi @@ -403,9 +403,9 @@ This selects the function used to render @acronym{HTML}. The predefined renderers are selected by the symbols @code{shr}, @code{gnus-w3m}, @code{w3m}@footnote{See @uref{http://emacs-w3m.namazu.org/} for more information about -emacs-w3m}, @code{links}, @code{lynx}, @code{w3m-standalone} or -@code{html2text}. You can also specify a function, which will be -called with a @acronym{MIME} handle as the argument. +emacs-w3m}, @code{links}, @code{lynx}, or @code{w3m-standalone}. You +can also specify a function, which will be called with a +@acronym{MIME} handle as the argument. @item mm-html-inhibit-images @vindex mm-html-inhibit-images diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index b9297738ea2..3db83197f9e 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -545,20 +545,27 @@ Non-interactively, it takes the following keyword arguments. @item @var{server} @item @var{port} @item @var{nick} +@item @var{user} @item @var{password} @item @var{full-name} +@item @var{id} @end itemize -That is, if called with the following arguments, @var{server} and -@var{full-name} will be set to those values, whereas -@code{erc-compute-port} and @code{erc-compute-nick} will be invoked -for the values of the other parameters. +For example, calling the command like so -@example +@example lisp (erc :server "irc.libera.chat" :full-name "J. Random Hacker") @end example + +@noindent +sets @var{server} and @var{full-name} directly while leaving the rest +up to functions like @code{erc-compute-port}. Note that some +arguments can't be specified interactively. @var{id}, in particular, +is rarely needed (@pxref{Network Identifier}). + @end defun +@noindent To connect securely over an encrypted TLS connection, use @kbd{M-x erc-tls}. @@ -570,21 +577,25 @@ Non-interactively, it takes the following keyword arguments. @item @var{server} @item @var{port} @item @var{nick} +@item @var{user} @item @var{password} @item @var{full-name} +@item @var{id} @item @var{client-certificate} @end itemize -That is, if called with the following arguments, @var{server} and -@var{full-name} will be set to those values, whereas -@code{erc-compute-port} and @code{erc-compute-nick} will be invoked -for the values of the other parameters, and @code{client-certificate} -will be @code{nil}. +That is, if called in the following manner -@example +@example lisp (erc-tls :server "irc.libera.chat" :full-name "J. Random Hacker") @end example +@noindent +the command will set @var{server} and @var{full-name} accordingly, +while helpers, like @code{erc-compute-nick}, will determine other +parameters, and some, like @code{client-certificate}, will just be +@code{nil}. + To use a certificate with @code{erc-tls}, specify the optional @var{client-certificate} keyword argument, whose value should be as described in the documentation of @code{open-network-stream}: if @@ -719,29 +730,139 @@ ERC should automatically attempt to connect with another nickname. You can manually set another nickname with the /NICK command. @end defopt +@subheading User +@defun erc-compute-user &optional user +Determine a suitable value to send as the first argument of the +opening @samp{USER} IRC command by consulting the following sources: + +@itemize +@item +@var{user}, the argument passed to this function +@item +The option @code{erc-email-userid}, assuming @code{erc-anonymous-login} +is non-@code{nil} +@item +The result of calling the function @code{user-login-name} +@end itemize + +@end defun + +@defopt erc-email-userid +A permanent username value to send for all connections. It should be +a string abiding by the rules of the network. +@end defopt + @subheading Password @cindex password @defopt erc-prompt-for-password -If non-@code{nil} (the default), @kbd{M-x erc} prompts for a password. +If non-@code{nil} (the default), @kbd{M-x erc} and @kbd{M-x erc-tls} +prompt for a server password. This only affects interactive +invocations of @code{erc} and @code{erc-tls}. @end defopt +@noindent If you prefer, you can set this option to @code{nil} and use the @code{auth-source} mechanism to store your password. For instance, if -you use @file{~/.authinfo} as your auth-source backend, then put +the option @code{auth-sources} contains @file{~/.authinfo}, put something like the following in that file: @example -machine irc.example.net login "#fsf" password sEcReT +machine irc.example.net login mynick password sEcReT @end example @noindent -ERC also consults @code{auth-source} to find any channel keys required -for the channels that you wish to autojoin, as specified by the -variable @code{erc-autojoin-channels-alist}. +For server passwords, that is, passwords sent for the IRC @samp{PASS} +command, the @samp{host} field (@w{@code{machine irc.example.net}} in +the above example) +corresponds to the @var{server} parameter used by @code{erc} and +@code{erc-tls}. Unfortunately, specifying a network, like +@samp{Libera.Chat}, or a specific network server, like +@samp{platinum.libera.chat}, won't normally work for looking up a server +password because such information isn't available during opening +introductions. (Actually, ERC @emph{can} find entries with arbitrary +@samp{host} values for any context, including server passwords, but +that requires customizing the more advanced options below.) -For more details, @pxref{Top,,auth-source, auth, Emacs auth-source Library}. +If ERC can't find a suitable server password, it will just skip the IRC +@samp{PASS} command altogether, something users may want when using +CertFP or engaging NickServ via ERC's ``services'' module. If that is +what you'd like to do, you can also customize the option +@code{erc-auth-source-server-function} to @code{nil} to skip +server-password lookup for all servers. Note that some networks and +IRCds may accept account-services authentication via server password +using the nonstandard @samp{mynick:sEcReT} convention. +As just mentioned, you can also use @code{auth-source} to authenticate +to account services the traditional way, through a bot called +@samp{NickServ}. To tell ERC to do that, set +@code{erc-use-auth-source-for-nickserv-password} to @code{t}. For +these and most other queries, entries featuring custom identifiers and +networks are matched first, followed by network-specific servers and +dialed endpoints (typically, the @var{server} argument passed to +@code{erc}). The following netrc-style entries appear in order of +precedence: + +@example +machine Libera/cellphone login MyNick password sEcReT +machine Libera.Chat login MyNick password sEcReT +machine zirconium.libera.chat login MyNick password sEcReT +machine irc.libera.chat login MyNick password sEcReT +@end example + +@noindent +Remember that field labels vary per backend, so @samp{machine} (in +netrc's case) maps to auth-source's generalized notion of a host, +hence the @samp{:host} keyword property. Also, be sure to mind the +syntax of your chosen backend medium. For example, always quote +channel names in a netrc file. + +If this all seems overly nuanced or just plain doesn't appeal to you, +see options @code{erc-auth-source-services-function} and friends, described +below. These let you query auth-source your way. Most users can +simply ignore the passed-in arguments and get by with something like +the following: + +@lisp +(defun my-fancy-auth-source-func (&rest _) + (let* ((host (read-string "host: " nil nil "default")) + (pass (auth-source-pick-first-password :host host))) + (if (and pass (string-search "libera" host)) + (concat "MyNick:" pass) + pass))) +@end lisp + +Lastly, ERC also consults @code{auth-source} to find ``keys'' that may +be required by certain channels you join. When modifying a +traditional @code{auth-source} entry for this purpose, put the channel +name in the @samp{user} field (for example, @samp{login "#fsf"}, in +netrc's case). The actual key goes in the @samp{password} (or +@samp{secret}) field. + +@noindent +For details, @pxref{Top,,auth-source, auth, Emacs auth-source Library}. + +@defopt erc-auth-source-server-function +@end defopt +@defopt erc-auth-source-services-function +@end defopt +@defopt erc-auth-source-join-function + +ERC calls these functions with keyword arguments recognized by +@code{auth-source-search}, namely, those deemed most relevant to the +current context, if any. For example, with NickServ queries, +@code{:user} is the ``desired'' nickname rather than the current one. +Generalized names, like @code{:user} and @code{:host}, are always used +over back-end specific ones, like @code{:login} or @code{:machine}. +ERC expects a string to use as the secret or nil, if the search fails. + +@findex erc-auth-source-search +The default value for all three options is the function +@code{erc-auth-source-search}. It tries to merge relevant contextual +parameters with those provided or discovered from the logical connection +or the underlying transport. Some auth-source back ends may not be +compatible; netrc, plstore, json, and secrets are currently supported. +@end defopt @subheading Full name @@ -752,10 +873,14 @@ This tries a number of increasingly more default methods until a non-@code{nil} value is found. @itemize @bullet -@item @var{full-name} (the argument passed to this function) -@item The @code{erc-user-full-name} option -@item The value of the IRCNAME environment variable -@item The result from the @code{user-full-name} function +@item +@var{full-name} (the argument passed to this function) +@item +The @code{erc-user-full-name} option +@item +The value of the IRCNAME environment variable +@item +The result from the @code{user-full-name} function @end itemize @end defun @@ -766,6 +891,31 @@ User full name. This can be either a string or a function to call. @end defopt + +@subheading ID +@anchor{Network Identifier} + +ERC uses an abstract designation, called @dfn{network context +identifier}, for referring to a connection internally. While normally +derived from a combination of logical and physical connection +parameters, an ID can also be explicitly provided via an entry-point +command (like @code{erc-tls}). Use this in rare situations where ERC +would otherwise have trouble discerning between connections. + +One such situation might arise when using multiple connections to the +same network with the same nick but different (nonstandard) @samp{device} +identifiers, which some bouncers may support. Another might be when +mimicking the experience offered by popular standalone clients, which +normally offer ``named'' persistent configurations with server buffers +reflecting those names. Yet another use case might involve +third-party code needing to identify a connection unequivocally, but in +a human-friendly way suitable for UI components. + +When providing an ID as an entry-point argument, strings and symbols +make the most sense, but any reasonably printable object is +acceptable. + + @node Sample Configuration @section Sample Configuration @cindex configuration, sample @@ -827,12 +977,6 @@ stuff, to the current ERC buffer." (setq erc-autojoin-channels-alist '(("Libera.Chat" "#emacs" "#erc"))) -;; Rename server buffers to reflect the current network name instead -;; of SERVER:PORT (e.g., "Libera.Chat" instead of -;; "irc.libera.chat:6667"). This is useful when using a bouncer like -;; ZNC where you have multiple connections to the same server. -(setq erc-rename-buffers t) - ;; Interpret mIRC-style color commands in IRC chats (setq erc-interpret-mirc-color t) @@ -891,15 +1035,6 @@ lurkers. The function @code{erc-lurker-p} determines whether a given nickname is considered a lurker. @end defopt -@defopt erc-rename-buffers -If non, @code{nil}, this will rename server buffers to reflect the -current network name instead of IP:PORT - -@example -(setq erc-rename-buffers t) -@end example -@end defopt - @node Getting Help and Reporting Bugs @chapter Getting Help and Reporting Bugs @cindex help, getting @@ -924,7 +1059,7 @@ contributors are frequently around and willing to answer your questions. @item -To report a bug in ERC, use @kbd{M-x report-emacs-bug}. +To report a bug in ERC, use @kbd{M-x erc-bug}. @end itemize diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi index 91288db45a2..1b7f38daadf 100644 --- a/doc/misc/ert.texi +++ b/doc/misc/ert.texi @@ -321,7 +321,7 @@ Show the list of @code{should} forms executed in the test @kindex m@r{, in ert results buffer} @findex ert-results-pop-to-messages-for-test-at-point Show any messages that were generated (with the Lisp function -@code{message}) in in a test or any of the code that it invoked +@code{message}) in a test or any of the code that it invoked (@code{ert-results-pop-to-messages-for-test-at-point}). @item L @@ -822,7 +822,7 @@ that's pretty difficult to read and write, especially when the text in question is multi-line. So ert provides a function called @code{ert-test-erts-file} that takes -two parameters: The name of a specially-formatted @dfn{erts} file, and +two parameters: the name of a specially-formatted @dfn{erts} file, and (optionally) a function that performs the transform. @findex erts-mode diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 85e5a4933fd..13f13163dd7 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -201,7 +201,7 @@ history and invoking commands in a script file. * Aliases:: * History:: * Completion:: -* for loop:: +* Control Flow:: * Scripts:: @end menu @@ -219,12 +219,18 @@ same name; if there is no match, it then tries to execute it as an external command. The semicolon (@code{;}) can be used to separate multiple command -invocations on a single line. A command invocation followed by an -ampersand (@code{&}) will be run in the background. Eshell has no job -control, so you can not suspend or background the current process, or -bring a background process into the foreground. That said, background -processes invoked from Eshell can be controlled the same way as any -other background process in Emacs. +invocations on a single line. You can also separate commands with +@code{&&} or @code{||}. When using @code{&&}, Eshell will execute the +second command only if the first succeeds (i.e.@: has an exit +status of 0); with @code{||}, Eshell will execute the second command +only if the first fails. + +A command invocation followed by an ampersand (@code{&}) will be run +in the background. Eshell has no job control, so you can not suspend +or background the current process, or bring a background process into +the foreground. That said, background processes invoked from Eshell +can be controlled the same way as any other background process in +Emacs. @node Arguments @section Arguments @@ -354,11 +360,11 @@ Giving the command @kbd{cd -} changes back to the previous working directory (this is the same as @kbd{cd $-}). @item -The command @kbd{cd =} shows the directory stack. Each line is +The command @kbd{cd =} shows the directory ring. Each line is numbered. @item -With @kbd{cd =foo}, Eshell searches the directory stack for a directory +With @kbd{cd =foo}, Eshell searches the directory ring for a directory matching the regular expression @samp{foo}, and changes to that directory. @@ -845,46 +851,77 @@ For example, you could handle a subset of the options for the @end defmac +@node Variables +@section Variables +Since Eshell is just an Emacs @acronym{REPL}@footnote{ +Short for ``Read-Eval-Print Loop''. +} +, it does not have its own scope, and simply stores variables the same +you would in an Elisp program. Eshell provides a command version of +@code{setq} for convenience. + @subsection Built-in variables Eshell knows a few built-in variables: @table @code -@item $+ +@vindex $PWD @vindex $+ +@item $PWD +@itemx $+ This variable always contains the current working directory. -@item $- +@vindex $OLDPWD @vindex $- +@item $OLDPWD +@itemx $- This variable always contains the previous working directory (the current working directory from before the last @code{cd} command). +When using @code{$-}, you can also access older directories in the +directory ring via subscripting, e.g.@: @samp{$-[1]} refers to the +working directory @emph{before} the previous one. -@item $_ @vindex $_ -It refers to the last argument of the last command. +@item $_ +This refers to the last argument of the last command. With a +subscript, you can access any argument of the last command. For +example, @samp{$_[1]} refers to the second argument of the last +command (excluding the command name itself). -@item $$ @vindex $$ -This is the result of the last command. In case of an external -command, it is @code{t} or @code{nil}. +@item $$ +This is the result of the last command. For external commands, it is +@code{t} if the exit code was 0 or @code{nil} otherwise. -@item $? +@vindex eshell-lisp-form-nil-is-failure @vindex $? -This variable contains the exit code of the last command (0 or 1 for -Lisp functions, based on successful completion). +@item $? +This variable contains the exit code of the last command. If the last +command was a Lisp function, it is 0 for successful completion or 1 +otherwise. If @code{eshell-lisp-form-nil-is-failure} is +non-@code{nil}, then a command with a Lisp form, like +@samp{(@var{command} @var{args}@dots{})}, that returns @code{nil} will +set this variable to 2. + +@vindex $COLUMNS +@vindex $LINES +@item $COLUMNS +@itemx $LINES +These variables tell the number of columns and lines, respectively, +that are currently visible in the Eshell window. They are both +copied to the environment, so external commands invoked from +Eshell can consult them to do the right thing. + +@item $INSIDE_EMACS +This variable indicates to external commands that they are being +invoked from within Emacs so they can adjust their behavior if +necessary. Its value is @code{@var{emacs-version},eshell}. @end table @xref{Aliases}, for the built-in variables @samp{$*}, @samp{$1}, @samp{$2}, @dots{}, in alias definitions. -@node Variables -@section Variables -Since Eshell is just an Emacs REPL@footnote{Read-Eval-Print Loop}, it -does not have its own scope, and simply stores variables the same you -would in an Elisp program. Eshell provides a command version of -@code{setq} for convenience. - @node Aliases @section Aliases @@ -981,19 +1018,46 @@ command for which this function provides completions; you can also name the function @code{pcomplete/MAJOR-MODE/COMMAND} to define completions for a specific major mode. -@node for loop -@section @code{for} loop +@node Control Flow +@section Control Flow Because Eshell commands can not (easily) be combined with lisp forms, -Eshell provides a command-oriented @command{for}-loop for convenience. -The syntax is as follows: +Eshell provides command-oriented control flow statements for +convenience. -@example -@code{for VAR in TOKENS @{ command invocation(s) @}} -@end example +Most of Eshell's control flow statements accept a @var{conditional}. +This can take a few different forms. If @var{conditional} is a dollar +expansion, the condition is satisfied if the result is a +non-@code{nil} value. If @var{conditional} is a @samp{@{ +@var{subcommand} @}} or @samp{(@var{lisp form})}, the condition is +satisfied if the command's exit status is 0. -where @samp{TOKENS} is a space-separated sequence of values of -@var{VAR} for each iteration. This can even be the output of a -command if @samp{TOKENS} is replaced with @samp{@{ command invocation @}}. +@table @code + +@item if @var{conditional} @{ @var{true-commands} @} +@itemx if @var{conditional} @{ @var{true-commands} @} @{ @var{false-commands} @} +Evaluate @var{true-commands} if @var{conditional} is satisfied; +otherwise, evaluate @var{false-commands}. + +@item unless @var{conditional} @{ @var{false-commands} @} +@itemx unless @var{conditional} @{ @var{false-commands} @} @{ @var{true-commands} @} +Evaluate @var{false-commands} if @var{conditional} is not satisfied; +otherwise, evaluate @var{true-commands}. + +@item while @var{conditional} @{ @var{commands} @} +Repeatedly evaluate @var{commands} so long as @var{conditional} is +satisfied. + +@item until @var{conditional} @{ @var{commands} @} +Repeatedly evaluate @var{commands} until @var{conditional} is +satisfied. + +@item for @var{var} in @var{list}@dots{} @{ @var{commands} @} +Iterate over each element of of @var{list}, storing the element in +@var{var} and evaluating @var{commands}. If @var{list} is not a list, +treat it as a list of one element. If you specify multiple +@var{lists}, this will iterate over each of them in turn. + +@end table @node Scripts @section Scripts @@ -1045,7 +1109,7 @@ back to a number as above). For example, @samp{$list("a" "b")c} returns @samp{("a" "bc")}. @item anything else -Concatenate the string represenation of each value. +Concatenate the string representation of each value. @end table @@ -1570,7 +1634,7 @@ integration: using the remote shell's pipelining avoids copying the data which will flow through the pipeline to local Emacs buffers and then right back again. -Eshell recognises a special syntax to make it easier to convert +Eshell recognizes a special syntax to make it easier to convert pipelines so as to bypass Eshell's pipelining. Prefixing at least one @code{|}, @code{<} or @code{>} with an asterisk marks a command as intended for the operating system shell. To make it harder to invoke @@ -1588,7 +1652,7 @@ nor the decoded data, into Emacs buffers, as would normally happen. The command is interpreted as extending up to the next @code{|} character which is not preceded by an unescaped asterisk following whitespace, or the end of the input if there is no such character. -Thus, all @code{<} and @code{>} redirections occuring before the next +Thus, all @code{<} and @code{>} redirections occurring before the next asterisk-unprefixed @code{|} are implicitly prefixed with (whitespace and) asterisks. An exception is that Eshell-specific redirects right at the end of the command are excluded. This allows input like this: @@ -1784,11 +1848,6 @@ scrolls back. @item Menu support was removed, but never put back -@item Using C-p and C-n with rebind gets into a locked state - -This happened a few times in Emacs 21, but has been irreproducible -since. - @item If an interactive process is currently running, @kbd{M-!} doesn't work @item Use a timer instead of @code{sleep-for} when killing child processes @@ -1902,11 +1961,6 @@ glob match. At the moment, this is not supported. -@item Error if a glob doesn't expand due to a predicate - -An error should be generated only if @code{eshell-error-if-no-glob} is -non-@code{nil}. - @item @samp{(+ @key{RET} @key{SPC} @key{TAB}} does not cause @code{indent-according-to-mode} to occur @item Create @code{eshell-auto-accumulate-list} @@ -2082,11 +2136,10 @@ it). @item Make the shell spawning commands be visual -That is, make (@command{su}, @command{bash}, @command{telnet}, -@command{rlogin}, @command{rsh}, etc.)@: be part of -@code{eshell-visual-commands}. The only exception is if the shell is -being used to invoke a single command. Then, the behavior should be -based on what that command is. +That is, make (@command{su}, @command{bash}, @command{ssh}, etc.)@: be +part of @code{eshell-visual-commands}. The only exception is if the +shell is being used to invoke a single command. Then, the behavior +should be based on what that command is. @item Create a smart viewing command named @command{open} diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi index 7fd5add67ea..0037ba78d3b 100644 --- a/doc/misc/eudc.texi +++ b/doc/misc/eudc.texi @@ -292,7 +292,7 @@ LDAP: (setopt eudc-server-hotlist '(("" . bbdb) ("ldaps://ldap.gnu.org" . ldap))) -(setopt 'ldap-host-parameters-alist +(setopt ldap-host-parameters-alist '(("ldaps://ldap.gnu.org" base "ou=people,dc=gnu,dc=org" binddn "gnu\\emacsuser" @@ -346,10 +346,10 @@ configure EUDC for LDAP: @lisp (with-eval-after-load "message" (define-key message-mode-map (kbd "TAB") 'eudc-expand-try-all)) -(setopt 'eudc-server-hotlist +(setopt eudc-server-hotlist '(("" . bbdb) ("ldaps://ldap.gnu.org" . ldap))) -(setopt 'ldap-host-parameters-alist +(setopt ldap-host-parameters-alist '(("ldaps://ldap.gnu.org" auth-source t))) @end lisp @@ -376,9 +376,9 @@ and the @file{.emacs} expressions become: @lisp (with-eval-after-load "message" (define-key message-mode-map (kbd "TAB") 'eudc-expand-try-all)) -(setopt 'eudc-server-hotlist +(setopt eudc-server-hotlist '(("" . bbdb) ("" . ldap))) -(setopt 'ldap-host-parameters-alist +(setopt ldap-host-parameters-alist '(("" auth-source t))) @end lisp @@ -423,11 +423,12 @@ all macOS versions since 10.0 (which was released 2001). configurations. @file{eudcb-mab.el} reverse engineers the format of the database file -used by the macOS Contacts app, and accesses its contents directly. -While this may promise some performance advantages, it comes at the -cost of using an undocumented interface. Hence, users of -@file{eudcb-mab.el} are recommended to double check the compatibility -of @file{eudcb-mab.el} before upgrading to a new version of macOS. +using the external command-line utility named contacts, which needs to +be installed separately. While this may promise some performance +advantages, it comes at the cost of using an undocumented interface. +Hence, users of @file{eudcb-mab.el} are recommended to double check +the compatibility of @file{eudcb-mab.el} and the required, external +command-line utility before upgrading to a new version of macOS. @file{eudcb-mab.el} is retained for backwards compatibility with existing configurations, and may be removed in a future release. diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi index f23180c1d4e..1060cd805ab 100644 --- a/doc/misc/eww.texi +++ b/doc/misc/eww.texi @@ -69,7 +69,7 @@ Indices @chapter Overview @dfn{EWW}, the Emacs Web Wowser, is a web browser for GNU Emacs. It can load, parse, and display various web pages using @dfn{shr.el}. -However a GNU Emacs with @code{libxml2} support is required. +However, a GNU Emacs with @code{libxml2} support is required. @node Basics @chapter Basic Usage @@ -213,7 +213,7 @@ switch EWW buffers through a minibuffer prompt, press @kbd{s} @cindex External Browser Although EWW and shr.el do their best to render webpages in GNU Emacs some websites use features which can not be properly represented -or are not implemented (E.g., JavaScript). If you have trouble +or are not implemented (e.g., JavaScript). If you have trouble viewing a website with EWW then hit @kbd{&} (@code{eww-browse-with-external-browser}) inside the EWW buffer to open the website in the external browser specified by diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi index 630aaa282ff..6d09fd4ec96 100644 --- a/doc/misc/gnus-faq.texi +++ b/doc/misc/gnus-faq.texi @@ -1,7 +1,7 @@ @c \input texinfo @c -*-texinfo-*- @c Uncomment 1st line before texing this file alone. @c %**start of header -@c Copyright (C) 1995, 2001--2022 Free Software Foundation, Inc. +@c Copyright (C) 1995--2022 Free Software Foundation, Inc. @c @c @setfilename gnus-faq.info @c @settitle Frequently Asked Questions @@ -13,7 +13,6 @@ @section Frequently Asked Questions @menu -* FAQ - Changes:: * FAQ - Introduction:: About Gnus and this FAQ. * FAQ 1 - Installation FAQ:: Installation of Gnus. * FAQ 2 - Startup / Group buffer:: Start up questions and the @@ -41,21 +40,6 @@ This is the new Gnus Frequently Asked Questions list. Please submit features and suggestions to the @email{ding@@gnus.org, ding list}. -@node FAQ - Changes -@subsection Changes - - - -@itemize @bullet - -@item -2008-06-15: Adjust for message-fill-column. Add x-face-file. -Clarify difference between ding and gnu.emacs.gnus. Remove -reference to discontinued service. - -@item -2006-04-15: Added tip on how to delete sent buffer on exit. -@end itemize @node FAQ - Introduction @subsection Introduction @@ -63,11 +47,11 @@ reference to discontinued service. This is the Gnus Frequently Asked Questions list. Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented -as a part of Emacs. It's been around in some form for almost a decade -now, and has been distributed as a standard part of Emacs for much of -that time. Gnus 5 is the latest (and greatest) incarnation. The +as a part of Emacs. It's been around in some form since the early +1990s, and has been distributed as a standard part of Emacs for much +of that time. Gnus 5 is the latest (and greatest) incarnation. The original version was called GNUS, and was written by Masanobu UMEDA@. -When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and +When autumn crept up in 1994, Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus. Its biggest strength is the fact that it is extremely @@ -84,11 +68,6 @@ would like to thank Steve Baur and Per Abrahamsen for doing a wonderful job with this FAQ before him. We would like to do the same: thanks, Justin! -This version is much nicer than the unofficial hypertext -versions that are archived at Utrecht, Oxford, Smart Pages, Ohio -State, and other FAQ archives. See the resources question below -if you want information on obtaining it in another format. - The information contained here was compiled with the assistance of the Gnus development mailing list, and any errors or misprints are the Gnus team's fault, sorry. @@ -98,11 +77,9 @@ misprints are the Gnus team's fault, sorry. @menu * FAQ 1-1:: What is the latest version of Gnus? -* FAQ 1-2:: What's new in 5.10? -* FAQ 1-3:: Where and how to get Gnus? -* FAQ 1-4:: I sometimes read references to No Gnus and Oort Gnus, +* FAQ 1-2:: Where and how to get Gnus? +* FAQ 1-3:: I sometimes read references to No Gnus and Oort Gnus, what are those? -* FAQ 1-5:: Which version of Emacs do I need? @end menu @node FAQ 1-1 @@ -112,80 +89,28 @@ What is the latest version of Gnus? @subsubheading Answer -Jingle please: Gnus 5.10 is released, get it while it's -hot! As well as the step in version number is rather -small, Gnus 5.10 has tons of new features which you -shouldn't miss. The current release (5.13) should be at -least as stable as the latest release of the 5.8 series. +The latest version of Gnus is bundled with Emacs. @node FAQ 1-2 @subsubheading Question 1.2 -What's new in 5.10? - -@subsubheading Answer - -First of all, you should have a look into the file -GNUS-NEWS in the toplevel directory of the Gnus tarball, -there the most important changes are listed. Here's a -short list of the changes I find especially -important/interesting: - -@itemize @bullet - -@item -Major rewrite of the Gnus agent, Gnus agent is now -active by default. - -@item -Many new article washing functions for dealing with -ugly formatted articles. - -@item -Anti Spam features. - -@item -Message-utils now included in Gnus. - -@item -New format specifiers for summary lines, e.g., %B for -a complex trn-style thread tree. -@end itemize - -@node FAQ 1-3 -@subsubheading Question 1.3 - Where and how to get Gnus? @subsubheading Answer Gnus is bundled with Emacs. -@node FAQ 1-4 -@subsubheading Question 1.4 +@node FAQ 1-3 +@subsubheading Question 1.3 I sometimes read references to No Gnus and Oort Gnus, what are those? @subsubheading Answer -Oort Gnus was the name of the development version of -Gnus, which became Gnus 5.10 in autumn 2003. No Gnus is -the name of the current development version which will -once become Gnus 5.12 or Gnus 6. (If you're wondering why -not 5.11, the odd version numbers are normally used for -the Gnus versions bundled with Emacs) - -@node FAQ 1-5 -@subsubheading Question 1.5 - -Which version of Emacs do I need? - -@subsubheading Answer - -Gnus 5.13 requires an Emacs version that is greater than or equal -to Emacs 23.1, although there are some features that -only work on Emacs 24. +Oort Gnus was the name of the development version of Gnus, which +became Gnus 5.10 in autumn 2003. No Gnus was the name of the +development version that became Gnus 5.12. @node FAQ 2 - Startup / Group buffer @subsection Startup / Group buffer @@ -718,9 +643,8 @@ in @file{~/.gnus.el} to load enough old articles to prevent teared threads, repl all articles (Warning: Both settings enlarge the amount of data which is fetched when you enter a group and slow down the process of entering a group). -If you already use Gnus 5.10, you can say -@samp{/o N} -In summary buffer to load the last N messages, this feature is not available in 5.8.8 +You can say @samp{/o N} in the summary buffer to load the last N +messages. If you don't want all old messages, but the parent of the message you're just reading, you can say @samp{^}, if you want to retrieve the whole thread @@ -820,11 +744,10 @@ Can I use some other browser than w3m to render my HTML-mails? @subsubheading Answer -Only if you use Gnus 5.10 or younger. In this case you've got the -choice between shr, w3m, links, lynx and html2text, which -one is used can be specified in the variable -mm-text-html-renderer, so if you want links to render your -mail say +You've got the choice between @samp{shr}, @samp{w3m}, @samp{links}, +and @samp{lynx}. Which one is used is specified in the variable +@code{mm-text-html-renderer}, so if you want links to render your +mail, say: @example (setq mm-text-html-renderer 'links) @@ -847,8 +770,7 @@ long lines'' (@samp{W w}), ``Decode ROT13'' the dumb quoting used by many users of Microsoft products (@samp{W Y f} gives you full deuglify. See @samp{W Y C-h} or have a look at the menus for -other deuglifications). Outlook deuglify is only available since -Gnus 5.10. +other deuglifications). @node FAQ 4-9 @subsubheading Question 4.9 @@ -1038,7 +960,7 @@ you'll find useful things like positioning the cursor and tabulators which allow you a summary in table form, but sadly hard tabulators are broken in 5.8.8. -Since 5.10, Gnus offers you some very nice new specifiers, +Gnus offers you some very nice new specifiers, e.g., %B which draws a thread-tree and %&user-date which gives you a date where the details are dependent of the articles age. Here's an example which uses both: @@ -1245,7 +1167,7 @@ How to set stuff like From, Organization, Reply-To, signature...? @subsubheading Answer There are other ways, but you should use posting styles -for this. (See below why). +for this. (See below why.) This example should make the syntax clear: @example @@ -1329,19 +1251,14 @@ Is there a spell-checker? Perhaps even on-the-fly spell-checking? @subsubheading Answer -You can use ispell.el to spell-check stuff in Emacs. So the -first thing to do is to make sure that you've got either -@uref{https://www.cs.hmc.edu/~geoff/ispell.html, ispell} -or @uref{http://aspell.net, aspell} -installed and in your Path. Then you need -ispell.el -and for on-the-fly spell-checking -@uref{https://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}. -Ispell.el is shipped with Emacs, -flyspell.el is shipped with Emacs, so there should be no need to install them -manually. +You can use ispell.el to spell-check stuff in Emacs, and flyspell.el +for on-the-fly spell-checking. So the first thing to do is to make +sure that you've got either +@uref{https://hunspell.github.io/, hunspell}, +@uref{https://www.cs.hmc.edu/~geoff/ispell.html, ispell} or +@uref{http://aspell.net, aspell} installed and in your Path. -Ispell.el assumes you use ispell, if you choose aspell say +Ispell.el assumes you use ispell. If you use aspell say @example (setq ispell-program-name "aspell") @@ -1494,14 +1411,14 @@ Now you only have to tell Gnus to include the X-face in your postings by saying @end example @noindent -in @file{~/.gnus.el}. If you use Gnus 5.10, you can simply add an entry +in @file{~/.gnus.el}. You can add an entry @example (x-face-file "~/.xface") @end example @noindent -to gnus-posting-styles. +to @code{gnus-posting-styles}. @node FAQ 5-9 @subsubheading Question 5.9 @@ -1519,21 +1436,6 @@ Put this in @file{~/.gnus.el}: @end example @noindent -if you already use Gnus 5.10, if you still use 5.8.8 or -5.9 try this instead: - -@example -(with-eval-after-load "gnus-msg" - (unless (boundp 'gnus-confirm-mail-reply-to-news) - (defadvice gnus-summary-reply (around reply-in-news activate) - "Request confirmation when replying to news." - (interactive) - (when (or (not (gnus-news-group-p gnus-newsgroup-name)) - (y-or-n-p "Really reply by mail to article author?")) - ad-do-it)))) -@end example -@noindent - @node FAQ 5-10 @subsubheading Question 5.10 @@ -1541,14 +1443,7 @@ How to tell Gnus not to generate a sender header? @subsubheading Answer -Since 5.10 Gnus doesn't generate a sender header by -default. For older Gnus' try this in @file{~/.gnus.el}: - -@example -(with-eval-after-load "message" - (add-to-list 'message-syntax-checks '(sender . disabled))) -@end example -@noindent +Gnus doesn't generate a sender header by default. @node FAQ 5-11 @subsubheading Question 5.11 @@ -1729,7 +1624,7 @@ more then one article." You can now say @samp{M-x my-archive-article} in summary buffer to archive the article under the cursor in a nnml -group. (Change nnml to your preferred back end) +group. (Change nnml to your preferred back end.) Of course you can also make sure the cache is enabled by saying @@ -1756,7 +1651,7 @@ if you found the posting there, tell Google to display the raw message, look for the message-id, and say @samp{M-^ the@@message.id @key{RET}} in a summary buffer. -Since Gnus 5.10 there's also a Gnus interface for +There's a Gnus interface for groups.google.com which you can call with @samp{G W}) in group buffer. @@ -1770,25 +1665,6 @@ instead. Further on there are the gnus-summary-limit-to-foo functions, which can help you, too. -Of course you can also use grep to search through your -local mail, but this is both slow for big archives and -inconvenient since you are not displaying the found mail -in Gnus. Here nnir comes into action. Nnir is a front end -to search engines like swish-e or swish++ and -others. You index your mail with one of those search -engines and with the help of nnir you can search through -the indexed mail and generate a temporary group with all -messages which met your search criteria. If this sounds -cool to you, get nnir.el from -@c FIXME Isn't this file in Gnus? -@ignore -@c Dead link 2013/7. -@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/} -or -@end ignore -@uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}. -Instructions on how to use it are at the top of the file. - @node FAQ 6-4 @subsubheading Question 6.4 @@ -1937,16 +1813,9 @@ So what was this thing about the Agent? The Gnus agent is part of Gnus, it allows you to fetch mail and news and store them on disk for reading them later when you're offline. It kind of mimics offline -newsreaders like Forte Agent. If you want to use -the Agent place the following in @file{~/.gnus.el} if you are -still using 5.8.8 or 5.9 (it's the default since 5.10): +newsreaders like Forte Agent. It is enabled by default. -@example -(setq gnus-agent t) -@end example -@noindent - -Now you've got to select the servers whose groups can be +You've got to select the servers whose groups can be stored locally. To do this, open the server buffer (that is press @samp{^} while in the group buffer). Now select a server by moving point to @@ -2051,10 +1920,9 @@ I can't find anything in the Gnus manual about X @subsubheading Answer There's not only the Gnus manual but also the manuals for message, -emacs-mime, sieve, EasyPG Assistant, and pgg. Those packages are -distributed with Gnus and used by Gnus but aren't really part of core -Gnus, so they are documented in different info files, you should have -a look in those manuals, too. +emacs-mime, sieve, and EasyPG Assistant. Those packages are +distributed with Emacs and used by Gnus. They are documented in +separate info files, so you should have a look in those manuals, too. @node FAQ 8-3 @subsubheading Question 8.3 @@ -2161,42 +2029,19 @@ How to speed up the process of entering a group? @subsubheading Answer -A speed killer is setting the variable -gnus-fetch-old-headers to anything different from @code{nil}, -so don't do this if speed is an issue. To speed up -building of summary say +A speed killer is setting the variable @code{gnus-fetch-old-headers} +to anything different from @code{nil}, so don't do this if speed is an +issue. -@example -(gnus-compile) -@end example -@noindent - -at the bottom of your @file{~/.gnus.el}, this will make gnus -byte-compile things like -gnus-summary-line-format. -then you could increase the value of gc-cons-threshold -by saying something like +You could increase the value of @code{gc-cons-threshold} by saying +something like: @example (setq gc-cons-threshold 3500000) @end example @noindent -in ~/.emacs. If you don't care about width of CJK -characters or use Gnus 5.10 or younger together with a -recent GNU Emacs, you should say - -@example -(setq gnus-use-correct-string-widths nil) -@end example -@noindent - -in @file{~/.gnus.el} (thanks to Jesper harder for the last -two suggestions). Finally if you are still using 5.8.8 -or 5.9 and experience speed problems with summary -buffer generation, you definitely should update to -5.10 since there quite some work on improving it has -been done. +in ~/.emacs. @node FAQ 9-3 @subsubheading Question 9.3 @@ -2227,10 +2072,6 @@ between core Gnus and the real NNTP-, POP3-, IMAP- or whatever-server which offers Gnus a standardized interface to functions like "get message", "get Headers" etc. -@item Emacs -When the term Emacs is used in this FAQ, it means GNU -Emacs. - @item Message In this FAQ message means either a mail or a posting to a Usenet Newsgroup or to some other fancy back end, no matter diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index a0be13dac88..738ff94b9fc 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -883,10 +883,7 @@ History * Gnus Versions:: What Gnus versions have been released. * Why?:: What's the point of Gnus? -* Compatibility:: Just how compatible is Gnus with @sc{gnus}? * Conformity:: Gnus tries to conform to all standards. -* Emacsen:: Gnus can be run on a few modern Emacsen. -* Gnus Development:: How Gnus is developed. * Contributors:: Oodles of people. * New Features:: Pointers to some of the new stuff in Gnus. @@ -1806,8 +1803,7 @@ long as Gnus is active. @end menu You can customize the Group Mode tool bar, see @kbd{M-x -customize-apropos @key{RET} gnus-group-tool-bar}. This feature is only -available in Emacs. +customize-apropos @key{RET} gnus-group-tool-bar}. The tool bar icons are now (de)activated correctly depending on the cursor position. Therefore, moving around in the Group Buffer is @@ -4839,8 +4835,7 @@ group buffer (@pxref{Selecting a Group}). You can have as many summary buffers open as you wish. You can customize the Summary Mode tool bar, see @kbd{M-x -customize-apropos @key{RET} gnus-summary-tool-bar}. This feature is only -available in Emacs. +customize-apropos @key{RET} gnus-summary-tool-bar}. @kindex v @r{(Summary)} @cindex keys, reserved for users (Summary) @@ -5070,7 +5065,7 @@ Opening bracket for adopted articles. The default is @samp{<}. @item ] Closing bracket, which is normally @samp{]}, but can also be @samp{>} -for adopted articles. This can be customised using following settings: +for adopted articles. This can be customized using following settings: @table @code @item gnus-sum-closing-bracket @@ -8621,14 +8616,6 @@ uuencoded files that have had trailing spaces deleted. @vindex gnus-uu-pre-uudecode-hook Hook run before sending a message to @code{uudecode}. -@item gnus-uu-view-with-metamail -@vindex gnus-uu-view-with-metamail -@cindex metamail -Non-@code{nil} means that @code{gnus-uu} will ignore the viewing -commands defined by the rule variables and just fudge a @acronym{MIME} -content type based on the file name. The result will be fed to -@code{metamail} for viewing. - @item gnus-uu-save-in-digest @vindex gnus-uu-save-in-digest Non-@code{nil} means that @code{gnus-uu}, when asked to save without @@ -9359,14 +9346,11 @@ Use @uref{http://emacs-w3m.namazu.org/, emacs-w3m}. Use @uref{http://w3m.sourceforge.net/, w3m}. @item links -Use @uref{https://almende.github.io/chap-links-library/, CHAP Links}. +Use @uref{http://links.twibright.com/, Links}. @item lynx Use @uref{https://lynx.browser.org/, Lynx}. -@item html2text -Use html2text---a simple @acronym{HTML} converter included with Gnus. - @end table @item W D F @@ -11576,8 +11560,8 @@ things to work: To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to install an OpenPGP implementation such as GnuPG@. The Lisp interface to GnuPG included with Emacs is called EasyPG (@pxref{Top, ,EasyPG, -epa, EasyPG Assistant user's manual}), but PGG (@pxref{Top, ,PGG, pgg, -PGG Manual}), and Mailcrypt are also supported. +epa, EasyPG Assistant user's manual}), but Mailcrypt is also +supported. @item To handle @acronym{S/MIME} message, you need to install OpenSSL@. OpenSSL 0.9.6 @@ -11615,18 +11599,16 @@ public-key matching the @samp{From:} header as the recipient; @item mml1991-use @vindex mml1991-use Symbol indicating elisp interface to OpenPGP implementation for -@acronym{PGP} messages. The default is @code{epg}, but @code{pgg}, -and @code{mailcrypt} are also supported although -deprecated. By default, Gnus uses the first available interface in -this order. +@acronym{PGP} messages. The default is @code{epg}, but +@code{mailcrypt} is also supported although deprecated. By default, +Gnus uses the first available interface in this order. @item mml2015-use @vindex mml2015-use Symbol indicating elisp interface to OpenPGP implementation for @acronym{PGP/MIME} messages. The default is @code{epg}, but -@code{pgg}, and @code{mailcrypt} are also supported -although deprecated. By default, Gnus uses the first available -interface in this order. +@code{mailcrypt} is also supported although deprecated. By default, +Gnus uses the first available interface in this order. @end table @@ -15440,8 +15422,6 @@ files. If a positive number, delete files older than number of days (the deletion will only happen when receiving new mail). You may also set @code{mail-source-delete-incoming} to @code{nil} and call @code{mail-source-delete-old-incoming} from a hook or interactively. -@code{mail-source-delete-incoming} defaults to @code{10} in alpha Gnusae -and @code{2} in released Gnusae. @xref{Gnus Development}. @item mail-source-delete-old-incoming-confirm @vindex mail-source-delete-old-incoming-confirm @@ -17357,11 +17337,6 @@ changes to a wiki (e.g., @url{https://cliki.net/site/recent-changes}). @acronym{RSS} has a quite regular and nice interface, and it's possible to get the information Gnus needs to keep groups updated. -Note: you had better use Emacs which supports the @code{utf-8} coding -system because @acronym{RSS} uses UTF-8 for encoding non-@acronym{ASCII} -text by default. It is also used by default for non-@acronym{ASCII} -group names. - @kindex G R @r{(Group)} Use @kbd{G R} from the group buffer to subscribe to a feed---you will be prompted for the location, the title and the description of the feed. @@ -17410,7 +17385,7 @@ The directory where @code{nnrss} stores its files. The default is @vindex nnrss-file-coding-system The coding system used when reading and writing the @code{nnrss} groups data files. The default is the value of -@code{mm-universal-coding-system} (which defaults to @code{emacs-mule}). +@code{mm-universal-coding-system} (which defaults to @code{utf-8-emacs}). @item nnrss-ignore-article-fields @vindex nnrss-ignore-article-fields @@ -17518,16 +17493,16 @@ If you have a directory that has lots of articles in separate files in it, you might treat it as a newsgroup. The files have to have numerical names, of course. -This might be an opportune moment to mention @code{ange-ftp} (and its -successor @code{efs}), that most wonderful of all wonderful Emacs -packages. When I wrote @code{nndir}, I didn't think much about it---a -back end to read directories. Big deal. +This might be an opportune moment to mention @code{ange-ftp}, that +most wonderful of all wonderful Emacs packages. When I wrote +@code{nndir}, I didn't think much about it---a back end to read +directories. Big deal. @code{ange-ftp} changes that picture dramatically. For instance, if you enter the @code{ange-ftp} file name @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name, -@code{ange-ftp} or @code{efs} will actually allow you to read this -directory over at @samp{sina} as a newsgroup. Distributed news ahoy! +@code{ange-ftp} will actually allow you to read this directory over at +@samp{sina} as a newsgroup. Distributed news ahoy! @code{nndir} will use @acronym{NOV} files if they are present. @@ -21962,7 +21937,7 @@ you can set up a local @acronym{IMAP} server, which you then access via @code{nnimap}. This is a rather massive setup for accessing some mbox files, so just change to MH or Maildir already... However, if you're really, really passionate about using mbox, you might want to look into -the package @file{mairix.el}, which comes with Emacs 23. +the package @file{mairix.el}, which comes with Emacs. @node What nnmairix does @subsection What nnmairix does @@ -24216,8 +24191,7 @@ people have started putting nonsense addresses into their @code{From} lines. I think this is counterproductive---it makes it difficult for people to send you legitimate mail in response to things you write, as well as making it difficult to see who wrote what. This rewriting may -perhaps be a bigger menace than the unsolicited commercial email itself -in the end. +perhaps be a bigger menace than the spam itself in the end. The biggest problem I have with email spam is that it comes in under false pretenses. I press @kbd{g} and Gnus merrily informs me that I @@ -24243,33 +24217,13 @@ This is annoying. Here's what you can do about it. @cindex UCE @cindex unsolicited commercial email -First, some background on spam. - -If you have access to e-mail, you are familiar with spam (technically -termed @acronym{UCE}, Unsolicited Commercial E-mail). Simply put, it -exists because e-mail delivery is very cheap compared to paper mail, -so only a very small percentage of people need to respond to an UCE to -make it worthwhile to the advertiser. Ironically, one of the most -common spams is the one offering a database of e-mail addresses for -further spamming. Senders of spam are usually called @emph{spammers}, -but terms like @emph{vermin}, @emph{scum}, @emph{sociopaths}, and -@emph{morons} are in common use as well. - Spam comes from a wide variety of sources. It is simply impossible to -dispose of all spam without discarding useful messages. A good -example is the TMDA system, which requires senders -unknown to you to confirm themselves as legitimate senders before -their e-mail can reach you. Without getting into the technical side -of TMDA, a downside is clearly that e-mail from legitimate sources may -be discarded if those sources can't or won't confirm themselves -through the TMDA system. Another problem with TMDA is that it -requires its users to have a basic understanding of e-mail delivery -and processing. +dispose of all spam without discarding useful messages. The simplest approach to filtering spam is filtering, at the mail server or when you sort through incoming mail. If you get 200 spam -messages per day from @samp{random-address@@vmadmin.com}, you block -@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you +messages per day from @samp{random-address@@example.org}, you block +@samp{example.org}. If you get 200 messages about @samp{VIAGRA}, you discard all messages with @samp{VIAGRA} in the message. If you get lots of spam from Bulgaria, for example, you try to filter all mail from Bulgarian IPs. @@ -24380,7 +24334,7 @@ In my experience, this will sort virtually everything into the right group. You still have to check the @samp{spam} group from time to time to check for legitimate mail, though. If you feel like being a good net citizen, you can even send off complaints to the proper authorities on -each unsolicited commercial email---at your leisure. +each spam---at your leisure. This works for me. It allows people an easy way to contact me (they can just press @kbd{r} in the usual way), and I'm not bothered at all with @@ -24396,8 +24350,8 @@ Be careful with this approach. Spammers are wise to it. @cindex Vipul's Razor @cindex DCC -The days where the hints in the previous section were sufficient in -avoiding spam are coming to an end. There are many tools out there +The days where the hints in the previous section were sufficient to +avoid spam are over. There are many tools out there that claim to reduce the amount of spam you get. This section could easily become outdated fast, as new products replace old, but fortunately most of these tools seem to have similar interfaces. Even @@ -24478,7 +24432,7 @@ spam. And here is the nifty function: @subsection Hashcash @cindex hashcash -A novel technique to fight spam is to require senders to do something +One technique to fight spam is to require senders to do something costly and demonstrably unique for each message they send. This has the obvious drawback that you cannot rely on everyone in the world using this technique, since it is not part of the Internet standards, @@ -25135,8 +25089,8 @@ The @code{gnus-article-sort-by-chars} entry simplifies detection of false positives for me. I receive lots of worms (sweN, @dots{}), that all have a similar size. Grouping them by size (i.e., chars) makes finding other false positives easier. (Of course worms aren't @i{spam} -(@acronym{UCE}, @acronym{UBE}) strictly speaking. Anyhow, bogofilter is -an excellent tool for filtering those unwanted mails for me.) +strictly speaking. Anyhow, bogofilter is an excellent tool for +filtering those unwanted mails for me.) @item @b{Ham folders:} @@ -26778,7 +26732,7 @@ on finding a separator line between the head and the body. If this variable is @code{nil}, there is no upper read bound. If it is @code{t}, the back ends won't try to read the articles piece by piece, but read the entire articles. This makes sense with some versions of -@code{ange-ftp} or @code{efs}. +@code{ange-ftp}. @item nnheader-head-chop-length @vindex nnheader-head-chop-length @@ -26917,10 +26871,7 @@ renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. @menu * Gnus Versions:: What Gnus versions have been released. * Why?:: What's the point of Gnus? -* Compatibility:: Just how compatible is Gnus with @sc{gnus}? * Conformity:: Gnus tries to conform to all standards. -* Emacsen:: Gnus can be run on a few modern Emacsen. -* Gnus Development:: How Gnus is developed. * Contributors:: Oodles of people. * New Features:: Pointers to some of the new stuff in Gnus. @end menu @@ -27000,71 +26951,6 @@ every one of you to explore and invent. May Gnus never be complete. @kbd{C-u 100 M-x all-hail-emacs}. -@node Compatibility -@subsection Compatibility - -@cindex compatibility -Gnus was designed to be fully compatible with @sc{gnus}. Almost all key -bindings have been kept. More key bindings have been added, of course, -but only in one or two obscure cases have old bindings been changed. - -Our motto is: -@quotation -@cartouche -@center In a cloud bones of steel. -@end cartouche -@end quotation - -All commands have kept their names. Some internal functions have changed -their names. - -The @code{gnus-uu} package has changed drastically. @xref{Decoding -Articles}. - -One major compatibility question is the presence of several summary -buffers. All variables relevant while reading a group are -buffer-local to the summary buffer they belong in. Although many -important variables have their values copied into their global -counterparts whenever a command is executed in the summary buffer, this -change might lead to incorrect values being used unless you are careful. - -All code that relies on knowledge of @sc{gnus} internals will probably -fail. To take two examples: Sorting @code{gnus-newsrc-alist} (or -changing it in any way, as a matter of fact) is strictly verboten. Gnus -maintains a hash table that points to the entries in this alist (which -speeds up many functions), and changing the alist directly will lead to -peculiar results. - -@cindex hilit19 -@cindex highlighting -Old hilit19 code does not work at all. In fact, you should probably -remove all hilit code from all Gnus hooks -(@code{gnus-group-prepare-hook} and @code{gnus-summary-prepare-hook}). -Gnus provides various integrated functions for highlighting. These are -faster and more accurate. To make life easier for everybody, Gnus will -by default remove all hilit calls from all hilit hooks. Uncleanliness! -Away! - -Packages like @code{expire-kill} will no longer work. As a matter of -fact, you should probably remove all old @sc{gnus} packages (and other -code) when you start using Gnus. More likely than not, Gnus already -does what you have written code to make @sc{gnus} do. (Snicker.) - -Even though old methods of doing things are still supported, only the -new methods are documented in this manual. If you detect a new method of -doing something while reading this manual, that does not mean you have -to stop doing it the old way. - -Gnus understands all @sc{gnus} startup files. - -@findex gnus-bug -@cindex reporting bugs -@cindex bugs -Overall, a casual user who hasn't written much code that depends on -@sc{gnus} internals should suffer no problems. If problems occur, -please let me know by issuing that magic command @kbd{M-x gnus-bug}. - - @node Conformity @subsection Conformity @@ -27147,79 +27033,6 @@ mentioned above, don't hesitate to drop a note to Gnus Towers and let us know. -@node Emacsen -@subsection Emacsen -@cindex Emacsen -@cindex Mule -@cindex Emacs - -This version of Gnus should work on: - -@itemize @bullet - -@item -Emacs 23.1 and up. - -@end itemize - -This Gnus version will absolutely not work on any Emacsen older than -that. Not reliably, at least. Older versions of Gnus may work on older -Emacs versions. Particularly, Gnus 5.10.8 should also work on Emacs -20.7. - -@c No-merge comment: The paragraph added in v5-10 here must not be -@c synced here! - -@node Gnus Development -@subsection Gnus Development - -Gnus is developed in a two-phased cycle. The first phase involves much -discussion on the development mailing list @samp{ding@@gnus.org}, where people -propose changes and new features, post patches and new back ends. This -phase is called the @dfn{alpha} phase, since the Gnusae released in this -phase are @dfn{alpha releases}, or (perhaps more commonly in other -circles) @dfn{snapshots}. During this phase, Gnus is assumed to be -unstable and should not be used by casual users. Gnus alpha releases -have names like ``Oort Gnus'' and ``No Gnus''. @xref{Gnus Versions}. - -After futzing around for 10--100 alpha releases, Gnus is declared -@dfn{frozen}, and only bug fixes are applied. Gnus loses the prefix, -and is called things like ``Gnus 5.10.1'' instead. Normal people are -supposed to be able to use these, and these are mostly discussed on the -@samp{gnu.emacs.gnus} newsgroup. This newgroup is mirrored to the -mailing list @samp{info-gnus-english@@gnu.org} which is carried on Gmane -as @samp{gmane.emacs.gnus.user}. These releases are finally integrated -in Emacs. - -@cindex Incoming* -@vindex mail-source-delete-incoming -Some variable defaults differ between alpha Gnusae and released Gnusae, -in particular, @code{mail-source-delete-incoming}. This is to prevent -lossage of mail if an alpha release hiccups while handling the mail. -@xref{Mail Source Customization}. - -The division of discussion between the ding mailing list and the Gnus -newsgroup is not purely based on publicity concerns. It's true that -having people write about the horrible things that an alpha Gnus release -can do (sometimes) in a public forum may scare people off, but more -importantly, talking about new experimental features that have been -introduced may confuse casual users. New features are frequently -introduced, fiddled with, and judged to be found wanting, and then -either discarded or totally rewritten. People reading the mailing list -usually keep up with these rapid changes, while people on the newsgroup -can't be assumed to do so. - -So if you have problems with or questions about the alpha versions, -direct those to the ding mailing list @samp{ding@@gnus.org}. This list -is also available on Gmane as @samp{gmane.emacs.gnus.general}. - -@cindex Incoming* -@vindex mail-source-delete-incoming -Some variable defaults differ between alpha Gnusae and released Gnusae, -in particular, @code{mail-source-delete-incoming}. This is to prevent -lossage of mail if an alpha release hiccups while handling the mail. -@xref{Mail Source Customization}. - @node Contributors @subsection Contributors @cindex contributors @@ -29796,19 +29609,6 @@ Ahem. @item Make sure your computer is switched on. -@item -Make sure that you really load the current Gnus version. If you have -been running @sc{gnus}, you need to exit Emacs and start it up again before -Gnus will work. - -@item -Try doing an @kbd{M-x gnus-version}. If you get something that looks -like @c -@samp{Gnus v5.13} @c Adjust ../Makefile.in if you change this line! -@c -you have the right files loaded. Otherwise you have some old @file{.el} -files lying around. Delete these. - @item Read the help group (@kbd{G h} in the group buffer) for a @acronym{FAQ} and a how-to. @@ -29817,7 +29617,7 @@ Read the help group (@kbd{G h} in the group buffer) for a @vindex max-lisp-eval-depth Gnus works on many recursive structures, and in some extreme (and very rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at -you. If this happens to you, set @code{max-lisp-eval-depth} to 500 or +you. If this happens to you, set @code{max-lisp-eval-depth} to 2000 or something like that. @end enumerate @@ -29828,10 +29628,9 @@ If all else fails, report the problem as a bug. @findex gnus-bug If you find a bug in Gnus, you can report it with the @kbd{M-x -gnus-bug} command. @kbd{M-x set-variable @key{RET} debug-on-error -@key{RET} t @key{RET}}, and send me the backtrace. I will fix bugs, -but I can only fix them if you send me a precise description as to how -to reproduce the bug. +gnus-bug} command. @kbd{M-x toggle-debug-on-error}, and send me the +backtrace. I will fix bugs, but I can only fix them if you send me a +precise description as to how to reproduce the bug. You really can never be too detailed in a bug report. Always use the @kbd{M-x gnus-bug} command when you make bug reports, even if it creates @@ -29862,7 +29661,7 @@ edebug. Debugging Lisp code is documented in the Elisp manual (@pxref{Debugging, , Debugging Lisp Programs, elisp, The GNU Emacs Lisp Reference Manual}). To get you started with edebug, consider if you discover some weird behavior when pressing @kbd{c}, the first -step is to do @kbd{C-h k c} and click on the hyperlink (Emacs only) in +step is to do @kbd{C-h k c} and click on the hyperlink in the documentation buffer that leads you to the function definition, then press @kbd{M-x edebug-defun @key{RET}} with point inside that function, return to Gnus and press @kbd{c} to invoke the code. You will be @@ -29874,7 +29673,7 @@ evaluate expressions using @kbd{M-:} or inspect variables using @cindex elp @cindex profile @cindex slow -Sometimes, a problem do not directly generate an elisp error but +Sometimes, a problem do not directly generate an Emacs Lisp error but manifests itself by causing Gnus to be very slow. In these cases, you can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are slow, and then try to analyze the backtrace (repeating the procedure diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index 0ab000b70f1..dabe2e36ff4 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -10,8 +10,7 @@ This manual documents Htmlfontify, a source code -> crosslinked + formatted + syntax colorized html transformer. -Copyright @copyright{} 2002--2003, 2013--2022 Free Software Foundation, -Inc. +Copyright @copyright{} 2002--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -34,7 +33,7 @@ modify this GNU manual.'' @titlepage @title Htmlfontify User Manual @sp 4 -@subtitle Htmlfontify version 0.20 +@subtitle Htmlfontify version 0.21 @sp 1 @subtitle Jun 2002 @sp 5 @@ -1539,13 +1538,6 @@ Htmlfontify has a couple of external requirements: @itemize @bullet -@item -GNU Emacs 20.7+ or 21.1+ - -Other versions may work---these have been used successfully by the -author. If you intend to use Htmlfontify in batch mode, 21.1+ is -pretty much required. - @item A copy of etags (exuberant-ctags or GNU etags). Htmlfontify attempts to autodetect the version you have and customize itself accordingly, diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index 26a6e6c7a33..0ba87b2e58b 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi @@ -217,7 +217,7 @@ Integrity checks and auto-termination of logical blocks. @item Routine name space conflict search with likelihood-of-use ranking. @item -Support for @file{imenu} (Emacs) and @file{func-menu} (XEmacs). +Support for @file{imenu}. @item Documentation support. @item @@ -392,7 +392,7 @@ that IDLWAVE has many more capabilities than covered here, which can be discovered by reading the entire manual, or hovering over the shoulder of your nearest IDLWAVE guru for a few days. -It is assumed that you have access to Emacs or XEmacs with the full +It is assumed that you have access to Emacs with the full IDLWAVE package including online help. We also assume that you are familiar with Emacs and can read the nomenclature of key presses in Emacs (in particular, @kbd{C} stands for @key{CONTROL} and @kbd{M} for @@ -1011,9 +1011,9 @@ Non-@code{nil} means use last match on line for @cindex Font lock Highlighting of keywords, comments, strings etc.@: can be accomplished -with @code{font-lock}. If you are using @code{global-font-lock-mode} -(in Emacs), or have @code{font-lock} turned on in any other buffer in -XEmacs, it should also automatically work in IDLWAVE buffers. If you'd +with @code{font-lock}. If you are using @code{global-font-lock-mode}, +or have @code{font-lock-mode} turned on in any other buffer, +it should also automatically work in IDLWAVE buffers. If you'd prefer invoking font-lock individually by mode, you can enforce it in @code{idlwave-mode} with the following line in your @file{.emacs}: @@ -2298,12 +2298,11 @@ Regexp matching the start of a document library header. @cindex Motion commands @cindex Program structure, moving through @cindex Code structure, moving through -@cindex @file{Func-menu}, XEmacs package -@cindex @file{Imenu}, Emacs package +@cindex @file{Imenu} @cindex Function definitions, jumping to @cindex Procedure definitions, jumping to -IDLWAVE supports both @file{Imenu} and @file{Func-menu}, two packages +IDLWAVE supports @file{Imenu}, a package which make it easy to jump to the definitions of functions and procedures in the current file with a pop-up selection. To bind @file{Imenu} to a mouse-press, use in your @file{.emacs}: @@ -4022,7 +4021,7 @@ user is King! IDLWAVE was developed on a UNIX system. However, thanks to the portability of Emacs, much of IDLWAVE does also work under different -operating systems like Windows (with NTEmacs or NTXEmacs). +operating systems like Windows (with NTEmacs). The only real problem is that there is no command-line version of IDL for Windows with which IDLWAVE can interact. As a @@ -4117,24 +4116,6 @@ configuration files (e.g., @file{.cshrc}), but from the file @file{~/.MacOSX/environment.plist}. Either include your path settings there, or start Emacs and IDLWAVE from the shell. -@item @strong{I get errors like @samp{Symbol's function is void: -overlayp}} - -You don't have the @samp{fsf-compat} package installed, which IDLWAVE -needs to run under XEmacs. Install it, or find an XEmacs distribution -which includes it by default. - -@item @strong{I'm getting errors like @samp{Symbol's value as variable is void: -cl-builtin-gethash} on completion or routine info.} - -This error arises if you upgraded Emacs from 20.x to 21.x without -re-installing IDLWAVE@. Old Emacs and new Emacs are not byte-compatible -in compiled lisp files. Presumably, you kept the original .elc files in -place, and this is the source of the error. If you recompile (or just -"make; make install") from source, it should resolve this problem. -Another option is to recompile the @file{idlw*.el} files by hand using -@kbd{M-x byte-compile-file}. - @item @strong{@kbd{M-@key{TAB}} doesn't complete words, it switches windows on my desktop.} @@ -4262,20 +4243,6 @@ is updated). Starting with IDL 6.2, the HTML help and its catalog are distributed with IDL, and so should never be inconsistent. -@item @strong{I get errors such as @samp{void-variable -browse-url-browser-function} or similar when attempting to load IDLWAVE -under XEmacs.} - -You don't have the @samp{browse-url} (or other required) XEmacs package. -Unlike Emacs, XEmacs distributes many packages separately from the -main program. IDLWAVE is actually among these, but is not always the -most up to date. When installing IDLWAVE as an XEmacs package, it -should prompt you for required additional packages. When installing it -from source, it won't and you'll get this error. The easiest solution -is to install all the packages when you install XEmacs (the so-called -@samp{sumo} bundle). The minimum set of XEmacs packages required by -IDLWAVE is @samp{fsf-compat, xemacs-base, mail-lib}. - @end enumerate @node GNU Free Documentation License diff --git a/doc/misc/message.texi b/doc/misc/message.texi index 29fbdfe1786..6a6beb7a1ff 100644 --- a/doc/misc/message.texi +++ b/doc/misc/message.texi @@ -1152,12 +1152,11 @@ programs are required to make things work, and some small general hints. @uref{https://www.gnupg.org/, GNU Privacy Guard} or @uref{https://www.openssl.org/, OpenSSL}. The default Emacs interface to the S/MIME implementation is EasyPG (@pxref{Top,,EasyPG Assistant -User's Manual, epa, EasyPG Assistant User's Manual}), which has been -included in Emacs since version 23 and which relies on the command -line tool @command{gpgsm} provided by @acronym{GnuPG}. That tool -implements certificate management, including certificate revocation -and expiry, while such tasks need to be performed manually, if OpenSSL -is used. +User's Manual, epa, EasyPG Assistant User's Manual}), which is +included in Emacs and relies on the command line tool @command{gpgsm} +provided by @acronym{GnuPG}. That tool implements certificate +management, including certificate revocation and expiry, while such +tasks need to be performed manually, if OpenSSL is used. The choice between EasyPG and OpenSSL is controlled by the variable @code{mml-smime-use}, which needs to be set to the value @code{epg} @@ -1250,8 +1249,8 @@ as @uref{https://www.gnupg.org/, GNU Privacy Guard}. Pre-OpenPGP implementations such as PGP 2.x and PGP 5.x are also supported. The default Emacs interface to the PGP implementation is EasyPG (@pxref{Top,,EasyPG Assistant User's Manual, epa, EasyPG Assistant -User's Manual}), but PGG (@pxref{Top, ,PGG, pgg, PGG Manual}) and -Mailcrypt are also supported. @xref{PGP Compatibility}. +User's Manual}), but Mailcrypt is also supported. @xref{PGP +Compatibility}. As stated earlier, messages encrypted with OpenPGP can be formatted according to two different standards, namely @acronym{PGP} or @@ -1340,8 +1339,7 @@ your PGP implementation, so we refer to it. If you have imported your old PGP 2.x key into GnuPG, and want to send signed and encrypted messages to your fellow PGP 2.x users, you'll discover that the receiver cannot understand what you send. One -solution is to use PGP 2.x instead (e.g., if you use @code{pgg}, set -@code{pgg-default-scheme} to @code{pgp}). You could also convince your +solution is to use PGP 2.x instead. You could also convince your fellow PGP 2.x users to convert to GnuPG@. @vindex mml-signencrypt-style-alist As a final workaround, you can make the sign and encryption work in diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi index c1cf44a0272..2106c674f37 100644 --- a/doc/misc/mh-e.texi +++ b/doc/misc/mh-e.texi @@ -213,10 +213,8 @@ more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of them. The MH-E package is distributed with Emacs@footnote{Version -@value{VERSION} of MH-E appeared in Emacs 24.4. It is supported in GNU -Emacs 23 and higher, as well as XEmacs 21.4.22 and 21.5.31. MH-E is -known not to work with GNU Emacs versions 20 and below, and XEmacs -version 21.5.9--21.5.16. It is compatible with MH versions 6.8.4 and +@value{VERSION} of MH-E appeared in Emacs 24.4. +It is compatible with MH versions 6.8.4 and higher, all versions of nmh, and GNU mailutils 1.0 and higher}, so you shouldn't have to do anything special to use it. Gnus is also required; version 5.10 or higher is recommended. This manual covers @@ -1490,7 +1488,7 @@ Binding} of @samp{m}. @cindex Unix commands, @command{xbuffy} You can use @command{xbuffy} to automate the incorporation of this -mail using the Emacs 23 command @command{emacsclient} as follows: +mail using the Emacs command @command{emacsclient} as follows: @smallexample box ~/mail/mh-e @@ -1501,9 +1499,6 @@ box ~/mail/mh-e command emacsclient --eval '(mh-inc-spool-mh-e)' @end smallexample -In XEmacs, the command @command{gnuclient} is used in a similar -fashion. - @findex mh-inc-folder @kindex i @vindex mh-inc-folder-hook @@ -2090,8 +2085,7 @@ and @samp{X-Image-URL:} will be used. The option This feature will be turned on by default if your system supports it. The first header field used, if present, is the Gnus-specific -@samp{Face:} field@footnote{The @samp{Face:} field appeared in GNU -Emacs 21 and XEmacs. For more information, see +@samp{Face:} field@footnote{For more information, see @uref{https://quimby.gnus.org/circus/face/}.}. @cindex @command{uncompface} @@ -2104,12 +2098,9 @@ Emacs 21 and XEmacs. For more information, see Next is the traditional @samp{X-Face:} header field@footnote{The display of this field requires the @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z, -@command{uncompface} program}. Recent versions of XEmacs have internal -support for @samp{X-Face:} images. If your version of XEmacs does not, -then you'll need both @command{uncompface} and the -@uref{http://www.jpl.org/ftp/pub/elisp/, @samp{x-face} package}.}. MH-E -renders the foreground and background of the image using the -associated attributes of the face @code{mh-show-xface}. +@command{uncompface} program}.} MH-E renders the foreground and +background of the image using the associated attributes of the face +@code{mh-show-xface}. @cindex @command{convert} @cindex @command{wget} @@ -2562,13 +2553,6 @@ produces pretty nice output, and it highlights links. It renders @samp{–} and @samp{®} okay. It sometimes fails to wrap lines properly. It always downloads remote images. @c ------------------------- -@cindex browser, @samp{html2text} -@cindex @samp{html2text} -@item @samp{html2text} -The @samp{html2text} browser requires an external program. Some users -have reported problems with it, such as filling the entire message as -if it were one paragraph, or displaying chunks of raw HTML. -@c ------------------------- @cindex browser, @samp{links} @cindex @samp{links} @item @samp{links} @@ -2830,24 +2814,6 @@ The appearance of the buttons is controlled by the faces @code{mh-show-pgg-unknown} depending on the validity of the signature. The latter is used whether the signature is unknown or untrusted. -@cindex @samp{pgg} customization group -@cindex PGG -@cindex customization group, @samp{pgg} - -The @samp{pgg} customization group may have some settings which may -interest you. -@iftex -See @cite{The PGG Manual}. -@end iftex -@ifinfo -@xref{Top, , The PGG Manual, pgg, The PGG Manual}. -@end ifinfo -@ifhtml -See -@uref{https://www.gnu.org/software/emacs/manual/pgg.html, -@cite{The PGG Manual}}. -@end ifhtml - @node Printing @section Printing Your Mail @@ -5594,33 +5560,6 @@ variety of mail security mechanisms. The default is @samp{PGP (MIME)} if it is supported; otherwise, the default is @samp{None}. Other mechanisms include vanilla @samp{PGP} and @samp{S/MIME}. -@cindex @samp{pgg} customization group -@cindex PGG -@cindex customization group, @samp{pgg} - -The @samp{pgg} customization group may have some settings which may -interest you. -@iftex -See @cite{The PGG Manual}. -@end iftex -@ifinfo -@xref{Top, , The PGG Manual, pgg, The PGG Manual}. -@end ifinfo -@ifhtml -See -@uref{https://www.gnu.org/software/emacs/manual/pgg.html, -@cite{The PGG Manual}}. -@end ifhtml - -@cindex header field, @samp{Fcc} -@cindex @samp{Fcc} header field -@vindex pgg-encrypt-for-me - -In particular, I turn on the option @code{pgg-encrypt-for-me} so that -all messages I encrypt are encrypted with my public key as well. If -you keep a copy of all of your outgoing mail with a @samp{Fcc:} header -field, this setting is vital so that you can read the mail you write! - @node Checking Recipients @section Checking Recipients @@ -6448,17 +6387,9 @@ too long to list here). @item mh-tool-bar-search-function Function called by the tool bar search button (default: @code{mh-search}). -@c ------------------------- -@item mh-xemacs-tool-bar-position -Tool bar location (default: @samp{Same As Default Tool Bar}). -@c ------------------------- -@item mh-xemacs-use-tool-bar-flag -If @samp{on}, use tool bar (default: @samp{on}, if supported). @end vtable -In GNU Emacs, icons for some of MH-E's functions are added to the tool -bar. In XEmacs, you have the opportunity to create a separate tool bar for -the MH-E icons. +Icons for some of MH-E's functions are added to the tool bar. @vindex mh-tool-bar-folder-buttons @vindex mh-tool-bar-letter-buttons @@ -6480,24 +6411,6 @@ option @code{mh-tool-bar-search-function}. By default, this is set to Function} from the @samp{Value Menu} and enter a function of your own choosing. -@vindex mh-xemacs-use-tool-bar-flag - -XEmacs provides a couple of extra options. The first, -@code{mh-xemacs-use-tool-bar-flag}, controls whether to show the MH-E -icons at all. By default, this option is turned on if the window -system supports tool bars. If your system doesn't support tool bars, -then you won't be able to turn on this option. - -@vindex mh-xemacs-tool-bar-position - -The second extra option is @code{mh-xemacs-tool-bar-position} which -controls the placement of the tool bar along the four edges of the -frame. You can choose from one of @samp{Same As Default Tool Bar}, -@samp{Top}, @samp{Bottom}, @samp{Left}, or @samp{Right}. If this -variable is set to anything other than @samp{Same As Default Tool Bar} -and the default tool bar is in a different location, then two tool -bars will be displayed: the MH-E tool bar and the default tool bar. - @node Searching @chapter Searching Through Messages diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index 7b566f51c26..1b4bf88a0cc 100644 --- a/doc/misc/modus-themes.org +++ b/doc/misc/modus-themes.org @@ -1,25 +1,23 @@ -#+title: Modus themes for GNU Emacs -#+author: Protesilaos Stavrou -#+email: info@protesilaos.com -#+language: en -#+options: ':t toc:nil author:t email:t num:t -#+startup: content - -#+macro: stable-version 2.4.0 -#+macro: release-date 2022-06-01 -#+macro: development-version 2.5.0-dev -#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ -#+macro: space @@texinfo:@: @@ -#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ - -#+texinfo_filename: modus-themes.info -#+texinfo_dir_category: Emacs misc features -#+texinfo_dir_title: Modus Themes: (modus-themes) -#+texinfo_dir_desc: Elegant, highly legible and customizable themes -#+texinfo_header: @set MAINTAINERSITE @uref{https://protesilaos.com,maintainer webpage} -#+texinfo_header: @set MAINTAINER Protesilaos Stavrou -#+texinfo_header: @set MAINTAINEREMAIL @email{info@protesilaos.com} -#+texinfo_header: @set MAINTAINERCONTACT @uref{mailto:info@protesilaos.com,contact the maintainer} +#+title: Modus themes for GNU Emacs +#+author: Protesilaos Stavrou +#+email: info@protesilaos.com +#+language: en +#+options: ':t toc:nil author:t email:t num:t +#+startup: content +#+macro: stable-version 2.6.0 +#+macro: release-date 2022-08-19 +#+macro: development-version 2.7.0-dev +#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ +#+macro: space @@texinfo:@: @@ +#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ +#+texinfo_filename: modus-themes.info +#+texinfo_dir_category: Emacs misc features +#+texinfo_dir_title: Modus Themes: (modus-themes) +#+texinfo_dir_desc: Elegant, highly legible and customizable themes +#+texinfo_header: @set MAINTAINERSITE @uref{https://protesilaos.com,maintainer webpage} +#+texinfo_header: @set MAINTAINER Protesilaos Stavrou +#+texinfo_header: @set MAINTAINEREMAIL @email{info@protesilaos.com} +#+texinfo_header: @set MAINTAINERCONTACT @uref{mailto:info@protesilaos.com,contact the maintainer} #+texinfo: @insertcopying @@ -198,6 +196,9 @@ sudo apt install elpa-modus-themes They are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]. +NOTE that Debian's package is severely out-of-date as of this writing +2022-07-24 09:57 +0300. + *** GNU Guix :properties: :custom_id: h:a4ca52cd-869f-46a5-9e16-4d9665f5b88e @@ -360,7 +361,7 @@ package configurations in their setup. We use this as an example: :config ;; Load the theme of your choice: (load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi) - :bind ("" . modus-themes-toggle) + :bind ("" . modus-themes-toggle)) @@ -618,7 +619,7 @@ By default, customizing a theme-related user option through the Custom interfaces or with {{{kbd(M-x customize-set-variable)}}} will not reload the currently active Modus theme. -Enable this behaviour by setting this variable to ~nil~. +Enable this behavior by setting this variable to ~nil~. Regardless of this option, the active theme must be reloaded for changes to user options to take effect ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]). @@ -1199,7 +1200,7 @@ Brief: Set the overall style of completion framework interfaces. Symbol: ~modus-themes-completions~ (=alist= type properties) -This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy, Mct, +This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy, Orderless, Selectrum, Vertico. The value is an alist that takes the form of a =(key . properties)= combination. Here is a sample, followed by a description of the particularities: @@ -1252,7 +1253,7 @@ accepts is as follows (order is not significant): The ~popup~ key takes the same values as ~selection~. -Apart from specfying each key separately, a fallback list is accepted. +Apart from specifying each key separately, a fallback list is accepted. This is only useful when the desired aesthetic is the same across all keys that are not explicitly referenced. For example, this: @@ -1476,6 +1477,9 @@ with underlines. This style affects several packages that enable ~hl-line-mode~, such as =elfeed=, =notmuch=, and =mu4e=. +[ Also check the =lin= package on GNU ELPA (by the author of the + modus-themes) for a stylistic enhancement to ~hl-line-mode~. ] + ** Option for line numbers :properties: :alt_title: Line numbers @@ -2000,16 +2004,21 @@ Putting it all together, the alist can look like this: :end: #+vindex: modus-themes-headings -Brief: Control the style of headings. This can be particularised for -each level of heading (e.g. Org has eight levels). +Brief: Heading styles with optional list of values for levels 0-8. Symbol: ~modus-themes-headings~ (=alist= type, multiple properties) -This is an alist that accepts a =(key . list-of-values)= combination. The -key is either a number, representing the heading's level or ~t~, which -pertains to the fallback style. The list of values covers symbols that -refer to properties, as described below. Here is a sample, followed by -a presentation of all available properties: +This is an alist that accepts a =(key . list-of-values)= combination. +The key is either a number, representing the heading's level (0-8) or t, +which pertains to the fallback style. + +Level 0 is a special heading: it is used for what counts as a document +title or equivalent, such as the =#+title= construct we find in Org +files. Levels 1-8 are regular headings. + +The list of values covers symbols that refer to properties, as described +below. Here is a complete sample, followed by a presentation of all +available properties: #+begin_src emacs-lisp (setq modus-themes-headings @@ -2162,7 +2171,7 @@ things with precision ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization This section is of interest only to users who are prepared to maintain their own local tweaks and who are willing to deal with any possible incompatibilities between versioned releases of the themes. As such, -they are labelled as "do-it-yourself" or "DIY". +they are labeled as "do-it-yourself" or "DIY". ** More accurate colors in terminal emulators :PROPERTIES: @@ -2605,7 +2614,7 @@ this example: Whenever we enter a ~diff-mode~ buffer, we now get a magenta-colored region. -Perhaps you may wish to generalise those findings in to a set of +Perhaps you may wish to generalize those findings in to a set of functions that also accept an arbitrary face. We shall leave the experimentation up to you. @@ -2624,8 +2633,7 @@ contrast on an on-demand basis. One way to achieve this is to design a command that cycles through three distinct levels of intensity, though the following can be adapted to any -kind of cyclic behaviour, such as to switch between red, green, and -blue. +kind of cyclic behavior, such as to switch between red, green, and blue. In the following example, we employ the ~modus-themes-color~ function which reads a symbol that represents an entry in the active theme's @@ -2848,7 +2856,6 @@ both themes and expands to some more assosiations in the palette: (bg-inactive . "#f6ece5") (bg-region . "#c6bab1") (bg-header . "#ede3e0") - (bg-tab-bar . "#dcd3d3") (bg-tab-active . "#fdf6eb") (bg-tab-inactive . "#c8bab8")) modus-themes-vivendi-color-overrides @@ -2860,7 +2867,6 @@ both themes and expands to some more assosiations in the palette: (bg-inactive . "#1a1e39") (bg-region . "#393a53") (bg-header . "#202037") - (bg-tab-bar . "#262b41") (bg-tab-active . "#120f18") (bg-tab-inactive . "#3a3a5a"))) (setq modus-themes-operandi-color-overrides nil @@ -2879,7 +2885,6 @@ look like this: (bg-inactive . "#e6e6e6") (bg-region . "#b5b5b5") (bg-header . "#e4e4e4") - (bg-tab-bar . "#d1d1d4") (bg-tab-active . "#f5f5f5") (bg-tab-inactive . "#c0c0c0")) #+end_src @@ -2897,6 +2902,9 @@ fall below the minimum 7:1 contrast ratio that governs the design of the themes (the WCAG AAA legibility standard). Alternatively, this can also be done programmatically ([[#h:4589acdc-2505-41fc-9f5e-699cfc45ab00][Override color saturation]]). +The above are expanded into a fully fledged derivative elsewhere in this +document ([[#h:736c0ff5-8c9c-4565-82cf-989e57d07d4a][Override colors completely]]). + For manual interventions it is advised to inspect the source code of ~modus-themes-operandi-colors~ and ~modus-themes-vivendi-colors~ for the inline commentary: it explains what the intended use of each palette @@ -3092,6 +3100,286 @@ Blend background colors with BG-BLEND and foreground colors with FG-BLEND." (modus-themes-tinted-mode 1) #+end_src +** Override colors completely +:PROPERTIES: +:CUSTOM_ID: h:736c0ff5-8c9c-4565-82cf-989e57d07d4a +:END: + +Based on the ideas we have already covered in these sections, the +following code block provides a complete, bespoke pair of color palettes +which override the defaults. They are implemented as a minor mode, as +explained before ([[#h:307d95dd-8dbd-4ece-a543-10ae86f155a6][Override colors]]). We call them "Summertime" for +convenience. + +#+begin_src emacs-lisp +;; Read the relevant blog post: +;; +(define-minor-mode modus-themes-summertime + "Refashion the Modus themes by overriding their colors. + +This is a complete technology demonstration to show how to +manually override the colors of the Modus themes. I have taken +good care of those overrides to make them work as a fully fledged +color scheme that is compatible with all user options of the +Modus themes. + +These overrides are usable by those who (i) like something more +fancy than the comparatively austere looks of the Modus themes, +and (ii) can cope with a lower contrast ratio. + +The overrides are set up as a minor mode, so that the user can +activate the effect on demand. Those who want to load the +overrides at all times can either add them directly to their +configuration or enable `modus-themes-summertime' BEFORE loading +either of the Modus themes (if the overrides are evaluated after +the theme, the theme must be reloaded). + +Remember that all changes to theme-related variables require a +reload of the theme to take effect (the Modus themes have lots of +user options, apart from those overrides). + +The `modus-themes-summertime' IS NOT an official extension to the +Modus themes and DOES NOT comply with its lofty accessibility +standards. It is included in the official manual as guidance for +those who want to make use of the color overriding facility we +provide." + :init-value nil + :global t + (if modus-themes-summertime + (setq modus-themes-operandi-color-overrides + '((bg-main . "#fff0f2") + (bg-dim . "#fbe6ef") + (bg-alt . "#f5dae6") + (bg-hl-line . "#fad8e3") + (bg-active . "#efcadf") + (bg-inactive . "#f3ddef") + (bg-active-accent . "#ffbbef") + (bg-region . "#dfc5d1") + (bg-region-accent . "#efbfef") + (bg-region-accent-subtle . "#ffd6ef") + (bg-header . "#edd3e0") + (bg-tab-active . "#ffeff2") + (bg-tab-inactive . "#f8d3ef") + (bg-tab-inactive-accent . "#ffd9f5") + (bg-tab-inactive-alt . "#e5c0d5") + (bg-tab-inactive-alt-accent . "#f3cce0") + (fg-main . "#543f78") + (fg-dim . "#5f476f") + (fg-alt . "#7f6f99") + (fg-unfocused . "#8f6f9f") + (fg-active . "#563068") + (fg-inactive . "#8a5698") + (fg-docstring . "#5f5fa7") + (fg-comment-yellow . "#a9534f") + (fg-escape-char-construct . "#8b207f") + (fg-escape-char-backslash . "#a06d00") + (bg-special-cold . "#d3e0f4") + (bg-special-faint-cold . "#e0efff") + (bg-special-mild . "#c4ede0") + (bg-special-faint-mild . "#e0f0ea") + (bg-special-warm . "#efd0c4") + (bg-special-faint-warm . "#ffe4da") + (bg-special-calm . "#f0d3ea") + (bg-special-faint-calm . "#fadff9") + (fg-special-cold . "#405fb8") + (fg-special-mild . "#407f74") + (fg-special-warm . "#9d6f4f") + (fg-special-calm . "#af509f") + (bg-completion . "#ffc5e5") + (bg-completion-subtle . "#f7cfef") + (red . "#ed2f44") + (red-alt . "#e0403d") + (red-alt-other . "#e04059") + (red-faint . "#ed4f44") + (red-alt-faint . "#e0603d") + (red-alt-other-faint . "#e06059") + (green . "#217a3c") + (green-alt . "#417a1c") + (green-alt-other . "#006f3c") + (green-faint . "#318a4c") + (green-alt-faint . "#518a2c") + (green-alt-other-faint . "#20885c") + (yellow . "#b06202") + (yellow-alt . "#a95642") + (yellow-alt-other . "#a06f42") + (yellow-faint . "#b07232") + (yellow-alt-faint . "#a96642") + (yellow-alt-other-faint . "#a08042") + (blue . "#275ccf") + (blue-alt . "#475cc0") + (blue-alt-other . "#3340ef") + (blue-faint . "#476ce0") + (blue-alt-faint . "#575ccf") + (blue-alt-other-faint . "#3f60d7") + (magenta . "#bf317f") + (magenta-alt . "#d033c0") + (magenta-alt-other . "#844fe4") + (magenta-faint . "#bf517f") + (magenta-alt-faint . "#d053c0") + (magenta-alt-other-faint . "#846fe4") + (cyan . "#007a9f") + (cyan-alt . "#3f709f") + (cyan-alt-other . "#107f7f") + (cyan-faint . "#108aaf") + (cyan-alt-faint . "#3f80af") + (cyan-alt-other-faint . "#3088af") + (red-active . "#cd2f44") + (green-active . "#116a6c") + (yellow-active . "#993602") + (blue-active . "#475ccf") + (magenta-active . "#7f2ccf") + (cyan-active . "#007a8f") + (red-nuanced-bg . "#ffdbd0") + (red-nuanced-fg . "#ed6f74") + (green-nuanced-bg . "#dcf0dd") + (green-nuanced-fg . "#3f9a4c") + (yellow-nuanced-bg . "#fff3aa") + (yellow-nuanced-fg . "#b47232") + (blue-nuanced-bg . "#e3e3ff") + (blue-nuanced-fg . "#201f6f") + (magenta-nuanced-bg . "#fdd0ff") + (magenta-nuanced-fg . "#c0527f") + (cyan-nuanced-bg . "#dbefff") + (cyan-nuanced-fg . "#0f3f60") + (bg-diff-heading . "#b7cfe0") + (fg-diff-heading . "#041645") + (bg-diff-added . "#d6f0d6") + (fg-diff-added . "#004520") + (bg-diff-changed . "#fcefcf") + (fg-diff-changed . "#524200") + (bg-diff-removed . "#ffe0ef") + (fg-diff-removed . "#891626") + (bg-diff-refine-added . "#84cfa4") + (fg-diff-refine-added . "#002a00") + (bg-diff-refine-changed . "#cccf8f") + (fg-diff-refine-changed . "#302010") + (bg-diff-refine-removed . "#da92b0") + (fg-diff-refine-removed . "#500010") + (bg-diff-focus-added . "#a6e5c6") + (fg-diff-focus-added . "#002c00") + (bg-diff-focus-changed . "#ecdfbf") + (fg-diff-focus-changed . "#392900") + (bg-diff-focus-removed . "#efbbcf") + (fg-diff-focus-removed . "#5a0010")) + modus-themes-vivendi-color-overrides + '((bg-main . "#25152a") + (bg-dim . "#2a1930") + (bg-alt . "#382443") + (bg-hl-line . "#332650") + (bg-active . "#463358") + (bg-inactive . "#2d1f3a") + (bg-active-accent . "#50308f") + (bg-region . "#5d4a67") + (bg-region-accent . "#60509f") + (bg-region-accent-subtle . "#3f285f") + (bg-header . "#3a2543") + (bg-tab-active . "#26162f") + (bg-tab-inactive . "#362647") + (bg-tab-inactive-accent . "#36265a") + (bg-tab-inactive-alt . "#3e2f5a") + (bg-tab-inactive-alt-accent . "#3e2f6f") + (fg-main . "#debfe0") + (fg-dim . "#d0b0da") + (fg-alt . "#ae85af") + (fg-unfocused . "#8e7f9f") + (fg-active . "#cfbfef") + (fg-inactive . "#b0a0c0") + (fg-docstring . "#c8d9f7") + (fg-comment-yellow . "#cf9a70") + (fg-escape-char-construct . "#ff75aa") + (fg-escape-char-backslash . "#dbab40") + (bg-special-cold . "#2a3f58") + (bg-special-faint-cold . "#1e283f") + (bg-special-mild . "#0f3f31") + (bg-special-faint-mild . "#0f281f") + (bg-special-warm . "#44331f") + (bg-special-faint-warm . "#372213") + (bg-special-calm . "#4a314f") + (bg-special-faint-calm . "#3a223f") + (fg-special-cold . "#c0b0ff") + (fg-special-mild . "#bfe0cf") + (fg-special-warm . "#edc0a6") + (fg-special-calm . "#ff9fdf") + (bg-completion . "#502d70") + (bg-completion-subtle . "#451d65") + (red . "#ff5f6f") + (red-alt . "#ff8f6d") + (red-alt-other . "#ff6f9d") + (red-faint . "#ffa0a0") + (red-alt-faint . "#f5aa80") + (red-alt-other-faint . "#ff9fbf") + (green . "#51ca5c") + (green-alt . "#71ca3c") + (green-alt-other . "#51ca9c") + (green-faint . "#78bf78") + (green-alt-faint . "#99b56f") + (green-alt-other-faint . "#88bf99") + (yellow . "#f0b262") + (yellow-alt . "#f0e242") + (yellow-alt-other . "#d0a272") + (yellow-faint . "#d2b580") + (yellow-alt-faint . "#cabf77") + (yellow-alt-other-faint . "#d0ba95") + (blue . "#778cff") + (blue-alt . "#8f90ff") + (blue-alt-other . "#8380ff") + (blue-faint . "#82b0ec") + (blue-alt-faint . "#a0acef") + (blue-alt-other-faint . "#80b2f0") + (magenta . "#ff70cf") + (magenta-alt . "#ff77f0") + (magenta-alt-other . "#ca7fff") + (magenta-faint . "#e0b2d6") + (magenta-alt-faint . "#ef9fe4") + (magenta-alt-other-faint . "#cfa6ff") + (cyan . "#30cacf") + (cyan-alt . "#60caff") + (cyan-alt-other . "#40b79f") + (cyan-faint . "#90c4ed") + (cyan-alt-faint . "#a0bfdf") + (cyan-alt-other-faint . "#a4d0bb") + (red-active . "#ff6059") + (green-active . "#64dc64") + (yellow-active . "#ffac80") + (blue-active . "#4fafff") + (magenta-active . "#cf88ff") + (cyan-active . "#50d3d0") + (red-nuanced-bg . "#440a1f") + (red-nuanced-fg . "#ffcccc") + (green-nuanced-bg . "#002904") + (green-nuanced-fg . "#b8e2b8") + (yellow-nuanced-bg . "#422000") + (yellow-nuanced-fg . "#dfdfb0") + (blue-nuanced-bg . "#1f1f5f") + (blue-nuanced-fg . "#bfd9ff") + (magenta-nuanced-bg . "#431641") + (magenta-nuanced-fg . "#e5cfef") + (cyan-nuanced-bg . "#042f49") + (cyan-nuanced-fg . "#a8e5e5") + (bg-diff-heading . "#304466") + (fg-diff-heading . "#dae7ff") + (bg-diff-added . "#0a383a") + (fg-diff-added . "#94ba94") + (bg-diff-changed . "#2a2000") + (fg-diff-changed . "#b0ba9f") + (bg-diff-removed . "#50163f") + (fg-diff-removed . "#c6adaa") + (bg-diff-refine-added . "#006a46") + (fg-diff-refine-added . "#e0f6e0") + (bg-diff-refine-changed . "#585800") + (fg-diff-refine-changed . "#ffffcc") + (bg-diff-refine-removed . "#952838") + (fg-diff-refine-removed . "#ffd9eb") + (bg-diff-focus-added . "#1d4c3f") + (fg-diff-focus-added . "#b4dfb4") + (bg-diff-focus-changed . "#424200") + (fg-diff-focus-changed . "#d0daaf") + (bg-diff-focus-removed . "#6f0f39") + (fg-diff-focus-removed . "#eebdba"))) + (setq modus-themes-operandi-color-overrides nil + modus-themes-vivendi-color-overrides nil))) +#+end_src + ** Font configurations for Org and others :properties: :custom_id: h:defcf4fc-8fa8-4c29-b12e-7119582cc929 @@ -3117,6 +3405,9 @@ the ~variable-pitch~ (proportional spacing) and ~fixed-pitch~ (monospaced) faces respectively. It may also be convenient to set your main typeface by configuring the ~default~ face the same way. +[ The =fontaine= package on GNU ELPA (by the author of the modus-themes) + is designed to handle this case. ] + Put something like this in your initialization file (also consider reading the doc string of ~set-face-attribute~): @@ -3347,7 +3638,7 @@ it if you plan to control face attributes. :end: #+cindex: Org custom emphasis faces -Org provides the user option ~org-emphasis-alist~ which assosiates a +Org provides the user option ~org-emphasis-alist~ which associates a character with a face, list of faces, or face attributes. The default specification of that variable looks like this: @@ -4119,6 +4410,64 @@ Or include a ~let~ form, if needed: Normally, we do not touch user options, though this is an exception: otherwise the defaults are not always legible. +** Add support for solaire-mode +:PROPERTIES: +:CUSTOM_ID: h:439c9e46-52e2-46be-b1dc-85841dd99671 +:END: + +The =solaire-mode= package dims the background of what it considers +ancillary "UI" buffers, such as the minibuffer and Dired buffers. The +Modus themes used to support Solaire on the premise that the user was +(i) opting in to it, (ii) understood why certain buffers were more gray, +and (iii) knew what other adjustments had to be made to prevent broken +visuals (e.g. the default style of the ~modus-themes-completions~ uses a +subtle gray background for the selection, which with Solaire becomes +practically invisible). + +However, the assumption that users opt in to this feature does not +always hold true. There are cases where it is enabled by defaultsuch as +in the popular Doom Emacs configuration. Thus, the unsuspecting user +who loads ~modus-operandi~ or ~modus-vivendi~ without the requisite +customizations is getting a sub-par experience; an experience that we +did not intend and cannot genuinely fix. + +Because the Modus themes are meant to work everywhere, we cannot make an +exception for Doom Emacs and/or Solaire users. Furthermore, we shall +not introduce hacks, such as by adding a check in all relevant faces to +be adjusted based on Solaire or whatever other package. Hacks of this +sort are unsustainable and penalize the entire userbase. Besides, the +themes are built into Emacs and we must keep their standard high. + +The fundamental constraint with Solaire is that Emacs does not have a +real distinction between "content" and "UI" buffers. For themes to work +with Solaire, they need to be designed around that package. Such is an +arrangement that compromises on our accessibility standards and/or +hinders our efforts to provide the best possible experience while using +the Modus themes. + +As such, =solaire-mode= is not---and will not be---supported by the +Modus themes (or any other of my themes, for that matter). Users who +want it must style the faces manually. Below is some sample code, based +on what we cover at length elsewhere in this manual: + +[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]. + +[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]]. + +#+begin_src emacs-lisp +(defun my-modus-themes-custom-faces () + (modus-themes-with-colors + (custom-set-faces + `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim))) + `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused))) + `(solaire-hl-line-face ((,class :background ,bg-active))) + `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt)))))) + +(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) +#+end_src + +As always, re-load the theme for changes to take effect. + * Face coverage :properties: :custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19 @@ -4165,9 +4514,9 @@ have lots of extensions, so the "full support" may not be 100% true… + calendar and diary + calfw + calibredb -+ centaur-tabs + cfrs + change-log and log-view (such as ~vc-print-log~, ~vc-print-root-log~) ++ chart + cider + circe + citar @@ -4187,13 +4536,12 @@ have lots of extensions, so the "full support" may not be 100% true… + css-mode + csv-mode + ctrlf -+ cursor-flash + custom (what you get with {{{kbd(M-x customize)}}}) + dap-mode -+ dashboard (emacs-dashboard) + deadgrep + debbugs + deft ++ denote + devdocs + dictionary + diff-hl @@ -4210,7 +4558,6 @@ have lots of extensions, so the "full support" may not be 100% true… + diredp (dired+) + display-fill-column-indicator-mode + doom-modeline -+ dynamic-ruler + easy-jekyll + ebdb + ediff @@ -4251,7 +4598,6 @@ have lots of extensions, so the "full support" may not be 100% true… + flyspell + flx + freeze-it -+ frog-menu + focus + fold-this + font-lock (generic syntax highlighting) @@ -4289,6 +4635,7 @@ have lots of extensions, so the "full support" may not be 100% true… + imenu-list + indium + info ++ info+ (info-plus) + info-colors + interaction-log + ioccur @@ -4303,6 +4650,7 @@ have lots of extensions, so the "full support" may not be 100% true… + kaocha-runner + keycast + ledger-mode ++ leerzeichen + line numbers (~display-line-numbers-mode~ and global variant) + lsp-mode + lsp-ui @@ -4314,7 +4662,6 @@ have lots of extensions, so the "full support" may not be 100% true… + marginalia + markdown-mode + markup-faces (~adoc-mode~) -+ mct + mentor + messages + mini-modeline @@ -4341,14 +4688,12 @@ have lots of extensions, so the "full support" may not be 100% true… + org-superstar + org-table-sticky-header + org-tree-slide -+ org-treescope + origami + outline-mode + outline-minor-faces + package (what you get with {{{kbd(M-x list-packages)}}}) + page-break-lines + pandoc-mode -+ paradox + paren-face + pass + pdf-tools @@ -4391,7 +4736,6 @@ have lots of extensions, so the "full support" may not be 100% true… + smart-mode-line + smartparens + smerge -+ solaire + spaceline + speedbar + stripes @@ -4420,7 +4764,6 @@ have lots of extensions, so the "full support" may not be 100% true… + typescript + undo-tree + vc (vc-dir.el, vc-hooks.el) -+ vc-annotate (the output of {{{kbd(C-x v g)}}}) + vertico + vertico-quick + vimish-fold @@ -4464,9 +4807,11 @@ supported by the themes. + bufler + counsel-notmuch + counsel-org-capture-string ++ dashboard (emacs-dashboard) + define-word + disk-usage + dtache ++ dynamic-ruler + easy-kill + edit-indirect + egerrit @@ -4542,7 +4887,7 @@ The =git-gutter= and =git-gutter-fr= packages default to drawing bitmaps for the indicators they display (e.g. bitmap of a plus sign for added lines). In Doom Emacs, these bitmaps are replaced with contiguous lines which may look nicer, but require a change to the foreground of the -relevant faces to yield the desired colour combinations. +relevant faces to yield the desired color combinations. Since this is Doom-specific, we urge users to apply changes in their local setup. Below is some sample code, based on what we cover at @@ -4564,6 +4909,8 @@ length elsewhere in this manual: (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) #+end_src +As always, re-load the theme for changes to take effect. + If the above does not work, try this instead: #+begin_src emacs-lisp @@ -4599,6 +4946,8 @@ This seems to make all comments use the appropriate face: (add-hook 'php-mode-hook #'my-multine-comments) #+end_src +As always, re-load the theme for changes to take effect. + ** Note on underlines in compilation buffers :properties: :custom_id: h:420f5a33-c7a9-4112-9b04-eaf2cbad96bd @@ -4838,6 +5187,8 @@ implementation: (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-highlight-parentheses) #+end_src +As always, re-load the theme for changes to take effect. + ** Note on mmm-mode.el background colors :properties: :custom_id: h:99cf0d6c-e478-4e26-9932-3bf3427d13f6 @@ -5181,24 +5532,6 @@ candidates. That style still meets the contrast ratio target of >= 7:1 ANSI color number 1 (red) from the already-supported array of ~ansi-color-names-vector~. -** Note on vc-annotate-background-mode -:properties: -:custom_id: h:5095cbd1-e17a-419c-93e8-951c186362a3 -:end: - -Due to the unique way ~vc-annotate~ ({{{kbd(C-x v g)}}}) applies colors, support -for its background mode (~vc-annotate-background-mode~) is disabled at the -theme level. - -Normally, such a drastic measure should not belong in a theme: assuming -the user's preferences is bad practice. However, it has been deemed -necessary in the interest of preserving color contrast accessibility -while still supporting a useful built-in tool. - -If there actually is a way to avoid such a course of action, without -prejudice to the accessibility standard of this project, then please -report as much or send patches ([[#h:9c3cd842-14b7-44d7-84b2-a5c8bc3fc3b1][Contributing]]). - ** Note on pdf-tools link hints :properties: :custom_id: h:2659d13e-b1a5-416c-9a89-7c3ce3a76574 @@ -5743,9 +6076,10 @@ The Modus themes are a collective effort. Every bit of work matters. Carlo Zancanaro, Christian Tietze, Daniel Mendler, Eli Zaretskii, Fritz Grabo, Illia Ostapyshyn, Kévin Le Gouguec, Kostadin Ninev, Madhavan Krishnan, Manuel Giraud, Markus Beppler, Matthew Stevenson, - Mauro Aranda, Nicolas De Jaeghere, Philip Kaludercic, Pierre - Téchoueyres, Rudolf Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan - Kangas, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie. + Mauro Aranda, Nicolas De Jaeghere, Paul David, Philip Kaludercic, + Pierre Téchoueyres, Rudolf Adamkovič, Stephen Gildea, Shreyas Ragavan, + Stefan Kangas, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen + Xie. + Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers, Adrian Manea, Alex Griffin, Alex Koen, Alex Peitsinis, Alexey Shmalko, @@ -5758,22 +6092,22 @@ The Modus themes are a collective effort. Every bit of work matters. Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, Iris Garcia, Ivan Popovych, Jeremy Friesen, Jerry Zhang, Johannes Grødem, - John Haman, Jorge Morais, Joshua O'Connor, Julio C. Villasante, Kenta - Usami, Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg, - Lennart C. Karssen, Magne Hov, Manuel Uberti, Mark Bestley, Mark - Burton, Markus Beppler, Mauro Aranda, Maxime Tréca, Michael - Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van - Foreest, Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete - Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Przemysław - Kryger, Robert Hepple, Roman Rudakov, Ryan Phillips, Rytis Paškauskas, - Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, - Shreyas Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas - Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz - Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley. As - well as users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, - Fredrik, Moesasji, Nick, TheBlob42, Trey, bepolymathe, bit9tream, - derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn, - pRot0ta1p. + John Haman, Jonas Collberg, Jorge Morais, Joshua O'Connor, Julio + C. Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kostadin + Ninev, Len Trigg, Lennart C. Karssen, Magne Hov, Manuel Uberti, Mark + Bestley, Mark Burton, Markus Beppler, Matt Armstrong, Mauro Aranda, + Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock, + Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere, Paul Poloskov, + Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, Pierre + Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov, Ryan + Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam Kleinman, Samuel + Culpepper, Saša Janiška, Shreyas Ragavan, Simon Pugnet, Tassilo Horn, + Thibaut Verron, Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey + Merkley, Tomasz Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, + Vincent Foley. As well as users: Ben, CsBigDataHub1, Emacs Contrib, + Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42, + Trey, bepolymathe, bit9tream, derek-upham, doolio, fleimgruber, + gitrj95, iSeeU, jixiuf, okamsn, pRot0ta1p. + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core @@ -5784,10 +6118,12 @@ The Modus themes are a collective effort. Every bit of work matters. + Inspiration for certain features :: Bozhidar Batsov (zenburn-theme), Fabrice Niessen (leuven-theme). -Special thanks (from A-Z) to Gustavo Barros, Manuel Uberti, Nicolas De -Jaeghere, and Omar Antolín Camarena for their long time contributions -and insightful commentary on key aspects of the themes' design and/or -aspects of their functionality. +Special thanks (from A-Z) to Daniel Mendler, Gustavo Barros, Manuel +Uberti, Nicolas De Jaeghere, and Omar Antolín Camarena for their long +time contributions and insightful commentary on key aspects of the +themes' design and/or aspects of their functionality. + +All errors are my own. * Other notes about the project :properties: diff --git a/doc/misc/org.org b/doc/misc/org.org index baab2efedaf..7971c417a52 100644 --- a/doc/misc/org.org +++ b/doc/misc/org.org @@ -2866,12 +2866,12 @@ For more information and examples see the [[https://orgmode.org/worg/org-tutoria - transpose :: When =y=, =yes=, or =t= attempt to transpose the table data before - plotting. Also recognises the shorthand option =trans=. + plotting. Also recognizes the shorthand option =trans=. - =type= :: Specify the type of the plot, by default one of =2d=, =3d=, =radar=, or =grid=. - Available types can be customised with ~org-plot/preset-plot-types~. + Available types can be customized with ~org-plot/preset-plot-types~. - =with= :: @@ -3352,7 +3352,7 @@ current buffer: ~org-link-email-description-format~. By default, it refers to the addressee and the subject. -- /Web browsers: W3, W3M and EWW/ :: +- /Web browsers: W3M and EWW/ :: Here the link is the current URL, with the page title as the description. @@ -8544,8 +8544,8 @@ commands: Search for a regular expression in all agenda files and additionally in the files listed in ~org-agenda-text-search-extra-files~. This uses the Emacs command ~multi-occur~. A prefix argument can be used - to specify the number of context lines for each match, default is - 1. + to specify the number of context lines for each match, the default + is 1. - {{{kbd(#)}}} :: diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi index 8253e404084..8c798d6c33b 100644 --- a/doc/misc/rcirc.texi +++ b/doc/misc/rcirc.texi @@ -639,9 +639,9 @@ password to use. @item certfp @cindex certfp authentication Use this symbol if you want to use CertFP authentication. The -necessary arguments are the path to the client certificate key and -password. The CertFP authentication requires a @acronym{TLS} -connection. +necessary arguments are the path to the key and to the client +certificate associated with the account. The CertFP authentication +requires a @acronym{TLS} connection. @end table diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index c3b7b0b0f6b..0c95b388cb2 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi @@ -38,7 +38,6 @@ Con@TeX{}t @set SUPPORTADDRESS @AUCTeX{} user mailing list (@email{auctex@@gnu.org}) @set DEVELADDRESS @AUCTeX{} developer mailing list (@email{auctex-devel@@gnu.org}) @set BUGADDRESS @AUCTeX{} bug mailing list (@email{bug-auctex@@gnu.org}) -@set XEMACSFTP @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs FTP site} @c %**end of header @copying @@ -249,10 +248,7 @@ reports or suggestions. @cindex Installation @RefTeX{} has been bundled and pre-installed with Emacs since -version 20.2. It has also been bundled and pre-installed with XEmacs -19.16--20.x. XEmacs 21.x users want to install the corresponding -plug-in package which is available from the @value{XEMACSFTP}. See the -XEmacs 21.x documentation on package installation for details. +version 20.2. @findex turn-on-reftex @findex reftex-mode @@ -3584,7 +3580,7 @@ the @value{BUGADDRESS}. There are also several Usenet groups which have competent readers who might be able to help: @code{comp.emacs}, @code{gnu.emacs.help}, -@code{comp.emacs.xemacs}, and @code{comp.text.tex}. +and @code{comp.text.tex}. Thanks to the people on the Net who have used @RefTeX{} and helped developing it with their reports. In particular thanks to @i{Ralf diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 8872e5e055f..f86af0db3e5 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2022-04-09.08} +\def\texinfoversion{2022-08-20.19} % % Copyright 1985, 1986, 1988, 1990-2022 Free Software Foundation, Inc. % @@ -725,32 +725,22 @@ \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 + % This is similar to the 'needspace' module in LaTeX. + % The first penalty allows a break if the end of the page is + % not too far away. Following penalties and skips are discarded. + % Otherwise, require at least \dimen0 of vertical space. % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. + % (We used to use a \vtop to reserve space, but this had spacing issues + % when followed by a section heading, as it was not a "discardable item". + % This also has the benefit of providing glue before the page break if + % there isn't enough space.) + \vskip0pt plus \dimen0 + \penalty-100 + \vskip0pt plus -\dimen0 + \vskip \dimen0 \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak + \vskip -\dimen0 + \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak \fi } @@ -2558,7 +2548,7 @@ \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} -\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} +\def\tt{\fam=\ttfam \setfontstyle{tt}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. @@ -2691,6 +2681,14 @@ % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } +% Check if internal flag is clear, i.e. has not been @set. +\def\ifflagclear#1#2#3{% + \expandafter\ifx\csname SET#1\endcsname\relax + #2\else#3\fi +} + + + { \catcode`\'=\active \catcode`\`=\active @@ -2707,14 +2705,14 @@ % \def\codequoteright{% \ifmonospace - \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax - \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + \ifflagclear{txicodequoteundirected}{% + \ifflagclear{codequoteundirected}{% '% - \else \char'15 \fi - \else \char'15 \fi - \else - '% - \fi + }{\char'15 }% + }{\char'15 }% + \else + '% + \fi } % % and a similar option for the left quote char vs. a grave accent. @@ -2723,16 +2721,16 @@ % \def\codequoteleft{% \ifmonospace - \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax - \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + \ifflagclear{txicodequotebacktick}{% + \ifflagclear{codequotebacktick}{% % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% - \else \char'22 \fi - \else \char'22 \fi - \else - \relax`% - \fi + }{\char'22 }% + }{\char'22 }% + \else + \relax`% + \fi } % Commands to set the quote options. @@ -2779,15 +2777,16 @@ \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% - {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + {\def\next{{#1#2}\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} -% Output an italic correction unless \next (presumed to be the following -% character) is such as not to need one. -\def\smartitaliccorrection{% +% Output an italic correction unless the following character is such as +% not to need one. +\def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx} +\def\smartitaliccorrectionx{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% @@ -2798,18 +2797,18 @@ \aftersmartic } -% Unconditional use \ttsl, and no ic. @var is set to this for defuns. -\def\ttslanted#1{{\ttsl #1}} - -% @cite is like \smartslanted except unconditionally use \sl. We never want -% ttsl for book titles, do we? -\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} +% @cite unconditionally uses \sl with \smartitaliccorrection. +\def\cite#1{{\sl #1}\smartitaliccorrection} +% @var unconditionally uses \sl. This gives consistency for +% parameter names whether they are in @def, @table @code or a +% regular paragraph. +% The \null is to reset \spacefactor. \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% - \smartslanted{#1}% + {\sl #1}\smartitaliccorrection } \let\i=\smartitalic @@ -2817,8 +2816,14 @@ \let\dfn=\smartslanted \let\emph=\smartitalic -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font +% @r for roman font, used for code comment +\def\r#1{{% + \usenormaldash % get --, --- ligatures even if in @code + \defcharsdefault % in case on def line + \rm #1}} +{\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}} + +% @sc, undocumented @ii. \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font @@ -2856,7 +2861,7 @@ % @t, explicit typewriter. \def\t#1{% - {\tt \plainfrenchspacing #1}% + {\tt \defcharsdefault \plainfrenchspacing #1}% \null } @@ -4432,7 +4437,7 @@ \message{conditionals,} -% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't @@ -4446,6 +4451,7 @@ \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} +\makecond{ifnotlatex} \makecond{ifnotplaintext} \makecond{ifnotxml} @@ -4458,10 +4464,12 @@ \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} +\def\iflatex{\doignore{iflatex}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} +\def\latex{\doignore{latex}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} @@ -4985,25 +4993,24 @@ \catcode`\-=13 \catcode`\`=13 \gdef\indexnonalnumdisappear{% - \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + \ifflagclear{txiindexlquoteignore}{}{% % @set txiindexlquoteignore makes us ignore left quotes in the sort term. % (Introduced for FSFS 2nd ed.) \let`=\empty - \fi + }% % - \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \ifflagclear{txiindexbackslashignore}{}{% \backslashdisappear - \fi - % - \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + }% + \ifflagclear{txiindexhyphenignore}{}{% \def-{}% - \fi - \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + }% + \ifflagclear{txiindexlessthanignore}{}{% \def<{}% - \fi - \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + }% + \ifflagclear{txiindexatsignignore}{}{% \def\@{}% - \fi + }% } \gdef\indexnonalnumreappear{% @@ -5295,9 +5302,7 @@ % \atdummies % - \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else - \escapeisbackslash - \fi + \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}% % % For texindex which always views { and } as separators. \def\{{\lbracechar{}}% @@ -5481,9 +5486,9 @@ % old index files using \ as the escape character. Reading this would % at best lead to typesetting garbage, at worst a TeX syntax error. \def\printindexzz#1#2\finish{% - \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax + \ifflagclear{txiindexescapeisbackslash}{% \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 - \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax + \ifflagclear{txiskipindexfileswithbackslash}{% \errmessage{% ERROR: A sorted index file in an obsolete format was skipped. To fix this problem, please upgrade your version of 'texi2dvi' @@ -5499,15 +5504,15 @@ If you continue to have problems, deleting the index files and starting again might help (with 'rm \jobname.?? \jobname.??s')% }% - \else + }{% (Skipped sorted index file in obsolete format) - \fi + }% \else \begindoublecolumns \input \jobname.\indexname s \enddoublecolumns \fi - \else + }{% \begindoublecolumns \catcode`\\=0\relax % @@ -5517,7 +5522,7 @@ \catcode`\@=0\relax \input \jobname.\indexname s \enddoublecolumns - \fi + }% } % These macros are used by the sorted index file itself. @@ -7277,22 +7282,6 @@ } \let\Eraggedright\par -\envdef\raggedleft{% - \parindent=0pt \leftskip0pt plus2em - \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt - \hbadness=10000 % Last line will usually be underfull, so turn off - % badness reporting. -} -\let\Eraggedleft\par - -\envdef\raggedcenter{% - \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em - \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt - \hbadness=10000 % Last line will usually be underfull, so turn off - % badness reporting. -} -\let\Eraggedcenter\par - % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since @@ -7515,9 +7504,11 @@ % file; b) letting users define the frontmatter in as flexible order as % possible is desirable. % -\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} -\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} -% +\def\copying{\checkenv{}\begingroup\macrobodyctxt\docopying} +{\catcode`\ =\other +\gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +} + \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page @@ -7599,21 +7590,15 @@ \def\Edefun{\endgraf\medbreak} -% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; -% the only thing remaining is to define \deffnheader. +% \makedefun{deffoo}{ (definition of \deffooheader) } % +% Define \deffoo, \deffoox \Edeffoo and \deffooheader. \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } - -% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } -% -% Define \deffn and \deffnx, without parameters. -% \deffnheader has to be defined explicitly. -% \def\domakedefun#1#2#3{% \envdef#1{% \startdefun @@ -7646,74 +7631,51 @@ \fi\fi } -% \dosubind {index}{topic}{subtopic} -% -% If SUBTOPIC is present, precede it with a space, and call \doind. -% (At some time during the 20th century, this made a two-level entry in an -% index such as the operation index. Nobody seemed to notice the change in -% behaviour though.) -\def\dosubind#1#2#3{% - \def\thirdarg{#3}% - \ifx\thirdarg\empty - \doind{#1}{#2}% - \else - \doind{#1}{#2\space#3}% - \fi -} - % Untyped functions: % @deffn category name args -\makedefun{deffn}{\deffngeneral{}} +\makedefun{deffn}#1 #2 #3\endheader{% + \doind{fn}{\code{#2}}% + \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} -% @deffn category class name args -\makedefun{defop}#1 {\defopon{#1\ \putwordon}} - -% \defopon {category on}class name args -\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } - -% \deffngeneral {subind}category name args -% -\def\deffngeneral#1#2 #3 #4\endheader{% - \dosubind{fn}{\code{#3}}{#1}% - \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +% @defop category class name args +\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} +\def\defopheaderx#1#2 #3 #4\endheader{% + \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args -\makedefun{deftypefn}{\deftypefngeneral{}} +\makedefun{deftypefn}#1 #2 #3 #4\endheader{% + \doind{fn}{\code{#3}}% + \doingtypefntrue + \defname{#1}{#2}{#3}\defunargs{#4\unskip}% +} % @deftypeop category class type name args -\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} - -% \deftypeopon {category on}class type name args -\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } - -% \deftypefngeneral {subind}category type name args -% -\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% - \dosubind{fn}{\code{#4}}{#1}% +\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} +\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% + \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% \doingtypefntrue - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% + \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args -\makedefun{deftypevr}{\deftypecvgeneral{}} +\makedefun{deftypevr}#1 #2 #3 #4\endheader{% + \doind{vr}{\code{#3}}% + \defname{#1}{#2}{#3}\defunargs{#4\unskip}% +} % @deftypecv category class type var args -\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} - -% \deftypecvof {category of}class type var args -\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } - -% \deftypecvgeneral {subind}category type var args -% -\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% - \dosubind{vr}{\code{#4}}{#1}% - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} +\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% + \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: @@ -7722,10 +7684,8 @@ \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args -\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} - -% \defcvof {category of}class var args -\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } +\makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}} +\def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} } % Types: @@ -7743,10 +7703,10 @@ \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } -\makedefun{defmethod}{\defopon\putwordMethodon} -\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} -\makedefun{defivar}{\defcvof\putwordInstanceVariableof} -\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} +\makedefun{defmethod}{\defopheaderx\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon} +\makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". @@ -7765,9 +7725,7 @@ \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: - \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else - \rettypeownlinetrue - \fi + \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}% \fi % % How we'll format the category name. Putting it in brackets helps @@ -7832,30 +7790,18 @@ \fi % no return type #3% output function name }% - {\rm\enskip}% hskip 0.5 em of \rmfont + \ifflagclear{txidefnamenospace}{% + {\rm\enskip}% hskip 0.5 em of \rmfont + }{}% % \boldbrax % arguments will be output next, if any. } -% Print arguments in slanted roman (not ttsl), inconsistently with using -% tt for the name. This is because literal text is sometimes needed in -% the argument list (groff manual), and ttsl and tt are not very -% distinguishable. Prevent hyphenation at `-' chars. -% +% Print arguments. Use slanted for @def*, typewriter for @deftype*. \def\defunargs#1{% - % use sl by default (not ttsl), - % tt for the names. - \df \sl \hyphenchar\font=0 - % - % On the other hand, if an argument has two dashes (for instance), we - % want a way to get ttsl. We used to recommend @var for that, so - % leave the code in, but it's strange for @var to lead to typewriter. - % Nowadays we recommend @code, since the difference between a ttsl hyphen - % and a tt hyphen is pretty tiny. @code also disables ?` !`. - \def\var##1{{\setregularquotes\ttslanted{##1}}}% + \df \ifdoingtypefn \tt \else \sl \fi #1% - \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. @@ -7874,9 +7820,12 @@ % so TeX would otherwise complain about undefined control sequence. { \activeparens - \global\let(=\lparen \global\let)=\rparen - \global\let[=\lbrack \global\let]=\rbrack - \global\let& = \& + \gdef\defcharsdefault{% + \let(=\lparen \let)=\rparen + \let[=\lbrack \let]=\rbrack + \let& = \&% + } + \globaldefs=1 \defcharsdefault \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} @@ -8060,24 +8009,17 @@ \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other + \catcode`\@=\other + \catcode`\^^M=\other + \catcode`\\=\active \passthroughcharstrue } -\def\scanargctxt{% used for copying and captions, not macros. - \scanctxt - \catcode`\@=\other - \catcode`\\=\other - \catcode`\^^M=\other -} - -\def\macrobodyctxt{% used for @macro definitions +\def\macrobodyctxt{% used for @macro definitions and @copying \scanctxt \catcode`\ =\other - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other - \catcode`\^^M=\other - \usembodybackslash } % Used when scanning braced macro arguments. Note, however, that catcode @@ -8086,14 +8028,10 @@ \def\macroargctxt{% \scanctxt \catcode`\ =\active - \catcode`\@=\other - \catcode`\^^M=\other - \catcode`\\=\active } \def\macrolineargctxt{% used for whole-line arguments without braces \scanctxt - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other } @@ -8137,7 +8075,7 @@ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi - \begingroup \macrobodyctxt + \begingroup \macrobodyctxt \usembodybackslash \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} @@ -8941,7 +8879,7 @@ % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % - \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax + \ifflagclear{txiomitxrefpg}{% % But we always want a comma and a space: ,\space % @@ -8956,7 +8894,7 @@ \tokenafterxref ,% @NL \else\ifx\tie\tokenafterxref ,% @tie \fi\fi\fi\fi\fi\fi - \fi + }{}% \fi\fi \fi \endlink @@ -9604,7 +9542,7 @@ % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} -\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\docaption{\checkenv\float \bgroup\scanctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are @@ -10324,9 +10262,9 @@ % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp % to the corresponding UTF-8 sequence. \gdef\parseXMLCharref{% - \ifnum\countUTFz < "A0\relax + \ifnum\countUTFz < "20\relax \errhelp = \EMsimple - \errmessage{Cannot define Unicode char value < 00A0}% + \errmessage{Cannot define Unicode char value < 0020}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctetsName.,% @@ -10396,6 +10334,103 @@ % least make most of the characters not bomb out. % \def\unicodechardefs{% + \DeclareUnicodeCharacter{0020}{ } % space + \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number + \DeclareUnicodeCharacter{0022}{\char"22 }% + \DeclareUnicodeCharacter{0023}{\char"23 }% + \DeclareUnicodeCharacter{0024}{\char"24 }% + \DeclareUnicodeCharacter{0025}{\char"25 }% + \DeclareUnicodeCharacter{0026}{\char"26 }% + \DeclareUnicodeCharacter{0027}{\char"27 }% + \DeclareUnicodeCharacter{0028}{\char"28 }% + \DeclareUnicodeCharacter{0029}{\char"29 }% + \DeclareUnicodeCharacter{002A}{\char"2A }% + \DeclareUnicodeCharacter{002B}{\char"2B }% + \DeclareUnicodeCharacter{002C}{\char"2C }% + \DeclareUnicodeCharacter{002D}{\char"2D }% + \DeclareUnicodeCharacter{002E}{\char"2E }% + \DeclareUnicodeCharacter{002F}{\char"2F }% + \DeclareUnicodeCharacter{0030}{0}% + \DeclareUnicodeCharacter{0031}{1}% + \DeclareUnicodeCharacter{0032}{2}% + \DeclareUnicodeCharacter{0033}{3}% + \DeclareUnicodeCharacter{0034}{4}% + \DeclareUnicodeCharacter{0035}{5}% + \DeclareUnicodeCharacter{0036}{6}% + \DeclareUnicodeCharacter{0037}{7}% + \DeclareUnicodeCharacter{0038}{8}% + \DeclareUnicodeCharacter{0039}{9}% + \DeclareUnicodeCharacter{003A}{\char"3A }% + \DeclareUnicodeCharacter{003B}{\char"3B }% + \DeclareUnicodeCharacter{003C}{\char"3C }% + \DeclareUnicodeCharacter{003D}{\char"3D }% + \DeclareUnicodeCharacter{003E}{\char"3E }% + \DeclareUnicodeCharacter{003F}{\char"3F }% + \DeclareUnicodeCharacter{0040}{\char"40 }% + \DeclareUnicodeCharacter{0041}{A}% + \DeclareUnicodeCharacter{0042}{B}% + \DeclareUnicodeCharacter{0043}{C}% + \DeclareUnicodeCharacter{0044}{D}% + \DeclareUnicodeCharacter{0045}{E}% + \DeclareUnicodeCharacter{0046}{F}% + \DeclareUnicodeCharacter{0047}{G}% + \DeclareUnicodeCharacter{0048}{H}% + \DeclareUnicodeCharacter{0049}{I}% + \DeclareUnicodeCharacter{004A}{J}% + \DeclareUnicodeCharacter{004B}{K}% + \DeclareUnicodeCharacter{004C}{L}% + \DeclareUnicodeCharacter{004D}{M}% + \DeclareUnicodeCharacter{004E}{N}% + \DeclareUnicodeCharacter{004F}{O}% + \DeclareUnicodeCharacter{0050}{P}% + \DeclareUnicodeCharacter{0051}{Q}% + \DeclareUnicodeCharacter{0052}{R}% + \DeclareUnicodeCharacter{0053}{S}% + \DeclareUnicodeCharacter{0054}{T}% + \DeclareUnicodeCharacter{0055}{U}% + \DeclareUnicodeCharacter{0056}{V}% + \DeclareUnicodeCharacter{0057}{W}% + \DeclareUnicodeCharacter{0058}{X}% + \DeclareUnicodeCharacter{0059}{Y}% + \DeclareUnicodeCharacter{005A}{Z}% + \DeclareUnicodeCharacter{005B}{\char"5B }% + \DeclareUnicodeCharacter{005C}{\char"5C }% + \DeclareUnicodeCharacter{005D}{\char"5D }% + \DeclareUnicodeCharacter{005E}{\char"5E }% + \DeclareUnicodeCharacter{005F}{\char"5F }% + \DeclareUnicodeCharacter{0060}{\char"60 }% + \DeclareUnicodeCharacter{0061}{a}% + \DeclareUnicodeCharacter{0062}{b}% + \DeclareUnicodeCharacter{0063}{c}% + \DeclareUnicodeCharacter{0064}{d}% + \DeclareUnicodeCharacter{0065}{e}% + \DeclareUnicodeCharacter{0066}{f}% + \DeclareUnicodeCharacter{0067}{g}% + \DeclareUnicodeCharacter{0068}{h}% + \DeclareUnicodeCharacter{0069}{i}% + \DeclareUnicodeCharacter{006A}{j}% + \DeclareUnicodeCharacter{006B}{k}% + \DeclareUnicodeCharacter{006C}{l}% + \DeclareUnicodeCharacter{006D}{m}% + \DeclareUnicodeCharacter{006E}{n}% + \DeclareUnicodeCharacter{006F}{o}% + \DeclareUnicodeCharacter{0070}{p}% + \DeclareUnicodeCharacter{0071}{q}% + \DeclareUnicodeCharacter{0072}{r}% + \DeclareUnicodeCharacter{0073}{s}% + \DeclareUnicodeCharacter{0074}{t}% + \DeclareUnicodeCharacter{0075}{u}% + \DeclareUnicodeCharacter{0076}{v}% + \DeclareUnicodeCharacter{0077}{w}% + \DeclareUnicodeCharacter{0078}{x}% + \DeclareUnicodeCharacter{0079}{y}% + \DeclareUnicodeCharacter{007A}{z}% + \DeclareUnicodeCharacter{007B}{\char"7B }% + \DeclareUnicodeCharacter{007C}{\char"7C }% + \DeclareUnicodeCharacter{007D}{\char"7D }% + \DeclareUnicodeCharacter{007E}{\char"7E }% + % \DeclareUnicodeCharacter{007F}{} % DEL + % \DeclareUnicodeCharacter{00A0}{\tie}% \DeclareUnicodeCharacter{00A1}{\exclamdown}% \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent @@ -11080,24 +11115,26 @@ % provide a definition macro to replace/pass-through a Unicode character % \def\DeclareUnicodeCharacterNative#1#2{% - \catcode"#1=\active - \def\dodeclareunicodecharacternative##1##2##3{% + \ifnum"#1>"7F % only make non-ASCII chars active + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } \begingroup - \uccode`\~="##2\relax - \uppercase{\gdef~}{% - \ifpassthroughchars - ##1% - \else - ##3% - \fi - } + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% \endgroup - } - \begingroup - \uccode`\.="#1\relax - \uppercase{\def\UTFNativeTmp{.}}% - \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% - \endgroup + \fi } % Native Unicode handling (XeTeX and LuaTeX) character replacing definition. @@ -11276,7 +11313,7 @@ \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% - {\voffset}{\hoffset}% + {\voffset}{-11.4mm}% {\bindingoffset}{8pt}% {210mm}{148mm}% % @@ -11358,6 +11395,7 @@ \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment +\catcode`\^^K = 10 % treat vertical tab as whitespace % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 12d49877269..0e55b6c1d2a 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -50,13 +50,10 @@ This file documents @w{@value{tramp} @value{trampver}}, a remote file editing package for Emacs. @value{tramp} stands for ``Transparent Remote (file) Access, Multiple -Protocol''. This package provides remote file editing, similar to -Ange FTP@. - -The difference is that Ange FTP uses FTP to transfer files between the -local and the remote host, whereas @value{tramp} uses a combination of -@command{rsh} and @command{rcp} or other work-alike programs, such as -@command{ssh}/@command{scp}. +Protocol''. This package provides an easy, convenient, and consistent +interface to editing remote files transparently, just as if they are +local files. This extends to editing, version control, @code{dired}, +and more. You can find the latest version of this document on the web at @uref{@value{trampurl}}. @@ -182,10 +179,10 @@ interface to remote files as if they are local files. @value{tramp}'s transparency extends to editing, version control, and @code{dired}. @value{tramp} can access remote hosts using any number of access -methods, such as @command{rsh}, @command{rlogin}, @command{telnet}, -and related programs. If these programs can successfully pass -@acronym{ASCII} characters, @value{tramp} can use them. -@value{tramp} does not require or mandate 8-bit clean connections. +methods, such as @command{ssh}, @command{scp}, @command{telnet}, and +related programs. If these programs can successfully pass +@acronym{ASCII} characters, @value{tramp} can use them. @value{tramp} +does not require or mandate 8-bit clean connections. @value{tramp}'s most common access method is through @command{ssh}, a more secure alternative to @command{ftp} and other older access @@ -233,10 +230,10 @@ first time connecting to that host, here's what happens: @itemize @item -@value{tramp} invokes @samp{telnet @var{host}} or @samp{rsh @var{host} --l @var{user}} and establishes an external process to connect to the -remote host. @value{tramp} communicates with the process through an -Emacs buffer, which also shows output from the remote host. +@value{tramp} invokes @samp{telnet @var{host}} or @samp{ssh -l +@var{user} @var{host}} and establishes an external process to connect +to the remote host. @value{tramp} communicates with the process +through an Emacs buffer, which also shows output from the remote host. @item The remote host may prompt for a login name (for @command{telnet}, for @@ -246,7 +243,7 @@ followed by a newline. @item The remote host may then prompt for a password or passphrase (for -@command{rsh} or for @command{telnet}). @value{tramp} displays the +@command{ssh} or for @command{telnet}). @value{tramp} displays the password prompt in the minibuffer. @value{tramp} then sends whatever is entered to the remote host, followed by a newline. @@ -312,7 +309,7 @@ I hope this has provided you with a basic overview of what happens behind the scenes when you open a file with @value{tramp}. -@c For the end user +@c For the end user. @node Obtaining @value{tramp} @chapter Obtaining @value{tramp} @cindex obtaining @value{tramp} @@ -670,6 +667,11 @@ may be used in your init file: (with-eval-after-load 'tramp (tramp-change-syntax 'simplified)) @end lisp +@vindex enable-remote-dir-locals +Changing other variables via directory-local variables on a remote +directory must be enabled by setting @code{enable-remote-dir-locals} +to non-@code{nil}, @xref{Directory Variables, , , emacs}. + @menu * Connection types:: Types of connections to remote hosts. @@ -2430,7 +2432,7 @@ example below: @end lisp @vindex password-word-equivalents -This user option is, by default, initialised from +This user option is, by default, initialized from @code{password-word-equivalents} when @value{tramp} is loaded, and it is usually more convenient to add new passphrases to that user option instead of altering this user option. @@ -2973,14 +2975,31 @@ where @samp{192.168.0.26} is the Android device's IP address. (@pxref{Predefined connection information}). @item -@value{tramp} requires preserving @env{PATH} environment variable from -user settings. Android devices prefer @file{/system/xbin} path over -@file{/system/bin}. Both of these are set as follows: +On the Android device the directory names are prefixed with an +application specific prefix, which is +@file{/data/data/com.termux/files/usr/bin} instead of @file{/usr/bin} +in the @code{Termux} case. You must adapt the file names in +@code{tramp-remote-path}, for example via connection-local +@ifinfo +settings (@pxref{Connection Variables, , , emacs}): +@end ifinfo +@ifnotinfo +settings: +@end ifnotinfo @lisp @group -(add-to-list 'tramp-remote-path 'tramp-own-remote-path) -(add-to-list 'tramp-remote-path "/system/xbin") +(connection-local-set-profile-variables + 'tramp-connection-local-termux-profile + `((tramp-remote-path + . ,(mapcar + (lambda (x) + (if (stringp x) (concat "/data/data/com.termux/files" x) x)) + (copy-tree tramp-remote-path))))) + +(connection-local-set-profiles + '(:application tramp :machine "192.168.0.26") + 'tramp-connection-local-termux-profile) @end group @end lisp @@ -2989,7 +3008,9 @@ When the Android device is not @samp{rooted}, specify a writable directory for temporary files: @lisp -(add-to-list 'tramp-remote-process-environment "TMPDIR=$HOME") +(add-to-list 'tramp-connection-properties + (list (regexp-quote "192.168.0.26") + "tmpdir" "/data/data/com.termux/files/home/tmp")) @end lisp @item @@ -3017,11 +3038,17 @@ the previous example, fix the connection properties as follows: @group (add-to-list 'tramp-connection-properties (list (regexp-quote "android") "remote-shell" "sh")) +(add-to-list 'tramp-connection-properties + (list (regexp-quote "android") + "tmpdir" "/data/data/com.termux/files/home/tmp")) +(connection-local-set-profiles + '(:application tramp :machine "android") + 'tramp-connection-local-termux-profile) @end group @end lisp @noindent -Open a remote connection with a more concise command @kbd{C-x C-f +Open a remote connection with the more concise command @kbd{C-x C-f @trampfn{ssh,android,} @key{RET}}. @end itemize @@ -3124,6 +3151,14 @@ auto-saved files to the same directory as the original file. Alternatively, set the user option @code{tramp-auto-save-directory} to direct all auto saves to that location. +@c Since Emacs 29. +@vindex remote-file-name-inhibit-auto-save-visited +An alternative to @code{auto-save-mode} is +@code{auto-save-visited-mode}. In this mode, auto-saving is identical +to explicit saving. If you want to disable this behavior for remote +files, set user option +@code{remote-file-name-inhibit-auto-save-visited} to non-@code{nil}. + @vindex lock-file-name-transforms And still more issues to handle. Since @w{Emacs 28}, file locks use a similar user option as auto-save files, called @@ -3373,7 +3408,7 @@ names. Beside the @code{default} value, @var{syntax} can be @item @code{simplified} @cindex simplified syntax -The remote file name syntax is similar to the syntax used by Ange FTP@. +This remote file name syntax is similar to the syntax used by Ange FTP@. A remote file name has the form @code{@value{prefix}user@@host@value{postfix}path/to/file}. The @code{user@@} part is optional, and the method is determined by @@ -3385,7 +3420,7 @@ A remote file name has the form @clear unified @set separate @include trampver.texi -The remote file name syntax is similar to the syntax used by XEmacs. +This remote file name syntax originated in the XEmacs text editor. A remote file name has the form @code{@trampfn{method,user@@host,path/to/file}}. The @code{method} and @code{user@@} parts are optional. @@ -4791,9 +4826,12 @@ authentication delays. During these operations, @value{tramp}'s responsiveness slows down. Some suggestions within the scope of @value{tramp}'s settings include: +@itemize @minus +@item Use an external method, such as @option{scp}, which are faster than -internal methods. +internal methods for large files. +@item Keep the file @code{tramp-persistency-file-name}, which is where @value{tramp} caches remote information about hosts and files. Caching is enabled by default. Don't disable it. @@ -4804,6 +4842,7 @@ files are not independently updated outside @value{tramp}'s control. That cache cleanup will be necessary if the remote directories or files are updated independent of @value{tramp}. +@item Disable version control to avoid delays: @lisp @@ -4823,9 +4862,17 @@ about, for example: (setq vc-handled-backends '(SVN Git)) @end lisp +@item +@vindex remote-file-name-inhibit-locks +Disable file locks. Set @code{remote-file-name-inhibit-locks} to +@code{t} if you know that different Emacs sessions are not modifying +the same remote file. + +@item Disable excessive traces. Set @code{tramp-verbose} to 3 or lower, default being 3. Increase trace levels temporarily when hunting for bugs. +@end itemize @item @@ -5325,13 +5372,6 @@ minibuffer: (before my-minibuffer-complete activate) (expand-abbrev)) @end group - -@group -;; If you use partial-completion-mode -(defadvice PC-do-completion - (before my-PC-do-completion activate) - (expand-abbrev)) -@end group @end lisp The reduced typing: @kbd{C-x C-f xy @key{TAB}}. @@ -5621,6 +5661,7 @@ Disable @value{tramp} file name completion: (customize-set-variable 'ido-enable-tramp-completion nil) @end lisp +@c Obsolete since Emacs 29.1. @item @file{rlogin.el} @@ -5679,10 +5720,19 @@ local host's root directory as @file{/ssh:example.com:}. To unload @value{tramp}, type @kbd{M-x tramp-unload-tramp @key{RET}}. Unloading @value{tramp} resets Ange FTP plugins also. @end itemize + + +@item +What is the difference between Ange FTP and @value{tramp}? + +The difference is that Ange FTP uses @command{ftp} to transfer files +between the local and the remote host, whereas @value{tramp} uses a +combination of @command{ssh} and @command{scp} or other work-alike +programs. @end itemize -@c For the developer +@c For the developer. @node Files directories and localnames @chapter How file names, directories and localnames are mangled and managed @@ -5811,15 +5861,15 @@ The verbosity levels are @*@indent @w{ 4} activities @*@indent @w{ 5} internal @*@indent @w{ 6} sent and received strings -@*@indent @w{ 7} file caching -@*@indent @w{ 8} connection properties +@*@indent @w{ 7} connection properties +@*@indent @w{ 8} file caching @*@indent @w{ 9} test commands @*@indent @w{10} traces (huge) @*@indent @w{11} call traces (maintainer only) With @code{tramp-verbose} greater than or equal to 4, messages are also written to a @value{tramp} debug buffer. Such debug buffers are -essential to bug and problem analyses. For @value{tramp} bug reports, +essential to bug and problem analyzes. For @value{tramp} bug reports, set the @code{tramp-verbose} level to 6 (@pxref{Bug Reports}). The debug buffer is in diff --git a/doc/misc/transient.texi b/doc/misc/transient.texi index d634ad5197a..24c3090ef7a 100644 --- a/doc/misc/transient.texi +++ b/doc/misc/transient.texi @@ -47,9 +47,9 @@ General Public License for more details. Taking inspiration from prefix keys and prefix arguments, Transient implements a similar abstraction involving a prefix command, infix arguments and suffix commands. We could call this abstraction a -``transient command'', but because it always involves at least two +“transient command”, but because it always involves at least two commands (a prefix and a suffix) we prefer to call it just a -``transient''. +“transient”. When the user calls a transient prefix command, a transient (temporary) keymap is activated, which binds the transient's infix @@ -97,7 +97,7 @@ Usage * Getting Help for Suffix Commands:: * Enabling and Disabling Suffixes:: * Other Commands:: -* Other Options:: +* Configuration:: Defining New Commands @@ -144,20 +144,20 @@ Related Abstractions and Packages Taking inspiration from prefix keys and prefix arguments, Transient implements a similar abstraction involving a prefix command, infix arguments and suffix commands. We could call this abstraction a -``transient command'', but because it always involves at least two +“transient command”, but because it always involves at least two commands (a prefix and a suffix) we prefer to call it just a -``transient''. +“transient”. +@cindex transient prefix command @quotation Transient keymaps are a feature provided by Emacs. Transients as implemented by this package involve the use of transient keymaps. -@cindex transient prefix command Emacs provides a feature that it calls @dfn{prefix commands}. When we -talk about ``prefix commands'' in this manual, then we mean our own kind -of ``prefix commands'', unless specified otherwise. To avoid ambiguity +talk about “prefix commands” in this manual, then we mean our own kind +of “prefix commands”, unless specified otherwise. To avoid ambiguity we sometimes use the terms @dfn{transient prefix command} for our kind and -``regular prefix command'' for the Emacs' kind. +“regular prefix command” for Emacs' kind. @end quotation @@ -208,7 +208,7 @@ looks a bit like this: @quotation This is a simplified version of @code{magit-tag}. Info manuals do not -support images or colored text, so the above ``screenshot'' lacks some +support images or colored text, so the above “screenshot” lacks some information; in practice you would be able to tell whether the arguments @code{--force} and @code{--annotate} are enabled or not based on their color. @@ -216,11 +216,11 @@ color. @end quotation @cindex command dispatchers -Transient can be used to implement simple ``command dispatchers''. The +Transient can be used to implement simple “command dispatchers”. The main benefit then is that the user can see all the available commands in a popup buffer. That is useful by itself because it frees the user from having to remember all the keys that are valid after a certain -prefix key or command. Magit's @code{magit-dispatch} (on @code{C-x M-g}) command is +prefix key or command. Magit's @code{magit-dispatch} (on @kbd{C-x M-g}) command is an example of using Transient to merely implement a command dispatcher. @@ -235,22 +235,22 @@ argument means to a certain command. Transient suffix commands, on the other hand, can accept dozens of different arguments without the user having to remember anything. -When using Transient, one can call a command with arguments that -are just as complex as when calling the same function non-interactively +When using Transient, one can call a command with arguments that are +just as complex as when calling the same function non-interactively from Lisp. Invoking a transient command with arguments is similar to invoking a command in a shell with command-line completion and history enabled. One benefit of the Transient interface is that it remembers history -not only on a global level (``this command was invoked using these -arguments, and previously it was invoked using those other arguments''), +not only on a global level (“this command was invoked using these +arguments, and previously it was invoked using those other arguments”), but also remembers the values of individual arguments independently. @xref{Using History}. -After a transient prefix command is invoked, @kbd{C-h @var{key}} can be used to -show the documentation for the infix or suffix command that @kbd{@var{key}} is +After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to +show the documentation for the infix or suffix command that @kbd{@var{KEY}} is bound to (@pxref{Getting Help for Suffix Commands}), and infixes and -suffixes can be removed from the transient using @kbd{C-x l @var{key}}. Infixes +suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes and suffixes that are disabled by default can be enabled the same way. @xref{Enabling and Disabling Suffixes}. @@ -273,11 +273,12 @@ to implementing yet). * Getting Help for Suffix Commands:: * Enabling and Disabling Suffixes:: * Other Commands:: -* Other Options:: +* Configuration:: @end menu @node Invoking Transients @section Invoking Transients + @cindex invoking transients A transient prefix command is invoked like any other command by @@ -290,9 +291,9 @@ disabled while the transient state is in effect. There are two kinds of commands that are available after invoking a transient prefix command; infix and suffix commands. Infix commands set some value (which is then shown in a popup buffer), without -leaving the transient. Suffix commands, on the other hand, usually quit -the transient and they may use the values set by the infix commands, -i.e.@: the infix @strong{arguments}. +leaving the transient. Suffix commands, on the other hand, usually +quit the transient and they may use the values set by the infix +commands, i.e., the infix @strong{arguments}. Instead of setting arguments to be used by a suffix command, infix commands may also set some value by side-effect, e.g., by setting the @@ -300,11 +301,12 @@ value of some variable. @node Aborting and Resuming Transients @section Aborting and Resuming Transients + @cindex aborting transients @cindex resuming transients @cindex quit transient -To quit the transient without invoking a suffix command press @code{C-g}. +To quit the transient without invoking a suffix command press @kbd{C-g}. Key bindings in transient keymaps may be longer than a single event. After pressing a valid prefix key, all commands whose bindings do not @@ -314,7 +316,7 @@ prefix key, but not the complete transient). A transient prefix command can be bound as a suffix of another transient. Invoking such a suffix replaces the current transient -state with a new transient state, i.e.@: the available bindings change +state with a new transient state, i.e., the available bindings change and the information displayed in the popup buffer is updated accordingly. Pressing @kbd{C-g} while a nested transient is active only quits the innermost transient, causing a return to the previous @@ -325,13 +327,12 @@ the latter, then you can later resume the stack of transients using @kbd{M-x transient-resume}. @table @asis +@item @kbd{C-g} (@code{transient-quit-seq}) +@itemx @kbd{C-g} (@code{transient-quit-one}) +@kindex C-g @kindex C-g @findex transient-quit-seq -@item @kbd{C-g} @tie{}@tie{}@tie{}@tie{}(@code{transient-quit-seq}) -@kindex C-g @findex transient-quit-one -@item @kbd{C-g} @tie{}@tie{}@tie{}@tie{}(@code{transient-quit-one}) - This key quits the currently active incomplete key sequence, if any, or else the current transient. When quitting the current transient, it returns to the previous transient, if any. @@ -342,22 +343,20 @@ To learn how to get that binding back see @code{transient-bind-q-to-quit}'s doc string. @table @asis +@item @kbd{C-q} (@code{transient-quit-all}) @kindex C-q @findex transient-quit-all -@item @kbd{C-q} @tie{}@tie{}@tie{}@tie{}(@code{transient-quit-all}) - This command quits the currently active incomplete key sequence, if any, and all transients, including the active transient and all suspended transients, if any. +@item @kbd{C-z} (@code{transient-suspend}) @kindex C-z @findex transient-suspend -@item @kbd{C-z} @tie{}@tie{}@tie{}@tie{}(@code{transient-suspend}) - Like @code{transient-quit-all}, this command quits an incomplete key sequence, if any, and all transients. Additionally, it saves the stack of transients so that it can easily be resumed (which is -particularly useful if you quickly need to do ``something else'', and +particularly useful if you quickly need to do “something else” and the stack is deeper than a single transient, and/or you have already changed the values of some infix arguments). @@ -365,43 +364,39 @@ Note that only a single stack of transients can be saved at a time. If another stack is already saved, then saving a new stack discards the previous stack. -@kindex M-x transient-resume +@item @kbd{M-x transient-resume} @findex transient-resume -@item @kbd{M-x transient-resume} @tie{}@tie{}@tie{}@tie{}(@code{transient-resume}) - This command resumes the previously suspended stack of transients, if any. @end table @node Common Suffix Commands @section Common Suffix Commands + @cindex common suffix commands A few shared suffix commands are available in all transients. These suffix commands are not shown in the popup buffer by default. -This includes the aborting commands mentioned in the previous section, as -well as some other commands that are all bound to @kbd{C-x @var{key}}. After +This includes the aborting commands mentioned in the previous section, +as well as some other commands that are all bound to @kbd{C-x @var{KEY}}. After @kbd{C-x} is pressed, a section featuring all these common commands is temporarily shown in the popup buffer. After invoking one of them, -the section disappears again. Note, however, that one of these commands -is described as ``Show common permanently''; invoke that if you want the -common commands to always be shown for all transients. +the section disappears again. Note, however, that one of these +commands is described as “Show common permanently”; invoke that if you +want the common commands to always be shown for all transients. @table @asis +@item @kbd{C-x t} (@code{transient-toggle-common}) @kindex C-x t @findex transient-toggle-common -@item @kbd{C-x t} @tie{}@tie{}@tie{}@tie{}(@code{transient-toggle-common}) - This command toggles whether the generic commands that are common to all transients are always displayed or only after typing the incomplete prefix key sequence @kbd{C-x}. This only affects the current Emacs session. - @end table @defopt transient-show-common-commands - This option controls whether shared suffix commands are shown alongside the transient-specific infix and suffix commands. By default, the shared commands are not shown to avoid overwhelming @@ -412,14 +407,15 @@ commands. The value of this option can be changed for the current Emacs session by typing @kbd{C-x t} while a transient is active. @end defopt -The other common commands are described in either the previous or -in one of the following sections. +The other common commands are described in either the previous or in +one of the following sections. Some of Transient's key bindings differ from the respective bindings of Magit-Popup; see @ref{FAQ} for more information. @node Saving Values @section Saving Values + @cindex saving values of arguments After setting the infix arguments in a transient, the user can save @@ -429,8 +425,7 @@ Most transients will start out with the saved arguments when they are invoked. There are a few exceptions, though. Some transients are designed so that the value that they use is stored externally as the buffer-local value of some variable. Invoking such a transient again -uses the buffer-local value.@footnote{ -@code{magit-diff} and @code{magit-log} are two prominent examples, and their +uses the buffer-local value. @footnote{@code{magit-diff} and @code{magit-log} are two prominent examples, and their handling of buffer-local values is actually a bit more complicated than outlined above and even customizable.} @@ -440,30 +435,32 @@ history. That value won't be used when the transient is next invoked, but it is easily accessible (@pxref{Using History}). @table @asis +@item @kbd{C-x s} (@code{transient-set}) @kindex C-x s @findex transient-set -@item @kbd{C-x s} @tie{}@tie{}@tie{}@tie{}(@code{transient-set}) - This command saves the value of the active transient for this Emacs session. +@item @kbd{C-x C-s} (@code{transient-save}) @kindex C-x C-s @findex transient-save -@item @kbd{C-x C-s} @tie{}@tie{}@tie{}@tie{}(@code{transient-save}) - Save the value of the active transient persistently across Emacs sessions. +@item @kbd{C-x C-k} (@code{transient-save}) +@kindex C-x C-k +@findex transient-save +Clear the set and saved value of the active transient. @end table @defopt transient-values-file - This option names the file that is used to persist the values of transients between Emacs sessions. @end defopt @node Using History @section Using History + @cindex value history Every time the user invokes a suffix command the transient's current @@ -472,32 +469,28 @@ same way one can cycle through the history of commands that read user-input in the minibuffer. @table @asis +@item @kbd{C-M-p} (@code{transient-history-prev}) +@itemx @kbd{C-x p} @kindex C-M-p -@findex transient-history-prev -@item @kbd{C-M-p} @tie{}@tie{}@tie{}@tie{}(@code{transient-history-prev}) @kindex C-x p @findex transient-history-prev -@item @kbd{C-x p} @tie{}@tie{}@tie{}@tie{}(@code{transient-history-prev}) - This command switches to the previous value used for the active transient. +@item @kbd{C-M-n} (@code{transient-history-next}) +@itemx @kbd{C-x n} @kindex C-M-n -@findex transient-history-next -@item @kbd{C-M-n} @tie{}@tie{}@tie{}@tie{}(@code{transient-history-next}) @kindex C-x n @findex transient-history-next -@item @kbd{C-x n} @tie{}@tie{}@tie{}@tie{}(@code{transient-history-next}) - This command switches to the next value used for the active transient. @end table In addition to the transient-wide history, Transient of course supports per-infix history. When an infix reads user-input using the -minibuffer, the user can use the regular minibuffer history -commands to cycle through previously used values. Usually the same -keys as those mentioned above are bound to those commands. +minibuffer, the user can use the regular minibuffer history commands +to cycle through previously used values. Usually the same keys as +those mentioned above are bound to those commands. Authors of transients should arrange for different infix commands that read the same kind of value to also use the same history key @@ -506,19 +499,18 @@ read the same kind of value to also use the same history key Both kinds of history are saved to a file when Emacs is exited. @defopt transient-history-file - This option names the file that is used to persist the history of transients and their infixes between Emacs sessions. @end defopt @defopt transient-history-limit - This option controls how many history elements are kept at the time the history is saved in @code{transient-history-file}. @end defopt @node Getting Help for Suffix Commands @section Getting Help for Suffix Commands + @cindex getting help Transients can have many suffixes and infixes that the user might not @@ -527,14 +519,13 @@ provides access to the documentation directly from the active transient. @table @asis +@item @kbd{C-h} (@code{transient-help}) @kindex C-h @findex transient-help -@item @kbd{C-h} @tie{}@tie{}@tie{}@tie{}(@code{transient-help}) - -This command enters help mode. When help mode is active, -typing a key shows information about the suffix command that the key -is normally bound to (instead of invoking it). Pressing @kbd{C-h} a -second time shows information about the @emph{prefix} command. +This command enters help mode. When help mode is active, typing a +key shows information about the suffix command that the key normally +is bound to (instead of invoking it). Pressing @kbd{C-h} a second time +shows information about the @emph{prefix} command. After typing a key, the stack of transient states is suspended and information about the suffix command is shown instead. Typing @kbd{q} in @@ -550,6 +541,7 @@ non-infix suffixes this is usually appropriate. @node Enabling and Disabling Suffixes @section Enabling and Disabling Suffixes + @cindex enabling suffixes @cindex disabling suffixes @@ -571,7 +563,7 @@ displayed at any level. The levels of individual transients and/or their individual suffixes can be changed interactively, by invoking the transient and then -pressing @kbd{C-x l} to enter the ``edit'' mode, see below. +pressing @kbd{C-x l} to enter the “edit” mode, see below. The default level for both transients and their suffixes is 4. The @code{transient-default-level} option only controls the default for @@ -582,23 +574,20 @@ very important suffixes on a lower level, so that they remain available even if the user lowers the transient level. @defopt transient-default-level - This option controls which suffix levels are made available by default. It sets the transient-level for transients for which the user has not set that individually. @end defopt @defopt transient-levels-file - This option names the file that is used to persist the levels of transients and their suffixes between Emacs sessions. @end defopt @table @asis +@item @kbd{C-x l} (@code{transient-set-level}) @kindex C-x l @findex transient-set-level -@item @kbd{C-x l} @tie{}@tie{}@tie{}@tie{}(@code{transient-set-level}) - This command enters edit mode. When edit mode is active, then all infixes and suffixes that are currently usable are displayed along with their levels. The colors of the levels indicate whether they @@ -616,9 +605,9 @@ To change the transient level press @kbd{C-x l} again. To exit edit mode press @kbd{C-g}. Note that edit mode does not display any suffixes that are not -currently usable. @code{magit-rebase}, for example, shows different suffixes -depending on whether a rebase is already in progress or not. The -predicates also apply in edit mode. +currently usable. @code{magit-rebase}, for example, shows different +suffixes depending on whether a rebase is already in progress or +not. The predicates also apply in edit mode. Therefore, to control which suffixes are available given a certain state, you have to make sure that that state is currently active. @@ -633,27 +622,29 @@ following commands. These commands are never shown in the transient window, and the key bindings are the same as for @code{scroll-up-command} and @code{scroll-down-command} in other buffers. -@findex transient-scroll-up arg @deffn Command transient-scroll-up arg - -This command scrolls text of transient popup window upward @var{arg} -lines. If @var{arg} is @code{nil}, then it scrolls near full screen. This +This command scrolls text of transient popup window upward @var{ARG} +lines. If @var{ARG} is @code{nil}, then it scrolls near full screen. This is a wrapper around @code{scroll-up-command} (which see). @end deffn -@findex transient-scroll-down arg @deffn Command transient-scroll-down arg - -This command scrolls text of transient popup window down @var{arg} -lines. If @var{arg} is @code{nil}, then it scrolls near full screen. This +This command scrolls text of transient popup window down @var{ARG} +lines. If @var{ARG} is @code{nil}, then it scrolls near full screen. This is a wrapper around @code{scroll-down-command} (which see). @end deffn -@node Other Options -@section Other Options +@node Configuration +@section Configuration + +More options are described in @ref{Common Suffix Commands}, in @ref{Saving Values}, in @ref{Using History} and in @ref{Enabling and Disabling Suffixes}. + +@anchor{Essential Options} +@subheading Essential Options + +Also see @ref{Common Suffix Commands}. @defopt transient-show-popup - This option controls whether the current transient's infix and suffix commands are shown in the popup buffer. @@ -662,13 +653,11 @@ suffix commands are shown in the popup buffer. If @code{t} (the default) then the popup buffer is shown as soon as a transient prefix command is invoked. - @item If @code{nil}, then the popup buffer is not shown unless the user explicitly requests it, by pressing an incomplete prefix key sequence. - @item If a number, then the a brief one-line summary is shown instead of the popup buffer. If zero or negative, then not even that summary @@ -676,45 +665,43 @@ is shown; only the pressed key itself is shown. The popup is shown when the user explicitly requests it by pressing an incomplete prefix key sequence. Unless this is zero, -the popup is shown after that many seconds of inactivity -(using the absolute value). +the popup is shown after that many seconds of inactivity (using +the absolute value). @end itemize @end defopt @defopt transient-enable-popup-navigation - This option controls whether navigation commands are enabled in the transient popup buffer. While a transient is active the transient popup buffer is not the current buffer, making it necessary to use dedicated commands to act on that buffer itself. This is disabled by default. If this option -is non-nil, then the following features are available: +is non-@code{nil}, then the following features are available: @itemize @item -@key{UP} moves the cursor to the previous suffix. -@key{DOWN} moves the cursor to the next suffix. -@key{RET} invokes the suffix the cursor is on. - +@kbd{@key{UP}} moves the cursor to the previous suffix. @item -@key{mouse-1} invokes the clicked on suffix. - +@kbd{@key{DOWN}} moves the cursor to the next suffix. +@item +@kbd{@key{RET}} invokes the suffix the cursor is on. +@item +@kbd{mouse-1} invokes the clicked on suffix. @item @kbd{C-s} and @kbd{C-r} start isearch in the popup buffer. @end itemize @end defopt @defopt transient-display-buffer-action - This option specifies the action used to display the transient popup buffer. The transient popup buffer is displayed in a window using -@code{(display-buffer @var{buffer} transient-display-buffer-action)}. +@code{(display-buffer @var{BUFFER} transient-display-buffer-action)}. -The value of this option has the form @code{(@var{function} . @var{alist})}, -where @var{function} is a function or a list of functions. Each such +The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})}, +where @var{FUNCTION} is a function or a list of functions. Each such function should accept two arguments: a buffer to display and an -alist of the same form as @var{alist}. @xref{Choosing Window,,,elisp,}, +alist of the same form as @var{ALIST}. @xref{Choosing Window,,,elisp,}, for details. The default is: @@ -727,7 +714,7 @@ The default is: @end lisp This displays the window at the bottom of the selected frame. -Another useful @var{function} is @code{display-buffer-below-selected}, which +Another useful @var{FUNCTION} is @code{display-buffer-below-selected}, which is what @code{magit-popup} used by default. For more alternatives see @ref{Buffer Display Action Functions,,,elisp,}, and see @ref{Buffer Display Action Alists,,,elisp,}. @@ -748,8 +735,20 @@ If you change the value of this option, then you might also want to change the value of @code{transient-mode-line-format}. @end defopt -@defopt transient-mode-line-format +@anchor{Accessibility Options} +@subheading Accessibility Options +@defopt transient-force-single-column +This option controls whether the use of a single column to display +suffixes is enforced. This might be useful for users with low +vision who use large text and might otherwise have to scroll in two +dimensions. +@end defopt + +@anchor{Auxiliary Options} +@subheading Auxiliary Options + +@defopt transient-mode-line-format This option controls whether the transient popup buffer has a mode-line, separator line, or neither. @@ -759,23 +758,28 @@ good value. If @code{line} (the default), then the buffer also has no mode-line, but a thin line is drawn instead, using the background color of the face -@code{transient-separator}. Text-mode frames cannot display thin lines, and -therefore fall back to treating @code{line} like @code{nil}. +@code{transient-separator}. Text-mode frames cannot display thin lines, +and therefore fall back to treating @code{line} like @code{nil}. Otherwise this can be any mode-line format. @xref{Mode Line Format,,,elisp,}, for details. @end defopt -@defopt transient-read-with-initial-input +@defopt transient-semantic-coloring +This option controls whether prefixes and suffixes are colored in +a Hydra-like fashion. -This option controls whether the last history element is used as the -initial minibuffer input when reading the value of an infix argument -from the user. If @code{nil}, there is no initial input and the first -element has to be accessed the same way as the older elements. +If non-@code{nil}, then the key binding of each suffix is colorized to +indicate whether it exits the transient state or not. The color of +the prefix is indicated using the line that is drawn when the value +of @code{transient-mode-line-format} is @code{line}. + +For more information about how Hydra uses colors see +@uref{https://github.com/abo-abo/hydra#color} and +@uref{https://oremacs.com/2015/02/19/hydra-colors-reloaded}. @end defopt @defopt transient-highlight-mismatched-keys - This option controls whether key bindings of infix commands that do not match the respective command-line argument should be highlighted. For other infix commands this option has no effect. @@ -795,7 +799,6 @@ The highlighting is done using one of the faces @end defopt @defopt transient-substitute-key-function - This function is used to modify key bindings. If the value of this option is @code{nil} (the default), then no substitution is performed. @@ -819,23 +822,33 @@ optimized for lisp. @end lisp @end defopt -@defopt transient-detect-key-conflicts +@defopt transient-read-with-initial-input +This option controls whether the last history element is used as the +initial minibuffer input when reading the value of an infix argument +from the user. If @code{nil}, there is no initial input and the first +element has to be accessed the same way as the older elements. +@end defopt -This option controls whether key binding conflicts should be -detected at the time the transient is invoked. If so, this -results in an error, which prevents the transient from being used. -Because of that, conflicts are ignored by default. +@defopt transient-hide-during-minibuffer-read +This option controls whether the transient buffer is hidden while +user input is being read in the minibuffer. +@end defopt -Conflicts cannot be determined earlier, i.e.@: when the transient is -being defined and when new suffixes are being added, because at that -time there can be false-positives. It is actually valid for -multiple suffixes to share a common key binding, provided the -predicates of those suffixes prevent that more than one of them is -enabled at a time. +@defopt transient-align-variable-pitch +This option controls whether columns are aligned pixel-wise in the +popup buffer. + +If this is non-@code{nil}, then columns are aligned pixel-wise to support +variable-pitch fonts. Keys are not aligned, so you should use a +fixed-pitch font for the @code{transient-key} face. Other key faces +inherit from that face unless a theme is used that breaks that +relationship. + +This option is intended for users who use a variable-pitch font for +the @code{default} face. @end defopt @defopt transient-force-fixed-pitch - This option controls whether to force the use of a monospaced font in popup buffer. Even if you use a proportional font for the @code{default} face, you might still want to use a monospaced font in @@ -843,39 +856,70 @@ transient's popup buffer. Setting this option to @code{t} causes @code{default} to be remapped to @code{fixed-pitch} in that buffer. @end defopt +@anchor{Developer Options} +@subheading Developer Options + +These options are mainly intended for developers. + +@defopt transient-detect-key-conflicts +This option controls whether key binding conflicts should be +detected at the time the transient is invoked. If so, this results +in an error, which prevents the transient from being used. Because +of that, conflicts are ignored by default. + +Conflicts cannot be determined earlier, i.e., when the transient is +being defined and when new suffixes are being added, because at that +time there can be false-positives. It is actually valid for +multiple suffixes to share a common key binding, provided the +predicates of those suffixes prevent that more than one of them is +enabled at a time. +@end defopt + +@defopt transient-highlight-higher-levels +This option controls whether suffixes that would not be available by +default are highlighted. + +When non-@code{nil} then the descriptions of suffixes are highlighted if +their level is above 4, the default of @code{transient-default-level}. +Assuming you have set that variable to 7, this highlights all +suffixes that won't be available to users without them making the +same customization. +@end defopt + @node Modifying Existing Transients @chapter Modifying Existing Transients + @cindex modifying existing transients -To an extent, transients can be customized interactively, see @ref{Enabling and Disabling Suffixes}. This section explains how existing transients -can be further modified non-interactively. +To an extent, transients can be customized interactively, see +@ref{Enabling and Disabling Suffixes}. This section explains how existing +transients can be further modified non-interactively. The following functions share a few arguments: @itemize @item -@var{prefix} is a transient prefix command, a symbol. - +@var{PREFIX} is a transient prefix command, a symbol. @item -@var{suffix} is a transient infix or suffix specification in the same form +@var{SUFFIX} is a transient infix or suffix specification in the same form as expected by @code{transient-define-prefix}. Note that an infix is a -special kind of suffix. Depending on context ``suffixes'' means -``suffixes (including infixes)'' or ``non-infix suffixes''. Here it +special kind of suffix. Depending on context “suffixes” means +“suffixes (including infixes)” or “non-infix suffixes”. Here it means the former. @xref{Suffix Specifications}. -@var{suffix} may also be a group in the same form as expected by +@var{SUFFIX} may also be a group in the same form as expected by @code{transient-define-prefix}. @xref{Group Specifications}. @item -@var{loc} is a command, a key vector, a key description (a string as +@var{LOC} is a command, a key vector, a key description (a string as returned by @code{key-description}), or a list specifying coordinates (the last element may also be a command or key). For example @code{(1 0 -1)} identifies the last suffix (@code{-1}) of the first subgroup (@code{0}) of the second group (@code{1}). -If @var{loc} is a list of coordinates, then it can be used to identify a +If @var{LOC} is a list of coordinates, then it can be used to identify a group, not just an individual suffix command. The function @code{transient-get-suffix} can be useful to determine whether @@ -885,55 +929,53 @@ at the definition of the transient prefix command. @end itemize These functions operate on the information stored in the -@code{transient--layout} property of the @var{prefix} symbol. Suffix entries in -that tree are not objects but have the form @code{(@var{level} -@var{class} @var{plist})}, where -@var{plist} should set at least @code{:key}, @code{:description} and -@code{:command}. +@code{transient--layout} property of the @var{PREFIX} symbol. Suffix entries in +that tree are not objects but have the form @code{(@var{LEVEL} @var{CLASS} @var{PLIST})}, where +@var{PLIST} should set at least @code{:key}, @code{:description} and @code{:command}. -@defun transient-insert-suffix prefix loc suffix - -This function inserts suffix or group @var{suffix} into @var{prefix} -before @var{loc}. +@defun transient-insert-suffix prefix loc suffix &optional keep-other @end defun +@defun transient-append-suffix prefix loc suffix &optional keep-other +These functions insert the suffix or group @var{SUFFIX} into @var{PREFIX} before +or after @var{LOC}. -@defun transient-append-suffix prefix loc suffix +Conceptually adding a binding to a transient prefix is similar to +adding a binding to a keymap, but this is complicated by the fact +that multiple suffix commands can be bound to the same key, provided +they are never active at the same time, see @ref{Predicate Slots}. -This function inserts suffix or group @var{suffix} into @var{prefix} -after @var{loc}. +Unfortunately both false-positives and false-negatives are possible. +To deal with the former use non-nil @var{KEEP-OTHER@.} To deal with the +latter remove the conflicting binding explicitly. @end defun @defun transient-replace-suffix prefix loc suffix - -This function replaces the suffix or group at @var{loc} in @var{prefix} with -suffix or group @var{suffix}. +This function replaces the suffix or group at @var{LOC} in @var{PREFIX} with +suffix or group @var{SUFFIX}. @end defun @defun transient-remove-suffix prefix loc - -This function removes the suffix or group at @var{loc} in @var{prefix}. +This function removes the suffix or group at @var{LOC} in @var{PREFIX}. @end defun @defun transient-get-suffix prefix loc - -This function returns the suffix or group at @var{loc} in @var{prefix}. The +This function returns the suffix or group at @var{LOC} in @var{PREFIX}. The returned value has the form mentioned above. @end defun @defun transient-suffix-put prefix loc prop value - -This function edits the suffix or group at @var{loc} in @var{prefix}, -by setting the @var{prop} of its plist to @var{value}. +This function edits the suffix or group at @var{LOC} in @var{PREFIX}, by setting +the @var{PROP} of its plist to @var{VALUE}. @end defun Most of these functions do not signal an error if they cannot perform the requested modification. The functions that insert new suffixes -show a warning if @var{loc} cannot be found in @var{prefix}, without -signaling an error. The reason for doing it like this is that -establishing a key binding (and that is what we essentially are trying -to do here) should not prevent the rest of the configuration from -loading. Among these functions only @code{transient-get-suffix} and -@code{transient-suffix-put} may signal an error. +show a warning if @var{LOC} cannot be found in @var{PREFIX} without signaling an +error. The reason for doing it like this is that establishing a key +binding (and that is what we essentially are trying to do here) should +not prevent the rest of the configuration from loading. Among these +functions only @code{transient-get-suffix} and @code{transient-suffix-put} may +signal an error. @node Defining New Commands @chapter Defining New Commands @@ -957,12 +999,11 @@ defines the complete transient, not just the transient prefix command that is used to invoke that transient. @defmac transient-define-prefix name arglist [docstring] [keyword value]@dots{} group@dots{} [body@dots{}] - -This macro defines @var{name} as a transient prefix command and binds the +This macro defines @var{NAME} as a transient prefix command and binds the transient's infix and suffix commands. -@var{arglist} are the arguments that the prefix command takes. -@var{docstring} is the documentation string and is optional. +@var{ARGLIST} are the arguments that the prefix command takes. +@var{DOCSTRING} is the documentation string and is optional. These arguments can optionally be followed by keyword-value pairs. Each key has to be a keyword symbol, either @code{:class} or a keyword @@ -970,11 +1011,11 @@ argument supported by the constructor of that class. The @code{transient-prefix} class is used if the class is not specified explicitly. -@var{group}s add key bindings for infix and suffix commands and specify +@var{GROUP}s add key bindings for infix and suffix commands and specify how these bindings are presented in the popup buffer. At least one -@var{group} has to be specified. @xref{Binding Suffix and Infix Commands}. +@var{GROUP} has to be specified. @xref{Binding Suffix and Infix Commands}. -The @var{body} is optional. If it is omitted, then @var{arglist} is ignored and +The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and the function definition becomes: @lisp @@ -983,15 +1024,15 @@ the function definition becomes: (transient-setup 'NAME)) @end lisp -If @var{body} is specified, then it must begin with an @code{interactive} form -that matches @var{arglist}, and it must call @code{transient-setup}. It may, +If @var{BODY} is specified, then it must begin with an @code{interactive} form +that matches @var{ARGLIST}, and it must call @code{transient-setup}. It may, however, call that function only when some condition is satisfied. @cindex scope of a transient All transients have a (possibly @code{nil}) value, which is exported when suffix commands are called, so that they can consume that value. For some transients it might be necessary to have a sort of -secondary value, called a ``scope''. Such a scope would usually be +secondary value, called a “scope”. Such a scope would usually be set in the command's @code{interactive} form and has to be passed to the setup function: @@ -1013,8 +1054,8 @@ described below. Users and third-party packages can add additional bindings using functions such as @code{transient-insert-suffix} (@pxref{Modifying -Existing Transients}). These functions take a ``suffix -specification'' as one of their arguments, which has the same form as +Existing Transients}). These functions take a “suffix +specification” as one of their arguments, which has the same form as the specifications used in @code{transient-define-prefix}. @menu @@ -1024,6 +1065,7 @@ the specifications used in @code{transient-define-prefix}. @node Group Specifications @subsection Group Specifications + @cindex group specifications The suffix and infix commands of a transient are organized in groups. @@ -1043,39 +1085,39 @@ brackets to do the latter. Group specifications then have this form: @lisp -[@{@var{level}@} @{@var{description}@} - @{@var{keyword} @var{value}@}... - @var{element}...] +[@{@var{LEVEL}@} @{@var{DESCRIPTION}@} + @{@var{KEYWORD} @var{VALUE}@}... + @var{ELEMENT}...] @end lisp -The @var{level} is optional and defaults to 4. @xref{Enabling and +The @var{LEVEL} is optional and defaults to 4. @xref{Enabling and Disabling Suffixes}. -The @var{description} is optional. If present, it is used as the heading of +The @var{DESCRIPTION} is optional. If present, it is used as the heading of the group. -The @var{keyword}-@var{value} pairs are optional. Each keyword has to be a +The @var{KEYWORD}-@var{VALUE} pairs are optional. Each keyword has to be a keyword symbol, either @code{:class} or a keyword argument supported by the constructor of that class. @itemize @item One of these keywords, @code{:description}, is equivalent to specifying -@var{description} at the very beginning of the vector. The recommendation +@var{DESCRIPTION} at the very beginning of the vector. The recommendation is to use @code{:description} if some other keyword is also used, for -consistency, or @var{description} otherwise, because it looks better. +consistency, or @var{DESCRIPTION} otherwise, because it looks better. @item -Likewise @code{:level} is equivalent to @var{level}. +Likewise @code{:level} is equivalent to @var{LEVEL}. @item Other important keywords include the @code{:if...} keywords. These keywords control whether the group is available in a certain situation. -For example, one group of the @code{magit-rebase} transient uses -@code{:if magit-rebase-in-progress-p}, which contains the suffixes -that are useful while rebase is already in progress; and another that uses +For example, one group of the @code{magit-rebase} transient uses @code{:if + magit-rebase-in-progress-p}, which contains the suffixes that are +useful while rebase is already in progress; and another that uses @code{:if-not magit-rebase-in-progress-p}, which contains the suffixes that initiate a rebase. @@ -1096,9 +1138,9 @@ suffixes, which assumes that a predicate like this is used: @end lisp @item -The value of @code{:setup-children}, if non-@code{nil}, is a function -that takes two arguments the group object itself and a list of children. -The children are given as a, potentially empty, list consisting +The value of @code{:setup-children}, if non-@code{nil}, is a function that takes +two arguments the group object itself and a list of children. +The children are given as a (potentially empty) list consisting of either group or suffix specifications. It can make arbitrary changes to the children including constructing new children from scratch. Also see @code{transient-setup-children}. @@ -1109,21 +1151,21 @@ contained in a group are right padded, effectively aligning the descriptions. @end itemize -The @var{element}s are either all subgroups (vectors), or all suffixes +The @var{ELEMENT}s are either all subgroups (vectors), or all suffixes (lists) and strings. (At least currently no group type exists that would allow mixing subgroups with commands at the same level, though in principle there is nothing that prevents that.) -If the @var{element}s are not subgroups, then they can be a mixture of lists +If the @var{ELEMENT}s are not subgroups, then they can be a mixture of lists that specify commands and strings. Strings are inserted verbatim. The empty string can be used to insert gaps between suffixes, which is particularly useful if the suffixes are outlined as a table. Variables are supported inside group specifications. For example in place of a direct subgroup specification, a variable can be used whose -value is a vector that qualifies as a group specification. Likewise, a -variable can be used where a suffix specification is expected. Lists -of group or suffix specifications are also supported. Indirect +value is a vector that qualifies as a group specification. Likewise, +a variable can be used where a suffix specification is expected. +Lists of group or suffix specifications are also supported. Indirect specifications are resolved when the transient prefix is being defined. @@ -1131,6 +1173,7 @@ The form of suffix specifications is documented in the next node. @node Suffix Specifications @subsection Suffix Specifications + @cindex suffix specifications A transient's suffix and infix commands are bound when the transient @@ -1140,37 +1183,36 @@ prefix command is defined using @code{transient-define-prefix}, see individual suffix command. The same form is also used when later binding additional commands -using functions such as @code{transient-insert-suffix}, -see @ref{Modifying Existing Transients}. +using functions such as @code{transient-insert-suffix}, see @ref{Modifying Existing Transients}. -Note that an infix is a special kind of suffix. Depending on context -``suffixes'' means ``suffixes (including infixes)'' or ``non-infix -suffixes''. Here it means the former. +Note that an infix is a special kind of suffix. Depending on context +“suffixes” means “suffixes (including infixes)” or “non-infix +suffixes”. Here it means the former. Suffix specifications have this form: @lisp -([@var{level}] - [@var{key}] [@var{description}] - @var{command}|@var{argument} [@var{keyword} @var{value}]...) +([@var{LEVEL}] + [@var{KEY}] [@var{DESCRIPTION}] + @var{COMMAND}|@var{ARGUMENT} [@var{KEYWORD} @var{VALUE}]...) @end lisp -@var{level}, @var{key} and @var{description} can also be specified using the @var{keyword}s +@var{LEVEL}, @var{KEY} and @var{DESCRIPTION} can also be specified using the @var{KEYWORD}s @code{:level}, @code{:key} and @code{:description}. If the object that is associated with -@var{command} sets these properties, then they do not have to be specified +@var{COMMAND} sets these properties, then they do not have to be specified here. You can however specify them here anyway, possibly overriding the object's values just for the binding inside this transient. @itemize @item -@var{level} is the suffix level, an integer between 1 and 7. +@var{LEVEL} is the suffix level, an integer between 1 and 7. @xref{Enabling and Disabling Suffixes}. @item -@var{key} is the key binding, either a vector or key description string. +@var{KEY} is the key binding, either a vector or key description string. @item -@var{description} is the description, either a string or a function that +@var{DESCRIPTION} is the description, either a string or a function that returns a string. The function should be a lambda expression to avoid ambiguity. In some cases a symbol that is bound as a function would also work but to be safe you should use @code{:description} in that @@ -1182,7 +1224,7 @@ argument that is mandatory in all cases. @itemize @item -Usually @var{command} is a symbol that is bound as a function, which has +@var{COMMAND} should be a symbol that is bound as a function, which has to be defined or at least autoloaded as a command by the time the containing prefix command is invoked. @@ -1190,15 +1232,13 @@ Any command will do; it does not need to have an object associated with it (as would be the case if @code{transient-define-suffix} or @code{transient-define-infix} were used to define it). -The command can also be a closure or lambda expression, but that -should only be used for dynamic transients whose suffixes are -defined when the prefix command is invoked. See information about -the @code{:setup-children} function in @ref{Group Specifications}. +Anonymous, dynamically defined suffix commands are also support. +See information about the @code{:setup-children} function in @ref{Group Specifications}. As mentioned above, the object that is associated with a command can be used to set the default for certain values that otherwise have to be set in the suffix specification. Therefore if there is no object, -then you have to make sure to specify the @var{key} and the @var{description}. +then you have to make sure to specify the @var{KEY} and the @var{DESCRIPTION}. As a special case, if you want to add a command that might be neither defined nor autoloaded, you can use a workaround like: @@ -1209,8 +1249,8 @@ defined nor autoloaded, you can use a workaround like: :if (lambda () (featurep 'no-library)))) @end lisp -Instead of @code{featurep} you could also use @code{require} with a -non-nil value for @var{noerror}. +Instead of @code{featurep} you could also use @code{require} with a non-@code{nil} value +for @var{NOERROR}. @item The mandatory argument can also be a command-line argument, a @@ -1227,30 +1267,29 @@ used. Unless the class is specified explicitly, the appropriate class is guessed based on the long argument. If the argument ends with @samp{=} -(e.g. @samp{--format=}) then @code{transient-option} is used, otherwise +(e.g., @samp{--format=}) then @code{transient-option} is used, otherwise @code{transient-switch}. @end itemize -Finally, details can be specified using optional -@var{keyword}-@var{value} pairs. +Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs. Each keyword has to be a keyword symbol, either @code{:class} or a keyword argument supported by the constructor of that class. See @ref{Suffix Slots}. @node Defining Suffix and Infix Commands @section Defining Suffix and Infix Commands + @cindex defining suffix commands @cindex defining infix commands -Note that an infix is a special kind of suffix. Depending on context -``suffixes'' means ``suffixes (including infixes)'' or ``non-infix -suffixes''. +Note that an infix is a special kind of suffix. Depending on context +“suffixes” means “suffixes (including infixes)” or “non-infix +suffixes”. @defmac transient-define-suffix name arglist [docstring] [keyword value]@dots{} body@dots{} +This macro defines @var{NAME} as a transient suffix command. -This macro defines @var{name} as a transient suffix command. - -@var{arglist} are the arguments that the command takes. -@var{docstring} is the documentation string and is optional. +@var{ARGLIST} are the arguments that the command takes. +@var{DOCSTRING} is the documentation string and is optional. These arguments can optionally be followed by keyword-value pairs. Each keyword has to be a keyword symbol, either @code{:class} or a keyword @@ -1258,17 +1297,16 @@ argument supported by the constructor of that class. The @code{transient-suffix} class is used if the class is not specified explicitly. -The @var{body} must begin with an @code{interactive} form that matches @var{arglist}. +The @var{BODY} must begin with an @code{interactive} form that matches @var{ARGLIST}. The infix arguments are usually accessed by using @code{transient-args} inside @code{interactive}. @end defmac @defmac transient-define-infix name arglist [docstring] [keyword value]@dots{} +This macro defines @var{NAME} as a transient infix command. -This macro defines @var{name} as a transient infix command. - -@var{arglist} is always ignored (but mandatory never-the-less) and -reserved for future use. @var{docstring} is the documentation string and +@var{ARGLIST} is always ignored (but mandatory never-the-less) and +reserved for future use. @var{DOCSTRING} is the documentation string and is optional. The keyword-value pairs are mandatory. All transient infix commands @@ -1297,13 +1335,12 @@ Different infix commands behave differently because the concrete methods are different for different infix command classes. In rare cases the above command function might not be suitable, even if you define your own infix command class. In that case you have to use -@code{transient-suffix-command} to define the infix command and use @code{t} as -the value of the @code{:transient} keyword. +@code{transient-define-suffix} to define the infix command and use @code{t} as the +value of the @code{:transient} keyword. @end defmac @defmac transient-define-argument name arglist [docstring] [keyword value]@dots{} - -This macro defines @var{name} as a transient infix command. +This macro defines @var{NAME} as a transient infix command. This is an alias for @code{transient-define-infix}. Only use this alias to define an infix command that actually sets an infix argument. @@ -1313,7 +1350,6 @@ To define an infix command that, for example, sets a variable, use @node Using Infix Arguments @section Using Infix Arguments -@cindex using infix arguments The functions and the variables described below allow suffix commands to access the value of the transient from which they were invoked; @@ -1332,61 +1368,56 @@ function, which for infix arguments serves about the same purpose as @code{prefix-arg} serves for prefix arguments. @defun transient-args prefix - This function returns the value of the transient prefix command -@var{prefix}. +@var{PREFIX}. If the current command was invoked from the transient prefix command -@var{prefix}, then it returns the active infix arguments. If the current -command was not invoked from @var{prefix}, then it returns the set, saved -or default value for @var{prefix}. +@var{PREFIX}, then it returns the active infix arguments. If the current +command was not invoked from @var{PREFIX}, then it returns the set, saved +or default value for @var{PREFIX}. @end defun @defun transient-arg-value arg args - -This function return the value of @var{arg} as it appears in @var{args}. +This function return the value of @var{ARG} as it appears in @var{ARGS}. For a switch a boolean is returned. For an option the value is returned as a string, using the empty string for the empty value, -or @code{nil} if the option does not appear in @var{args}. +or @code{nil} if the option does not appear in @var{ARGS}. @end defun @defun transient-suffixes prefix - This function returns the suffixes of the transient prefix command -@var{prefix}. This is a list of objects. This function should only be +@var{PREFIX}. This is a list of objects. This function should only be used if you need the objects (as opposed to just their values) and -if the current command is not being invoked from @var{prefix}. +if the current command is not being invoked from @var{PREFIX}. @end defun @defvar transient-current-suffixes - The suffixes of the transient from which this suffix command was invoked. This is a list of objects. Usually it is sufficient to instead use the function @code{transient-args}, which returns a list of values. In complex cases it might be necessary to use this variable -instead, i.e.@: if you need access to information beside the value. +instead, i.e., if you need access to information beside the value. @end defvar @defvar transient-current-prefix - The transient from which this suffix command was invoked. The returned value is a @code{transient-prefix} object, which holds information associated with the transient prefix command. @end defvar @defvar transient-current-command - The transient from which this suffix command was invoked. The returned value is a symbol, the transient prefix command. @end defvar @node Transient State @section Transient State + @cindex transient state -Invoking a transient prefix command ``activates'' the respective -transient, i.e.@: it puts a transient keymap into effect, which binds +Invoking a transient prefix command “activates” the respective +transient, i.e., it puts a transient keymap into effect, which binds the transient's infix and suffix commands. The default behavior while a transient is active is as follows: @@ -1397,20 +1428,20 @@ Invoking an infix command does not affect the transient state; the transient remains active. @item -Invoking a (non-infix) suffix command ``deactivates'' the transient +Invoking a (non-infix) suffix command “deactivates” the transient state by removing the transient keymap and performing some additional cleanup. @item Invoking a command that is bound in a keymap other than the transient keymap is disallowed and trying to do so results in a -warning. This does not ``deactivate'' the transient. +warning. This does not “deactivate” the transient. @end itemize But these are just the defaults. Whether a certain command -deactivates or ``exits'' the transient is configurable. There is more -than one way in which a command can be ``transient'' or ``non-transient''; -the exact behavior is implemented by calling a so-called ``pre-command'' +deactivates or “exits” the transient is configurable. There is more +than one way in which a command can be “transient” or “non-transient”; +the exact behavior is implemented by calling a so-called “pre-command” function. Whether non-suffix commands are allowed to be called is configurable per transient. @@ -1426,10 +1457,8 @@ Valid values are booleans and the pre-commands described below. @itemize @item @code{t} is equivalent to @code{transient--do-stay}. - @item @code{nil} is equivalent to @code{transient--do-exit}. - @item If @code{transient} is unbound (and that is actually the default for non-infix suffixes) then the value of the prefix's @@ -1439,18 +1468,18 @@ essentially equivalent to it being @code{nil}. @end itemize @item -A suffix command can be a prefix command itself, i.e. a -``sub-prefix''. While a sub-prefix is active we nearly always want -@kbd{C-g} to take the user back to the ``super-prefix''. However in rare +A suffix command can be a prefix command itself, i.e., a +“sub-prefix”. While a sub-prefix is active we nearly always want +@kbd{C-g} to take the user back to the “super-prefix”. However in rare cases this may not be desirable, and that makes the following complication necessary: For @code{transient-suffix} objects the @code{transient} slot is unbound. We can ignore that for the most part because, as stated above, @code{nil} and the -slot being unbound are equivalent, and mean ``do exit''. That isn't +slot being unbound are equivalent, and mean “do exit”. That isn't actually true for suffixes that are sub-prefixes though. For such -suffixes unbound means ``do exit but allow going back'', which is the -default, while @code{nil} means ``do exit permanently'', which requires that +suffixes unbound means “do exit but allow going back”, which is the +default, while @code{nil} means “do exit permanently”, which requires that slot to be explicitly set to that value. @item @@ -1465,7 +1494,7 @@ called by @code{transient--pre-command}, a function on @code{pre-command-hook} a the value that they return determines whether the transient is exited. To do so the value of one of the constants @code{transient--exit} or @code{transient--stay} is used (that way we don't have to remember if @code{t} means -``exit'' or ``stay''). +“exit” or “stay”). Additionally, these functions may change the value of @code{this-command} (which explains why they have to be called using @code{pre-command-hook}), @@ -1480,7 +1509,6 @@ The default for infixes is @code{transient--do-stay}. This is also the only function that makes sense for infixes. @defun transient--do-stay - Call the command without exporting variables and stay transient. @end defun @@ -1490,27 +1518,55 @@ Call the command without exporting variables and stay transient. The default for suffixes is @code{transient--do-exit}. @defun transient--do-exit - Call the command after exporting variables and exit the transient. @end defun -@defun transient--do-call +@defun transient--do-return +Call the command after exporting variables and return to parent +prefix. If there is no parent prefix, then call @code{transient--do-exit}. +@end defun +@defun transient--do-call Call the command after exporting variables and stay transient. @end defun -@defun transient--do-replace +The following pre-commands are suitable for sub-prefixes. Only the +first should ever explicitly be set as the value of the @code{transient} +slot. +@defun transient--do-recurse +Call the transient prefix command, preparing for return to active +transient. + +Whether we actually return to the parent transient is ultimately +under the control of each invoked suffix. The difference between +this pre-command and @code{transient--do-replace} is that it changes the +value of the @code{transient-suffix} slot to @code{transient--do-return}. + +If there is no parent transient, then only call this command and +skip the second step. +@end defun + +@defun transient--do-replace Call the transient prefix command, replacing the active transient. -This is used for suffixes that are prefixes themselves, i.e.@: for -sub-prefixes. +Unless @code{transient--do-recurse} is explicitly used, this pre-command +is automatically used for suffixes that are prefixes themselves, +i.e., for sub-prefixes. +@end defun + +@defun transient--do-suspend +Suspend the active transient, saving the transient stack. + +This is used by the command @code{transient-suspend} and optionally also by +“external events” such as @code{handle-switch-frame}. Such bindings should +be added to @code{transient-predicate-map}. @end defun @anchor{Pre-commands for Non-Suffixes} @subheading Pre-commands for Non-Suffixes -The default for non-suffixes, i.e@: commands that are bound in other +The default for non-suffixes, i.e., commands that are bound in other keymaps beside the transient keymap, is @code{transient--do-warn}. Silently ignoring the user-error is also an option, though probably not a good one. @@ -1520,12 +1576,10 @@ If you want to let the user invoke non-suffix commands, then use slot. @defun transient--do-warn - Call @code{transient-undefined} and stay transient. @end defun @defun transient--do-noop - Call @code{transient-noop} and stay transient. @end defun @@ -1533,21 +1587,18 @@ Call @code{transient-noop} and stay transient. @subheading Special Pre-Commands @defun transient--do-quit-one - If active, quit help or edit mode, else exit the active transient. This is used when the user pressed @kbd{C-g}. @end defun @defun transient--do-quit-all - Exit all transients without saving the transient stack. This is used when the user pressed @kbd{C-q}. @end defun @defun transient--do-suspend - Suspend the active transient, saving the transient stack. This is used when the user pressed @kbd{C-z}. @@ -1555,6 +1606,7 @@ This is used when the user pressed @kbd{C-z}. @node Classes and Methods @chapter Classes and Methods + @cindex classes and methods Transient uses classes and generic functions to make it possible to @@ -1591,7 +1643,7 @@ holds a function that is used to read a new value for an infix command. The values of such slots are regular functions. Generic functions are used when a function should do something -different based on the type of the command, i.e. when all commands +different based on the type of the command, i.e., when all commands of a certain type should behave the same way but different from the behavior for other types. Object slots that hold a regular function as value are used when the task that they perform is likely to @@ -1613,7 +1665,7 @@ differ even between different commands of the same type. @section Group Classes The type of a group can be specified using the @code{:class} property at the -beginning of the class specification, e.g. @code{[:class transient-columns +beginning of the class specification, e.g., @code{[:class transient-columns ...]} in a call to @code{transient-define-prefix}. @itemize @@ -1622,7 +1674,7 @@ The abstract @code{transient-child} class is the base class of both @code{transient-group} (and therefore all groups) as well as of @code{transient-suffix} (and therefore all suffix and infix commands). -This class exists because the elements (a.k.a.@: ``children'') of certain +This class exists because the elements (or “children”) of certain groups can be other groups instead of suffix and infix commands. @item @@ -1632,8 +1684,8 @@ group classes. @item The @code{transient-column} class is the simplest group. -This is the default ``flat'' group. If the class is not specified -explicitly and the first element is not a vector (i.e. not a group), +This is the default “flat” group. If the class is not specified +explicitly and the first element is not a vector (i.e., not a group), then this class is used. This class displays each element on a separate line. @@ -1648,8 +1700,8 @@ Direct elements have to be groups whose elements have to be commands or strings. Each subgroup represents a column. This class takes care of inserting the subgroups' elements. -This is the default ``nested'' group. If the class is not specified -explicitly and the first element is a vector (i.e.@: a group), then +This is the default “nested” group. If the class is not specified +explicitly and the first element is a vector (i.e., a group), then this class is used. @item @@ -1665,12 +1717,11 @@ elements. @section Group Methods @defun transient-setup-children group children - This generic function can be used to setup the children or a group. The default implementation usually just returns the children -unchanged, but if the @code{setup-children} slot of @var{group} is non-nil, then -it calls that function with @var{children} as the only argument and +unchanged, but if the @code{setup-children} slot of @var{GROUP} is non-@code{nil}, then +it calls that function with @var{CHILDREN} as the only argument and returns the value. The children are given as a (potentially empty) list consisting of @@ -1680,7 +1731,6 @@ children from scratch. @end defun @defun transient--insert-group group - This generic function formats the group and its elements and inserts the result into the current buffer, which is a temporary buffer. The contents of that buffer are later inserted into the popup buffer. @@ -1698,7 +1748,6 @@ commands and there is only a single generic function that can be specialized based on the class of a prefix command. @defun transient--history-init obj - This generic function is called while setting up the transient and is responsible for initializing the @code{history} slot. This is the transient-wide history; many individual infixes also have a history @@ -1784,8 +1833,7 @@ functions use @code{describe-function}. @subsection Suffix Value Methods @defun transient-init-value obj - -This generic function sets the initial value of the object @var{obj}. +This generic function sets the initial value of the object @var{OBJ}. This function is called for all suffix commands, but unless a concrete method is implemented this falls through to the default @@ -1797,9 +1845,8 @@ a method. @end defun @defun transient-infix-read obj - This generic function determines the new value of the infix object -@var{obj}. +@var{OBJ}. This function merely determines the value; @code{transient-infix-set} is used to actually store the new value in the object. @@ -1809,40 +1856,36 @@ user using the reader specified by the @code{reader} slot (using the @code{transient-infix-value} method described below). For some infix classes the value is changed without reading -anything in the minibuffer, i.e.@: the mere act of invoking the +anything in the minibuffer, i.e., the mere act of invoking the infix command determines what the new value should be, based on the previous value. @end defun @defun transient-prompt obj - This generic function returns the prompt to be used to read infix -object @var{obj}'s value. +object @var{OBJ}'s value. @end defun @defun transient-infix-set obj value - -This generic function sets the value of infix object @var{obj} to @var{value}. +This generic function sets the value of infix object @var{OBJ} to @var{VALUE}. @end defun @defun transient-infix-value obj - -This generic function returns the value of the suffix object @var{obj}. +This generic function returns the value of the suffix object @var{OBJ}. This function is called by @code{transient-args} (which see), meaning this function is how the value of a transient is determined so that the invoked suffix command can use it. Currently most values are strings, but that is not set in stone. -@code{nil} is not a value, it means ``no value''. +@code{nil} is not a value, it means “no value”. Usually only infixes have a value, but see the method for @code{transient-suffix}. @end defun @defun transient-init-scope obj - -This generic function sets the scope of the suffix object @var{obj}. +This generic function sets the scope of the suffix object @var{OBJ}. The scope is actually a property of the transient prefix, not of individual suffixes. However it is possible to invoke a suffix @@ -1859,8 +1902,7 @@ implementation, which is a noop. @subsection Suffix Format Methods @defun transient-format obj - -This generic function formats and returns @var{obj} for display. +This generic function formats and returns @var{OBJ} for display. When this function is called, then the current buffer is some temporary buffer. If you need the buffer from which the prefix @@ -1869,27 +1911,23 @@ making @code{transient--source-buffer} current. @end defun @defun transient-format-key obj - -This generic function formats @var{obj}'s @code{key} for display and returns the +This generic function formats @var{OBJ}'s @code{key} for display and returns the result. @end defun @defun transient-format-description obj - -This generic function formats @var{obj}'s @code{description} for display and +This generic function formats @var{OBJ}'s @code{description} for display and returns the result. @end defun @defun transient-format-value obj - -This generic function formats @var{obj}'s value for display and returns +This generic function formats @var{OBJ}'s value for display and returns the result. @end defun @defun transient-show-help obj - Show help for the prefix, infix or suffix command represented by -@var{obj}. +@var{OBJ}. For prefixes, show the info manual, if that is specified using the @code{info-manual} slot. Otherwise, show the manpage if that is specified @@ -1906,10 +1944,10 @@ the command's doc string. @itemize @item -@code{man-page} or @code{info-manual} can be used to specify the documentation for -the prefix and its suffixes. The command @code{transient-help} uses the -method @code{transient-show-help} (which see) to lookup and use these -values. +@code{show-help}, @code{man-page} or @code{info-manual} can be used to specify the +documentation for the prefix and its suffixes. The command +@code{transient-help} uses the method @code{transient-show-help} (which see) to +lookup and use these values. @item @code{history-key} If multiple prefix commands should share a single value, @@ -1930,7 +1968,7 @@ multiple sub-lists. @item @code{scope} For some transients it might be necessary to have a sort of -secondary value, called a ``scope''. See @code{transient-define-prefix}. +secondary value, called a “scope”. See @code{transient-define-prefix}. @end itemize @anchor{Internal Prefix Slots} @@ -1995,10 +2033,8 @@ It must contain the following %-placeholders: @itemize @item @code{%k} For the key. - @item @code{%d} For the description. - @item @code{%v} For the infix value. Non-infix suffixes don't have a value. @end itemize @@ -2006,6 +2042,11 @@ It must contain the following %-placeholders: @item @code{description} The description, either a string or a function that is called with no argument and returns a string. + +@item +@code{show-help} A function used to display help for the suffix. If +unspecified, the prefix controls how hlep is displayed for its +suffixes. @end itemize @anchor{Slots of @code{transient-infix}} @@ -2016,10 +2057,10 @@ They are defined here anyway to allow sharing certain methods. @itemize @item -@code{argument} The long argument, e.g. @code{--verbose}. +@code{argument} The long argument, e.g., @code{--verbose}. @item -@code{shortarg} The short argument, e.g. @code{-v}. +@code{shortarg} The short argument, e.g., @code{-v}. @item @code{value} The value. Should not be accessed directly. @@ -2036,7 +2077,34 @@ the prefixes. @item @code{multi-value} For options, whether the option can have multiple -values. If non-nil, then default to use @code{completing-read-multiple}. +values. If this is non-@code{nil}, then the values are read using +@code{completing-read-multiple} by default and if you specify your own +reader, then it should read the values using that function or +similar. + +Supported non-@code{nil} values are: + +@itemize +@item +Use @code{rest} for an option that can have multiple values. This is +useful e.g., for an @code{--} argument that indicates that all remaining +arguments are files (such as @code{git log -- file1 file2}). + +In the list returned by @code{transient-args} such an option and its +values are represented by a single list of the form @code{(ARGUMENT + . VALUES)}. + +@item +Use @code{repeat} for an option that can be specified multiple times. + +In the list returned by @code{transient-args} each instance of the option +and its value appears separately in the usual from, for example: +@code{("--another-argument" "--option=first" "--option=second")}. +@end itemize + +In both cases the option's values have to be specified in the +default value of a prefix using the same format as returned by +@code{transient-args}, e.g., @code{("--other" "--o=1" "--o=2" ("--" "f1" "f2"))}. @item @code{always-read} For options, whether to read a value on every invocation. @@ -2053,8 +2121,8 @@ same history because their values are of the same kind. @item @code{reader} The function used to read the value of an infix. Not used -for switches. The function takes three arguments, @var{prompt}, -@var{initial-input} and @var{history}, and must return a string. +for switches. The function takes three arguments, @var{PROMPT}, +@var{INITIAL-INPUT} and @var{HISTORY}, and must return a string. @item @code{prompt} The prompt used when reading the value, either a string or a @@ -2098,25 +2166,18 @@ what happens if you use more than one. @itemize @item @code{if} Enable if predicate returns non-@code{nil}. - @item @code{if-not} Enable if predicate returns @code{nil}. - @item @code{if-non-nil} Enable if variable's value is non-@code{nil}. - @item @code{if-nil} Enable if variable's value is @code{nil}. - @item @code{if-mode} Enable if major-mode matches value. - @item @code{if-not-mode} Enable if major-mode does not match value. - @item @code{if-derived} Enable if major-mode derives from value. - @item @code{if-not-derived} Enable if major-mode does not derive from value. @end itemize @@ -2146,16 +2207,13 @@ The following diagrams illustrate some of the differences. @itemize @item -@code{(c)} represents a return to the command loop. - +@samp{(c)} represents a return to the command loop. @item -@code{(+)} represents the user's choice to press one key or another. - +@samp{(+)} represents the user's choice to press one key or another. @item -@code{@{@var{word}@}} are possible behaviors. - +@samp{@{WORD@}} are possible behaviors. @item -@code{@{@var{number}@}} is a footnote. +@samp{@{NUMBER@}} is a footnote. @end itemize @anchor{Regular Prefix Commands} @@ -2331,7 +2389,7 @@ and also takes external state into account. @itemize @item -@code{@{1@}} Transients can be configured to be exited when a suffix command +@samp{@{1@}} Transients can be configured to be exited when a suffix command is invoked. The default is to do so for all suffixes except for those that are common to all transients and which are used to perform tasks such as providing help and saving the value of the @@ -2340,7 +2398,7 @@ specified for individual suffix commands and may even depend on state. @item -@code{@{2@}} Transients can be configured to allow the user to invoke +@samp{@{2@}} Transients can be configured to allow the user to invoke non-suffix commands. The default is to not allow that and instead warn the user. @end itemize @@ -2386,9 +2444,9 @@ Both packages use transient keymaps to make a set of commands temporarily available and show the available commands in a popup buffer. -A Hydra ``body'' is equivalent to a Transient ``prefix'' and a Hydra -``head'' is equivalent to a Transient ``suffix''. Hydra has no equivalent -of a Transient ``infix''. +A Hydra “body” is equivalent to a Transient “prefix” and a Hydra +“head” is equivalent to a Transient “suffix”. Hydra has no equivalent +of a Transient “infix”. Both hydras and transients can be used as simple command dispatchers. Used like this they are similar to regular prefix commands and prefix @@ -2406,7 +2464,7 @@ command dispatchers: @item Invoking a command from a hydra does not necessarily exit the hydra. That makes it possible to invoke the same command again, but using a -shorter key sequence (i.e. the key that was used to enter the hydra +shorter key sequence (i.e., the key that was used to enter the hydra does not have to be pressed again). Transient supports that too, but for now this feature is not a focus @@ -2421,7 +2479,6 @@ using the current interface: ("n" "next visible heading" outline-next-visible-heading)]) @end lisp - @item Transient supports infix arguments; values that are set by infix commands and then consumed by the invoked suffix command(s). @@ -2465,13 +2522,13 @@ currently exist. @anchor{Can I control how the popup buffer is displayed?} @appendixsec Can I control how the popup buffer is displayed? -Yes, see @code{transient-display-buffer-action} in @ref{Other Options}. +Yes, see @code{transient-display-buffer-action} in @ref{Configuration}. @anchor{Why did some of the key bindings change?} @appendixsec Why did some of the key bindings change? You may have noticed that the bindings for some of the common commands -do @strong{not} have the prefix @code{C-x} and that furthermore some of these commands +do @strong{not} have the prefix @kbd{C-x} and that furthermore some of these commands are grayed out while others are not. That unfortunately is a bit confusing if the section of common commands is not shown permanently, making the following explanation necessary. @@ -2486,42 +2543,41 @@ bindings. The bindings that do use a prefix do so to avoid wasting too many non-prefix bindings, keeping them available for use in individual transients. The bindings that do not use a prefix and that are @strong{not} grayed out are very important bindings that are @strong{always} -available, even when invoking the ``common command key prefix'' or @strong{any +available, even when invoking the “common command key prefix” or @strong{any other} transient-specific prefix. The non-prefix keys that @strong{are} grayed out however, are not available when any incomplete prefix key sequence -is active. They do not use the ``common command key prefix'' because it +is active. They do not use the “common command key prefix” because it is likely that users want to invoke them several times in a row and -e.g. @kbd{M-p M-p M-p} is much more convenient than -@kbd{C-x M-p C-x M-p C-x M-p}. +e.g., @kbd{M-p M-p M-p} is much more convenient than @kbd{C-x M-p C-x M-p C-x M-p}. -You may also have noticed that the "Set" command is bound to @kbd{C-x s}, +You may also have noticed that the “Set” command is bound to @kbd{C-x s}, while Magit-Popup used to bind @kbd{C-c C-c} instead. I have seen several users praise the latter binding (sic), so I did not change it willy-nilly. The reason that I changed it is that using different prefix keys for different common commands, would have made the -temporary display of the common commands even more confusing, -i.e. after pressing @kbd{C-c} all the @kbd{C-x ...} bindings would be grayed out. +temporary display of the common commands even more confusing, i.e., +after pressing @kbd{C-c} all the bindings that begin with the @kbd{C-x} prefix +would be grayed out. Using a single prefix for common commands key means that all other potential prefix keys can be used for transient-specific commands -@strong{without} the section of common commands also popping up. @code{C-c} in +@strong{without} the section of common commands also popping up. @kbd{C-c} in particular is a prefix that I want to (and already do) use for Magit, and also using that for a common command would prevent me from doing so. (Also see the next question.) -@anchor{Why does @code{q} not quit popups anymore?} -@appendixsec Why does @code{q} not quit popups anymore? +@anchor{Why does @kbd{q} not quit popups anymore?} +@appendixsec Why does @kbd{q} not quit popups anymore? I agree that @kbd{q} is a good binding for commands that quit something. This includes quitting whatever transient is currently active, but it also includes quitting whatever it is that some specific transient is -controlling. The transient @code{magit-blame} for example binds @code{q} to the +controlling. The transient @code{magit-blame} for example binds @kbd{q} to the command that turns @code{magit-blame-mode} off. So I had to decide if @kbd{q} should quit the active transient (like -Magit-Popup used to) or whether @kbd{C-g} should do that instead, so -that @kbd{q} +Magit-Popup used to) or whether @kbd{C-g} should do that instead, so that @kbd{q} could be bound in individual transient to whatever commands make sense for them. Because all other letters are already reserved for use by individual transients, I have decided to no longer make an exception @@ -2548,7 +2604,7 @@ necessary changes. See its doc string for more information. @printindex vr @node Concept Index -@appendix Concept and Feature Index +@appendix Concept Index @printindex cp diff --git a/doc/misc/url.texi b/doc/misc/url.texi index a9d06d7f5b9..5644027f952 100644 --- a/doc/misc/url.texi +++ b/doc/misc/url.texi @@ -950,7 +950,6 @@ containing the data cached for that URL. @node Proxies @section Proxies and Gatewaying -@c fixme: check/document url-ns stuff @cindex proxy servers @cindex proxies @cindex environment variables diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi index b0deb31d108..0703667ecce 100644 --- a/doc/misc/viper.texi +++ b/doc/misc/viper.texi @@ -1842,7 +1842,7 @@ usually most effective: (set-face-background viper-replace-overlay-face "yellow") @end smallexample For a complete list of colors available to you, evaluate the expression -@code{(x-defined-colors)}. (Type it in the buffer @file{*scratch*} and then +@code{(defined-colors)}. (Type it in the buffer @file{*scratch*} and then hit the @kbd{C-j} key. @item viper-replace-overlay-cursor-color "Red" @@ -2571,7 +2571,7 @@ The GNU Emacs Manual}, for more information on tags. The following two commands are normally bound to a mouse click and are part of Viper. They work only if Emacs runs as an application under X -Windows (or under some other window system for which a port of GNU Emacs 20 +Windows (or under some other window system for which a port of GNU Emacs is available). Clicking the mouse when Emacs is invoked in an Xterm window (using @code{emacs -nw}) will do no good. diff --git a/doc/misc/vtable.texi b/doc/misc/vtable.texi index 296dc520a1b..59cd9d0f564 100644 --- a/doc/misc/vtable.texi +++ b/doc/misc/vtable.texi @@ -465,9 +465,9 @@ When point is placed on a vtable, the following keys are bound: Sort the table by the current column (@code{vtable-sort-by-current-column}). Note that the table is sorted according to the data returned by the getter function (@pxref{Making A -Table}), not by how it's -displayed in the buffer. Columns that have only numerical data is -sorted as numbers, the rest are sorted as strings. +Table}), not by how it's displayed in the buffer. Columns that have +only numerical data are sorted as numbers, the rest are sorted as +strings. @findex vtable-narrow-current-column @item @{ diff --git a/etc/AUTHORS b/etc/AUTHORS index f961852cee6..f6349df5bc2 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -105,9 +105,9 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el cc-langs.el cc-mode.el cc-styles.el cc-vars.el and changed cc-mode.texi minibuf.c bytecomp.el edebug.el follow.el window.c display.texi subr.el syntax.texi progmodes/compile.el - programs.texi keyboard.c lisp.h modes.texi window.el windows.texi - cus-start.el eval.c font-lock.el isearch.el newcomment.el - and 166 other files + programs.texi eval.c keyboard.c lisp.h modes.texi window.el + windows.texi cus-start.el font-lock.el frame.c isearch.el + and 167 other files Alan Modra: changed unexelf.c @@ -127,8 +127,7 @@ and changed nsterm.m nsterm.h nsfns.m image.c nsmenu.m configure.ac Alastair Burt: changed gnus-art.el smiley.el Albert Krewinkel: co-wrote sieve-manage.el -and changed sieve.el gnus-msg.el gnus.texi mail/sieve-manage.el - message.el sieve.texi +and changed sieve.el gnus-msg.el gnus.texi message.el sieve.texi Albert L. Ting: changed gnus-group.el mail-hist.el @@ -181,7 +180,7 @@ Alexandre Julliard: wrote vc-git.el and changed vc.el ewoc.el Alexandre Oliva: wrote gnus-mlspl.el -and changed unexelf.c emacs-regex.c format.el iris4d.h iris5d.h unexsgi.c +and changed unexelf.c format.el iris4d.h iris5d.h regex-emacs.c unexsgi.c Alexandre Veyrenc: changed fr-refcard.tex @@ -282,8 +281,8 @@ Andrea Corallo: wrote comp-cstr-tests.el comp-cstr.el comp-tests.el comp.el and changed comp.c pdumper.c lread.c bytecomp.el comp.h configure.ac lisp.h startup.el loadup.el alloc.c data.c emacs.c .gitlab-ci.yml - nadvice.el cl-macs.el advice.el help.el lisp/Makefile.in package.el - Makefile.in comp-test-funcs.el and 62 other files + nadvice.el cl-macs.el advice.el comp-test-funcs.el help.el + lisp/Makefile.in package.el Makefile.in and 61 other files André A. Gomes: changed ispell.el @@ -332,9 +331,9 @@ Andreas Schwab: changed configure.ac lisp.h xdisp.c process.c alloc.c Andreas Seltenreich: changed nnweb.el gnus.texi message.el gnus-sum.el gnus.el nnslashdot.el gnus-srvr.el gnus-util.el mm-url.el mm-uu.el - url-http.el xterm.c battery.el comint.el doc/misc/gnus.texi - easy-mmode.el gmm-utils.el gnus-art.el gnus-cite.el gnus-draft.el - gnus-group.el and 7 other files + url-http.el xterm.c battery.el comint.el easy-mmode.el gmm-utils.el + gnus-art.el gnus-cite.el gnus-draft.el gnus-group.el gnus-ml.el + and 6 other files Andreas Vögele: changed pgg-def.el @@ -376,9 +375,9 @@ Andrew Hyatt: changed bug-triage CONTRIBUTE org-archive.el org.el org.texi Andrew Innes: changed makefile.nt w32fns.c w32term.c w32.c w32proc.c - fileio.c w32-fns.el dos-w32.el inc/ms-w32.h w32term.h makefile.def + fileio.c ms-w32.h w32-fns.el dos-w32.el w32term.h makefile.def unexw32.c w32menu.c w32xfns.c addpm.c cmdproxy.c emacs.c w32-win.el - w32inevt.c configure.bat lread.c and 129 other files + w32inevt.c configure.bat lread.c and 128 other files Andrew L. Moore: changed executable.el @@ -442,8 +441,9 @@ Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi Antonin Houska: changed newcomment.el -Arash Esbati: changed reftex-vars.el reftex-auc.el reftex-ref.el - reftex.el nnmaildir.el reftex-cite.el reftex-dcr.el reftex-toc.el +Arash Esbati: changed reftex-vars.el efaq-w32.texi reftex-auc.el + reftex-ref.el reftex.el gnus.texi nnmaildir.el reftex-cite.el + reftex-dcr.el reftex-toc.el Arik Mitschang: changed smime.el @@ -479,11 +479,11 @@ Arthur Miller: changed help-fns.el ange-ftp.el bytecomp.el comp.c comp.el Artur Malabarba: wrote char-fold-tests.el faces-tests.el isearch-tests.el let-alist.el simple-tests.el sort-tests.el tabulated-list-tests.el -and changed package.el isearch.el lisp/char-fold.el files.el - tabulated-list.el package-test.el menu-bar.el replace.el bytecomp.el - faces.el files-x.el custom.el custom.texi help-fns.el - let-alist-tests.el simple.el subr-tests.el align.el bindings.el - cl-lib-tests.el cl-macs.el and 43 other files +and changed package.el isearch.el char-fold.el files.el tabulated-list.el + package-test.el menu-bar.el replace.el bytecomp.el faces.el files-x.el + custom.el custom.texi help-fns.el let-alist-tests.el simple.el + subr-tests.el align.el bindings.el cl-lib-tests.el cl-macs.el + and 43 other files Artyom Loenko: changed Info.plist.in @@ -543,7 +543,7 @@ Basil L. Contovounesios: changed simple.el message.el subr.el eww.el custom.el bibtex.el text.texi gnus-sum.el modes.texi customize.texi files.texi gnus-group.el gnus-win.el gravatar.el internals.texi json.el shr.el window.c battery-tests.el button.el custom-tests.el - and 278 other files + and 279 other files Bastian Beischer: changed semantic/complete.el calc-yank.el include.el mru-bookmark.el refs.el senator.el @@ -576,7 +576,7 @@ and changed org-clock.el org.el Benjamin Ragheb: changed fortune.el Benjamin Riefenstahl: changed files.el image-mode.el nnrss-tests.el - w32select.c emacs.c image.el inc/ms-w32.h lisp.h mac-win.el macterm.c + w32select.c emacs.c image.el lisp.h mac-win.el macterm.c ms-w32.h mule-cmds.el nnrss.el runemacs.c tcl.el w32.c w32.h Benjamin Rutt: co-wrote gnus-dired.el @@ -584,7 +584,7 @@ and changed vc.el gnus-msg.el message.el diff-mode.el ffap.el nnimap.el nnmbox.el simple.el vc-cvs.el Ben Key: changed w32.c w32fns.c w32menu.c configure.bat INSTALL w32.h - w32term.c configure.ac emacs.c inc/ms-w32.h keyboard.c make-docfile.c + w32term.c configure.ac emacs.c keyboard.c make-docfile.c ms-w32.h nsfont.m nsterm.m sound.c xfaces.c Ben Menasha: changed nnmh.el @@ -656,8 +656,8 @@ Bob Nnamtrop: changed viper-cmd.el Bob Olson: co-wrote cperl-mode.el Bob Rogers: changed vc-dir.el vc-svn.el cperl-mode.el diff.el ewoc.el - ffap.el files.el maintaining.texi sql.el thingatpt.el vc.el - vc1-xtra.texi + ffap.el files.el ietf-drums.el maintaining.texi sql.el thingatpt.el + vc.el vc1-xtra.texi Bob Weiner: changed info.el quail.el dframe.el etags.c rmail.el rmailsum.el speedbar.el @@ -709,7 +709,8 @@ Brian Fox: changed Makefile.in Makefile configure.ac minibuf.c dired.el Brian Jenkins: changed frame.c frames.texi hooks.texi Brian Leung: changed comint.el gud.el advice.el comp.c comp.el em-hist.el - files.el find-func.el gdb-mi.el help.el nadvice.el shell.el shortdoc.el + files.el find-func.el flymake.el gdb-mi.el help.el nadvice.el shell.el + shortdoc.el Brian Marick: co-wrote hideif.el @@ -850,8 +851,8 @@ Chris Hall: changed callproc.c frame.c Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c hp9000s300.h keyboard.c process.c texinfmt.el sort.el syntax.c - texnfo-upd.el x11fns.c xfns.c dired.el emacs-regex.c emacsclient.c - fileio.c hp9000s800.h indent.c info.el and 17 other files + texnfo-upd.el x11fns.c xfns.c dired.el emacsclient.c fileio.c + hp9000s800.h indent.c info.el man.el and 17 other files Chris Hecker: changed calc-aent.el @@ -973,12 +974,10 @@ Claudio Fontana: changed Makefile.in leim/Makefile.in lib-src/Makefile.in Clemens Radermacher: changed cus-start.el frame.c minibuf.texi window.el -Clément Pit--Claudel: changed debugging.texi emacs-lisp/debug.el eval.c - progmodes/python.el subr-tests.el subr.el url-http.el url-vars.el - Clément Pit-Claudel: changed Dockerfile.emba button.el configure.ac - display.texi ert.el gitlab-ci.yml keyboard.c tex-mode.el text.texi - xdisp.c + debugging.texi display.texi emacs-lisp/debug.el ert.el eval.c + gitlab-ci.yml keyboard.c progmodes/python.el subr-tests.el subr.el + tex-mode.el text.texi url-http.el url-vars.el xdisp.c Codruț Constantin Gușoi: changed files.el @@ -1032,11 +1031,11 @@ Dale Sedivec: changed sgml-mode.el wisent/python.el Damien Cassou: wrote auth-source-pass-tests.el hierarchy-tests.el hierarchy.el and co-wrote auth-source-pass.el auth-source-tests.el -and changed auth.texi checkdoc.el ispell.el message.el seq-tests.el - seq.el simple-tests.el simple.el auth-source.el autorevert.el +and changed simple.el auth.texi checkdoc.el ispell.el message.el + seq-tests.el seq.el simple-tests.el auth-source.el autorevert.el checkdoc-tests.el imenu-tests.el imenu.el info.el isearch.el - json-tests.el json.el message-tests.el package.el rmc.el sequences.texi - xref.el + json-tests.el json.el message-tests.el package.el rmc.el sending.texi + and 3 other files Damien Elmes: changed erc.el erc-dcc.el erc-track.el erc-log.el erc-pcomplete.el README erc-button.el erc-nets.el erc-ring.el Makefile @@ -1114,9 +1113,9 @@ Daniel Lublin: changed dns-mode.el Daniel Martín: changed shortdoc.el nsterm.m erc.texi files.el files.texi msdos-xtra.texi ns-win.el basic.texi cmacexp.el compilation.txt - compile-tests.el cscope.el diff.el dired.el editfns.c emacs.texi - files-tests.el find-func-tests.el find-func.el frame.c frame.el - and 16 other files + compile-tests.el cscope.el diff.el dired.el display.texi editfns.c + emacs.texi files-tests.el find-func-tests.el find-func.el frame.c + and 18 other files Daniel McClanahan: changed lisp-mode.el @@ -1273,7 +1272,7 @@ David Hedbor: changed nnmail.el David Hull: changed etags.c vc-hg.el -David Hunter: changed flymake.el inc/ms-w32.h process.c +David Hunter: changed flymake.el ms-w32.h process.c David J. Biesack: changed antlr-mode.el quickurl.el @@ -1477,7 +1476,7 @@ and changed xref.el ruby-mode.el project.el vc-git.el elisp-mode.el etags.el ruby-mode-tests.el js.el vc.el vc-hg.el package.el symref/grep.el dired-aux.el simple.el log-edit.el minibuffer.el progmodes/grep.el ido.el maintaining.texi menu-bar.el package-test.el - and 123 other files + and 122 other files Dmitry Kurochkin: changed isearch.el @@ -1515,8 +1514,8 @@ and changed dired.el cus-edit.el imenu.el info.el ls-lisp.el menu-bar.el apropos.el bindings.el and 22 other files Earl Hyatt: changed ffap.el seq-tests.el sequences.texi windows.texi - control.texi cus-edit.el hi-lock.el misc.texi pcase-tests.el pcase.el - replace.el search.texi seq.el tab-bar.el + autotype.texi control.texi cus-edit.el hi-lock.el misc.texi + pcase-tests.el pcase.el replace.el search.texi seq.el tab-bar.el E. Choroba: changed cperl-mode.el simple.el @@ -1573,8 +1572,8 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] chartab-tests.el coding-tests.el etags-tests.el rxvt.el tty-colors.el and co-wrote help-tests.el and changed xdisp.c display.texi w32.c msdos.c w32fns.c simple.el - files.el fileio.c keyboard.c emacs.c w32term.c text.texi dispnew.c - w32proc.c files.texi frames.texi configure.ac dispextern.h lisp.h + files.el fileio.c emacs.c keyboard.c w32term.c text.texi dispnew.c + w32proc.c files.texi frames.texi configure.ac lisp.h dispextern.h process.c ms-w32.h and 1236 other files Eliza Velasquez: changed server.el @@ -1734,6 +1733,8 @@ Etienne Prud’Homme: changed align.el css-mode-tests.el css-mode.el Eugene Exarevsky: changed sql.el +Eugene Ha: changed configure.ac + Evangelos Evangelou: changed progmodes/f90.el Evan Moses: changed progmodes/python.el @@ -1763,10 +1764,10 @@ Fabrice Nicol: changed etags.c etags.1 Fabrice Niessen: wrote leuven-theme.el and changed org-agenda.el -Fabrice Popineau: changed w32.c ms-w32.h w32fns.c w32heap.c w32term.c +Fabrice Popineau: changed ms-w32.h w32.c w32fns.c w32heap.c w32term.c configure.ac lisp.h unexw32.c buffer.c emacs.c image.c w32heap.h w32proc.c w32term.h INSTALL addsection.c alloc.c dispextern.h - emacs-regex.c emacs-x64.manifest emacs-x86.manifest and 25 other files + emacs-x64.manifest emacs-x86.manifest etags.c and 24 other files Fan Kai: changed esh-arg.el @@ -1784,6 +1785,8 @@ Felicián Németh: changed project.el xref.el Felipe Ochoa: changed faces.el js.el paren.el +Felix Dietrich: changed tramp-archive.el + Felix E. Klee: co-wrote svg.el and changed display.texi @@ -1821,7 +1824,7 @@ Florian Adamsky: changed recentf.el Florian Beck: changed org.el -Florian Ragwitz: changed gnus-html.el mail/sieve-manage.el +Florian Ragwitz: changed gnus-html.el sieve-manage.el Florian V. Savigny: changed sql.el @@ -1949,7 +1952,7 @@ and changed edebug.el cl-print.el edebug.texi emacs-lisp/debug.el cl-print-tests.el debugging.texi cl-macs.el edebug-test-code.el subr.el testcases.el testcover.el cl-generic.el ert-x.el eval.c eieio-compat.el elisp.texi ert.el ert.texi eval-tests.el generator.el print.c - and 24 other files + and 23 other files Geoff Gole: changed align.el ibuffer.el whitespace.el @@ -1960,9 +1963,9 @@ Geoff Kuenning: changed gnus-art.el gnus.texi Geoff Voelker: wrote ms-w32.h w32-fns.el w32.c w32.h w32heap.c w32heap.h w32inevt.c w32proc.c w32term.c and changed makefile.nt w32fns.c fileio.c makefile.def callproc.c - s/ms-w32.h emacs.bat.in unexw32.c w32term.h dos-w32.el loadup.el - w32-win.el emacs.c keyboard.c ntterm.c process.c w32console.c addpm.c - cmdproxy.c comint.el files.el and 100 other files + emacs.bat.in unexw32.c w32term.h dos-w32.el loadup.el w32-win.el + emacs.c keyboard.c ntterm.c process.c w32console.c addpm.c cmdproxy.c + comint.el files.el sysdep.c and 97 other files Georg C. F. Greve: changed pgg-gpg.el @@ -1980,7 +1983,7 @@ Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el tooltip.el and changed xdisp.c xterm.c dispnew.c dispextern.h xfns.c xfaces.c window.c keyboard.c lisp.h faces.el alloc.c buffer.c startup.el xterm.h fns.c simple.el term.c configure.ac frame.c xmenu.c emacs.c - and 607 other files + and 609 other files Gergely Nagy: changed erc.el @@ -2008,7 +2011,7 @@ and changed configure.ac Makefile.in src/Makefile.in calendar.el lisp/Makefile.in diary-lib.el files.el make-dist rmail.el progmodes/f90.el bytecomp.el admin.el misc/Makefile.in simple.el authors.el startup.el emacs.texi lib-src/Makefile.in display.texi - ack.texi subr.el and 1790 other files + ack.texi subr.el and 1786 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -2120,6 +2123,8 @@ Harald Meland: changed gnus-art.el gnus-salt.el gnus-score.el Harri Kiiskinen: changed org-protocol.el ox-publish.el +Hayden Shenk: changed tramp-adb.el + H. Dieter Wilhelm: changed calc-help.el maintaining.texi paragraphs.el Heiko Muenkel: changed b2m.c @@ -2218,7 +2223,8 @@ Ihor Radchenko: changed fns.c Iku Iwasa: changed auth-source-pass-tests.el auth-source-pass.el -Ikumi Keita: changed characters.el japan-util.el kinsoku.el minibuf.c +Ikumi Keita: changed characters.el display.texi files.el japan-util.el + kinsoku.el minibuf.c Ilja Weis: co-wrote gnus-topic.el @@ -2232,7 +2238,7 @@ Ilya Shlyakhter: changed org.el ob-lilypond.el org-clock.el Ilya Zakharevich: wrote tmm.el and co-wrote cperl-mode.el and changed w32fns.c syntax.c intervals.c syntax.h textprop.c dired.c - emacs-regex.c emacs-regex.h font-lock.el intervals.h search.c + font-lock.el intervals.h regex-emacs.c regex-emacs.h search.c Ilya Zonov: changed org-mouse.el @@ -2456,7 +2462,7 @@ Jason Rumney: wrote w32-vars.el and changed w32fns.c w32term.c w32font.c w32menu.c w32-win.el w32term.h w32.c w32uniscribe.c w32-fns.el makefile.nt w32console.c w32bdf.c configure.bat keyboard.c w32proc.c w32select.c font.c image.c w32font.h - w32gui.h xdisp.c and 153 other files + w32gui.h xdisp.c and 152 other files Jason S. Cornez: changed keyboard.c @@ -2521,7 +2527,7 @@ and changed mh-e.el mh-comp.el mh-utils.el mh-mime.el mh-customize.el Jeff Spencer: changed dired.el -Jeff Walsh: changed xwidget.c +Jeff Walsh: changed comp.c xwidget.c Jelle Licht: changed auth-source-pass-tests.el auth-source-pass.el @@ -2573,8 +2579,8 @@ Jesper Harder: wrote yenc.el and changed gnus-sum.el gnus-art.el message.el gnus-group.el gnus-msg.el gnus.el gnus-util.el rfc2047.el mm-bodies.el mm-util.el mml.el mm-decode.el nnrss.el gnus-srvr.el gnus-topic.el nnmail.el - gnus-start.el gnus-uu.el spam-stat.el gnus-score.el gnus.texi - and 202 other files + gnus-start.el gnus-uu.el gnus.texi spam-stat.el gnus-score.el + and 200 other files Jhair Tocancipa Triana: changed gnus-audio.el @@ -2796,7 +2802,7 @@ and changed epa.el epa-file.el lisp-mnt.el tips.texi dired-aux.el dired-x.el dired.el eieio.el epa-dired.el font-lock.el progmodes/compile.el simple.el allout.el button.el comint.el cus-edit.el eldoc.el emacs-module-tests.el epa-hook.el epg-config.el - epg.el and 9 other files + epg.el and 11 other files Jonas Hoersch: changed org-inlinetask.el org.el @@ -2903,7 +2909,7 @@ and co-wrote help-tests.el keymap-tests.el and changed subr.el desktop.el w32fns.c faces.el simple.el emacsclient.c files.el server.el bs.el help-fns.el xdisp.c org.el w32term.c w32.c buffer.c keyboard.c ido.el image.c window.c eval.c allout.el - and 1226 other files + and 1223 other files Juan Pechiar: changed ob-octave.el @@ -2926,7 +2932,7 @@ Julien Danjou: wrote erc-desktop-notifications.el gnus-gravatar.el and co-wrote color.el and changed shr.el org-agenda.el gnus-art.el nnimap.el gnus-html.el gnus.el message.el gnus-group.el gnus-sum.el gnus-util.el mm-decode.el - mm-view.el org.el gnus.texi mail/sieve-manage.el nnir.el mm-uu.el + mm-view.el org.el gnus.texi nnir.el sieve-manage.el mm-uu.el color-lab.el gnus-demon.el gnus-int.el gnus-msg.el and 96 other files Julien Gilles: wrote gnus-ml.el @@ -2942,8 +2948,8 @@ Jure Cuhalev: changed ispell.el Jürgen Hartmann: changed window.el Jürgen Hötzel: wrote tramp-adb.el -and changed tramp-gvfs.el tramp-sh.el comint.el em-unix.el esh-util.el - tramp-cache.el tramp.el url-handlers.el wid-edit.el +and changed tramp-gvfs.el tramp-sh.el callproc.c comint.el em-unix.el + esh-util.el tramp-cache.el tramp.el url-handlers.el wid-edit.el Juri Linkov: wrote compose.el files-x.el misearch.el repeat-tests.el replace-tests.el tab-bar-tests.el tab-bar.el tab-line.el @@ -3048,7 +3054,7 @@ Katsumi Yamaoka: wrote canlock.el and changed gnus-art.el gnus-sum.el message.el mm-decode.el gnus.texi mm-util.el mm-view.el gnus-group.el gnus-util.el gnus-msg.el mml.el shr.el rfc2047.el gnus-start.el gnus.el nntp.el gnus-agent.el nnrss.el - mm-uu.el nnmail.el emacs-mime.texi and 161 other files + mm-uu.el nnmail.el emacs-mime.texi and 159 other files Kaushal Modi: changed dired-aux.el files.el isearch.el apropos.el calc-yank.el custom.texi desktop.el dired.el dired.texi ediff-diff.el @@ -3062,7 +3068,7 @@ Kaveh R. Ghazi: changed delta88k.h xterm.c Kayvan Sylvan: changed supercite.el Kazuhiro Ito: changed coding.c uudecode.el flow-fill.el font.c - japan-util.el keyboard.c make-mode.el net/starttls.el xdisp.c + japan-util.el keyboard.c make-mode.el starttls.el xdisp.c Kazushi Marukawa: changed filelock.c hexl.c profile.c unexalpha.c @@ -3147,7 +3153,7 @@ and changed edt.texi Kevin Gallo: wrote w32-win.el and changed makefile.nt dispnew.c addpm.c config.w95 dispextern.h emacs.c facemenu.el faces.el fns.c frame.c frame.h keyboard.c makefile.def - mouse.el ntterm.c process.c s/ms-w32.h scroll.c startup.el sysdep.c + mouse.el ms-w32.h ntterm.c process.c scroll.c startup.el sysdep.c term.c and 18 other files Kevin Greiner: wrote legacy-gnus-agent.el @@ -3304,10 +3310,10 @@ and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus-score.el mm-encode.el mm-util.el nnbabyl.el nndoc.el nneething.el nnfolder.el nnheader.el nnimap.el nnmbox.el nnmh.el nnml.el nnspool.el nnvirtual.el rfc2047.el svg.el time-date.el -and changed gnus.texi simple.el subr.el files.el process.c text.texi - display.texi dired.el gnutls.c gnus-ems.el smtpmail.el help-fns.el +and changed gnus.texi simple.el subr.el files.el process.c display.texi + text.texi dired.el gnutls.c gnus-ems.el smtpmail.el help-fns.el auth-source.el url-http.el edebug.el image.el gnus-cite.el pop3.el - dired-aux.el fns.c image.c and 860 other files + dired-aux.el fns.c image.c and 867 other files Lars Rasmusson: changed ebrowse.c @@ -3379,6 +3385,8 @@ Liang Wang: changed etags.el Liāu, Kiong-Gē 廖宮毅: changed comp.c mingw-cfg.site +Lin Zhou: changed w32fns.c w32term.h + Lixin Chin: changed bibtex.el Lloyd Zusman: changed mml.el pgg-gpg.el @@ -3732,7 +3740,7 @@ Mattias Engdegård: changed byte-opt.el rx.el rx-tests.el searching.texi bytecomp-tests.el bytecomp.el calc-tests.el progmodes/compile.el subr.el autorevert.el gdb-mi.el files.el regex-emacs-tests.el mouse.el regexp-opt.el replace.el calc.el coding.c filenotify.el regex-emacs.c - calc-ext.el and 537 other files + calc-ext.el and 539 other files Mattias M: changed asm-mode-tests.el asm-mode.el @@ -3775,7 +3783,7 @@ and co-wrote tramp-cache.el tramp-sh.el tramp.el and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c files.el ange-ftp.el file-notify-tests.el files.texi dbus.texi autorevert.el tramp-fish.el kqueue.c tramp-gw.el os.texi shell.el - tramp-imap.el gitlab-ci.yml lisp.h README xesam.el and 280 other files + tramp-imap.el gitlab-ci.yml lisp.h README xesam.el and 278 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h unexec.c @@ -3878,8 +3886,8 @@ Michael Staats: wrote pc-select.el Michael Vehrs: changed quail.el woman.el Michael Welsh Duggan: changed nnimap.el lisp.h sh-script.el w32term.c - buffer.c gnus-spec.el gud.el keyboard.c mail/sieve-manage.el nnir.el - nnmail.el print.c termhooks.h url-http.el w32-win.el w32fns.c w32menu.c + buffer.c gnus-spec.el gud.el keyboard.c nnir.el nnmail.el print.c + sieve-manage.el termhooks.h url-http.el w32-win.el w32fns.c w32menu.c w32term.h woman.el xdisp.c xterm.c Michael Weylandt: changed ox-latex.el @@ -3897,11 +3905,11 @@ Michał Krzywkowski: changed elide-head.el Michal Nazarewicz: wrote cc-mode-tests.el descr-text-tests.el tildify-tests.el and co-wrote tildify.el -and changed emacs-regex.c casefiddle.c simple.el - test/src/regex-emacs-tests.el casefiddle-tests.el emacs-regex.h - message.el search.c buffer.h cc-mode.el cc-mode.texi ert-x.el files.el - frame.c remember.el sgml-mode.el unidata-gen.el README - SpecialCasing.txt bindings.el buffer.c and 41 other files +and changed regex-emacs.c casefiddle.c regex-emacs-tests.el simple.el + casefiddle-tests.el message.el regex-emacs.h search.c buffer.h + cc-mode.el cc-mode.texi ert-x.el files.el frame.c remember.el + sgml-mode.el unidata-gen.el README SpecialCasing.txt bindings.el + buffer.c and 41 other files Michal Nowak: changed gnutls.el @@ -3924,8 +3932,8 @@ Miguel Ruiz: changed ob-gnuplot.el Mihai Olteanu: changed hexl.el Miha Rihtaršič: changed keyboard.c commands.texi minibuf.c minibuffer.el - simple.el comint.el data.c delsel.el errors.texi esh-mode.el eval.c - ibuffer.el macros.c process.c sh-script.el + simple.el bindings.el comint.el data.c delsel.el errors.texi + esh-mode.el eval.c ibuffer.el macros.c process.c sh-script.el Mihir Rege: changed js.el @@ -4168,7 +4176,7 @@ Nils Ackermann: changed message.el nnmh.el reftex-vars.el Nitish Chinta: changed progmodes/python.el sendmail.el simple.el -N. Jackson: changed emacs.texi forms.texi os.texi +N. Jackson: changed emacs.texi forms.texi gnus.info os.texi Noah Evans: changed follow.el @@ -4187,7 +4195,7 @@ Noam Postavsky: changed progmodes/python.el lisp-mode.el bytecomp.el lisp-mode-tests.el term.el xdisp.c cl-macs.el eval.c simple.el data.c emacs-lisp/debug.el modes.texi help-fns.el subr.el elisp-mode.el ert.el isearch.el processes.texi search.c cl-print.el diff-mode.el - and 363 other files + and 362 other files Nobuyoshi Nakada: co-wrote ruby-mode.el and changed ruby-mode-tests.el @@ -4307,7 +4315,7 @@ and co-wrote cal-dst.el and changed lisp.h configure.ac alloc.c fileio.c process.c editfns.c sysdep.c xdisp.c fns.c image.c keyboard.c data.c emacs.c lread.c xterm.c eval.c gnulib-comp.m4 callproc.c Makefile.in frame.c buffer.c - and 1854 other files + and 1847 other files Paul Fisher: changed fns.c @@ -4321,9 +4329,9 @@ and changed message.el gnus-util.el gnus-int.el gnus.el gnus-agent.el Paul Pogonyshev: changed subr.el byte-opt.el bytecomp.el emacs-lisp/debug.el eval.c progmodes/python.el which-func.el align.el - bytecode.c cc-langs.el cl-macs.el configure.ac dabbrev.el display.texi - eldoc.el elisp-mode.el ert.el ert.texi etags.el fns-tests.el fns.c - and 20 other files + bytecode.c cc-langs.el cl-macs.el configure.ac dabbrev.el desktop.el + display.texi eldoc.el elisp-mode.el ert.el ert.texi etags.el + fns-tests.el and 21 other files Paul Rankin: changed outline.el @@ -4508,9 +4516,9 @@ Philipp Stephani: wrote callint-tests.el checkdoc-tests.el cl-preloaded-tests.el ediff-diff-tests.el eval-tests.el ido-tests.el lread-tests.el mouse-tests.el startup-tests.el xt-mouse-tests.el and changed emacs-module.c emacs-module-tests.el configure.ac json.c - process.c eval.c json-tests.el process-tests.el internals.texi alloc.c + process.c eval.c internals.texi json-tests.el process-tests.el alloc.c emacs-module.h.in emacs.c lread.c nsterm.m lisp.h pdumper.c bytecomp.el - callproc.c seccomp-filter.c gtkutil.c files.el and 179 other files + callproc.c seccomp-filter.c gtkutil.c files.el and 184 other files Phillip Lord: wrote ps-print-tests.el w32-feature.el and changed build-zips.sh build-dep-zips.py lisp/Makefile.in undo.c @@ -4565,8 +4573,8 @@ and changed xdisp.c comp.c fns.c pdumper.c alloc.c byte-opt.el comp-tests.el comp.el composite.c and 28 other files Po Lu: changed xdisp.c anti.texi browse-url.el callproc.c cc-compat.el - config.bat esh-cmd.el fileio.c langinfo.h loadup.el msdos.c msdos.h - nsfns.m nsterm.m process.c sed1v2.inp sed2v2.inp sed3v2.inp + config.bat esh-cmd.el fileio.c langinfo.h loadup.el mouse.el msdos.c + msdos.h nsfns.m nsterm.m process.c sed1v2.inp sed2v2.inp sed3v2.inp sedlibmk.inp tooltip.el xterm.c Pontus Michael: changed simple.el @@ -4663,7 +4671,7 @@ Reiner Steib: wrote gmm-utils.el and changed message.el gnus.texi gnus-art.el gnus-sum.el gnus-group.el gnus.el mml.el gnus-faq.texi mm-util.el gnus-score.el message.texi gnus-msg.el gnus-start.el gnus-util.el spam-report.el mm-uu.el spam.el - mm-decode.el files.el gnus-agent.el nnmail.el and 172 other files + mm-decode.el files.el gnus-agent.el nnmail.el and 171 other files Remek Trzaska: changed gnus-ems.el @@ -4697,6 +4705,8 @@ Richard Dawe: changed config.in src/Makefile.in Richard G. Bielawski: changed modes.texi paren.el +Richard Hansen: changed easy-mmode.el + Richard Hoskins: changed message.el Richard Kim: wrote wisent/python.el @@ -4727,7 +4737,7 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-langs.el and changed files.el keyboard.c simple.el xterm.c xdisp.c rmail.el fileio.c process.c sysdep.c buffer.c xfns.c window.c subr.el configure.ac startup.el sendmail.el emacs.c Makefile.in editfns.c - info.el dired.el and 1338 other files + info.el dired.el and 1336 other files Richard Ryniker: changed sendmail.el @@ -4777,7 +4787,7 @@ Robert Pluim: wrote nsm-tests.el and changed configure.ac process.c blocks.awk network-stream-tests.el font.c processes.texi ftfont.c gtkutil.c vc-git.el process-tests.el emoji-zwj.awk gnutls.el network-stream.el nsm.el tramp.texi mml-sec.el - nsterm.m unicode xfns.c auth.texi composite.c and 134 other files + nsterm.m unicode xfns.c auth.texi composite.c and 138 other files Robert Thorpe: changed cus-start.el indent.el rmail.texi @@ -5033,6 +5043,7 @@ Sergey Poznyakoff: changed rmail.el mh-mime.el rmail.texi smtpmail.el Sergey Trofimov: changed window.el Sergey Vinokurov: changed emacs-module-tests.el emacs-module.c + memory-report.el Sergio Durigan Junior: changed eudcb-bbdb.el gdb-mi.el @@ -5114,9 +5125,8 @@ and co-wrote gnus-sieve.el gssapi.el mml1991.el nnfolder.el nnimap.el nnml.el rot13.el sieve-manage.el and changed message.el gnus-sum.el gnus-art.el smtpmail.el pgg-gpg.el pgg.el gnus-agent.el mml2015.el mml.el gnus-group.el mm-decode.el - gnus-msg.el gnus.texi mail/sieve-manage.el pgg-pgp5.el browse-url.el - gnus-int.el gnus.el hashcash.el mm-view.el password.el - and 101 other files + gnus-msg.el gnus.texi pgg-pgp5.el browse-url.el gnus-int.el gnus.el + hashcash.el mm-view.el password.el gnus-cache.el and 99 other files Simon Lang: changed building.texi icomplete.el misterioso-theme.el progmodes/grep.el @@ -5171,7 +5181,7 @@ and co-wrote help-tests.el keymap-tests.el and changed efaq.texi checkdoc.el package.el cperl-mode.el bookmark.el help.el keymap.c subr.el simple.el erc.el ediff-util.el idlwave.el time.el bytecomp-tests.el comp.el speedbar.el bytecomp.el edebug.el - emacs-lisp-intro.texi flyspell.el ibuffer.el and 1337 other files + emacs-lisp-intro.texi flyspell.el ibuffer.el and 1344 other files Stefan Merten: co-wrote rst.el @@ -5188,7 +5198,7 @@ and co-wrote font-lock.el gitmerge.el pcvs.el and changed subr.el simple.el keyboard.c bytecomp.el cl-macs.el files.el lisp.h vc.el xdisp.c alloc.c eval.c sh-script.el progmodes/compile.el keymap.c buffer.c window.c tex-mode.el lisp-mode.el newcomment.el - help-fns.el lread.c and 1616 other files + help-fns.el lread.c and 1612 other files Stefano Facchini: changed gtkutil.c @@ -5336,10 +5346,9 @@ Svante Carl V. Erichsen: changed cl-indent.el Svend Tollak Munkejord: changed deuglify.el Sven Joachim: changed files.el de-refcard.tex dired-aux.el emacs.1 - arc-mode.el dired-x.el doc/misc/gnus.texi em-cmpl.el em-hist.el - em-ls.el esh-cmd.el esh-ext.el esh-io.el files.texi gnus-sum.el - gnus.texi help.el make-dist message.el movemail.c mule.texi - and 9 other files + gnus.texi arc-mode.el dired-x.el em-cmpl.el em-hist.el em-ls.el + esh-cmd.el esh-ext.el esh-io.el files.texi gnus-sum.el help.el + make-dist message.el movemail.c mule.texi sed3v2.inp and 8 other files Sylvain Chouleur: changed gnus-icalendar.el icalendar.el @@ -5366,7 +5375,7 @@ Takahashi Naoto: wrote ethio-util.el language/ethiopic.el latin-post.el and co-wrote latin-ltx.el quail.el and changed ethiopic.el fontset.el mule-conf.el -Takai Kousuke: changed ccl.el image/compface.el +Takai Kousuke: changed ccl.el compface.el Takeshi Yamada: changed fns.c @@ -5471,7 +5480,7 @@ Thomas Dye: changed org.texi org-bibtex.el ob-R.el org.el Thomas Fitzsimmons: wrote soap-client.el and changed soap-inspect.el ldap.el eudc.texi eudc-vars.el eudc.el - ntlm.el url-http.el eudcb-ldap.el eudcb-bbdb.el ntlm-tests.el + ntlm.el url-http.el eudcb-bbdb.el eudcb-ldap.el ntlm-tests.el eudc-bob.el eudc-export.el eudcb-ph.el package.el README authinfo diary-lib.el display.texi eudc-hotlist.el eudcb-macos-contacts.el icalendar.el and 3 other files @@ -5676,8 +5685,8 @@ Tsuchiya Masatoshi: changed gnus-art.el mm-view.el gnus-sum.el Tsugutomo Enami: changed frame.c keyboard.c configure.ac dispnew.c fileio.c process.c simple.el sysdep.c xdisp.c add-log.el bytecomp.el - editfns.c emacs-regex.c emacs-regex.h emacs.c frame.h gnus-group.el - netbsd.h nnheader.el nnimap.el perl-mode.el and 6 other files + editfns.c emacs.c frame.h gnus-group.el netbsd.h nnheader.el nnimap.el + perl-mode.el regex-emacs.c regex-emacs.h and 6 other files Tsuyoshi Akiho: changed gnus-sum.el nnrss.el @@ -5786,6 +5795,8 @@ and changed ps-prin1.ps ps-bdf.el ps-prin0.ps blank-mode.el ps-prin3.ps easymenu.el loading.texi menu-bar.el misc.texi progmodes/compile.el ps-print-def.el ps-vars.el +Visuwesh M: changed dired-aux.el + Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el ob-core.el ob-tangle.el subr.el @@ -6051,6 +6062,6 @@ Zoran Milojevic: changed avoid.el উৎসব রায়: changed quail/indian.el Local Variables: -mode: etc-authors +mode: emacs-authors coding: utf-8 End: diff --git a/etc/DEBUG b/etc/DEBUG index 7d2f810d078..f57e6f197bf 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -661,10 +661,10 @@ Setting a breakpoint in the function 'x_error_quitter' and looking at the backtrace when Emacs stops inside that function will show what code causes the X protocol errors. -Note that the -xrm option may have no effect when you make an Emacs -process invoked with the -nw option a server and want to trace X -protocol errors from subsequent invocations of emacsclient in a GUI -frame. In that case calling the initial Emacs via +Note that the -xrm option may have no effect when you start a server +in an Emacs session invoked with the -nw command-line option, and want +to trace X protocol errors from GUI frames created by subsequent +invocations of emacsclient. In that case starting Emacs via emacs -nw --eval '(setq x-command-line-resources "emacs.synchronous: true")' @@ -1036,6 +1036,42 @@ recovering the contents of Emacs buffers from a core dump file. You might also find those commands useful for displaying the list of buffers in human-readable format from within the debugger. +*** Debugging Emacs with LLDB + +On systems where GDB is not available, like macOS with M1 chip, you +can also use LLDB for Emacs debugging. + +To start LLDB to debug Emacs, you can simply type "lldb ./emacs RET" +at the shell prompt in directory of the Emacs executable, usually the +'src' sub-directory of the Emacs tree). + +When you debug Emacs with LLDB, you should start LLDB in the directory +where the Emacs executable was built. That directory has an .lldbinit +file that loads a Python module emacs_lldb.py from the 'etc' directory +of the Emacs source tree. The Python module defines "user-defined" +commands for debugging Emacs. + +LLDB by default does not automatically load .lldbinit files in the +current directory. The simplest way to fix this is to add the +following line to your ~/.lldbinit file (creating such a file if it +doesn't already exist): + + settings set target.load-cwd-lldbinit true + +Alternatively, you can type "lldb --local-lldbinit ./emacs RET". + +If everything worked, you should see something like "Emacs debugging +support has been installed" after starting LLDB. You can see which +Emacs-specific commands are defined with + + (lldb) help + +User-defined commands for Emacs debugging start with an "x". + +Please refer to the LLDB reference on the web for more information +about LLDB. If you already know GDB, you will also find a mapping +from GDB commands to corresponding LLDB commands there. + This file is part of GNU Emacs. diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index bdcd943c37f..7f95cdd39a2 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -11,6 +11,96 @@ This file is about changes in ERC, the powerful, modular, and extensible IRC (Internet Relay Chat) client distributed with GNU Emacs since Emacs version 22.1. + +* Changes in ERC 5.5 + +** Smarter buffer naming for withstanding collisions. +ERC buffers now remain tied to their logical network contexts, even +while offline. These associations can survive regional server changes +and the intercession of proxies. As has long been practiced in other +areas of Emacs, "uniquified" buffer renaming prevents collisions +between buffers of different contexts. ERC's approach prioritizes +predictability over economy, favoring fully qualified suffixes without +elided or omitted components. Potential avenues for confusion remain +but will die out with the adoption of emerging protocol extensions. + +** Option 'erc-rename-buffers' deprecated. +The promises made by its old "on" state are now fully realized and +enabled permanently by default. Its old behavior when disabled has +been preserved and will remain available (with warnings) for years to +come. + +** Option 'erc-reuse-buffers' deprecated. +This ancient option has been a constant source of confusion, as +exhibited most recently when its "disabled" meaning was partially +inverted. Introduced in ERC 5.4 (Emacs 28.1), this regression saw +existing channel buffers transparently reassociated instead of created +anew. The pre-5.4 "disabled" behavior has been restored and will +remain accessible for the foreseeable future, warts and all (e.g., +with its often superfluous "/DIALED-HOST" suffixing always present). + +** Tighter auth-source integration with bigger changes on the horizon. +The days of hit-and-miss auth-source queries are hopefully behind us. +With the overhaul of the services module temporarily shelved and the +transition to SASL-based authentication still underway, users may feel +left in the lurch to endure yet another release cycle of backtick +hell. For some, auth-source may provide a workaround in the form of +nonstandard server passwords. See the "Connection" node in the manual +under the subheading "Password". + +If you require SASL immediately, please participate in ERC development +by volunteering to try (and give feedback on) edge features, one of +which is SASL. All known external offerings, past and present, are +valiant efforts whose use is nevertheless discouraged. + +** Username argument for entry-point commands. +Commands 'erc' and 'erc-tls' now accept a ':user' keyword argument, +which, when present, becomes the first argument passed to the "USER" +IRC command. The traditional way of setting this globally, via +'erc-email-userid', is still honored. + +** Additional display options for updated buffers. +Additional flexibility is now available for controlling the behavior +of newly created target buffers, especially during reconnection. + +** Improved handling of multiline prompt input. +This means better detection and handling of intervening and trailing +blanks when 'erc-send-whitespace-lines' is active. New options have +also been added for warning when input spans multiple lines. Although +off by default, new users are encouraged to enable them. + +** Miscellaneous behavioral changes impacting the user experience. +A bug has been fixed that saw prompts being mangled, doubled, or +erased in server buffers upon disconnection. Instead, input prompts +now collapse into an alternate form designated by the option +'erc-prompt-hidden'. Behavior differs for query and channel buffers +but can be fine-tuned via the repurposed, formerly abandoned option +'erc-hide-prompt'. + +A bug has been fixed affecting users of the Soju bouncer: outgoing +messages during periods of heavy traffic no longer disappear. + +Although rare, server passwords containing white space are now handled +correctly. + +** Miscellaneous behavioral changes in the library API. +The function 'erc-network' always returns non-nil in server and target +buffers belonging to a successfully established IRC connection, even +after that connection has been closed. + +In 5.4, support for network symbols as keys was added for +'erc-autojoin-channels-alist'. This has been extended to include +explicit symbols passed to 'erc-tls' and 'erc' as so-called +network-context identifiers via a new ':id' keyword. The latter +carries wider significance beyond autojoin and can be used for +unequivocally identifying a connection in a human-readable way. + +The function 'erc-auto-query', unused internally, and basically +inscrutable when read, has been deprecated with no public replacement. +This raises a related issue: if you use ERC as a library and need +something only offered internally, please lobby to have it exported by +writing to emacs-erc@gnu.org. + * Changes in ERC 5.4.1 diff --git a/etc/NEWS b/etc/NEWS index 19ca21f666d..1317cd01283 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -39,16 +39,12 @@ C++ compiler to be present on your system. If Emacs is not built with the option '--with-be-app', the resulting Emacs will only run in text-mode terminals. -+++ -** Cairo drawing support has been enabled for Haiku builds. To enable Cairo support, ensure that the Cairo and FreeType development files are present on your system, and configure Emacs with '--with-be-cairo'. ---- -** Double buffering is now enabled on the Haiku operating system. Unlike X, there is no compile-time option to enable or disable -double-buffering. If you wish to disable double-buffering, change the +double-buffering; it is always enabled. To disable it, change the frame parameter 'inhibit-double-buffering' instead. --- @@ -59,7 +55,7 @@ If a constant file name is required, the file can be renamed to "emacs.pdmp", and Emacs will find it during startup anyway. --- -** Emacs now uses of XInput 2 for input events. +** Emacs now uses XInput 2 for input events. If your X server has support and you have the XInput 2 development headers installed, Emacs will use the X Input Extension for handling input. If this causes problems, you can configure Emacs with the @@ -81,11 +77,11 @@ by saying make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION='' -after deleting lisp/leim/ja-dic/ja-dic.el. +after deleting "lisp/leim/ja-dic/ja-dic.el". +++ ** Emacs now supports being built with pure GTK. -To use this option, make sure the GTK 3 (version 3.20 or later) and +To use this option, make sure the GTK 3 (version 3.22.23 or later) and Cairo development files are installed, and configure Emacs with the option '--with-pgtk'. Unlike the default X and GTK build, the resulting Emacs binary will work on any underlying window system @@ -116,6 +112,14 @@ Emacs Sessions" node in the Emacs manual for more details. * Startup Changes in Emacs 29.1 ++++ +** '--batch' and '--script' now adjust the garbage collection levels. +These switches now set 'gc-cons-percentage' to 1.0 (up from the +default of 0.1). This means that batch processes will typically use +more memory than before, but use less time doing garbage collection. +Batch jobs that are supposed to run for a long time should adjust the +limit back down again. + +++ ** Emacs can now be used more easily in an executable script. If you start an executable script with @@ -140,37 +144,77 @@ This is run at the end of the Emacs startup process, and is meant to be used to reinitialize structures that would normally be done at load time. +** Native Compilation + --- -** New function 'startup-redirect-eln-cache'. +*** New command 'native-compile-prune-cache'. +This command deletes older ".eln" cache entries (but not the ones for +the current Emacs version). + +--- +*** New function 'startup-redirect-eln-cache'. This function can be called in your init files to change the user-specific directory where Emacs stores the "*.eln" files produced by native compilation of Lisp packages Emacs loads. The default -eln-cache directory is unchanged: it is the 'eln-cache' subdirectory +eln-cache directory is unchanged: it is the "eln-cache" subdirectory of 'user-emacs-directory'. * Incompatible changes in Emacs 29.1 ++++ +*** Explicitly-set read-only state is preserved when reverting a buffer. +If you use the 'C-x C-q' command to change the read-only state of the +buffer and then revert it, Emacs would previously use the file +permission bits to determine whether the buffer should be read-only +after reverting the buffer. Emacs now remembers the decision made in +'C-x C-q'. + +--- +*** The Gtk selection face is no longer used for the region. +The combination of a Gtk-controlled background and a foreground color +controlled by the internal Emacs machinery led to low-contrast faces +in common default setups. Emacs now uses the same 'region' face on +Gtk and non-Gtk setups. + +** Dired + +--- +*** 'w' ('dired-copy-filename-as-kill') has changed behavior. +If there are several files marked, file names containing space and +quote characters will be quoted "like this". + +--- +*** The 'd' command now more consistently skips dot files. +In previous Emacs versions, commands like 'C-u 10 d' would put the "D" +mark on the next ten files, no matter whether they were dot files +(i.e., "." and "..") or not, while marking the next ten lines with the +mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot +files. These now work equivalently. + ++++ +** Warning about "eager macro-expansion failure" is changed into an error. + +--- +** Previously, the X "reverseVideo" value at startup was heeded for all frames. +This meant that if you had a "reverseVideo" resource on the initial +display, and then opened up a new frame on a display without any +explicit "reverseVideo" setting, it would get heeded there, too. (This +included terminal frames.) In Emacs 29, the "reverseVideo" X resource +is handled like all the other X resources, and set on a per-frame basis. + +++ ** 'E' in 'query-replace' now edits the replacement with exact case. Previously, this command did the same as 'e'. --- -** '/ a' in *Packages* now limits by package name(s) instead of regexp. +** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp. +++ ** Setting the goal columns now also affects '' and ''. Previously, 'C-x C-n' only affected 'next-line' and 'previous-line', but it now also affects 'scroll-up-command' and 'scroll-down-command'. ---- -** The 'd' command in Dired now more consistently skip dot files. -In previous Emacs versions, commands like `C-u 10 d' would put the "D" -mark on the next ten files, no matter whether they were dot files -(i.e., "." and "..") or not, while marking the next ten lines with the -mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot -files. These now work equivalently. - --- ** Isearch in "*Help*" and "*info*" now char-folds quote characters by default. This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer @@ -288,18 +332,145 @@ variable set to nil, as it will default to nil in a future Emacs version and will be removed some time after that. +++ -** Functions which recreate the "*scratch*" buffer now also initialize it. +** Functions that recreate the "*scratch*" buffer now also initialize it. When functions like 'other-buffer' and 'server-execute' recreate "*scratch*", they now also insert 'initial-scratch-message' and set the major mode according to 'initial-major-mode', like at Emacs startup. Previously, these functions ignored 'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'. +--- +** The autoarg.el library is now marked obsolete. +This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor +modes to emulate the behavior of the historical editor Twenex Emacs. +It is believed to no longer be useful. + +--- +** The quickurl.el library is now obsolete. +Use 'abbrev', 'skeleton' or 'tempo' instead. + +--- +** The rlogin.el library, and the 'rsh' command are now obsolete. +Use something like 'M-x shell RET ssh RET' instead. + +--- +** The url-about.el library is now obsolete. + +--- +** The autoload.el library is now obsolete. +It is superseded by the loaddefs-gen.el library. + +--- +** The netrc.el library is now obsolete. +Use the 'auth-source-netrc-parse-all' function in auth-source.el +instead. + +--- +** The url-dired.el library is now obsolete. + +--- +** The fast-lock.el and lazy-lock.el library have been removed. +They have been obsolete since Emacs 22.1. + +The variable 'font-lock-support-mode' is occasionally useful for +debugging purposes. It is now a regular variable (instead of a user +option) and can be set to nil to disable Just-in-time Lock mode. + * Changes in Emacs 29.1 --- -** Files with the '.eld' extension are now visited in 'lisp-data-mode'. +** New user option 'electric-quote-replace-consecutive'. + +--- +** Emacs is now capable of editing files with very long lines. +The display of long lines has been optimized, and Emacs should no +longer choke when a buffer on display contains long lines. The +variable 'long-line-threshold' controls whether and when these display +optimizations are in effect. + +A companion variable 'large-hscroll-threshold' controls when another +set of display optimizations are in effect, which are aimed +specifically at speeding up display of long lines that are truncated. + +If you still experience slowdowns while editing files with long lines, +this may be due to line truncation, or to one of the enabled minor +modes, or to the current major mode. Try turning off line truncation +with 'C-x x t', or try disabling all known slow minor modes with +'M-x so-long-minor-mode', or try disabling both known slow minor modes +and the major mode with 'M-x so-long-mode', or visit the file with +'M-x find-file-literally' instead of the usual 'C-x C-f'. + +Note that the display optimizations in these cases may cause the +buffer to be occasionally mis-fontified. + +The new function 'long-line-optimizations-p' returns non-nil when +these optimizations are in effect in the current buffer. + ++++ +** New command to change the font size globally. +To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to +decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x +C-M-0'. The final key in these commands may be repeated without the +leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+' +and 'C-x C-M-+ + +' increase the font size by three steps. When +'mouse-wheel-mode' is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also +increase and decrease the font size globally. Additionally, the +user option 'global-text-scale-adjust-resizes-frames' controls whether +the frames are resized when the font size is changed. + ++++ +** New function 'file-parent-directory'. +Get the parent directory of a file. + +** New config variable 'syntax-wholeline-max' to reduce the cost of long lines. +This variable is used by some operations (mostly syntax-propertization +and font-locking) to treat lines longer than this variable as if they +were made up of various smaller lines. This can help reduce the +slowdowns seen in buffers made of a single long line, but can also +cause misbehavior in the presence of such long lines (tho most of that +misbehavior should usually be limited to mis-highlighting). You can +recover the previous behavior with: + + (setq syntax-wholeline-max most-positive-fixnum) + +--- +** New bindings in 'find-function-setup-keys' for 'find-library'. +When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to +'find-library', 'C-x 4 L' is now bound to 'find-library-other-window' +and 'C-x 5 L' is now bound to 'find-library-other-frame'. + ++++ +** New key binding after 'M-x' or 'M-X': 'M-X'. +Emacs allows different completion predicates to be used with 'M-x' +(i.e., 'execute-extended-command') via the +'read-extended-command-predicate' user option. Emacs also has the +'M-X' (note upper case) command, which only displays commands +especially relevant to the current buffer. Emacs now allows toggling +between these modes while the user is inputting a command by hitting +'M-X' while in the minibuffer. + +--- +** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved. + +--- +** New commands 'duplicate-line' and 'duplicate-dwim'. +'duplicate-line' duplicates the current line the specified number of times. +'duplicate-dwim' duplicates the region if it is active. If not, it +works like 'duplicate-line'. An active rectangular region is +duplicated on its right-hand side. + +--- +** Files with the ".eld" extension are now visited in 'lisp-data-mode'. + ++++ +** 'network-lookup-address-info' can now check numeric IP address validity. +Specifying 'numeric' as the new optional 'hints' argument makes it +check if the passed address is a valid IPv4/IPv6 address (without DNS +traffic). + + (network-lookup-address-info "127.1" 'ipv4 'numeric) + => ([127 0 0 1 0]) +++ ** New command 'find-sibling-file'. @@ -317,6 +488,11 @@ This should be a regexp or a list of regexps; buffers whose names match those regexps will be ignored by 'switch-to-prev-buffer' and 'switch-to-next-buffer'. ++++ +** New command 'rename-visited-file'. +This command renames the file visited by the current buffer by moving +it to a new location, and also makes the buffer visit this new file. + ** Menus --- @@ -365,6 +541,19 @@ This inhibits putting empty strings onto the kill ring. These options allow adjusting point and scrolling a window when dragging items from another program. ++++ +** The X Direct Save (XDS) protocol is now supported. +This means dropping an image or file link from programs such as +Firefox will no longer create a temporary file in a random directory, +instead asking you where to save the file first. + ++++ +** New user option 'record-all-keys'. +If non-nil, this option will force recording of all input keys, +including those typed in response to passwords prompt (this was the +previous behavior). The default is nil, which inhibits recording of +passwords. + +++ ** New function 'command-query'. This function makes its argument command prompt the user for @@ -417,6 +606,12 @@ mixed. This inherits from the 'mode-line' face, but is the face actually used on the mode lines (along with 'mode-line-inactive'). ++++ +** New face attribute pseudo-value 'reset'. +This value stands for the value of the corresponding attribute of the +'default' face. It can be used to reset attribute values produced by +inheriting from other faces. + +++ ** New function 'buffer-text-pixel-size'. This is similar to 'window-text-pixel-size', but can be used when the @@ -433,13 +628,30 @@ This controls the style of the pre-edit and status areas of X input methods. +++ -** On X11, Emacs now tries to synchronize window resize with the window manager. +** New X resources: "highlightForeground" and "highlightBackground". +Only in the Lucid build, this controls colors used for highlighted +menu item widgets. + ++++ +** On X, Emacs now tries to synchronize window resize with the window manager. This leads to less flicker and empty areas of a frame being displayed when a frame is being resized. Unfortunately, it does not work on some ancient buggy window managers, so if Emacs appears to freeze, but is still responsive to input, you can turn it off by setting the X resource "synchronizeResize" to "off". ++++ +** On X, Emacs can optionally synchronize display with the graphics hardware. +When this is enabled by setting the X resource "synchronizeResize" to +"extended", frame content "tearing" is drastically reduced. This is +only supported on the Motif, Lucid, and no-toolkit builds, and +requires an X compositing manager supporting the extended frame +synchronization protocol (see +https://fishsoup.net/misc/wm-spec-synchronization.html). + +This behavior can be toggled on and off via the frame parameter +'use-frame-synchronization'. + +++ ** New frame parameter 'alpha-background' and X resource "alphaBackground". This controls the opacity of the text background when running on a @@ -502,6 +714,12 @@ This is in addition to previously-supported ways of discovering 24-bit color support: either via the "RGB" or "setf24" capabilities, or if the 'COLORTERM' environment variable is set to the value "truecolor". +*** Select active regions with xterm selection support. +On terminals with xterm setSelection support, the active region may be +saved to the X primary selection, following the +'select-active-regions' variable. This support is enabled when +'tty-select-active-regions' is non-nil. + ** ERT +++ @@ -556,6 +774,11 @@ inserted. This command will tell you the name of the Emoji at point. (This command also works for non-Emoji characters.) +--- +*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'. +These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They +can be used on any character, but are mainly useful for emoji. + --- *** New input method 'emoji'. This allows you to enter emoji using short strings, eg ':face_palm:' @@ -563,12 +786,20 @@ or ':scream:'. ** Help +--- +*** Variable values displayed by 'C-h v' in "*Help*" are now font-locked. + ++++ +*** New user option 'help-clean-buttons'. +If non-nil, link buttons in "*Help*" will have any surrounding quotes +removed. + --- *** 'M-x apropos-variable' output now includes values of variables. +++ -*** New doc string syntax to indicate that symbols shouldn't be links. -When displaying doc strings in "*Help*" buffers, strings that are +*** New docstring syntax to indicate that symbols shouldn't be links. +When displaying docstrings in "*Help*" buffers, strings that are "`like-this'" are made into links (if they point to a bound function/variable). This can lead to false positives when talking about values that are symbols that happen to have the same names as @@ -658,11 +889,8 @@ or is itself too long. +++ *** New user option 'outline-minor-mode-use-buttons'. If non-nil, Outline Minor Mode will use buttons to hide/show outlines -in addition to the ellipsis. The default is nil. - ---- -*** New user option 'outline-minor-mode-buttons'. -This is a list of pairs of open/close strings used to display buttons. +in addition to the ellipsis. The default is nil in editing modes, but +non-nil in 'special-mode' and its derivatives. +++ ** Support for the WebP image format. @@ -673,6 +901,7 @@ specifiers can now use ':type webp'. ** Windows ++++ *** New user option 'display-buffer-avoid-small-windows'. If non-nil, this should be a window height, a number. Windows smaller than this will be avoided by 'display-buffer', if possible. @@ -745,7 +974,7 @@ are met. The conditions are given by the argument, which can be +++ *** New user option 'rcirc-cycle-completion-flag'. Rcirc will use the default 'completion-at-point' mechanism. The -conventional IRC behaviour of completing by cycling through the +conventional IRC behavior of completing by cycling through the available options can be restored by enabling this option. ** Imenu @@ -758,6 +987,14 @@ available options can be restored by enabling this option. Use it if you want Imenu to forget the buffer's index alist and recreate it anew next time 'imenu' is invoked. ++++ +** Emacs is now capable of abandoning a window's redisplay that takes too long. +This is controlled by the new variable 'max-redisplay-ticks'. If that +variable is set to a non-zero value, display of a window will be +aborted after that many low-level redisplay operations, thus +preventing Emacs from becoming wedged when visiting files with very +long lines. + * Editing Changes in Emacs 29.1 +++ @@ -770,7 +1007,7 @@ option 'cycle-spacing-actions'. ** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars. These commands now behave as case-sensitive for interactive calls when they are invoked with an uppercase character, regardless of the -`case-fold-search' value. +'case-fold-search' value. --- ** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping. @@ -841,6 +1078,12 @@ The user option 'comint-terminfo-terminal' and the variable 'system-uses-terminfo' can now be set as connection-local variables to change the terminal used on a remote host. +--- +*** New user option 'comint-delete-old-input'. +When nil, this prevents comint from deleting the current input when +inserting previous input using ''. The default is t, to +preserve past behavior. + ** Mwheel --- @@ -870,31 +1113,31 @@ now has font-selection and character composition rules, a language environment, and an input method. The newly-added scripts and the corresponding language environments are: -**** Tai Tham script and the Northern Thai language environment -**** Brahmi script and language environment -**** Kaithi script and language environment -**** Tirhuta script and language environment -**** Sharada script and language environment -**** Siddham script and language environment -**** Syloti Nagri script and language environment -**** Modi script and language environment -**** Baybayin script and Tagalog language environment -**** Hanunoo script and language environment -**** Buhid script and language environment -**** Tagbanwa script and language environment -**** Limbu script and language environment -**** Balinese script and language environment -**** Javanese script and language environment -**** Sundanese script and language environment -**** Batak script and language environment -**** Rejang script and language environment -**** Makasar script and language environment -**** Lontara script and language environment -**** Hanifi Rohingya script and language environment -**** Grantha script and language environment -**** Kharoshthi script and language environment -**** Lepcha script and language environment -**** Meetei Mayek script and language environment +Tai Tham script and the Northern Thai language environment +Brahmi script and language environment +Kaithi script and language environment +Tirhuta script and language environment +Sharada script and language environment +Siddham script and language environment +Syloti Nagri script and language environment +Modi script and language environment +Baybayin script and Tagalog language environment +Hanunoo script and language environment +Buhid script and language environment +Tagbanwa script and language environment +Limbu script and language environment +Balinese script and language environment +Javanese script and language environment +Sundanese script and language environment +Batak script and language environment +Rejang script and language environment +Makasar script and language environment +Lontara script and language environment +Hanifi Rohingya script and language environment +Grantha script and language environment +Kharoshthi script and language environment +Lepcha script and language environment +Meetei Mayek script and language environment --- *** The "Oriya" language environment was renamed to "Odia". @@ -908,9 +1151,86 @@ supported. Type 'C-u C-h t' to select it in case your language setup does not do so automatically. +--- +*** New default phonetic input method for the Tamil language environment. +The default input method for the Tamil language environment is now +"tamil-phonetic" which is a customizable phonetic input method. To +change the input method's translation rules, customize the user option +'tamil-translation-rules'. + * Changes in Specialized Modes and Packages in Emacs 29.1 +** Dired + ++++ +*** 'dired-guess-shell-command' moved from dired-x to dired. +This means that 'dired-do-shell-command' will now provide smarter +defaults without first having to require 'dired-x'. See the node +"(emacs) Shell Command Guessing" in the Emacs manual for more details. + +--- +*** 'dired-clean-up-buffers-too' moved from dired-x to dired. +This means that Dired now offers to kill buffers visiting files and +dirs when they are deleted in Dired. Before, you had to require +'dired-x' to enable this behavior. To disable this behavior, +customize the user option 'dired-clean-up-buffers-too' to nil. The +related user option 'dired-clean-confirm-killing-deleted-buffers' +(which see) has also been moved to 'dired'. + ++++ +*** 'dired-do-relsymlink' moved from dired-x to dired. +The corresponding key 'Y' is now bound by default in Dired. + ++++ +*** 'dired-do-relsymlink-regexp' moved from dired-x to dired. +The corresponding key '% Y' is now bound by default in Dired. + +--- +*** 'M-G' is now bound to 'dired-goto-subdir'. +Before, that binding was only available if the dired-x package was +loaded. + ++++ +*** 'dired-info' and 'dired-man' moved from dired-x to dired. +The 'dired-info' and 'dired-man' commands have been moved from the +dired-x package to dired. They have also been renamed to +'dired-do-info' and 'dired-do-man'; the old command names are obsolete +aliases. + +The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound +in Dired mode by default. The user options 'dired-bind-man' and +'dired-bind-info' no longer have any effect and are obsolete. + +To get the old behavior back and unbind these keys in Dired mode, add +the following to your Init file: + + (with-eval-after-load 'dired + (keymap-set dired-mode-map "N" nil) + (keymap-set dired-mode-map "I" nil)) + +--- +*** New command 'dired-do-eww'. +This command visits the file on the current line with EWW. + +** Elisp + +--- +*** New command 'elisp-eval-buffer' (bound to 'C-c C-e'). +This command evals the forms in the current buffer. + +--- +*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'. +These commands (bound to 'C-c C-f' and 'C-c C-b', respectively) +byte-compile the visited file and the current buffer, respectively. + +** Games + +--- +*** New user option 'tetris-allow-repetitions'. +This controls how randomness is implemented (whether to use pure +randomness as before or whether to use a bag). + ** Battery +++ @@ -922,7 +1242,7 @@ This can be used to trigger actions based on the battery status. +++ *** New command 'enriched-toggle-markup'. This allows you to see the markup in 'enriched-mode' buffers (e.g., -the HELLO file). +the "HELLO" file). ** Shell Script Mode @@ -934,6 +1254,7 @@ This controls how statements like the following are indented: bar ** Cperl Mode + --- *** New user option 'cperl-file-style'. This option determines the indentation style to be used. It can also @@ -946,6 +1267,12 @@ be used as a file-local variable. If given a prefix, it will query the user for an argument to use for the run/continue command. +--- +*** 'perldb' now recognizes '-E'. +As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates +all optional features of the Perl version in use. 'perldb' now uses +this invocation as its default. + ** Customize --- @@ -953,6 +1280,14 @@ the run/continue command. This is bound to 'H' and toggles whether to hide or show the widget contents. +** Diff mode + +--- +*** New user option 'diff-whitespace-style'. +Sets the value of the buffer-local variable 'whitespace-style' in +'diff-mode' buffers. By default, this variable is '(face trailing)', +which preserves behavior from previous Emacs versions. + ** Ispell --- @@ -982,6 +1317,11 @@ list-packages'. *** New command 'package-update-all'. This command allows updating all packages without any queries. ++++ +*** New commands 'package-recompile' and 'package-recompile-all'. +These commands can be useful if the ".elc" files are out of date +(invalid byte code and macros). + +++ *** New DWIM action on 'x' in "*Packages*" buffer. If no packages are marked, 'x' will install the package under point if @@ -998,7 +1338,7 @@ inadvertently delete the "*scratch*" buffer. ** Debugging --- -*** 'q' in a *Backtrace* buffer no longer clears the buffer. +*** 'q' in a "*Backtrace*" buffer no longer clears the buffer. Instead it just buries the buffer and switches the mode from 'debugger-mode' to 'backtrace-mode', since commands like 'e' are no longer available after exiting the recursive edit. @@ -1008,7 +1348,25 @@ longer available after exiting the recursive edit. This user option controls whether the 'e' (in a "*Backtrace*" buffer or while edebugging) and 'C-x C-e' (while edebugging) commands lead to a (further) backtrace. By default, this variable is nil, -which is a change in behaviour from previous Emacs versions. +which is a change in behavior from previous Emacs versions. + ++++ +*** 'e' in edebug can now take a prefix arg to pretty-print the results. +When invoked with a prefix argument, as in 'C-u e', this command will +pop up a new buffer and show the full pretty-printed value there. + ++++ +*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results. +When invoked with a non-zero prefix argument, as in 'C-u C-x C-e', +this command will pop up a new buffer and show the full pretty-printed +value there. + ++++ +*** You can now generate a backtrace from Lisp errors in redisplay. +To do this, set the new variable 'backtrace-on-redisplay-error' to a +non-nil value. The backtrace will be written to a special buffer +named "*Redisplay-trace*". This buffer will not be automatically +displayed in a window. ** Compile @@ -1037,12 +1395,16 @@ files that have few newlines. +++ ** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'. This mode switches 'word-wrap' on, and breaks on all the whitespace -characters instead of just SPC and TAB. +characters instead of just 'SPC' and 'TAB'. --- ** New mode, 'emacs-news-mode', for editing the NEWS file. This mode adds some highlighting, fixes the 'M-q' command, and has -commands for doing maintenance. +commands for doing maintenance of the Emacs NEWS files. In addition, +this mode turns on 'outline-minor-mode', and thus displays +customizable icons (see 'icon-preference') on heading lines. To +disable these icons, customize 'outline-minor-mode-use-buttons' to a +nil value. --- ** Kmacro @@ -1098,9 +1460,9 @@ the completions if they are already visible. The default value 't' always hides the completion buffer after some completion is made. *** New commands to complete the minibuffer history. -'minibuffer-complete-history' ('C-x up') is like 'minibuffer-complete' +'minibuffer-complete-history' ('C-x ') is like 'minibuffer-complete' but completes on the history items instead of the default completion -table. 'minibuffer-complete-defaults' ('C-x down') completes +table. 'minibuffer-complete-defaults' ('C-x ') completes on the list of default items. +++ @@ -1132,6 +1494,11 @@ This means that typing 'C-u RET' on a completion candidate in the "*Completions*" buffer inserts the completion to the minibuffer, but doesn't exit the minibuffer. ++++ +*** You can now define abbrevs for the fundamental minibuffer modes. +'minibuffer-mode-abbrev-table' and +'minibuffer-inactive-mode-abbrev-table' are now defined. + ** Isearch and Replace +++ @@ -1141,6 +1508,11 @@ outside the echo area, Emacs will, by default, end the Isearch and yank the text at mouse cursor. But if 'mouse-yank-at-point' is non-nil, the text will now be added to the Isearch instead. ++++ +*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'. +Now with these values the search will wrap around not only on repeating +with 'C-s C-s', but also after typing a character. + +++ *** New user option 'char-fold-override'. Non-nil means that the default definitions of equivalent characters @@ -1153,11 +1525,24 @@ command accepts the Unicode name of an Emoji (for example, "smiling face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer completion, and adds the Emoji into the search string. +** Glyphless characters + +++ -** New minor mode 'glyphless-display-mode'. +*** New minor mode 'glyphless-display-mode'. This allows an easy way to toggle seeing all glyphless characters in the current buffer. +*** The extra slot of 'glyphless-char-display' can now have cons values. +The extra slot of the 'glyphless-char-display' char-table can now have +values that are cons cells, specifying separate values for text-mode +and GUI terminals. + +*** "Replacement character" feature for undisplayable characters on TTYs. +The 'acronym' method of displaying glyphless characters on text-mode +frames treats single-character acronyms specially: they are displayed +without the surrounding [..] "box", thus in effect treating such +"acronyms" as replacement characters. + ** Registers +++ @@ -1223,7 +1608,7 @@ header before sending a message. ** Texinfo Mode --- -*** 'texinfo-mode' now has a specialised 'narrow-to-defun' definition. +*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition. It narrows to the current node. ** EUDC @@ -1268,6 +1653,12 @@ EUDC can now contribute email addresses to 'completion-at-point' by adding the new function 'eudc-capf-complete' to 'completion-at-point-functions' in 'message-mode'. ++++ +*** Additional attributes of query and results in eudcb-macos-contacts.el. +The EUDC back-end for the macOS Contacts app now provides a wider set +of attributes to use for queries, and delivers more attributes in +query results. + ** EWW/SHR +++ @@ -1295,6 +1686,14 @@ doesn't work on other systems. Also see etc/PROBLEMS. These are used to alter an URL before using it. By default it removes the common "utm_" trackers from URLs. +** Find-Dired + +--- +*** New command 'find-dired-with-command'. +This enables users to run 'find-dired' with an arbitrary command, +enabling running commands previously unsupported and also enabling new +commands to be built on top. + ** Gnus +++ @@ -1307,10 +1706,16 @@ Message, referred to as 'gnus-summary-tool-bar-retro', well as the icons used), and the "Gnome" tool bars are now the only pre-defined toolbars. +--- +*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed. +The 'gnus-summary-down-thread' binding to "M-C-d" was shadowed by +'gnus-summary-read-document', and these commands are also available on +"T-u" and "T-d" respectively. + --- *** Gnus now uses a variable-pitch font in the headers by default. To get the monospace font back, you can put something like the -following in your .gnus file: +following in your ".gnus" file: (set-face-attribute 'gnus-header nil :inherit 'unspecified) @@ -1378,11 +1783,6 @@ The new ':doc-spec-function' element can be used to compute the ':doc-spec' element when the user asks for info on that particular mode (instead of at load time). -** Subr-x - -+++ -*** New macro 'with-memoization' provides a very primitive form of memoization. - ** Ansi-color --- @@ -1476,6 +1876,21 @@ This controls whether or not to show a message when opening certain image formats saying how to edit it as text. The default is to show this message for SVG and XPM. ++++ +*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'. +These commands horizontally and vertically flip the image under point. + ++++ +*** New command 'image-transform-set-percent'. +It allows setting the image size to a percentage of its original size, +and is bound to "s p" in Image mode. + +** Images + ++++ +*** Users can now add special image conversion functions. +This is done via 'image-converter-add-handler'. + ** Image-Dired +++ @@ -1579,6 +1994,11 @@ the thumbnail file. ** Dired +--- +*** New user option 'dired-omit-lines'. +This is used by 'dired-omit-mode', and now allows you to hide based on +other things than just the file names. + +++ *** New user option 'dired-mouse-drag-files'. If non-nil, dragging file names with the mouse in a Dired buffer will @@ -1603,7 +2023,31 @@ the buffer will take you to that directory. *** Search and replace in Dired/Wdired supports more regexps. For example, the regexp ".*" will match only characters that are part of the file name. Also "^.*$" can be used to match at the beginning -of the file name and at the end of the file name. +of the file name and at the end of the file name. This is used only +when searching on file names. In Wdired this can be used when the new +user option 'wdired-search-replace-filenames' is non-nil (which is the +default). + +** Bookmarks + +--- +*** 'list-bookmarks' now includes a type column. +Types are registered via a 'bookmark-handler-type' symbol property on +the jumping function. + ++++ +*** 'bookmark-sort-flag' can now be set to 'last-modified'. +This will display bookmark list from most recently set to least +recently set. + +--- +*** When editing a bookmark annotation, 'C-c C-k' will now cancel. +It is bound to the new command 'bookmark-edit-annotation-cancel'. + +--- +*** New option 'bookmark-fringe-mark'. +This option controls the bitmap used to indicate bookmarks in the +fringe (or 'nil' to disable showing this marker). ** Exif @@ -1641,7 +2085,7 @@ This command displays a buffer containing the page load history of the current WebKit widget, and allows you to navigate it. --- -*** On X11, the WebKit inspector is now available inside xwidgets. +*** On X, the WebKit inspector is now available inside xwidgets. To access the inspector, right click on the widget and select "Inspect Element". @@ -1674,6 +2118,12 @@ related 'auth-sources' entry were wrong. ** Browse URL +--- +*** New user option 'browse-url-default-scheme'. +This user option decides which URL scheme that 'browse-url' and +related functions will use by default. For example, you could +customize this to "https" to always prefer HTTPS URLs. + --- *** Support for the Netscape web browser has been removed. This support has been obsolete since Emacs 25.1. The final version of @@ -1684,6 +2134,11 @@ the Netscape web browser was released in February, 2008. This support has been obsolete since Emacs 25.1. The final version of the Galeon web browser was released in September, 2008. +--- +*** Support for the Mozilla web browser is now obsolete. +Note that this historical web browser is different from Mozilla +Firefox; it is its predecessor. + ** Ruby Mode --- @@ -1738,12 +2193,25 @@ values passed as a single token, such as '-oVALUE' or 'eshell-eval-using-options' macro. See "Defining new built-in commands" in the "(eshell) Built-ins" node of the Eshell manual. +--- +*** Eshell globs ending with '/' now match only directories. +Additionally, globs ending with '**/' or '***/' no longer raise an +error, and now expand to all directories recursively (following +symlinks in the latter case). + ++++ +*** Lisp forms in Eshell now treat a 'nil' result as a failed exit status. +When executing a command that looks like '(lisp form)', Eshell will +set the exit status (available in the '$?' variable) to 2. This +allows commands like that to be used as conditionals. To change this +behavior, customize the new 'eshell-lisp-form-nil-is-failure' option. + ** Shell --- *** New user option 'shell-kill-buffer-on-exit'. -Enabling this will automatically kill a *shell* buffer as soon as the -shell session terminates. +Enabling this will automatically kill a "*shell*" buffer as soon as +the shell session terminates. ** Calc @@ -1753,11 +2221,28 @@ Set it to nil to exclude line numbering from kills and copies. ** Miscellaneous +--- +*** New user option 'webjump-use-internal-browser'. +When non-nil, WebJump will use an internal browser to open web pages, +instead of the default external browser. + +++ *** New user option 'font-lock-ignore'. This option provides a mechanism to selectively disable font-lock keyword-driven fontifications. +--- +*** New user option 'auto-save-visited-predicate'. +This user option is a predicate function which is called by +'auto-save-visited-mode' to decide whether or not to save a buffer. +You can use it to automatically save only specific buffers, for +example buffers using a particular mode or in some directory. + +--- +*** New user option 'remote-file-name-inhibit-auto-save-visited'. +If this user option is non-nil, 'auto-save-visited-mode' will not +auto-save remote buffers. The default is nil. + +++ *** New package vtable.el for formatting tabular data. This package allows formatting data using variable-pitch fonts. @@ -1765,16 +2250,6 @@ The resulting tables can display text in variable pitch fonts, text using fonts of different sizes, and images. See the "(vtable) Top" manual for more details. ---- -*** 'list-bookmarks' now includes a type column. -Types are registered via a 'bookmark-handler-type' symbol property on -the jumping function. - -+++ -*** 'bookmark-sort-flag' can now be set to 'last-modified'. -This will display bookmark list from most recently set to least -recently set. - --- *** New minor mode 'elide-head-mode'. Enabling this minor mode turns on hiding header material, like @@ -1787,19 +2262,47 @@ If non-nil, files untracked by a VCS are considered to be part of the project by a VC project based on that VCS. --- -** The autoarg.el library is now marked obsolete. -This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor -modes to emulate the behavior of the historical editor Twenex Emacs. -It is believed to no longer be useful. +*** 'recentf-mode' now uses abbreviated file names by default. +This means that e.g. "/home/foo/bar" is now displayed as "~/bar". +Customize the user option 'recentf-filename-handlers' to nil to get +back the old behavior. --- -** proced.el shows system processes of remote hosts. +*** New command 'recentf-open'. +This command prompts for a recently opened file in the minibuffer, and +visits it. + +--- +*** 'ffap-machine-at-point' no longer pings hosts by default. +It will now simply look at a hostname to determine if it is valid, +instead of also trying to ping it. Customize the user option +'ffap-machine-p-known' to 'ping' to get the old behavior back. + +--- +*** The 'run-dig' command is now obsolete; use 'dig' instead. + +--- +*** Some `bib-mode' commands and variables have been renamed. +To respect Emacs naming conventions, the variable 'unread-bib-file' +has been renamed to 'bib-unread-file'. The following commands have +also been renamed: + 'addbib' to 'bib-add' + 'return-key-bib' to 'bib-return-key' + 'mark-bib' to 'bib-mark' + 'unread-bib' to 'bib-unread' + +--- +*** proced.el shows system processes of remote hosts. When 'default-directory' is remote, and 'proced' is invoked with a negative argument like 'C-u - proced', the system processes of that remote host are shown. Alternatively, the user option 'proced-show-remote-processes' can be set to non-nil. 'proced-signal-function' has been marked obsolete. +--- +*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'. +The old name is still available as an obsolete function alias. + * New Modes and Packages in Emacs 29.1 @@ -1808,6 +2311,7 @@ remote host are shown. Alternatively, the user option Allows the creation of "functions with slots" or "function objects" via the macros 'oclosure-define' and 'oclosure-lambda'. ++++ *** New generic function 'oclosure-interactive-form'. Used by 'interactive-form' when called on an OClosure. This allows specific OClosure types to compute their interactive specs @@ -1823,23 +2327,46 @@ This mode is used to edit files geared towards testing actions in Emacs buffers, like indentation and the like. The new ert function 'ert-test-erts-file' is used to parse these files. +--- +** New mode 'js-json-mode'. +This is a lightweight variant of 'js-mode' that is used by default +when visiting JSON files. + * Incompatible Lisp Changes in Emacs 29.1 +--- +** 'find-image' now uses 'create-image'. +This means that images found through 'find-image' also have +auto-scaling applied. (This only makes a difference on HiDPI +displays.) + +++ -** loaddefs.el generation has been reimplemented. -The various loaddefs.el files in the Emacs tree (which contain +** Changes to "raw" in-memory xbm images are specified. +Some years back Emacs gained the ability to scale images, and you +could then specify ':width' and ':height' when using 'create-image' on all +image types -- except xbm images, because this format already used the +':width' and ':height' arguments to specify the width/height of the "raw" +in-memory format. This meant that if you used these specifications +on, for instance, xbm files, Emacs would refuse to display them. This +has been changed, and ':width'/':height' now works as with all other image +formats, and the way to specify the width/height of the "raw" +in-memory format is now by using ':data-width' and ':data-height'. + ++++ +** "loaddefs.el" generation has been reimplemented. +The various "loaddefs.el" files in the Emacs tree (which contain information about autoloads, built-in packages and package prefixes) -used to be generated by functions in autoloads.el. These are now -generated by loaddefs-gen.el instead. This leads to functionally +used to be generated by functions in "autoloads.el". These are now +generated by "loaddefs-gen.el" instead. This leads to functionally equivalent loaddef files, but they do not use exactly the same syntax, so using 'M-x update-file-autoloads' no longer works. (This didn't work well in most files in the past, either, but it will now signal an error in any file.) In addition, files are scanned in a slightly different way. -Previously ;;;### specs inside a top-level form (i.e., something like -(when ... ;;;### ...) would be ignored. They are now parsed as +Previously ';;;###' specs inside a top-level form (i.e., something +like '(when ... ;;;### ...)' would be ignored. They are now parsed as normal. +++ @@ -1880,6 +2407,12 @@ they will still be escaped, so the '.foo' symbol is still printed as and remapping parent of basic faces does not work reliably. Instead of remapping 'mode-line', you have to remap 'mode-line-active'. ++++ +** 'make-process' has been extended to support ptys when ':stderr' is set. +Previously, setting ':stderr' to a non-nil value would force the +process's connection to use pipes. Now, Emacs will use a pty for +stdin and stdout if requested no matter the value of ':stderr'. + --- ** User option 'mail-source-ignore-errors' is now obsolete. The whole mechanism for prompting users to continue in case of @@ -1964,14 +2497,85 @@ Use 'exif-parse-file' and 'exif-field' instead. ** 'insert-directory' alternatives should not change the free disk space line. This change is now applied in 'dired-insert-directory'. +--- +** 'compilation-last-buffer' is (finally) declared obsolete. +It's been obsolete since Emacs-22.1, actually. + +--- +** Calling 'lsh' now elicits a byte-compiler warning. +'lsh' behaves in somewhat surprising and platform-dependent ways for +negative arguments, and is generally slower than 'ash', which should be +used instead. This warning can be suppressed by surrounding calls to +'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)', +but switching to `ash` is generally much preferable. + +--- +** Some functions and variables obsolete since Emacs 24 have been removed: +'Info-edit-map', 'allout-abbreviate-flattened-numbering', +'allout-mode-deactivate-hook', 'ansi-color-unfontify-region', +'auth-source-forget-user-or-password', 'auth-source-hide-passwords', +'auth-source-user-or-password', 'bibtex-complete', +'bibtex-entry-field-alist', 'buffer-substring-filters', +'byte-compile-disable-print-circle', 'cfengine-mode-abbrevs', +'chart-map', 'comint-dynamic-complete', +'comint-dynamic-complete-as-filename', +'comint-dynamic-simple-complete', 'command-history-map', +'compilation-parse-errors-function', 'completion-annotate-function', +'condition-case-no-debug', 'count-lines-region', 'data-debug-map', +'deferred-action-list', 'deferred-action-function', +'dired-x-submit-report', 'eieio-defgeneric', 'eieio-defmethod', +'emacs-lock-from-exiting', 'erc-complete-word', +'eshell-cmpl-suffix-list', 'eshell-for', 'font-lock-maximum-size', +'font-lock-reference-face', 'gnus-carpal', +'gnus-debug-exclude-variables', 'gnus-debug-files', +'gnus-local-domain', 'gnus-outgoing-message-group', +'gnus-secondary-servers', 'gnus-registry-user-format-function-M', +'image-extension-data', 'image-library-alist', +'inhibit-first-line-modes-regexps', +'inhibit-first-line-modes-suffixes', 'intdos', +'mail-complete-function', 'mail-completion-at-point-function', +'mail-mailer-swallows-blank-line', 'mail-sent-via', 'make-register', +'makefile-complete', 'menu-bar-kill-ring-save', +'meta-complete-symbol', 'meta-mode-map', +'minibuffer-completing-symbol', +'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350', +'msb-after-load-hooks', 'nnimap-split-rule', 'nntp-authinfo-file', +'ns-alternatives-map', 'ns-store-cut-buffer-internal', +'package-menu-view-commentary', 'pascal-last-completions', +'pascal-show-completions', 'pascal-toggle-completions', +'prolog-char-quote-workaround', 'read-filename-at-point', +'reftex-index-map', 'reftex-index-phrases-map', +'reftex-select-bib-map', 'reftex-select-label-map', 'reftex-toc-map', +'register-name-alist', 'register-value', +'report-emacs-bug-pretest-address', +'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to', +'rmail-dont-reply-to-names', 'rst-block-face', 'rst-comment-face', +'rst-definition-face', 'rst-directive-face', 'rst-emphasis1-face', +'rst-emphasis2-face', 'rst-external-face', 'rst-literal-face', +'rst-reference-face', 'semantic-grammar-map', +'semantic-grammar-syntax-table', 'set-register-value', +'speedbar-key-map', 'speedbar-syntax-table', +'starttls-any-program-available', 'strokes-report-bug', +'toggle-emacs-lock', 'tooltip-use-echo-area', 'turn-on-cwarn-mode', +'turn-on-iimage-mode', 'vc-toggle-read-only', 'view-return-to-alist', +'view-return-to-alist-update', 'w32-default-color-map' (function), +'which-func-mode' (function), 'x-cut-buffer-or-selection-value'. + --- ** Some functions and variables obsolete since Emacs 23 have been removed: 'find-emacs-lisp-shadows', 'newsticker-cache-filename', +'process-filter-multibyte-p', 'redisplay-end-trigger-functions', +'set-process-filter-multibyte', 'set-window-redisplay-end-trigger', 'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode', -'vc-arch-command'. +'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'. + +--- +** Some functions and variables obsolete since Emacs 21 or 22 have been removed: +'c-toggle-auto-state', 'find-file-not-found-hooks', +'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'. +++ -** New generic function 'function-doumentation'. +** New generic function 'function-documentation'. Can dynamically generate a raw docstring depending on the type of a function. Used mainly for docstrings of OClosures. @@ -1994,11 +2598,100 @@ functions. --- ** '?\' at the end of a line now signals an error. Previously it produced a nonsense value, -1, that was never intended. + +--- +** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed: +abbrevlist.el, assoc.el, complete.el, cust-print.el, +erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el, +patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el. + ++++ +** Many seldom-used generalized variables have been made obsolete. +Emacs has a number of rather obscure generalized variables defined, +that, for instance, allowed you to say things like: + + (setf (point-min) 4) + +These never caught on and have been made obsolete. The form above, +for instance, is the same as saying + + (narrow-to-region 4 (point-max)) + +The following generalized variables have been made obsolete: +'buffer-file-name', 'buffer-local-value', 'buffer-modified-p', +'buffer-name', 'buffer-string', 'buffer-substring', 'current-buffer', +'current-column', 'current-global-map', 'current-input-mode', +'current-local-map', 'current-window-configuration', +'default-file-modes', 'documentation-property', 'frame-height', +'frame-width', 'frame-visible-p', 'global-key-binding', +'local-key-binding', 'mark', 'mark-marker', 'marker-position', +'mouse-position', 'point', 'point-marker', 'point-max', 'point-min', +'read-mouse-position', 'screen-height', 'screen-width', +'selected-frame', 'selected-screen', 'selected-window', +'standard-case-table', 'syntax-table', 'visited-file-modtime', +'window-height', 'window-width', and 'x-get-secondary-selection'. + * Lisp Changes in Emacs 29.1 +++ -** 'read-regexp' now allows the user to indicate whether to use case folding. +** New function 'make-obsolete-generalized-variable'. +This can be used to mark setters used by 'setf' as obsolete, and the +byte-compiler will then warn about using them. + ++++ +** New functions 'pos-eol' and 'pos-bol'. +These are like 'line-end-position' and 'line-beginning-position' +(respectively), but ignore fields (and are more efficient). + ++++ +** New function 'compiled-function-p'. +This returns non-nil if its argument is either a built-in, or a +byte-compiled, or a natively-compiled function object, or a function +loaded from a dynamic module. + +--- +** 'deactivate-mark' can have new value 'dont-save'. +This value means that Emacs should deactivate the mark as usual, but +without setting the primary selection, if 'select-active-regions' is +enabled. + ++++ +** New 'declare' form 'interactive-args'. +This can be used to specify what forms to put into 'command-history' +when executing commands interactively. + ++++ +** The FORM arg of 'time-convert' is mandatory. +'time-convert' can still be called without it, as before, but the +compiler now emits a warning about this deprecated usage. + ++++ +** Emacs now supports user-customizable and themable icons. +These can be used for buttons in buffers and the like. See the +"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details. + ++++ +** New arguments MESSAGE and TIMEOUT of 'set-transient-map'. +MESSAGE specifies a message to display after activating the transient +map, including a special formatting spec to list available keys. +TIMEOUT is the idle time after which to deactivate the transient map. +The default timeout value can be defined by the new variable +'set-transient-map-timeout'. + ++++ +** New function 'seq-split'. +This returns a list of sub-sequences of the specified sequence. + ++++ +** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'. +These function now take an optional comparison predicate argument. + ++++ +** 'read-multiple-choice' can now use long-form answers. + ++++ +** 'M-c' in 'read-regexp' now toggles case folding. +++ ** 'completing-read' now allows a function as its REQUIRE-MATCH argument. @@ -2022,15 +2715,28 @@ If DATA is a string, then its text properties are searched for values for each specific data type while the selection is being converted. --- -** New eldoc function: 'elisp-eldoc-var-docstring-with-value'. +** New eldoc function 'elisp-eldoc-var-docstring-with-value'. This function includes the current value of the variable in eldoc display and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'. ++++ ** 'save-some-buffers' can now be extended to save other things. Traditionally, 'save-some-buffers' saved buffers, and also saved abbrevs. This has been generalized via the -'save-some-buffers-functions', and packages can now register things to -be saved. +'save-some-buffers-functions' variable, and packages can now register +things to be saved. + ++++ +** New function 'string-equal-ignore-case'. +This compares strings ignoring case differences. + +** 'symbol-file' can now report natively-compiled ".eln" files. +If Emacs was built with native-compilation enabled, Lisp programs can +now call 'symbol-file' with the new optional 3rd argument non-nil to +request the name of the ".eln" file which defined a given symbol. + ++++ +** New macro 'with-memoization' provides a very primitive form of memoization. ** Themes @@ -2058,6 +2764,20 @@ This is meant to be used in modes that have a header line that should be kept aligned with the buffer contents when the user switches 'display-line-numbers-mode' on or off. ++++ +** New minor mode 'lost-selection-mode'. +This minor mode makes Emacs deactivate the mark in all buffers when +the primary selection is obtained by another program. + +--- +** On X, Emacs will try to preserve selection ownership when a frame is deleted. +This means that if you make Emacs the owner of a selection, such as by +selecting some text into the clipboard or primary selection, and then +delete the current frame, you will still be able to insert the +contents of that selection into other programs as long as another +frame is open on the same display. This behavior can be disabled by +setting the user option 'x-auto-preserve-selections' to nil. + +++ ** New predicate 'char-uppercase-p'. This returns non-nil if its argument its an uppercase character. @@ -2065,18 +2785,18 @@ This returns non-nil if its argument its an uppercase character. ** Byte compilation --- -*** Byte compilation will now warn about some quoting mistakes in doc strings. -When writing code snippets that contains the ' character (APOSTROPHE), +*** Byte compilation will now warn about some quoting mistakes in docstrings. +When writing code snippets that contains the "'" character (APOSTROPHE), that quote character has to be escaped to avoid Emacs displaying it as -’ (LEFT SINGLE QUOTATION MARK), which would make code examples like +"’" (LEFT SINGLE QUOTATION MARK), which would make code examples like (setq foo '(1 2 3)) invalid. Emacs will now warn during byte compilation if it seems something like that, and also warn about when using RIGHT/LEFT SINGLE QUOTATION MARK directly. In both these cases, if these characters -should really be present in the doc string, they should be quoted with -\=. +should really be present in the docstring, they should be quoted with +"\=". --- *** Byte compilation will now warn about some malformed 'defcustom' types. @@ -2089,12 +2809,12 @@ value. The byte compiler will now issue a warning if it encounters these forms. +++ -*** 'restore-buffer-modified-p' can now alter buffer auto-save state. +** 'restore-buffer-modified-p' can now alter buffer auto-save state. With a FLAG value of 'autosaved', it will mark the buffer as having been auto-saved since the time of last modification. --- -*** New minor mode 'isearch-fold-quotes-mode'. +** New minor mode 'isearch-fold-quotes-mode'. This sets up 'search-default-mode' so that quote characters are char-folded into each other. It is used, by default, in "*Help*" and "*info*" buffers. @@ -2178,9 +2898,10 @@ list in reported motion events if there is no frame underneath the mouse pointer. +++ -** New functions 'x-begin-drag', 'dnd-begin-text-drag' and 'dnd-begin-file-drag'. -These functions allow dragging contents (such as files and text) from -Emacs to other programs. +** New functions for dragging items from Emacs to other programs. +The new functions 'x-begin-drag', 'dnd-begin-file-drag', +'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents +(such as files and text) from Emacs to other programs. --- ** New function 'ietf-drums-parse-date-string'. @@ -2247,7 +2968,7 @@ This is like 'get-text-property', but works on the 'display' text property. +++ -** New function 'add-text-display-property'. +** New function 'add-display-text-property'. This is like 'put-text-property', but works on the 'display' text property. @@ -2278,6 +2999,12 @@ them towards or away from each other. This hook is run before 'x-popup-menu' is about to display a deck-of-cards menu on screen. +--- +** New hook 'post-select-region-hook'. +This hook is run immediately after 'select-active-regions' causes the +region to be set as the primary selection. + ++++ ** New function 'buffer-match-p'. Check if a buffer satisfies some condition. Some examples for conditions can be regular expressions that match a buffer name, a @@ -2285,6 +3012,7 @@ cons-cell like '(major-mode . shell-mode)' that matches any buffer where 'major-mode' is 'shell-mode' or a combined with a condition like '(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'. ++++ ** New function 'match-buffers'. Use 'buffer-match-p' to gather a list of buffers that match a condition. @@ -2322,6 +3050,12 @@ option. ** Keymaps and key definitions ++++ +*** 'where-is-internal' can now filter events marked as non key events. +If a command maps to a key binding like '[some-event]', and 'some-event' +has a symbol plist containing a non-nil 'non-key-event' property, then +that binding is ignored by 'where-is-internal'. + +++ *** New functions for defining and manipulating keystrokes. These all take the syntax defined by 'key-valid-p'. None of the older @@ -2716,6 +3450,10 @@ when used as part of a property list specification for the ** 'defalias' records a more precise history of definitions. This is recorded in the 'function-history' symbol property. +--- +** New hook 'save-place-after-find-file-hook'. +This is called at the end of 'save-place-find-file-hook'. + --- ** 'indian-tml-base-table' no longer translates digits. Use 'indian-tml-base-digits-table' if you want digits translation. @@ -2730,12 +3468,21 @@ translation. This is useful when quoting shell arguments for a remote shell invocation. Such shells are POSIX conformant by default. ++++ +** 'make-process' can set connection type independently for input and output. +When calling 'make-process', communication via pty can be enabled +selectively for just input or output by passing a cons cell for +':connection-type', e.g. '(pipe . pty)'. When examining a process +later, you can determine whether a particular stream for a process +uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the +second argument to 'process-tty-name'. + +++ ** 'signal-process' now consults the list 'signal-process-functions'. This is to determine which function has to be called in order to deliver the signal. This allows Tramp to send the signal to remote asynchronous processes. The hitherto existing implementation has been -moved to 'signal-default-interrupt-process'. +moved to 'internal-default-signal-process'. +++ ** 'list-system-processes' now returns remote process IDs. @@ -2754,6 +3501,11 @@ to preserve the old behavior, apply (let ((default-directory temporary-file-directory)) (process-attributes pid)) ++++ +** New functions 'take' and 'ntake'. +'(take N LIST)' returns the first N elements of LIST; 'ntake' does +the same but works by modifying LIST destructively. + * Changes in Emacs 29.1 on Non-Free Operating Systems diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index ee6fa82b29f..9d7bacc9ec8 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -41,10 +41,10 @@ that Emacs has not been run on before. 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 +subroutine 'alloca' in the canonical fashion, using an 'alloca' emulation written in C. ** On-line manual. @@ -74,39 +74,39 @@ highest previously used. Thus, the active, current file does not have a version number. Only the backups have them. -This feature is controlled by the variable `version-control'. If it -is `nil', as normally, then numbered backups are made only for files +This feature is controlled by the variable 'version-control'. If it +is 'nil', as normally, then numbered backups are made only for files that already have numbered backups. Backup names with just `~' are used for files that have no numbered backups. -If `version-control' is `never', then the backup file's name is +If 'version-control' is 'never', then the backup file's name is made with just `~' in any case. -If `version-control' is not `nil' or `never', numbered backups are +If 'version-control' is not 'nil' or 'never', numbered backups are made unconditionally. To prevent unlimited consumption of disk space, Emacs can delete old backup versions automatically. Generally Emacs keeps the first few backups and the latest few backups, deleting any in between. This happens every time a new backup is made. The two variables that -control the deletion are `kept-old-versions' and `kept-new-versions'. +control the deletion are 'kept-old-versions' and 'kept-new-versions'. Their values are, respectively, the number of oldest backups to keep and the number of newest ones to keep, each time a new backup is made. -The value of `kept-new-versions' includes the backup just created. +The value of 'kept-new-versions' includes the backup just created. By default, both values are 2. -If `trim-versions-without-asking' is non-`nil', the excess middle versions -are deleted without a murmur. If it is `nil', the default, then you +If 'trim-versions-without-asking' is non-'nil', the excess middle versions +are deleted without a murmur. If it is 'nil', the default, then you are asked whether the excess middle versions should really be deleted. Dired has a new command `.' which marks for deletion all but the latest -and oldest few of every numeric series of backups. `kept-old-versions' -controls the number of oldest versions to keep, and `dired-kept-versions' +and oldest few of every numeric series of backups. 'kept-old-versions' +controls the number of oldest versions to keep, and 'dired-kept-versions' controls the number of latest versions to keep. A numeric argument to the `.' command, if positive, specifies the number of latest versions -to keep, overriding `dired-kept-versions'. A negative argument specifies +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'. +'kept-old-versions'. ** Immediate conflict detection. @@ -182,17 +182,17 @@ 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 +Shell mode now uses the variable 'shell-pushd-regexp' as a regular expression to recognize any command name that is -equivalent to a `pushd' command. By default it is set up -to recognize just `pushd' itself. If you use aliases for -`pushd', change the regexp to recognize them as well. +equivalent to a 'pushd' command. By default it is set up +to recognize just 'pushd' itself. If you use aliases for +'pushd', change the regexp to recognize them as well. -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'. +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. @@ -203,7 +203,7 @@ modes, the command to exit used to be just C-c. ** Outline mode changes. Lines that are not heading lines are now called "body" lines. -The command `hide-text' is renamed to `hide-body'. +The command 'hide-text' is renamed to 'hide-body'. The key M-H is renamed to C-c C-h. The key M-S is renamed to C-c C-s. The key M-s is renamed to C-c C-i. @@ -229,7 +229,7 @@ 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. @@ -238,9 +238,9 @@ Various new commands and features exist; see the Emacs manual. 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 +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. @@ -251,47 +251,47 @@ 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 redefined in Dired to position the cursor this way. -`n' and `p' are now equivalent in dired to `C-n' and `C-p'. +'n' and 'p' are now equivalent in dired to 'C-n' and 'C-p'. If any files to be deleted cannot be deleted, their names are printed in an error message. -If the `v' command is invoked on a file which is a directory, +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 +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 +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. Now, when a file is autoloaded, all function redefinitions -and `provide' calls are recorded and are undone if you quit +and 'provide' calls are recorded and are undone if you quit before the file is finished loading. 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. +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,10 +300,10 @@ 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 +'-batch' now implies '-q': no init file is loaded by Emacs when +'-batch' is used. Also, no `term/TERMTYPE.el' file is loaded. Auto saving is not done except in buffers in which it is explicitly requested. Also, many echo-area printouts describing what is going on are inhibited in batch mode, so that the only output you get is the @@ -311,7 +311,7 @@ output you program specifically. 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'. +message by passing 't' as the third argument to 'load'. ** Display of search string in incremental search. @@ -324,12 +324,12 @@ is actually going on. ** 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 +available inside 'view-buffer' and 'view-file', with their normal meanings. ** Full-width windows preferred. -The ``other-window'' commands prefer other full width windows, +The 'other-window' commands prefer other full width windows, and will split only full width windows. ** M-x rename-file can copy if necessary. @@ -367,7 +367,7 @@ distance rather than a single column if used with no argument. ** Auto Save Files Deleted. -The default value of `delete-auto-save-files' is now `t', so that +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. @@ -392,18 +392,18 @@ to specify files in which copies of the message should be put. The message is written into those files in Unix mail file format. The message as sent does not contain any Fcc fields in its header. You can use any number of Fcc fields, but only one file name in each one. -The variable `mail-archive-file-name', if non-`nil', can be a string +The variable 'mail-archive-file-name', if non-'nil', can be a string which is a file name; an Fcc to that file will be inserted in every message when you begin to compose it. A new command C-c q now exists in Mail mode. It fills the paragraphs of an old message that had been inserted with C-c y. -When the *mail* buffer is put in Mail mode, text-mode-hook -is now run in addition to mail-mode-hook. text-mode-hook +When the *mail* buffer is put in Mail mode, 'text-mode-hook' +is now run in addition to 'mail-mode-hook'. text-mode-hook is run first. -The new variable `mail-header-separator' now specifies the string +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--". @@ -434,38 +434,38 @@ 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 the mark. They have been eliminated from Emacs proper, but are present in mlsupport.el for the sake of converted mocklisp programs. -If you were using `region-to-string', you should instead use -`buffer-substring'; then you can pass the bounds as arguments and +If you were using 'region-to-string', you should instead use +'buffer-substring'; then you can pass the bounds as arguments and can avoid setting the mark. -If you were using `region-around-match', you can use instead -the two functions `match-beginning' and `match-end'. These give +If you were using 'region-around-match', you can use instead +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 +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 +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. +a string, or 'nil' when no keyboard macro is being executed. ** Loading term/$TERM. @@ -478,15 +478,15 @@ 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. -The functions `forward-to-word', `backward-to-word', -`upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer' +The functions 'forward-to-word', 'backward-to-word', +'upcase-char', 'mark-beginning-of-buffer' and 'mark-end-of-buffer' have been removed. Their definitions can be found in file lisp/unused.el if you need them. @@ -496,53 +496,53 @@ lisp/unused.el if you need them. ** 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 +a non-'nil' value of 'debug-on-quit', the 'c' command in the debugger resumes execution of the code that was running when the quit happened. -Use the `q' command to go ahead and quit. +Use the 'q' command to go ahead and quit. The same applies to some kinds of errors, but not all. Errors -signaled with the Lisp function `signal' can be continued; the `c' -command causes `signal' to return. The `r' command causes `signal' to -return the value you specify. The `c' command is equivalent to `r' -with the value `nil'. +signaled with the Lisp function 'signal' can be continued; the 'c' +command causes 'signal' to return. The 'r' command causes 'signal' to +return the value you specify. The 'c' command is equivalent to 'r' +with the value 'nil'. -For a `wrong-type-argument' error, the value returned with the `r' +For a 'wrong-type-argument' error, the value returned with the 'r' command is used in place of the invalid argument. If this new value is not valid, another error occurs. -Errors signaled with the function `error' cannot be continued. +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 +The word 'dot' has been replaced with 'point' in all function and variable names, including: - point, point-min, point-max, - point-marker, point-min-marker, point-max-marker, - window-point, set-window-point, - point-to-register, register-to-point, - exchange-point-and-mark. + 'point', 'point-min', 'point-max', + 'point-marker', 'point-min-marker', 'point-max-marker', + 'window-point', 'set-window-point', + 'point-to-register', 'register-to-point', + 'exchange-point-and-mark'. 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 +After a successful call to 'string-match', `(match-end 0)' will return the index in the string of the first character after the match. -Also, `match-begin' and `match-end' with nonzero arguments can be +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 +This function is just like 'insert' except in the handling of any relocatable markers that are located at the point of insertion. -With `insert', such markers end up pointing before the inserted text. -With `insert-before-markers', they end up pointing after the inserted +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 @@ -550,32 +550,32 @@ that is a cons cell is copied, but the cars and cdrs of elements 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. +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 +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,29 +584,29 @@ 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 +If this function is given a non-'nil' second argument, then the selection being done is not recorded on the selection history. 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 +defaults to 'nil'. If the argument is not 'nil', it means that another window (not the selected one) must be found or created to display the specified buffer in, even if it is already shown in the selected window. -This feature is used by `switch-to-buffer-other-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 +If this variable is non-'nil', completion allows strings in different cases to be considered matching. The global value -is `nil' +is 'nil' This variable exists for the sake of commands that are completing an argument in which case is not significant. It is possible @@ -617,13 +617,13 @@ where case makes a difference. ** 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'. +'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. You can define a new command line switch in your .emacs file -by putting elements on the value of `command-switch-alist'. +by putting elements on the value of 'command-switch-alist'. Each element of this list should look like (SWITCHSTRING . FUNCTION) where SWITCHSTRING is a string containing the switch to be @@ -633,35 +633,35 @@ receives the command line argument, a string, as its argument. To implement a switch that uses up one or more following arguments, use the fact that the remaining command line arguments are kept -as a list in the variable `command-line-args'. FUNCTION can +as a list in the variable 'command-line-args'. FUNCTION can 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'. +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 +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') +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'. +can be found as the value of 'buffer-file-name'. ** 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' -using `set-process-buffer'. +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' +using 'set-process-buffer'. The reason you might want to do this is to prevent the process from being killed because any particular buffer is killed. @@ -672,18 +672,18 @@ 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 +This function takes a symbol as argument and returns 't' if the symbol is defined as a user option variable. This means -that it has a `variable-documentation' property whose value is +that it has a 'variable-documentation' property whose value is a string starting with `*'. -Code `v' in an interactive arg reading string now accepts +Code 'v' in an interactive arg reading string now accepts user variables only, and completion is limited to the space of user variables. -The function `read-variable' also now accepts and completes +The function 'read-variable' also now accepts and completes over user variables only. ** CBREAK mode input is the default in Unix 4.3 bsd. @@ -691,33 +691,33 @@ over user variables only. In Berkeley 4.3 Unix, there are sufficient features for Emacs to work fully correctly using CBREAK mode and not using SIGIO. Therefore, this mode is the default when running under 4.3. -This mode corresponds to `nil' as the first argument to -`set-input-mode'. You can still select either mode by calling +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. -The new variable `data-bytes-used' contains the number +The new variable 'data-bytes-used' contains the number of bytes of impure space allocated in Emacs. -`data-bytes-free' contains the number of additional bytes +'data-bytes-free' contains the number of additional bytes Emacs could allocate. Note that space formerly allocated -and freed again still counts as `used', since it is still +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 +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. +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 'replace-match', when the replacement is not literal, `\' in the replacement string is always treated as an escape marker. The only two special `\' constructs are `\&' and `\DIGIT', so `\' followed by anything other than @@ -728,21 +728,21 @@ 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', +This argument is optional and defaults to 'nil'. If it is not 'nil', then the substitutions made by this function are not recorded in the Undo mechanism. @@ -757,25 +757,25 @@ 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 -`pop-to-buffer', because it is guaranteed to create another +'pop-to-buffer', because it is guaranteed to create another window (assuming there is room on the screen) so that it can 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'. +At entry to the minibuffer, the variable 'help-form' is bound +to the value of 'minibuffer-help-form'. -`help-form' is expected at all times to contain either `nil' +'help-form' is expected at all times to contain either 'nil' or an expression to be executed when C-h is typed (overriding -the definition of C-h as a command). `minibuffer-help-form' +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. @@ -791,7 +791,7 @@ be quoted with a second `\', to include it in the doc string.) This construct is normally used on a line by itself, with no blank lines before or after. -For example, the documentation string for the function `c-mode' contains +For example, the documentation string for the function 'c-mode' contains ... Paragraphs are separated by blank lines only. Delete converts tabs to spaces as it moves back. @@ -803,13 +803,13 @@ For example, the documentation string for the function `c-mode' contains 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'. +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'. +before searching 'auto-mode-alist'. @@ -846,14 +846,14 @@ arguments and then confirm, or abort with C-g. ** Incremental search does less redisplay on slow terminals. -If the terminal baud rate is <= the value of `isearch-slow-speed', +If the terminal baud rate is <= the value of 'isearch-slow-speed', incremental searching outside the text on the screen creates a single-line window and uses that to display the line on which a match has been found. Exiting or quitting the search restores the previous window configuration and redisplays the window you were searching in. -The initial value of `isearch-slow-speed' is 1200. +The initial value of 'isearch-slow-speed' is 1200. This feature is courtesy of crl@purdue. @@ -871,17 +871,17 @@ if you know enough to switch windows while in the minibuffer, you can probably understand recursive minibuffers. This may be overridden by binding the variable -`enable-recursive-minibuffers' to t. +'enable-recursive-minibuffers' to t. ** 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 -lisps external to 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 +lisps external to Emacs. The hook which is funcalled (if non-nil) on entry to elisp-mode is now -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 +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. @@ -898,18 +898,18 @@ This feature was originally written by shane@mit-ajax. ** M-x command-history-mode ** M-x electric-command-history -`list-command-history' displays forms from the command history subject +'list-command-history' displays forms from the command history subject to user controlled filtering and limit on number of forms. It leaves -the buffer in `command-history-mode'. M-x command-history-mode +the buffer in 'command-history-mode'. M-x command-history-mode recomputes the command history each time it is invoked via -`list-command-history'. It is like Emacs-Lisp mode except that characters +'list-command-history'. It is like Emacs-Lisp mode except that characters don't insert themselves and provision is made for re-evaluating an -expression from the list. `electric-command-history' pops up a type +expression from the list. 'electric-command-history' pops up a type out window with the command history displayed. If the very next character is Space, the window goes away and the previous window configuration is restored. Otherwise you can move around in the history and select an expression for evaluation *inside* the buffer -which invoked `electric-command-history'. The original window +which invoked 'electric-command-history'. The original window configuration is restored on exit unless the command selected changes it. @@ -924,7 +924,7 @@ Special commands for hacking tabs and tab stops are provided. Special commands for killing rectangles and overlaying them are provided. See the documentation of function edit-picture for more details. -Calls value of `edit-picture-hook' on entry if non-nil. +Calls value of 'edit-picture-hook' on entry if non-nil. ** Stupid C-s/C-q `flow control' supported. @@ -977,15 +977,15 @@ 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 +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 @@ -994,27 +994,27 @@ with no confirmation. ** 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 +resulting buffer is placed into 'view-mode' (a recursive edit). The normal emacs commands are not available. Instead a set of special commands is provided which facilitate moving around in the buffer, searching and scrolling by screenfuls. Exiting view-mode returns to the buffer in which the view-file or view-buffer command was given. Type ? or h when viewing for a complete list of view commands. -Each calls value of `view-hook' if non-nil on entry. +Each calls value of 'view-hook' if non-nil on entry. written by shane@mit-ajax. ** New key commands in dired. -`v' views (like more) the file on the current line. +'v' views (like more) the file on the current line. `#' marks auto-save files for deletion. `~' marks backup files for deletion. -`r' renames a file and updates the directory listing if the +'r' renames a file and updates the directory listing if the file is renamed to same directory. -`c' copies a file and updates the directory listing if the file is +'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 @@ -1026,18 +1026,18 @@ cursor's line. There are a number of other commands which are the same as those of buffer-menu-mode. This is a useful thing to bind to c-x c-b in your `.emacs' file if the -rather non-standard `electric' behavior of the buffer list suits your taste. +rather non-standard 'electric' behavior of the buffer list suits your taste. 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. +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 *** 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 +C-c w inserts your 'signature' (contents of ~/.signature) at the end of mail. *** New feature in C-c y command in sending mail. @@ -1063,26 +1063,26 @@ 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 +'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. +Another 't' switches back to the usual display. *** Rmail command '>' goes to the last message. -*** Rmail commands `a' and `k' set message attributes. -`a' adds an attribute and `k' removes one. You specify +*** 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') +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. @@ -1092,11 +1092,11 @@ the messages should have. 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. -To read mail, invoke mh-rmail. This will inc new mail and display the +To read mail, invoke 'mh-rmail'. This will inc new mail and display the scan listing on the screen. To see a summary of the mh-e commands, type ?. Help is available through the usual facilities. -To send mail, invoke mh-smail. +To send mail, invoke 'mh-smail'. mh-e requires a copy of MH.5 that has been compiled with the MHE compiler switch. @@ -1105,39 +1105,39 @@ From larus@berkeley. ** 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. The matching open-paren is shown and checked if it is found within this distance. -`nil' means search all the way to the beginning of the buffer. +'nil' means search all the way to the beginning of the buffer. In this case, a warning message is printed if no matching 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! +The value should be a string containing '-' followed by letters. +The letter 'l' had better be included and letter 'F' had better be excluded! 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 +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,19 +1147,20 @@ 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 +The value of 'c-brace-offset' used to be +subtracted from the value of 'c-indent-level' whenever that value was used. Now it is not. -As a result, `c-indent-level' is now the offset of +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) -(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. @@ -1187,8 +1188,8 @@ the following text, up to the next `]', is taken as a function name. Instead of printing that function name, the command that runs it is printed. (M-x is used to construct a command if no shorter one exists.) -For example, instead of putting `C-n' in a documentation string -to refer to the C-n command, put in `\[next-line]'. (In practice +For example, instead of putting 'C-n' in a documentation string +to refer to the 'next-line' command, put in `\[next-line]'. (In practice you will need to quote the backslash with another backslash, due to the syntax for strings in Lisp and C.) @@ -1197,34 +1198,34 @@ precede them with `\='. To include the characters `\=', precede them with `\='. For example, "\\=\\= is the way to quote \\=\\[" will come out as `\= is the way to quote \['. -The new function `substitute-command-keys' takes a string possibly +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 +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 +Should return non-'nil' if given a string which is the name of an auto-save file (sans directory name). If you redefine -`make-auto-save-file-name', you should redefine this accordingly. By -default, this function returns `t' for filenames beginning with +'make-auto-save-file-name', you should redefine this accordingly. By +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. -(open-dribble-file FILE) opens a dribble file named FILE. When a +'open-dribble-file' opens a dribble file. When a dribble file is open, every character Emacs reads from the terminal is written to the dribble file. -(open-termscript FILE) opens a termscript file named FILE. When a +'open-termscript' opens a termscript file. When a termscript file is open, all characters sent to the terminal by Emacs are also written in the termscript file. @@ -1240,15 +1241,15 @@ a synonym for C-x u (undo). *** 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. +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, +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. +of C-x b, or for 'other-buffer' to return. *** Already-displayed buffers have low priority for display. @@ -1256,14 +1257,14 @@ 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 @@ -1273,9 +1274,9 @@ sequences, and all. 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. +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,38 +1284,38 @@ 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' +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. -Old functions `read-minibuffer', `eval-minibuffer', `read-string' all +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) -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 +'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 *** 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 +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 +If the switch '-batch' is used, Emacs treats its standard output and input like ordinary files (even if they are a terminal). It does not display buffers or windows; the only output to standard output is what would appear as messages in the echo area, and each @@ -1322,13 +1323,13 @@ message is followed by a newline. The terminal modes are not changed, so that C-z and C-c retain their normal Unix meanings. Emacs does still read commands from -the terminal, but the idea of `-batch' is that you use it with +the terminal, but the idea of '-batch' is that you use it with other command line arguments that tell Emacs a complete task to perform, -including killing itself. `-kill' used as the last argument is a good +including killing itself. '-kill' used as the last argument is a good way to accomplish this. -The Lisp variable `noninteractive' is now defined, to be `nil' -except when `-batch' has been specified. +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. @@ -1359,7 +1360,7 @@ This is because -batch (see above) is now used in building Emacs. Note that lisp code converted from Mocklisp code will not necessarily run as fast as code specifically written for GNU Emacs, nor will it use the many features of GNU Emacs which are not present in Gosling's emacs. - (In particular, the byte-compiler (m-x byte-compile-file) knows little + (In particular, the byte-compiler (M-x byte-compile-file) knows little about compilation of code directly converted from mocklisp.) It is envisaged that old mocklisp code will be incrementally converted to GNU lisp code, with M-x convert-mocklisp-buffer being the first @@ -1382,63 +1383,66 @@ This is because -batch (see above) is now used in building Emacs. 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. - The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. + 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. + 'max-specpdl-size'. If either limit is exceeded, an error occurs. You can set the limits to larger values if you wish, but if you make them 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. - find-file-hook is called whenever a file is read into its own buffer, - such as by calling find-file, revert-buffer, etc. It is not called by - functions such as insert-file which do not read the file into a buffer of + 'find-file-hook' is called whenever a file is read into its own buffer, + such as by calling 'find-file', 'revert-buffer', etc. It is not called by + functions such as 'insert-file' which do not read the file into a buffer of its own. - find-file-hook is called after the file has been read in and its + 'find-file-hook' is called after the file has been read in and its local variables (if any) have been processed. - write-file-hook is called just before writing out a file from a buffer. + '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. - The new variable features is a list of symbols which represent "features" + The new variable 'features' is a list of symbols which represent "features" of the executing emacs, for use in run-time conditionalization. - The function featurep of one argument may be used to test for the + The function 'featurep' of one argument may be used to test for the presence of a feature. It is just the same as - (not (null (memq FEATURE features))) where FEATURE is its argument. - For example, (if (featurep 'magic-window-hack) - (transmogrify-window 'vertical) - (split-window-vertically)) + (not (null (memq FEATURE features))) + where FEATURE is its argument. For example, - The function provide of one argument "announces" that FEATURE is present. + (if (featurep 'magic-window-hack) + (transmogrify-window 'vertical) + (split-window-vertically)) + + The function 'provide' of one argument "announces" that FEATURE is present. It is much the same as (if (not (featurep FEATURE)) (setq features (cons FEATURE features))) - The function require with arguments FEATURE and FILE-NAME loads FILE-NAME + The function 'require' with arguments FEATURE and FILE-NAME loads FILE-NAME (which should contain the form (provide FEATURE)) unless FEATURE is present. It is much the same as (if (not (featurep FEATURE)) (progn (load FILE-NAME) (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, @@ -1460,10 +1464,10 @@ This is because -batch (see above) is now used in building Emacs. ** Programmer's note: detecting killed buffers. Buffers are eliminated by explicitly killing them, using - the function kill-buffer. This does not eliminate or affect + the function 'kill-buffer'. This does not eliminate or affect the pointers to the buffer which may exist in list structure. If you have a pointer to a buffer and wish to tell whether - the buffer has been killed, use the function buffer-name. + 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. @@ -1471,13 +1475,13 @@ This is because -batch (see above) is now used in building Emacs. The function last-key-struck, which used to return the last input character that was read by command input, is eliminated. Instead, you can find this information as the value of the - variable last-command-char. (This variable used to be called + variable 'last-command-char'. (This variable used to be called last-key). - Another new variable, last-input-char, holds the last character + Another new variable, 'last-input-char', holds the last character read from the command input stream regardless of what it was read for. last-input-char and last-command-char are different - only inside a command that has called read-char to read input. + only inside a command that has called 'read-char' to read input. ** The new switch -kill causes Emacs to exit after processing the preceding command line arguments. Thus, @@ -1517,9 +1521,9 @@ This is because -batch (see above) is now used in building Emacs. 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 + The 'texinfo' library defines a format for documentation files which can be passed through Tex to make a printed manual or passed through texinfo to make an Info file. Texinfo is documented fully by its own Info file; compare this file @@ -1532,7 +1536,7 @@ This is because -batch (see above) is now used in building Emacs. 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 @@ -1558,25 +1562,25 @@ This is because -batch (see above) is now used in building Emacs. 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) - The read-only state of a buffer may be altered using toggle-read-only + The read-only state of a buffer may be altered using 'toggle-read-only' (C-x C-q) The buffers used by Rmail, Dired, Rnews, and Info are now read-only 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 + as what 'user-login-name' returns; however, when Emacs is invoked + from su, 'user-real-login-name' returns "root" but user-login-name returns the name of the user who invoked su. @@ -1603,7 +1607,7 @@ This is because -batch (see above) is now used in building Emacs. This syntax can be used in strings too. Note, however, that Meta characters are not meaningful in key sequences being passed - to define-key or lookup-key; you must use ESC characters (\e) + to 'define-key' or 'lookup-key'; you must use ESC characters (\e) in them instead. ?\C- can be used likewise for control characters. (13.9) @@ -1627,14 +1631,14 @@ This is because -batch (see above) is now used in building Emacs. This is a shift key which causes the high bit to be turned on in all input characters typed while it is held down. - read-char now returns a value in the range 128-255 if + 'read-char' now returns a value in the range 128-255 if a Meta character is typed. When interpreted as command input, a Meta character is equivalent to a two character sequence, the meta prefix character followed by the unmetized character (Meta-G unmetized is G). The meta prefix character - is specified by the value of the variable meta-prefix-char. + is specified by the value of the variable 'meta-prefix-char'. If this character (normally Escape) has been redefined locally with a non-prefix definition (such as happens in completing minibuffers) then the local redefinition is suppressed when @@ -1643,10 +1647,10 @@ This is because -batch (see above) is now used in building Emacs. 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]] @@ -1720,20 +1724,20 @@ you will not on its account be queried about active subprocesses. ** 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. + 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. - The value of the per-buffer variable default-directory + 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 - `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 + '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 @@ -1757,7 +1761,7 @@ you will not on its account be queried about active subprocesses. 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". @@ -1767,13 +1771,13 @@ you will not on its account be queried about active subprocesses. ** 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. 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 @@ -1782,9 +1786,9 @@ you will not on its account be queried about active subprocesses. The third element is similar but describes markers. ** The variable buffer-name has been eliminated. - The function buffer-name still exists. This is to prevent + The function 'buffer-name' still exists. This is to prevent user programs from changing buffer names without going - through the rename-buffer function. + through the 'rename-buffer' function. @@ -1795,7 +1799,7 @@ you will not on its account be queried about active subprocesses. 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 @@ -1807,18 +1811,18 @@ you will not on its account be queried about active subprocesses. ** 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. + does the wrong thing), use 'fill-region-as-paragraph'. -** 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, +** 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. + (or by two arguments) and saves it in the variable 'killed-rectangle'. yank-rectangle inserts the rectangle in that variable. Tab characters in a rectangle being saved are replaced @@ -1859,7 +1863,7 @@ you will not on its account be queried about active subprocesses. 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,11 +1872,11 @@ you will not on its account be queried about active subprocesses. 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 + 'minor-modes', which has the same effect but has a separate value in each buffer. ** C-x = describes horizontal scrolling in effect, if any. @@ -1887,7 +1891,7 @@ you will not on its account be queried about active subprocesses. 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 @@ -1898,7 +1902,7 @@ This release mostly fixes bugs. There are a few new features: If the third argument to apropos is non-nil, apropos does not display anything; it merely returns the list of symbols found. - C-h a now runs the new function command-apropos rather than + 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 @@ -1908,8 +1912,8 @@ This release mostly fixes bugs. There are a few new features: 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 - to resume a terminated tags-search or tags-query-replace. +** M-, now runs the command 'tags-loop-continue', which is used + to resume a terminated 'tags-search' or 'tags-query-replace'. @@ -1921,60 +1925,60 @@ It's Beat CCA Week. so that all buffer names used automatically by Emacs now have *'s. ** Undo information is now stored separately for each buffer. - The Undo command (C-x u) always applies to the current - buffer only. +The Undo command (C-x u) always applies to the current +buffer only. C-_ is now a synonym for C-x u. - (buffer-flush-undo BUFFER) causes undo information not to - be kept for BUFFER, and frees the space that would have - been used to hold it. In any case, no undo information is - kept for buffers whose names start with spaces. (These - buffers also do not appear in the C-x C-b display.) +'buffer-flush-undo' causes undo information not to +be kept for BUFFER, and frees the space that would have +been used to hold it. In any case, no undo information is +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. - 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, - can be used to reinsert the rectangle elsewhere. +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, +can be used to reinsert the rectangle elsewhere. Other rectangle commands include - open-rectangle: + 'open-rectangle': insert a blank rectangle in the position and size described by dot and mark, at its corners; the existing text is pushed to the right. - clear-rectangle: + 'clear-rectangle': replace the rectangle described by dot and mark with blanks. The previous text is deleted. - delete-rectangle: + 'delete-rectangle': 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 - 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 - window ARG columns narrower. An argument to C-x 5 specifies - how many columns to give to the leftmost of the two windows made. +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 +window ARG columns narrower. An argument to C-x 5 specifies +how many columns to give to the leftmost of the two windows made. - 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. +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. - 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 - of each nonempty line is replaced by an "$". - C-x > scrolls right. If a window has no text hidden at the left - margin, it cannot be scrolled any farther right than that. - When nonzero leftwards scrolling is in effect in a window. - lines are automatically truncated at the window's right margin - regardless of the value of the variable truncate-lines in the - buffer being displayed. +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 +of each nonempty line is replaced by an "$". +C-x > scrolls right. If a window has no text hidden at the left +margin, it cannot be scrolled any farther right than that. +When nonzero leftwards scrolling is in effect in a window. +lines are automatically truncated at the window's right margin +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', - which gives just file names in multiple columns. - C-u C-x C-d passes the -l switch to `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. @@ -1995,7 +1999,7 @@ It's Beat CCA Week. ** 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. @@ -2057,7 +2061,7 @@ It's Beat CCA Week. including the terminating slash, requests the use of the default file name (usually the visited file's name). - Set the variable insert-default-directory to nil + Set the variable 'insert-default-directory' to nil to turn off this feature. ** M-x shell now uses the environment variable ESHELL, @@ -2095,83 +2099,82 @@ It's Beat CCA Week. ** 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 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 - (process-mark PROCESS) - and then either examine its position with marker-position - or set its position with set-marker. + 'process-mark' 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. - eql is now a synonym for eq; it turns out that the Common Lisp +** '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. + '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 - function make-auto-save-file-name. This is so you can + 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/" - Also, expand-file-name no longer substitutes $ constructs. - A new function substitute-in-file-name does this. Reading - a file name with read-file-name or the `f' or`F' option - of interactive calling uses substitute-in-file-name - on the file name that was read and returns the result. +Also, expand-file-name no longer substitutes $ constructs. +A new function 'substitute-in-file-name' does this. Reading +a file name with 'read-file-name' or the 'f' or'F' option +of 'interactive' calling uses substitute-in-file-name +on the file name that was read and returns the result. - All I/O primitives including insert-file-contents and - delete-file call expand-file-name on the file name supplied. - This change makes them considerably faster in the usual case. +All I/O primitives including 'insert-file-contents' and +'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' - 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 - current visited file name. +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 +current visited file name. * Changes in Emacs 1.5 -** 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. +** '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. A library called ledit exists which uses this feature 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 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 + 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. @@ -2180,9 +2183,9 @@ It's Beat CCA Week. * Changes in Emacs 1.4 ** Auto-filling now normally indents the new line it creates - by calling indent-according-to-mode. This function, meanwhile, + 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. + have an indentation of the value of 'left-margin', a per-buffer variable. Tab no longer precisely does indent-according-to-mode; it does that in all modes that supply their own indentation routine, @@ -2215,33 +2218,33 @@ It's Beat CCA Week. an integer. ** The Lisp function 'function' now exists. function is the - same as quote, except that it serves as a signal to 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. - undefine-key and local-undefine-key has been renamed to - global-unset-key and local-unset-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 - while waiting in the functions sleep-for and sit-for. + while waiting in the functions 'sleep-for' and 'sit-for'. ** 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. The prompt is recognized by searching for the value of - shell-prompt-pattern, starting from the beginning of the line. + 'shell-prompt-pattern', starting from the beginning of the line. Anything thus skipped is not reexecuted. * 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 + such as 'query-replace' divide their changes into multiple batches. You can repeat C-x u to undo further. As long as no commands other than C-x u intervene, each one undoes another batch. A numeric argument to C-x u acts as a repeat @@ -2283,12 +2286,12 @@ It's Beat CCA Week. 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. 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. + Likewise, local-install-command has been renamed to 'local-set-key'. @@ -2296,11 +2299,11 @@ It's Beat CCA Week. ** 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. + occurs, set the variable 'debug-on-error' non-nil. To cause the debugger to be entered whenever function foo - is called, do (debug-on-entry 'foo). To cancel this, - do (cancel-debug-on-entry 'foo). debug-on-entry does + is called, use 'debug-on-entry'. To cancel this, + use 'cancel-debug-on-entry'. debug-on-entry does not work for primitives (written in C), only functions written in Lisp. Most standard Emacs commands are in Lisp. @@ -2311,31 +2314,31 @@ It's Beat CCA Week. by the argument values unless arguments are still being calculated. At the beginning of the buffer is a description of why the debugger was entered: function entry, function exit, - error, or simply that the user called the function `debug'. + error, or simply that the user called the function 'debug'. - To exit the debugger and return to top level, type `q'. + To exit the debugger and return to top level, type 'q'. In the debugger, you can evaluate Lisp expressions by - typing `e'. This is equivalent to `M-ESC'. + typing 'e'. This is equivalent to 'M-ESC'. When the debugger is entered due to an error, that is all you can do. When it is entered due to function entry (such as, requested by debug-on-entry), you have two options: Continue execution and reenter debugger after the - completion of the function being entered. Type `c'. + completion of the function being entered. Type 'c'. Continue execution but enter the debugger before - the next subexpression. Type `d'. + the next subexpression. Type 'd'. You will see that some stack frames are marked with *. This means the debugger will be entered when those frames exit. You will see the value being returned in the first line of the backtrace buffer. Your options: - Continue execution, and return that value. Type `c'. - Continue execution, and return a specified value. Type `r'. + Continue execution, and return that value. Type 'c'. + Continue execution, and return a specified value. Type 'r'. You can mark a frame to enter the debugger on exit - with the `b' command, or clear such a mark with `u'. + with the 'b' command, or clear such a mark with 'u'. ** Lisp macros now exist. For example, you can write @@ -2373,7 +2376,7 @@ It's Beat CCA Week. ** 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 major mode. What it prints is the documentation of the @@ -2429,12 +2432,12 @@ It's Beat CCA Week. 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 +2445,7 @@ It's Beat CCA Week. 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 @@ -2464,13 +2467,13 @@ It's Beat CCA Week. contains text put there for some other reason, it is cleared first. - t is now the top-level value of standard-output. + t is now the top-level value of 'standard-output'. t as an input stream now means "read via the minibuffer". The minibuffer is used to read a line of input, with editing, - and this line is then parsed. Any excess not used by `read' - is ignored; each `read' from t reads fresh input. - t is now the top-level value of standard-input. + and this line is then parsed. Any excess not used by 'read' + 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. The effect is to grab input from where the marker points, @@ -2482,29 +2485,32 @@ It's Beat CCA Week. 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) - 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. +*** New function 'pos-visible-in-window-p' - If display in WINDOW is not currently up to date, this function - calculates carefully whether POS would appear if display were - done immediately based on the current (window-start WINDOW). + (pos-visible-in-window-p POS WINDOW) - POS defaults to (dot), and WINDOW to (selected-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. + +If display in WINDOW is not currently up to date, this function +calculates carefully whether POS would appear if display were +done immediately based on the current 'window-start'. + +POS defaults to (dot), and WINDOW to (selected-window). *** 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. +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, - prevents load from printing a message when it starts and when - it is done. +*** '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. diff --git a/etc/NEWS.18 b/etc/NEWS.18 index 78d63e5db71..a90d0bd0ea6 100644 --- a/etc/NEWS.18 +++ b/etc/NEWS.18 @@ -29,18 +29,18 @@ 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 hyphen is stripped, and so on until all hyphens are gone. For -example, if the terminal type is `aaa-48-foo', Emacs will try first +example, if the terminal type is 'aaa-48-foo', Emacs will try first `term/aaa-48-foo.el', then `term/aaa-48.el' and finally `term/aaa.el'. Underscores now receive the same treatment as hyphens. -** Texinfo features: @defun, etc. texinfo-show-structure. -New template commands. texinfo-format-region. +** 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. @@ -50,21 +50,21 @@ are completely accurate. ** New hooks. -*** `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, +*** '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. See the source code of each library for more information. @@ -100,20 +100,20 @@ comes from a directory of files created by you. ** 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 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 -job-wide logical names. The old function `define-dcl-symbol' has been +*** VMS: the new function 'define-logical-name' allows you to create +job-wide logical names. The old function 'define-dcl-symbol' has been removed. @@ -134,8 +134,8 @@ code is displayed in another window with an arrow added to the line where the program is executing. Special GDB-mode commands include M-s, M-n, M-i, M-u, M-d, and C-c C-f -which send the GDB commands `step', `next', `stepi', `up', `down' -and `finish'. +which send the GDB commands 'step', 'next', 'stepi', 'up', 'down' +and 'finish'. In any source file, the commands C-x SPC tells GDB to set a breakpoint on the current line. @@ -146,28 +146,28 @@ on the current line. 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. -If you set the variable `overlay-arrow-string' to a string -and `overlay-arrow-position' to a marker, that string is displayed on +If you set the variable 'overlay-arrow-string' to a string +and 'overlay-arrow-position' to a marker, that string is displayed on 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. -It now works to use `read-char' to do terminal input in a noninteractive +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 @@ -177,7 +177,7 @@ values on many systems. * 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. @@ -195,7 +195,7 @@ 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, @@ -203,13 +203,13 @@ has the syntax of an ordinary punctuation character. As a result, ** Mail-mode automatic Reply-To field. -If the variable `mail-default-reply-to' is non-`nil', then each time +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 -its contents taken from the value of `mail-default-reply-to'. +its contents taken from the value of 'mail-default-reply-to'. ** Where is your .emacs file? -If you run Emacs under `su', so your real and effective uids are +If you run Emacs under 'su', so your real and effective uids are different, Emacs uses the home directory associated with the real uid (the name you actually logged in under) to find the .emacs file. @@ -228,7 +228,7 @@ case. You can use either upper or lower case indiscriminately. ** VMS-only function 'define-dcl-symbol'. This is a new name for the function formerly called -`define-logical-name'. +'define-logical-name'. @@ -288,26 +288,26 @@ normally print such a message. *** Cursor appears in last line during y-or-n questions. -Questions that want a `y' or `n' answer now move the cursor +Questions that want a 'y' or 'n' answer now move the cursor to the last line, following the question. ** 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. +'load' now considers all possible suffixes (`.elc', `.el' and none) +for each directory in 'load-path' before going on to the next directory. It now accepts an optional fourth argument which, if non-nil, says to use no suffixes; then the file name must be given in full. The search -of the directories in `load-path' goes on as usual in this case, but +of the directories in 'load-path' goes on as usual in this case, but it too can be prevented by passing an absolute file name. -The value of `load-path' no longer by default includes nil (meaning to -look in the current default directory). The idea is that `load' should +The value of 'load-path' no longer by default includes nil (meaning to +look in the current default directory). The idea is that 'load' should be used to search the path only for libraries to be found in the standard places. If you want to override system libraries with your own, place your own libraries in one special directory and add that directory to the -front of `load-path'. +front of 'load-path'. -The function `load' is no longer a command; that is to say, `M-x load' +The function 'load' is no longer a command; that is to say, `M-x load' is no longer allowed. Instead, there are two commands for loading files. `M-x load-library' is equivalent to the old meaning of `M-x load'. `M-x load-file' reads a file name with completion and defaulting @@ -315,11 +315,11 @@ and then loads exactly that file, with no searching and no suffixes. ** 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. +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,18 +327,18 @@ 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'. +'set-gnu-bindings'. ** 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. +See the function 'terminal-emulator' for more information. ** New support for keypads and function keys. @@ -366,7 +366,7 @@ assigned to the standard key-names. One other change in terminal-specific files: if the value of the TERM variable contains a hyphen, only the part before the first hyphen is 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 +terminal type 'aaa-48', the file loaded is now `term/aaa.el' rather than `term/aaa-48.el'. ** New startup command line options. @@ -375,53 +375,54 @@ than `term/aaa-48.el'. insert the contents of FILE into the current buffer at that point in command line processing. This is like using the command M-x insert-file. -`-funcall', `-load', `-user' and `-no-init-file' are new synonyms for -`-f', `-l', `-u' and `-q'. +'-funcall', '-load', '-user' and '-no-init-file' are new synonyms for +'-f', '-l', '-u' and '-q'. -`-nw' means don't use a window system. If you are using a terminal +'-nw' means don't use a window system. If you are using a terminal 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. -Various M-x commands whose names start with `sort-' sort parts of +Various M-x commands whose names start with 'sort-' sort parts of the region: -sort-lines divides the region into lines and sorts them alphabetically. -sort-pages divides into pages and sorts them alphabetically. -sort-paragraphs divides into paragraphs and sorts them alphabetically. -sort-fields divides into lines and sorts them alphabetically +'sort-lines' divides the region into lines and sorts them alphabetically. +'sort-pages' divides into pages and sorts them alphabetically. +'sort-paragraphs' + divides into paragraphs and sorts them alphabetically. +'sort-fields' divides into lines and sorts them alphabetically according to one field in the line. The numeric argument specifies which field (counting from field 1 at the beginning of the line). Fields in a line are separated by whitespace. -sort-numeric-fields +'sort-numeric-fields' is similar but converts the specified fields to numbers and sorts them numerically. -sort-columns divides into lines and sorts them according to the contents +'sort-columns' divides into lines and sorts them according to the contents of a specified range of columns. Refer to the self-documentation of these commands for full usage information. ** 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', +listed. Select the `*Occur*' buffer that contains the output of 'occur', move point to the occurrence you want, and type C-c C-c. This will move point to the same occurrence in the buffer that the occurrences were found in. -The command `occur-menu' is thus obsolete, and has been deleted. +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'. +copy the text to another buffer and use the command 'keep-lines'. *** Incremental search changes. @@ -441,20 +442,20 @@ incremental regexp search with C-M-s C-r. If you add a `*', `?' or `\|' to an incremental search regexp, point will back up if that is appropriate. For example, if -you have searched for `ab' and add a `*', point moves to the -first match for `ab*', which may be before the match for `ab' +you have searched for 'ab' and add a `*', point moves to the +first match for `ab*', which may be before the match for 'ab' that was previously found. If an incremental search is failing and you ask to repeat it, it will start again from the beginning of the buffer (or the end, if it is a backward search). -The search-controlling parameters `isearch-slow-speed' and -`isearch-slow-window-lines' have now been renamed to start with -`search' instead of `isearch'. Now all the parameters' names start -with `search'. +The search-controlling parameters 'isearch-slow-speed' and +'isearch-slow-window-lines' have now been renamed to start with +'search' instead of 'isearch'. Now all the parameters' names start +with 'search'. -If `search-slow-window-lines' is negative, the slow search window +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. @@ -490,9 +491,9 @@ by searching the buffer for words that start with the abbreviation. *** Changes in saving kbd macros. -The commands `write-kbd-macro' and `append-kbd-macro' have been +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 -`insert-kbd-macro', which inserts Lisp code to define the macro as +'insert-kbd-macro', which inserts Lisp code to define the macro as it is currently defined into the buffer before point. Visit a Lisp file such as your Emacs init file `~/.emacs', insert the macro definition (perhaps deleting an old definition for the same macro) @@ -507,14 +508,14 @@ an abbrev, even if abbrev-mode is not turned on. 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 -file and actually sending only a `load'-form to load the file. +file and actually sending only a 'load'-form to load the file. As a result, it avoids the Unix bugs that used to strike when the text was above a certain length. With a prefix argument, this command now makes the inferior Lisp buffer appear on the screen and scrolls it so that the bottom is showing. -Two variables `inferior-lisp-load-command' and `inferior-lisp-prompt', +Two variables 'inferior-lisp-load-command' and 'inferior-lisp-prompt', exist to customize these feature for different Lisp implementations. *** C-x p now disabled. @@ -552,7 +553,7 @@ When you change the visited file name of a buffer, the auto save file is now renamed to belong to the new visited file name. 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', +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. @@ -566,7 +567,7 @@ If it has, you are asked to confirm that you want to change the buffer. 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, +which has a non-nil local value of 'buffer-offer-save'. By default, Mail mode provides such a local value. *** Backup file changes. @@ -592,9 +593,9 @@ 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 +'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. @@ -608,11 +609,11 @@ afterward. The old definition did one additional thing: it reindented the line before the new newline. This has been removed because it made the command twice as slow. The only time it was really useful was after the -insertion of an `else', since the fact of starting with `else' may change +insertion of an 'else', since the fact of starting with 'else' may change the way that line is indented. Now you will have to type TAB again -yourself to reindent the `else' properly. +yourself to reindent the 'else' properly. -If the variable `c-tab-always-indent' is set to `nil', the TAB command +If the variable 'c-tab-always-indent' is set to 'nil', the TAB command in C mode, with no argument, will just insert a tab character if there is non-whitespace preceding point on the current line. Giving it a prefix argument will force reindentation of the line (as well as @@ -622,7 +623,7 @@ of the compound statement that begins after point, if any). 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'. +or the on-line documentation of the command 'fortran-mode'. *** Scribe mode now exists. @@ -641,7 +642,7 @@ Most of them are the same as in Shell mode. *** Picture mode changes. -The special picture-mode commands to specify the direction of cursor +The special 'picture-mode' commands to specify the direction of cursor motion after insertion have been moved to C-c keys. The commands to specify diagonal motion were already C-c keys; they are unchanged. The keys to specify horizontal or vertical motion are now @@ -659,7 +660,7 @@ 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 TeX. M-x tex-mode attempts to examine the contents of the buffer and choose between latex-mode and plain-tex-mode accordingly; if the -buffer is empty or it cannot tell, the variable `TeX-default-mode' +buffer is empty or it cannot tell, the variable 'TeX-default-mode' controls the choice. Its value should be the symbol for the mode to be used. @@ -693,7 +694,7 @@ C-c C-f Move to next visible heading at the same level. C-c C-b Move to previous visible heading at the same level. C-c C-u Move up to previous visible heading at a higher level. -The variable `outline-regexp' now controls recognition of heading lines. +The variable 'outline-regexp' now controls recognition of heading lines. Any line whose beginning matches this regexp is a heading line. The depth in outline structure is determined by the length of the string that matches. @@ -729,7 +730,7 @@ Thus, C-c LETTER is always unassigned. *** Rmail C-r command changed to w. -The Rmail command to edit the current message is now `w'. This change +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. @@ -742,7 +743,7 @@ 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 @@ -785,7 +786,7 @@ either you are using a window system and give Emacs a separate window or you run the other programs as inferiors of Emacs (such as, using M-x shell). -First prepare the existing Emacs process by loading the `server' +First prepare the existing Emacs process by loading the 'server' library and executing M-x server-start. (Your .emacs can do this automatically.) @@ -820,24 +821,24 @@ 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 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. +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 +It used to be the case that the file 'default-profile' was loaded if and only if `.emacs' was not found. -Now the name `default-profile' is not used at all. Instead, a library -named `default' is loaded after the `.emacs' file. `default' is loaded -whether the `.emacs' file exists or not. However, loading of `default' -can be prevented if the `.emacs' file sets `inhibit-default-init' to non-nil. +Now the name 'default-profile' is not used at all. Instead, a library +named 'default' is loaded after the `.emacs' file. 'default' is loaded +whether the `.emacs' file exists or not. However, loading of 'default' +can be prevented if the `.emacs' file sets 'inhibit-default-init' to non-nil. In fact, you would call the default file `default.el' and probably would -byte-compile it to speed execution. +'byte-compile' it to speed execution. -Note that for most purposes you are better off using a `site-init' library +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. +a 'site-init' library, you avoid taking up time each time Emacs is started. *** inhibit-command-line has been eliminated. @@ -845,79 +846,79 @@ 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; +'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 last, which is a list of arguments to pass. -Previously, `apply' required exactly two arguments. Its old behavior +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, if a prefix argument was specified, it uses the prefix argument value as the argument, and does not use the minibuffer at all. -This is used by the `goto-line' and `goto-char' commands. +This is used by the 'goto-line' and 'goto-char' commands. ** Semantics of variables. *** 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 +each buffer now behave exactly as if 'make-variable-buffer-local' had been done to them. -These variables are `tab-width', `ctl-arrow', `truncate-lines', -`fill-column', `left-margin', `mode-line-format', `abbrev-mode', -`overwrite-mode', `case-fold-search', `auto-fill-hook', -`selective-display', `selective-display-ellipses'. +These variables are 'tab-width', 'ctl-arrow', 'truncate-lines', +'fill-column', 'left-margin', 'mode-line-format', 'abbrev-mode', +'overwrite-mode', 'case-fold-search', 'auto-fill-hook', +'selective-display', 'selective-display-ellipses'. To be precise, each variable has a default value which shows through -in most buffers and can be accessed with `default-value' and set with -`set-default'. Setting the variable with `setq' makes the variable +in most buffers and can be accessed with 'default-value' and set with +'set-default'. Setting the variable with 'setq' makes the variable local to the current buffer. Changing the default value has retroactive effect on all buffers in which the variable is not local. -The variables `default-case-fold-search', etc., are now obsolete. +The variables 'default-case-fold-search', etc., are now obsolete. 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. -The variables `fill-prefix', `comment-column' and `indent-tabs-mode' -are now per-buffer. They work just like `fill-column', etc. +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 +'setq-default' sets the default value of a variable, and uses the +same syntax that 'setq' accepts: the variable name is not evaluated 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'. +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'. +the functionality of 'set-default' and 'default-value'. ** Changes in defaulting of major modes. -When `default-major-mode' is `nil', new buffers are supposed to +When 'default-major-mode' is 'nil', new buffers are supposed to get their major mode from the buffer that is current. However, certain major modes (such as Dired mode, Rmail mode, Rmail Summary mode, and others) are not reasonable to use in this way. -Now such modes' names have been given non-`nil' `mode-class' properties. +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 @@ -934,7 +935,7 @@ are required when previously only one argument was allowed. To get the old behavior of this function, write `(current-local-map)' as the expression for the second argument. -The incompatibility is sad, but `nil' is a legitimate value for the +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. @@ -945,9 +946,9 @@ 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'. +Use 'search-forward' or 'search-backward' in place of 'scan-buffer'. You will have to rearrange the arguments. ** X window interface improvements. @@ -959,7 +960,7 @@ for details. *** New pop-up menu facility. -The new function `x-popup-menu' pops up a menu (in a X window) +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. @@ -969,7 +970,7 @@ 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,41 +978,42 @@ 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. -(substitute-key-definition OLDDEF NEWDEF KEYMAP) looks through KEYMAP -for keys defined to run OLDDEF, and rebinds those keys to run NEWDEF -instead. + (substitute-key-definition OLDDEF NEWDEF KEYMAP) -** New function `insert-char'. +looks through KEYMAP for keys defined to run OLDDEF, and rebinds those keys to +run NEWDEF instead. + +** 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'. +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 +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' +except that if the property value is a number 'documentation-property' will take that number (or its absolute value) as a character position in the DOC file and return the string found there. @@ -1032,8 +1034,8 @@ will expand into "ESC C-x evaluates the defun containing point." regardless of the current major mode, because ESC C-x is defined to -run `eval-defun' in the keymap `emacs-lisp-mode-map'. The effect is -to show the key for `eval-defun' in Emacs Lisp mode regardless of the +run 'eval-defun' in the keymap 'emacs-lisp-mode-map'. The effect is +to show the key for 'eval-defun' in Emacs Lisp mode regardless of the current major mode. The `\<...>' construct applies to all `\[...]' constructs that follow it, @@ -1047,50 +1049,50 @@ has been used or not. ** 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. +The old hook variables 'find-file-hook', 'find-file-not-found-hook' and +'write-file-hook' have been replaced. -The replacements are `find-file-hooks', `find-file-not-found-hooks' -and `write-file-hooks'. Each holds a list of functions to be called; -by default, `nil', for no functions. The functions are called in +The replacements are 'find-file-hooks', 'find-file-not-found-hooks' +and 'write-file-hooks'. Each holds a list of functions to be called; +by default, 'nil', for no functions. The functions are called in order of appearance in the list. -In the case of `find-file-hooks', all the functions are executed. +In the case of 'find-file-hooks', all the functions are executed. -In the case of `find-file-not-found-hooks', if any of the functions -returns non-`nil', the rest of the functions are not called. +In the case of 'find-file-not-found-hooks', if any of the functions +returns non-'nil', the rest of the functions are not called. -In the case of `write-file-hooks', if any of the functions returns -non-`nil', the rest of the functions are not called, and the file is +In the case of 'write-file-hooks', if any of the functions returns +non-'nil', the rest of the functions are not called, and the file is considered to have been written already; so actual writing in the -usual way is not done. If `write-file-hooks' is local to a buffer, -it is set to its global value if `set-visited-file-name' is called +usual way is not done. If 'write-file-hooks' is local to a buffer, +it is set to its global value if 'set-visited-file-name' is called (and thus by C-x C-w as well). -`find-file-not-found-hooks' and `write-file-hooks' can be used +'find-file-not-found-hooks' and 'write-file-hooks' can be used 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. -Suspending Emacs runs the hook `suspend-hook' before suspending -and the hook `suspend-resume-hook' if the suspended Emacs is resumed. +Suspending Emacs runs the hook 'suspend-hook' before suspending +and the hook 'suspend-resume-hook' if the suspended Emacs is resumed. Running a hook is done by applying the variable's value to no arguments -if the variable has a non-`nil' value. If `suspend-hook' returns -non-`nil', then suspending is inhibited and so is running the -`suspend-resume-hook'. The non-`nil' value means that the `suspend-hook' +if the variable has a non-'nil' value. If 'suspend-hook' returns +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. -A command is disabled by giving it a non-`nil' `disabled' property. +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. -The function `open-network-stream' opens a TCP connection to +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. @@ -1100,7 +1102,7 @@ done like I/O to subprocesses. *** 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'. +that was the value of the variable 'mode-line-format'. This variable still exists, but it now allows more general values, not just strings. Lists, cons cells and symbols are also meaningful. @@ -1139,16 +1141,16 @@ used as mode elements, and what they do in the display: at most the width specified by the integer. There is always one mode element to start with, that being the value of -`mode-line-format', but if this value is a list then it leads to several +'mode-line-format', but if this value is a list then it leads to several more mode elements, which can lead to more, and so on. There is one new %-construct for mode elements that are strings: `%n' displays ` Narrow' for a buffer that is narrowed. -The default value of `mode-line-format' refers to several other variables. -These variables are `mode-name', `mode-line-buffer-identification', -`mode-line-process', `mode-line-modified', `global-mode-string' and -`minor-mode-alist'. The first four are local in every buffer in which they +The default value of 'mode-line-format' refers to several other variables. +These variables are 'mode-name', 'mode-line-buffer-identification', +'mode-line-process', 'mode-line-modified', 'global-mode-string' and +'minor-mode-alist'. The first four are local in every buffer in which they are changed from the default. mode-name Name of buffer's major mode. Local in every buffer. @@ -1156,7 +1158,7 @@ mode-name Name of buffer's major mode. Local in every buffer. mode-line-buffer-identification Normally the list ("Emacs: %17b"), it is responsible for displaying text to indicate what buffer is being shown - and what kind of editing it is doing. `Emacs' means + and what kind of editing it is doing. 'Emacs' means that a file of characters is being edited. Major modes such as Info and Dired which edit or view other kinds of data often change this value. This variables becomes @@ -1188,72 +1190,72 @@ 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 +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. -The function `current-window-configuration' returns a special type of +The function 'current-window-configuration' returns a special type of Lisp object that represents the current layout of windows: the sizes and positions of windows, which buffers appear in them, and which parts of the buffers appear on the screen. -The function `set-window-configuration' takes one argument, which must +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 -to display the temp buffer, if this variable is bound and non-`nil' +Whenever 'with-output-to-temp-buffer' has executed its body and wants +to display the temp buffer, if this variable is bound and non-'nil' then its value is called with one argument, the temp buffer. 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 +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' +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; +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 +The function 'set-minor-mode' has been eliminated. The display of minor mode names in the mode line is now controlled by the -variable `minor-mode-alist'. To specify display of a new minor +variable 'minor-mode-alist'. To specify display of a new minor 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. Binding this variable to t is useful at times when reading single -characters of input with `read-char'. +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. @@ -1262,16 +1264,16 @@ If this variable is nil, no ellipses appear. Then there is no sign 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. +'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. @@ -1295,21 +1297,21 @@ needed. ** 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 +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 changing the file's uid or gid. -The default value of this variable is `nil', because usually it is +The default value of this variable is 'nil', because usually it is useful to have the uid of a file change according to who edited it -last. I recommend that this variable be left normally `nil' and +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 +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. It renames the old file before saving. If saving is successful, the renamed file is deleted; if saving gets an error, the renamed @@ -1317,29 +1319,29 @@ 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 +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' +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, -and `nil' meaning to get an error. +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 +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,19 +1349,19 @@ 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 +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 +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. @@ -1379,9 +1381,9 @@ directory, but the name of the file that holds that directory is `du:[rms]foo.dir'. There are two new functions for converting between directory names -and file names. `directory-file-name' takes a directory name and +and file names. 'directory-file-name' takes a directory name and returns the name of the file in which that directory's data is stored. -`file-name-as-directory' takes the name of a file and returns +'file-name-as-directory' takes the name of a file and returns the corresponding directory name. These always understand Unix file name syntax; on VMS, they understand VMS syntax as well. @@ -1390,30 +1392,30 @@ 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. -The tenth element is `t' if deleting the file and creating another +The tenth element is 't' if deleting the file and creating another file of the same name would result in a change in the file's group; -`nil' if there would be no change. You can also think of this as +'nil' if there would be no change. You can also think of this as comparing the file's group with the default group for files created in 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 +'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 +created files the record format 'stmlf'. This is necessary for files that must contain lines of arbitrary length, such as compiled Emacs Lisp. @@ -1423,35 +1425,35 @@ 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'. +you must redefine 'create-file-buffer'. ** 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. @@ -1464,57 +1466,57 @@ permanently alter the selected buffer in a straightforward manner. *** 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 +When a subprocess is started with 'start-process' or 'call-process', +the value of the variable 'process-environment' is taken to specify the environment variables to give the subprocess. The value should be a list of strings, each of the form "VAR=VALUE". -`process-environment' is initialized when Emacs starts up +'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 +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 +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 +This function, given a subprocess as argument, returns 't' if that subprocess appears to be waiting for input sent from Emacs, -or `nil' otherwise. +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. +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 +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'. -It returns `t' if the call succeeds, otherwise `nil'. +login string LOGIN, and executes the system call 'netunam'. +It returns 't' if the call succeeds, otherwise 'nil'. News regarding installation: ** 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 +except the ones just before the final 'h', have been changed to 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. @@ -1533,7 +1535,7 @@ well as functions. 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 @@ -1557,7 +1559,7 @@ for more information. ** `SYSTEM_MALLOC' prevents use of GNU `malloc.c'. -SYSTEM_MALLOC, if defined, means use the system's own `malloc' routines +SYSTEM_MALLOC, if defined, means use the system's own 'malloc' routines rather than those that come with Emacs. Use this only if absolutely necessary, because if it is used you do @@ -1580,23 +1582,23 @@ These flags just say whether certain system calls are available. ** 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'. +arguments passed to 'cc' and 'ld'. -LIBS_STANDARD defines the standard C libraries. Default is `-lc'. -LIBS_DEBUG defines the extra libraries to use when debugging. Default `-lg'. +LIBS_STANDARD defines the standard C libraries. Default is '-lc'. +LIBS_DEBUG defines the extra libraries to use when debugging. Default '-lg'. LIBS_SYSTEM can be defined by the s- file to specify extra libraries. LIBS_MACHINE can be defined by the m- file to specify extra libraries. LIBS_TERMCAP defines the libraries for Termcap or Terminfo. It is defined by default in a complicated fashion but the m- or s- file can override it. -LD_SWITCH_SYSTEM can be defined by the s- file to specify extra `ld' switches. - The default is `-X' on BSD systems except those few that use COFF object files. -LD_SWITCH_MACHINE can be defined by the m- file to specify extra `ld' switches. +LD_SWITCH_SYSTEM can be defined by the s- file to specify extra 'ld' switches. + The default is '-X' on BSD systems except those few that use COFF object files. +LD_SWITCH_MACHINE can be defined by the m- file to specify extra 'ld' switches. -C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. -C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. -C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. +C_DEBUG_SWITCH defines the switches to give 'cc' when debugging. Default '-g'. +C_OPTIMIZE_SWITCH defines the switches to give 'cc' to optimize. Default '-O'. +C_SWITCH_MACHINE can be defined by the m- file to specify extra 'cc' switches. diff --git a/etc/NEWS.19 b/etc/NEWS.19 index 7eb4deaeba5..d21cd8187f1 100644 --- a/etc/NEWS.19 +++ b/etc/NEWS.19 @@ -17,8 +17,8 @@ This file is about changes in Emacs versions 19. ** Bibtex mode no longer turns on Auto Fill automatically. (No major mode should do that--it is the user's choice.) -** The variable normal-auto-fill-function specifies the function to -use for auto-fill-function, if and when Auto Fill is turned on. +** The variable 'normal-auto-fill-function' specifies the function to +use for 'auto-fill-function', if and when Auto Fill is turned on. Major modes can set this locally to alter how Auto Fill works. @@ -53,7 +53,7 @@ This feature is not enabled by default; since the Alt key is also the Meta key, it is too easy and painful to activate this feature by accident. -** The command apply-macro-to-region-lines repeats the last defined +** The command 'apply-macro-to-region-lines' repeats the last defined keyboard macro once for each complete line within the current region. It does this line by line, by moving point to the beginning of that line and then executing the macro. @@ -71,13 +71,13 @@ characters. Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see below) in a flexible way. Rather than adding the appropriate function to the -hook font-lock-mode-hook, you can use the new variable font-lock-support-mode +hook font-lock-mode-hook, you can use the new variable 'font-lock-support-mode' to control which modes have Fast Lock mode or Lazy Lock mode turned on when Font Lock mode is enabled. For example, to use Fast Lock mode when Font Lock mode is turned on, put: - (setq font-lock-support-mode 'fast-lock-mode) + (setq font-lock-support-mode 'fast-lock-mode) in your ~/.emacs. @@ -93,9 +93,9 @@ Emacs has been idle for a given amount of time. To use this package, put in your ~/.emacs: - (setq font-lock-support-mode 'lazy-lock-mode) + (setq font-lock-support-mode 'lazy-lock-mode) -To control the package behavior, see the documentation for `lazy-lock-mode'. +To control the package behavior, see the documentation for 'lazy-lock-mode'. ** Changes in BibTeX mode. @@ -142,7 +142,7 @@ referred. *** An nn-like pick-and-read minor mode is available for the summary buffers. - (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) + (add-hook 'gnus-summary-mode-hook #'gnus-pick-mode) *** In binary groups you can use a special binary minor mode: @@ -150,7 +150,7 @@ buffers. *** Groups can be grouped in a folding topic hierarchy. - (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) + (add-hook 'gnus-group-mode-hook #'gnus-topic-mode) *** Gnus can re-send and bounce mail. @@ -159,7 +159,7 @@ buffers. *** Groups can now have a score, and bubbling based on entry frequency is possible. - (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) + (add-hook 'gnus-summary-exit-hook #'gnus-summary-bubble-group) *** Groups can be process-marked, and commands can be performed on groups of groups. @@ -175,7 +175,7 @@ batches, ClariNet briefs collections, and just about everything else. *** Groups can be sorted according to many criteria. - For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank) + For instance: (setq gnus-group-sort-function #'gnus-group-sort-by-rank) *** New group parameters have been introduced to set list-address and expiration times. @@ -196,17 +196,17 @@ articles with the `*' command. *** Article headers can be buttonized. - (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head) + (add-hook 'gnus-article-display-hook #'gnus-article-add-buttons-to-head) *** All mail backends support fetching articles by Message-ID. *** Duplicate mail can now be treated properly. See the -`nnmail-treat-duplicates' variable. +'nnmail-treat-duplicates' variable. *** All summary mode commands are available directly from the article buffer. -*** Frames can be part of `gnus-buffer-configuration'. +*** Frames can be part of 'gnus-buffer-configuration'. *** Mail can be re-scanned by a daemonic process. @@ -235,7 +235,7 @@ refetching. *** A clean copy of the current article is always stored in a separate buffer to allow easier treatment. -*** Gnus can suggest where to save articles. See `gnus-split-methods'. +*** Gnus can suggest where to save articles. See 'gnus-split-methods'. *** Gnus doesn't have to do as much prompting when saving. @@ -255,7 +255,7 @@ cited text to hide is now customizable. *** Boring headers can be hidden. - (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers) + (add-hook 'gnus-article-display-hook #'gnus-article-hide-boring-headers) *** Default scoring values can now be set from the menu bar. @@ -275,10 +275,10 @@ exists. ** The variable print-length applies to printing vectors and bitvectors, as well as lists. -** The new function keymap-parent returns the parent keymap +** The new function 'keymap-parent' returns the parent keymap of a given keymap. -** The new function set-keymap-parent specifies a new parent for a +** The new function 'set-keymap-parent' specifies a new parent for a given keymap. The arguments are KEYMAP and PARENT. PARENT must be a keymap or nil. @@ -357,17 +357,17 @@ This command, not previously mentioned in NEWS, toggles a mode in which the minibuffer window expands to show as many lines as the minibuffer contains. -** `title' frame parameter and resource. +** 'title' frame parameter and resource. -The `title' X resource now specifies just the frame title, nothing else. +The 'title' X resource now specifies just the frame title, nothing else. It does not affect the name used for looking up other X resources. -It works by setting the new `title' frame parameter, which likewise +It works by setting the new 'title' frame parameter, which likewise affects just the displayed title of the frame. -The `name' parameter continues to do what it used to do: +The 'name' parameter continues to do what it used to do: it specifies the frame name for looking up X resources, and also serves as the default for the displayed title -when the `title' parameter is unspecified or nil. +when the 'title' parameter is unspecified or nil. ** Emacs now uses the X toolkit by default, if you have a new enough version of X installed (X11R5 or newer). @@ -406,7 +406,7 @@ Emacs or the operating system crashes, the file remains for M-x recover-session. You can turn off the writing of these files by setting -auto-save-list-file-name to nil. If you do this, M-x recover-session +'auto-save-list-file-name' to nil. If you do this, M-x recover-session will not work. Some previous Emacs versions failed to delete these files even on @@ -417,13 +417,13 @@ now that the bug is fixed. ** Changes to Version Control (VC) -There is a new variable, vc-follow-symlinks. It indicates what to do +There is a new variable, 'vc-follow-symlinks'. It indicates what to do when you visit a link to a file that is under version control. Editing the file through the link bypasses the version control system, which is dangerous and probably not what you want. If this variable is t, VC follows the link and visits the real file, -telling you about it in the echo area. If it is `ask' (the default), +telling you about it in the echo area. If it is 'ask' (the default), VC asks for confirmation whether it should follow the link. If nil, the link is visited and a warning displayed. @@ -449,27 +449,27 @@ Completion in fields that hold mail addresses works based on the list of local users plus your aliases. Additionally, if your site provides a mail directory or a specific host to use for any unrecognized user name, you can arrange to query that host for completion also. (See the -documentation of variables `mail-directory-process' and -`mail-directory-stream'.) +documentation of variables 'mail-directory-process' and +'mail-directory-stream'.) -** A greatly extended sgml-mode offers new features such as (to be configured) +** A greatly extended 'sgml-mode' offers new features such as (to be configured) skeletons with completing read for tags and attributes, typing named characters including optionally all 8bit characters, making tags invisible with optional alternate display text, skipping and deleting tag(pair)s. Note: since Emacs' syntax feature cannot limit the special meaning of ', " and - to inside <>, for some texts the result, especially of font locking, may be -wrong (see `sgml-specials' if you get wrong results). +wrong (see 'sgml-specials' if you get wrong results). -The derived html-mode configures this with tags and attributes more or +The derived 'html-mode' configures this with tags and attributes more or less HTML3ish. It also offers optional quick keys like C-c 1 for -headline or C-c u for unordered list (see `html-quick-keys'). Edit / +headline or C-c u for unordered list (see 'html-quick-keys'). Edit / Text Properties / Face or M-g combinations create tags as applicable. Outline minor mode is supported and level 1 font-locking tries to fontify tag contents (which only works when they fit on one line, due to a limitation in font-lock). -External viewing via browse-url can occur automatically upon saving. +External viewing via 'browse-url' can occur automatically upon saving. ** M-x imenu-add-to-menubar now adds to the menu bar for the current buffer only. If you want to put an Imenu item in the menu bar for all @@ -494,7 +494,7 @@ isn't in sorted order, so you should finish each entry with C-c C-c (bibtex-close-entry) after you have inserted or modified it. The default value of bibtex-maintain-sorted-entries is nil. -*** Function `show-all' is no longer bound to a key, since C-u C-c C-q +*** Function 'show-all' is no longer bound to a key, since C-u C-c C-q does the same job. *** Entries with quotes inside quote-delimited fields (as `author = @@ -509,13 +509,13 @@ text. Font Lock mode can be turned on globally, in buffers that support it, by the new command global-font-lock-mode. You can use the new variable -font-lock-global-modes to control which modes have Font Lock mode automagically -turned on. By default, this variable is set so that Font Lock mode is turned -on globally where the buffer mode supports it. +'font-lock-global-modes' to control which modes have Font Lock mode +automagically turned on. By default, this variable is set so that +Font Lock mode is turned on globally where the buffer mode supports it. For example, to automagically turn on Font Lock mode where supported, put: - (global-font-lock-mode t) + (global-font-lock-mode t) in your ~/.emacs. @@ -524,10 +524,10 @@ in your ~/.emacs. In Font Lock mode, editing a line automatically refontifies that line only. However, if your change alters the syntactic context for following lines, those lines remain incorrectly fontified. To refontify them, use the new -command M-g M-g (font-lock-fontify-block). +command M-g M-g ('font-lock-fontify-block'). In certain major modes, M-g M-g refontifies the entire current function. -(The variable font-lock-mark-block-function controls how to find the +(The variable 'font-lock-mark-block-function' controls how to find the current function.) In other major modes, M-g M-g refontifies 16 lines above and below point. @@ -535,7 +535,7 @@ With a prefix argument N, M-g M-g refontifies N lines above and below point. ** Follow mode -Follow mode is a new minor mode combining windows showing the same +'follow-mode' is a new minor mode combining windows showing the same buffer into one tall "virtual window". The windows are typically two side-by-side windows. Follow mode makes them scroll together as if they were a unit. To use it, go to a frame with just one window, @@ -554,7 +554,7 @@ to hs-hide-hook and hs-show-hook, to follow the convention for normal hooks. ** Simula mode now has a menu containing the most important commands. -The new command simula-indent-exp is bound to C-M-q. +The new command 'simula-indent-exp' is bound to C-M-q. ** etags can now handle programs written in Erlang. Files are recognized by the extensions .erl and .hrl. The tagged lines are @@ -577,23 +577,23 @@ pressing both mouse buttons. restricted functionality on MS-DOS, now work. The most important ones are: -**** Printing (both with `M-x lpr-buffer' and with `ps-print' package) +**** Printing (both with `M-x lpr-buffer' and with 'ps-print' package) now works. -**** `Ediff' works (in a single-frame mode). +**** 'Ediff' works (in a single-frame mode). **** `M-x display-time' can be used on MS-DOS (due to the new implementation of Emacs timers, see below). -**** `Dired' supports Unix-style shell wildcards. +**** 'Dired' supports Unix-style shell wildcards. -**** The `c-macro-expand' command now works as on other platforms. +**** The 'c-macro-expand' command now works as on other platforms. **** `M-x recover-session' works. **** `M-x list-colors-display' displays all the available colors. -**** The `TPU-EDT' package works. +**** The 'TPU-EDT' package works. * Lisp changes in Emacs 19.31. @@ -606,17 +606,17 @@ behavior, and invoking it with any other value deactivates it. ** Change in system-type and system-configuration values. -The value of system-type on a Linux-based GNU system is now `lignux', -not `linux'. This means that some programs which use `system-type' -need to be changed. The value of `system-configuration' will also +The value of system-type on a Linux-based GNU system is now 'lignux', +not 'linux'. This means that some programs which use 'system-type' +need to be changed. The value of 'system-configuration' will also be different. -It is generally recommended to use `system-configuration' rather -than `system-type'. +It is generally recommended to use 'system-configuration' rather +than 'system-type'. See for more about this. -** The functions shell-command and dired-call-process +** The functions 'shell-command' and 'dired-call-process' now run file name handlers for default-directory, if it has them. ** Undoing the deletion of text now restores the positions of markers @@ -626,7 +626,7 @@ that pointed into or next to the deleted text. no longer use a separate process. Therefore, they now work more reliably and can be used for shorter time delays. -The new function run-with-timer is a convenient way to set up a timer +The new function 'run-with-timer' is a convenient way to set up a timer to run a specified amount of time after the present. A call looks like this: @@ -687,13 +687,13 @@ asks the question PROMPT (just like y-or-n-p). If the user answers within SECONDS seconds, it returns the answer that the user gave. Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE. -** Minor change to `encode-time': you can now pass more than seven +** Minor change to 'encode-time': you can now pass more than seven arguments. If you do that, the first six arguments have the usual meaning, the last argument is interpreted as the time zone, and the arguments in between are ignored. -This means that it works to use the list returned by `decode-time' as -the list of arguments for `encode-time'. +This means that it works to use the list returned by 'decode-time' as +the list of arguments for 'encode-time'. ** The default value of load-path now includes the directory /usr/local/share/emacs/VERSION/site-lisp In addition to @@ -717,9 +717,9 @@ convert-standard-filename to convert the file name to a proper form for each operating system. Here is an example of use, from the file completions.el: -(defvar save-completions-file-name - (convert-standard-filename "~/.completions") - "*The filename to save completions to.") + (defvar save-completions-file-name + (convert-standard-filename "~/.completions") + "*The filename to save completions to.") This sets the variable save-completions-file-name to a value that depends on the operating system, because the definition of @@ -734,11 +734,11 @@ minibuffer if there is no prefix argument at all.) ** When a process is deleted, this no longer disconnects the process marker from its buffer position. -** The variable garbage-collection-messages now controls whether +** The variable 'garbage-collection-messages' now controls whether Emacs displays a message at the beginning and end of garbage collection. The default is nil, meaning there are no messages. -** The variable debug-ignored-errors specifies certain kinds of errors +** The variable 'debug-ignored-errors' specifies certain kinds of errors that should not enter the debugger. Its value is a list of error condition symbols and/or regular expressions. If the error has any of the condition symbols listed, or if any of the regular expressions @@ -748,27 +748,28 @@ regardless of the value of debug-on-error. This variable is initialized to match certain common but uninteresting errors that happen often during editing. -** The new function error-message-string converts an error datum +** The new function 'error-message-string' converts an error datum into its error message. The error datum is what condition-case puts into the variable, to describe the error that happened. ** Anything that changes which buffer appears in a given window now runs the window-scroll-functions for that window. -** The new function get-buffer-window-list returns a list of windows displaying -a buffer. The function is called with the buffer (a buffer object or a buffer -name) and two optional arguments specifying the minibuffer windows and frames -to search. Therefore this function takes optional args like next-window etc., -and not get-buffer-window. +** The new function 'get-buffer-window-list' returns a list of windows +displaying a buffer. The function is called with the buffer (a buffer +object or a buffer name) and two optional arguments specifying the +minibuffer windows and frames to search. +Therefore this function takes optional args like 'next-window' etc., +and not 'get-buffer-window'. -** buffer-substring now runs the hook buffer-access-fontify-functions, +** 'buffer-substring' now runs the hook 'buffer-access-fontify-functions', calling each function with two arguments--the range of the buffer -being accessed. buffer-substring-no-properties does not call them. +being accessed. 'buffer-substring-no-properties' does not call them. If you use this feature, you should set the variable -buffer-access-fontified-property to a non-nil symbol, which is a +'buffer-access-fontified-property' to a non-nil symbol, which is a property name. Then, if all the characters in the buffer range have a -non-nil value for that property, the buffer-access-fontify-functions +non-nil value for that property, the 'buffer-access-fontify-functions' are not called. When called, these functions should put a non-nil property on the text that they fontify, so that they won't get called over and over for the same text. @@ -776,7 +777,7 @@ over and over for the same text. ** Changes in lisp-mnt.el *** The lisp-mnt package can now recognize file headers that are written -in the formats used by the `what' command and the RCS `ident' command: +in the formats used by the 'what' command and the RCS 'ident' command: ;; @(#) HEADER: text ;; $HEADER: text $ @@ -813,12 +814,13 @@ when narrowing is in effect. ** If you type a M-x command that has an equivalent key binding, the equivalent is shown in the minibuffer before the command executes. This feature is enabled by default for the sake of beginning users. -You can turn the feature off by setting suggest-key-bindings to nil. +You can turn the feature off by setting 'suggest-key-bindings' to nil. ** The menu bar is now visible on text-only terminals. To choose a command from the menu bar when you have no mouse, type M-` -(Meta-Backquote) or F10. To turn off menu bar display, -do (menu-bar-mode -1). +(Meta-Backquote) or F10. To turn off menu bar display, do: + + (menu-bar-mode -1). ** Whenever you invoke a minibuffer, it appears in the minibuffer window that the current frame uses. @@ -848,7 +850,7 @@ Use M-x xterm-mouse-mode to let emacs take control over the mouse. *** C-mouse-1 now once again provides a menu of buffers to select. S-mouse-1 is now the way to select a default font for the frame. -*** There is a new mouse-scroll-min-lines variable to control the +*** There is a new 'mouse-scroll-min-lines' variable to control the minimum number of lines scrolled by dragging the mouse outside a window's edge. @@ -869,11 +871,11 @@ you have already seen. ** Filling changes. -*** If the variable colon-double-space is non-nil, the explicit fill +*** If the variable 'colon-double-space' is non-nil, the explicit fill commands put two spaces after a colon. *** Auto-Fill mode now supports Adaptive Fill mode just as the -explicit fill commands do. The variable adaptive-fill-regexp +explicit fill commands do. The variable 'adaptive-fill-regexp' specifies a regular expression to match text at the beginning of a line that should be the fill prefix. @@ -885,14 +887,14 @@ paragraph because they are indented. This indentation shouldn't be copied to additional lines. Whether indented lines are paragraph lines depends on the value of the -variable paragraph-start. Some major modes set this; you can set it +variable 'paragraph-start'. Some major modes set this; you can set it by hand or in mode hooks as well. For editing text in which paragraph first lines are not indented, and which contains paragraphs in which all lines are indented, you should use Indented Text mode or arrange for paragraph-start not to match these lines. *** You can specify more complex ways of choosing a fill prefix -automatically by setting `adaptive-fill-function'. This function +automatically by setting 'adaptive-fill-function'. This function is called with point after the left margin of a line, and it should return the appropriate fill prefix based on that line. If it returns nil, that means it sees no fill prefix in that line. @@ -910,7 +912,7 @@ fail, though. functions have changed names. **** The summary mode gnus-uu commands have been moved from the `C-c -C-v' keymap to the `X' keymap. +C-v' keymap to the 'X' keymap. **** There can now be several summary buffers active at once. Variables that are relevant to each summary buffer are buffer-local to @@ -920,7 +922,7 @@ that buffer. highlighting based not only on what's visible in the buffer, but on other data structures. -**** Old packages like `expire-kill' will no longer work. +**** Old packages like 'expire-kill' will no longer work. **** `C-c C-l' in the group buffer no longer switches to a different buffer, but instead lists killed groups in the group buffer. @@ -987,8 +989,8 @@ to the servers. *** General changes (all backends). VC directory listings (C-x v d) are now kept up to date when you do a -vc-next-action (C-x v v) on the marked files. The `g' command updates -the buffer properly. `=' in a VC dired buffer produces a version +vc-next-action (C-x v v) on the marked files. The 'g' command updates +the buffer properly. '=' in a VC dired buffer produces a version control diff, not an ordinary diff. *** CVS changes. @@ -1033,14 +1035,14 @@ locking for a file, use the "rcs -U" command. If you share RCS subdirs with other users (through symbolic links), and you always want to work on the latest version, set -vc-consult-headers to nil and vc-mistrust-permissions to `t'. +vc-consult-headers to nil and vc-mistrust-permissions to 't'. Then you see the state of the *latest* version on the mode line, not that of your working file. When you do a check out, VC overwrites your working file with the latest version from the master. *** RCS customization. -There is a new variable vc-consult-headers. If it is t (the default), +There is a new variable 'vc-consult-headers'. If it is t (the default), VC searches for RCS headers in working files (like `$Id$') and determines the state of the file from them, not from the master file. This is fast and more reliable when you use branches. (The variable @@ -1065,7 +1067,7 @@ Here are the commands for converting to and from these calendars: Calendar mode now has commands to produce fancy printed calendars via LaTeX. You can ask for a calendar for one or more days, weeks, months -or years. The commands all start with `t'; see the manual for a list +or years. The commands all start with 't'; see the manual for a list of them. *** New sexp diary entry type @@ -1094,12 +1096,12 @@ you can do to turn the mode on. -** The new pc-select package emulates the key bindings for cutting and +** The new 'pc-select' package emulates the key bindings for cutting and pasting, and selection of regions, found in Windows, Motif, and the Macintosh. -** Help buffers now use a special major mode, Help mode. This mode -normally turns on View mode; it also provides a hook, help-mode-hook, +** Help buffers now use a special major mode, 'help-mode'. This mode +normally turns on View mode; it also provides a hook, 'help-mode-hook', which you can use for other customization. ** Apropos now uses faces for enhanced legibility. It now describes @@ -1114,7 +1116,7 @@ function definition, variable, or property. For example, to automatically turn on Font Lock mode in the *Help* buffer, put: - (add-hook 'help-mode-hook 'turn-on-font-lock) + (add-hook 'help-mode-hook #'turn-on-font-lock) in your ~/.emacs. @@ -1129,13 +1131,13 @@ before resuming with the keyword item of which it is part. For example, a typical keyword item might be: - ("\\" (0 anchor-face)) + ("\\" (0 anchor-face)) which fontifies each occurrence of the discrete word "anchor" in the value of the variable anchor-face. However, the highlighting information can be used to fontify text that is anchored to the word "anchor". For example: - ("\\" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face))) + ("\\" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face))) which fontifies each occurrence of "anchor" as above, but for each occurrence of "anchor", each occurrence of "item", in any following comma separated list, @@ -1163,7 +1165,7 @@ These variables can now specify values for individual modes, by supplying lists of mode names and values. For example, to use the above mentioned level 3 decoration for buffers in C/C++ modes, and default decoration otherwise, put: - (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3))) + (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3))) in your ~/.emacs. Maximum buffer size values for individual modes are specified in the same way with the variable font-lock-maximum-size. @@ -1171,15 +1173,16 @@ specified in the same way with the variable font-lock-maximum-size. *** Font Lock configuration The mechanism to provide default settings for Font Lock mode are the variables -font-lock-defaults and font-lock-maximum-decoration. Typically, you should +'font-lock-defaults' and 'font-lock-maximum-decoration'. Typically, you should only need to change the value of font-lock-maximum-decoration. However, to support Font Lock mode for buffers in modes that currently do not support Font Lock mode, you should set a buffer local value of font-lock-defaults for that mode, typically via its mode hook. These variables are used by Font Lock mode to set the values of the variables -font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table, -font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search. +'font-lock-keywords', 'font-lock-keywords-only', 'font-lock-syntax-table', +'font-lock-beginning-of-syntax-function' +and 'font-lock-keywords-case-fold-search'. You need not set these variables directly, and should not set them yourself since the underlining mechanism may change in future. @@ -1188,13 +1191,16 @@ since the underlining mechanism may change in future. archive files (files whose names end with .arc, .lzh, .zip, and .zoo). ** You can automatically update the years in copyright notice by -means of (add-hook 'write-file-hooks 'copyright-update). +means of + + (add-hook 'write-file-hooks #'copyright-update). + Optionally it can update the GPL version as well. ** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can be automatically provided with a magic number and be made executable by their respective modes under control of various user variables. -The mode must call (executable-set-magic "perl") or +The mode must call 'executable-set-magic', such as (executable-set-magic "make" "-f"). The latter for example has no effect on [Mm]akefile. @@ -1202,15 +1208,15 @@ effect on [Mm]akefile. command C-c ! executes the region, and optionally beginning of script as well, by passing them to the shell. -Cases such as `sh' being a `bash' are now accounted for. +Cases such as 'sh' being a 'bash' are now accounted for. Fontification now also does variables, the magic number and all -builtin commands. Shell script mode no longer mingles `tab-width' and -indentation style. The variable `sh-tab-width' has been renamed to -`sh-indentation'. Empty lines are now indented like previous +builtin commands. Shell script mode no longer mingles 'tab-width' and +indentation style. The variable 'sh-tab-width' has been renamed to +'sh-indentation'. Empty lines are now indented like previous non-empty line, rather than just previous line. The annoying $ variable prompting has been eliminated. Instead, shell -script mode uses `comint-dynamic-completion' for commands, variables +script mode uses 'comint-dynamic-completion' for commands, variables and filenames. ** Two-column mode now automatically scrolls both buffers together, @@ -1229,7 +1235,7 @@ element < no longer exists, ' is a new element. ** The autoinsert insert facility for prefilling empty files as soon as they are found has been extended to accommodate skeletons or calling -functions. See the function auto-insert. +functions. See the function 'auto-insert'. ** TPU-edt Changes @@ -1290,7 +1296,7 @@ from the command line. ** etags has now the ability to tag Perl files. They are recognized either by the .pm and .pl suffixes or by a first line which starts with `#!' and specifies a Perl interpreter. The tagged lines are -those beginning with the `sub' keyword. +those beginning with the 'sub' keyword. New suffixes recognized are .hpp for C++; .f90 for Fortran; .bib, .ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for @@ -1322,25 +1328,25 @@ character table. It can be any of these values: keyboard-translate-table case-table -The function `char-table-subtype' returns the subtype of a char-table. +The function 'char-table-subtype' returns the subtype of a char-table. You cannot alter the subtype of an existing char-table. A char-table has an element for each character code. It also has some "extra slots". The number of extra slots depends on the subtype and their use depends on the subtype. (Each subtype symbol has a -`char-table-extra-slots' property that says how many extra slots to -make.) Use (char-table-extra-slot TABLE N) to access extra slot N and -(set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N. +'char-table-extra-slots' property that says how many extra slots to +make.) Use 'char-table-extra-slot' to access extra slots and +'set-char-table-extra-slot' to store a value in a slot. A char-table T can have a parent, which should be another char-table P. If you look for the value in T for character C, and the table T actually holds nil, P's element for character C is used instead. -The functions `char-table-parent' and `set-char-table-parent' +The functions 'char-table-parent' and 'set-char-table-parent' let you read or set the parent of a char-table. To scan all the values in a char-table, do not try to loop through all possible character codes. That would work for now, but will not work -in the future. Instead, call map-char-table. (map-char-table +in the future. Instead, call 'map-char-table'. (map-char-table FUNCTION TABLE) calls FUNCTION once for each character or character set that has a distinct value in TABLE. FUNCTION gets two arguments, RANGE and VALUE. RANGE specifies a range of TABLE that has one @@ -1349,23 +1355,23 @@ uniform value, and VALUE is the value in TABLE for that range. Currently, RANGE is always a vector containing a single character and it refers to that character alone. In the future, other kinds of ranges will occur. You can set the value for a given range -with (set-char-table-range TABLE RANGE VALUE) and examine the value -for a range with (char-table-range TABLE RANGE). +with 'set-char-table-range' and examine the value +for a range with 'char-table-range'. *** Syntax tables are now represented as char-tables. All syntax tables other than the standard syntax table normally have the standard syntax table as their parent. -Their subtype is `syntax-table'. +Their subtype is 'syntax-table'. *** Display tables are now represented as char-tables. -Their subtype is `display-table'. +Their subtype is 'display-table'. *** Case tables are now represented as char-tables. -Their subtype is `case-table'. +Their subtype is 'case-table'. *** The value of keyboard-translate-table may now be a char-table instead of a string. Normally the char-tables used for this purpose -have the subtype `keyboard-translate-table', but that is not required. +have the subtype 'keyboard-translate-table', but that is not required. *** A new data type called a bool-vector is a vector of values that are either t or nil. To create one, do @@ -1375,25 +1381,25 @@ that are either t or nil. To create one, do text is inserted at the place where the marker points. This is called the "insertion type" of the marker. -To set the insertion type, do (set-marker-insertion-type MARKER TYPE). +To set the insertion type, use 'set-marker-insertion-type'. If TYPE is t, it means the marker advances when text is inserted. If TYPE is nil, it means the marker does not advance. (In Emacs 19.29, markers did not advance.) -The function marker-insertion-type reports the insertion type of a -given marker. The function copy-marker takes a second argument TYPE +The function 'marker-insertion-type' reports the insertion type of a +given marker. The function 'copy-marker' takes a second argument TYPE which specifies the insertion type of the new copied marker. ** When you create an overlay, you can specify the insertion type of the beginning and of the end. To do this, you can use two new -arguments to make-overlay: front-advance and rear-advance. +arguments to 'make-overlay': front-advance and rear-advance. -** The new function overlays-in returns a list of the overlays that +** The new function 'overlays-in' returns a list of the overlays that overlap a specified range of the buffer. The returned list includes empty overlays at the beginning of this range, as well as within the range. -** The new hook window-scroll-functions is run when a window has been +** The new hook 'window-scroll-functions' is run when a window has been scrolled. The functions in this list are called just before redisplay, after the new window-start has been computed. Each function is called with two arguments--the window that has been scrolled, and its @@ -1402,7 +1408,7 @@ new window-start position. This hook is useful for on-the-fly fontification and other features that affect how the redisplayed text will look when it is displayed. -The window-end value of the window is not valid when these functions +The 'window-end' value of the window is not valid when these functions are called. The computation of window-end is byproduct of actual redisplay of the window contents, which means it has not yet happened when the hook is run. Computing window-end specially in advance for @@ -1411,21 +1417,21 @@ the sake of these functions would cause a slowdown. The hook functions can determine where the text on the window will end by calling vertical-motion starting with the window-start position. -** The new hook redisplay-end-trigger-functions is run whenever +** The new hook 'redisplay-end-trigger-functions' is run whenever redisplay in window uses text that extends past a specified end trigger position. You set the end trigger position with the function -set-window-redisplay-end-trigger. The functions are called with two +'set-window-redisplay-end-trigger'. The functions are called with two arguments: the window, and the end trigger position. Storing nil for the end trigger position turns off the feature, and the trigger value is automatically reset to nil just after the hook is run. -You can use the function window-redisplay-end-trigger to read a +You can use the function 'window-redisplay-end-trigger' to read a window's current end trigger value. -** The new function insert-file-contents-literally inserts the +** The new function 'insert-file-contents-literally' inserts the contents of a file without any character set translation or decoding. -** The new function safe-length computes the length of a list. +** The new function 'safe-length' computes the length of a list. It never gets an error--it treats any non-list like nil. If given a circular list, it returns an upper bound for the number of elements before the circularity. @@ -1436,19 +1442,19 @@ regexp that was matched, not the entire match. For example, after matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means to replace just the text that matched `\(ba*r\)'. -** The new keymap special-event-map defines bindings for certain +** The new keymap 'special-event-map' defines bindings for certain events that should be handled at a very low level--as soon as they -are read. The read-event function processes these events itself, +are read. The 'read-event' function processes these events itself, and never returns them. Events that are handled in this way do not echo, they are never grouped into key sequences, and they never appear in the value of -last-command-event or (this-command-keys). They do not discard a -numeric argument, they cannot be unread with unread-command-events, +'last-command-event' or (this-command-keys). They do not discard a +numeric argument, they cannot be unread with 'unread-command-events', they may not appear in a keyboard macro, and they are not recorded in a keyboard macro while you are defining one. -These events do, however, appear in last-input-event immediately after +These events do, however, appear in 'last-input-event' immediately after they are read, and this is the way for the event's definition to find the actual event. @@ -1460,7 +1466,7 @@ out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH arguments; for example, day 0 means the day preceding the given month. Also, the ZONE argument can now be a TZ-style string. -** command-execute and call-interactively now accept an optional third +** 'command-execute' and 'call-interactively' now accept an optional third argument KEYS. If specified and non-nil, this specifies the key sequence containing the events that were used to invoke the command. @@ -1542,7 +1548,7 @@ contain items that were formerly in the Files and Edit menus, as well as some that did not exist in the menu bar menus before. ** Emacs can now display on more than one X display at the same time. -Use the command make-frame-on-display to create a frame, specifying +Use the command 'make-frame-on-display' to create a frame, specifying which display to use. ** M-x talk-connect sets up a multi-user talk connection @@ -1559,7 +1565,7 @@ This means the maximum size of a buffer is at least 2**27-1, or 134,217,727. ** When you start Emacs, you can now specify option names in -long GNU form (starting with `--') and you can abbreviate the names. +long GNU form (starting with '--') and you can abbreviate the names. You can now specify the options in any order. The previous requirements about the order of options @@ -1574,7 +1580,7 @@ active, now leaves the mark active and does not change its position. You can make incremental search deactivate the mark once again with this expression. - (add-hook 'isearch-mode-hook 'deactivate-mark) + (add-hook 'isearch-mode-hook #'deactivate-mark) ** C-delete now deletes a word backwards. This is for compatibility with some editors in the PC world. (This key is not available on @@ -1602,7 +1608,7 @@ If you prefer the old ESC ESC binding, put in your `~/.emacs': (global-set-key "\e\e" 'eval-expression) ** The f1 function key is now equivalent to the help key. This is -done with key-translation-map; delete the binding for f1 in that map +done with 'key-translation-map'; delete the binding for f1 in that map if you want to use f1 for something else. ** Mouse-3, in the simplest case, still sets the region. But now, it @@ -1638,15 +1644,15 @@ are used. *** All fill functions now indent every line to the left-margin. If there is also a fill-prefix, that goes after the margin indentation. -*** Open-line and newline also make sure that the lines they create +*** 'open-line' and 'newline' also make sure that the lines they create are indented to the left margin. *** It also allows you to set the "justification" of the region: whether it should be centered, flush right, and so forth. The fill -functions (including auto-fill-mode) will maintain the justification +functions (including 'auto-fill-mode') will maintain the justification and indentation that you request. -*** The new function `list-colors-display' shows you what colors are +*** The new function 'list-colors-display' shows you what colors are available. This is also accessible from the C-mouse-2 menu. ** You can now save and load files including their faces and other @@ -1676,7 +1682,7 @@ middle of an ordinary key sequence. character. ** Echo area messages are now logged in the "*Messages*" buffer. The -size of this buffer is limited to message-log-max lines. +size of this buffer is limited to 'message-log-max' lines. ** RET in various special modes for read-only buffers that contain lists of items now selects the item point is on. These modes include @@ -1684,12 +1690,12 @@ Dired, Compilation buffers, Buffer-menu, Tar mode, and Occur mode. (In Info, RET follows the reference near point; in completion list buffers, RET chooses the completion around point.) -** set-background-color now updates the modeline face in a special +** 'set-background-color' now updates the modeline face in a special way. If that face was previously set up to be reverse video, the reverse of the default face, then set-background-color updates it so that it remains the reverse of the default face. -** The functions raise-frame and lower-frame are now commands. +** The functions 'raise-frame' and 'lower-frame' are now commands. When used interactively, they apply to the selected frame. ** M-x buffer-menu now displays the buffer list in the selected window. @@ -1706,16 +1712,16 @@ default value, if there is one. Normal execution of defvar does not alter the variable if it already has a non-void value. ** In completion list buffers, the left and right arrow keys run the -new commands previous-completion and next-completion. They move one +new commands 'previous-completion' and 'next-completion'. They move one completion at a time. -** While doing completion in the minibuffer, the `prior' or `pageup' +** While doing completion in the minibuffer, the 'prior' or 'pageup' key switches to the completion list window. ** When you exit the minibuffer with empty contents, the empty string is not put in the minibuffer history. -** The default buffer for insert-buffer is now the "first" buffer +** The default buffer for 'insert-buffer' is now the "first" buffer other than the current one. If you have more than one window, this is a buffer visible in another window. (Usually it is the buffer that C-M-v would scroll.) @@ -1747,8 +1753,8 @@ and scribe-underline-word is on C-c C-u. gomoku-human-plays is on C-c C-p, gomoku-human-resigns is on C-c C-r, and gomoku-emacs-plays is on C-c C-e. -*** In the Outline mode defined in allout.el, -outline-rebullet-current-heading is now on C-c *. +*** In the Outline mode defined in 'allout', +'outline-rebullet-current-heading' is now on C-c *. ** M-s in Info now searches through the nodes of the Info file, just like s. The alias M-s was added so that you can use the same @@ -1760,14 +1766,14 @@ with the sequences ~! and ~?. ** M-x compare-windows now pushes mark in both windows before it starts moving point. -** There are two new commands in Dired, A (dired-do-search) -and Q (dired-do-query-replace). These are similar to tags-search and +** There are two new commands in Dired, A ('dired-do-search') +and Q ('dired-do-query-replace'). These are similar to tags-search and tags-query-replace, but instead of searching the list of files that appears in a tags table, they search all the files marked in Dired. ** Changes to dabbrev. -A new function, `dabbrev-completion' (bound to M-C-/), expands the +A new function, 'dabbrev-completion' (bound to M-C-/), expands the unique part of an abbreviation. Dabbrev now looks for expansions in other buffers, looks for symbols @@ -1788,7 +1794,7 @@ another way. *** Bookmarks can have annotations; type "C-h m" after doing "M-x list-bookmarks", for more information on annotations. -*** The bookmark-jump popup menu function is now `bookmark-menu-jump', for +*** The 'bookmark-jump' popup menu function is now 'bookmark-menu-jump', for those who bind it to a mouse click. *** The default bookmarks file name is now "~/.emacs.bmk". If you @@ -1816,18 +1822,18 @@ command M-x cpp-highlight-buffer. variable symbols. Also ++ and -- which mean 2* positive and negative c-basic-offset respectively. -*** New variable, c-recognize-knr-p, which controls whether K&R C +*** New variable, 'c-recognize-knr-p', which controls whether K&R C constructs will be recognized. Trying to recognize K&R constructs is a time hog so if you're programming strictly in ANSI C, set this variable to nil (it should already be nil in c++-mode). -*** New variable, c-hanging-comment-ender-p for controlling +*** New variable, 'c-hanging-comment-ender-p' for controlling c-fill-paragraph's behavior. *** New syntactic symbol: statement-case-open. This is assigned to lines containing an open brace just after a case/default label. -*** New variable, c-progress-interval, which controls minibuffer update +*** New variable, 'c-progress-interval', which controls minibuffer update message displays during long re-indentation. This is a new feature which prints percentage complete messages at specified intervals. @@ -1844,7 +1850,7 @@ which prints percentage complete messages at specified intervals. ** icomplete.el now works more like a minor mode. Use M-x icomplete-mode to turn it on and off. -Icomplete now supports an `icomplete-minibuffer-setup-hook', which is +Icomplete now supports an 'icomplete-minibuffer-setup-hook', which is run on minibuffer setup whenever icompletion will be occurring. This hook can be used to customize interoperation of icomplete with other minibuffer-specific packages, eg rsz-mini. See the doc string for @@ -1852,10 +1858,10 @@ more info. ** Ediff change. -Use ediff-revision instead of vc-ediff. It also replaces rcs-ediff, +Use 'ediff-revision' instead of 'vc-ediff'. It also replaces rcs-ediff, for those who use that; if you want to use a version control package other than vc.el, you must set the variable -ediff-version-control-package to specify which package. +'ediff-version-control-package' to specify which package. ** VC now supports branches with RCS. @@ -1878,7 +1884,7 @@ branch, then the new version automatically creates a new branch. ** VC now supports CVS as well as RCS and SCCS. Since there are no locks in CVS, some things behave slightly -different when the backend is CVS. When vc-next-action is invoked +different when the backend is CVS. When 'vc-next-action' is invoked in a directory handled by CVS, it does the following: If the file is not already registered, this registers it for version @@ -1895,7 +1901,7 @@ file remains in existence. If vc-next-action changes the repository file, it asks you whether to merge in the changes into your working copy. -vc-directory, when started in a CVS file hierarchy, reports +'vc-directory', when started in a CVS file hierarchy, reports all files that are modified (and thus need to be committed). (When the backend is RCS or SCCS vc-directory reports all locked files). @@ -1908,7 +1914,7 @@ You can disable the CVS support as follows: (setq vc-master-templates (delq 'vc-find-cvs-master vc-master-templates)) -or by setting vc-handle-cvs to nil. +or by setting 'vc-handle-cvs' to nil. This may be desirable if you run a non-standard version of CVS, or if CVS was compiled with FORCE_USE_EDITOR or (possibly) @@ -1929,8 +1935,8 @@ of lines, specified by the variable comint-buffer-maximum-size. Just like the command comint-strip-ctrl-m, this can be run automatically during process output by doing this: -(add-hook 'comint-output-filter-functions - 'comint-truncate-buffer) + (add-hook 'comint-output-filter-functions + #'comint-truncate-buffer) ** Telnet mode buffer name changed. @@ -1941,32 +1947,32 @@ The buffer name for a Telnet buffer is now *telnet-HOST*, not entire man page is indented, the indentation is removed. The user option names that used to end in -p now end in -flag. The -new names are: Man-reuse-okay-flag, Man-downcase-section-letters-flag, -Man-circular-pages-flag. The Man-notify user option has been renamed to -Man-notify-method and accepts one more value, `pushy', that just +new names are: 'Man-reuse-okay-flag', 'Man-downcase-section-letters-flag', +'Man-circular-pages-flag'. The 'Man-notify' user option has been renamed to +'Man-notify-method' and accepts one more value, 'pushy', that just switches the current buffer to the manpage buffer, without switching frames nor changing your windows configuration. -A new user option Man-fontify-manpage-flag disables fontification +A new user option 'Man-fontify-manpage-flag' disables fontification (thus speeding up man) when set to nil. Default is to fontify if a -window system is used. Two new user options Man-overstrike-face -(default 'bold) and Man-underline-face (default 'underline) can be set +window system is used. Two new user options 'Man-overstrike-face' +(default 'bold) and 'Man-underline-face' (default 'underline) can be set to the preferred faces to be used for the words that man overstrikes and underlines. Useful for those who like colored man pages. -Two new interactive functions are provided: Man-cleanup-manpage and -Man-fontify-manpage. Both can be used on a buffer that contains the +Two new interactive functions are provided: 'Man-cleanup-manpage' and +'Man-fontify-manpage'. Both can be used on a buffer that contains the output of a `rsh host man manpage' command, or the output of an `nroff -man -Tman manpage' command to make them readable. Man-cleanup-manpage is faster, but does not fontify. -** The new function modify-face makes it easy to specify +** The new function 'modify-face' makes it easy to specify all the attributes of a face, all at once. ** Faces now support background stippling. -Use the command set-face-stipple to specify the stipple-pattern for a -face. Use face-stipple to access the specified stipple pattern. The +Use the command 'set-face-stipple' to specify the stipple-pattern for a +face. Use 'face-stipple' to access the specified stipple pattern. The existing face functions now handle the stipple pattern when appropriate. @@ -1978,14 +1984,14 @@ stipple instead to get the same effect. *** Fontification -Two new default faces are provided; `font-lock-variable-name-face' and -`font-lock-reference-face'. The face `font-lock-doc-string-face' has +Two new default faces are provided; 'font-lock-variable-name-face' and +'font-lock-reference-face'. The face 'font-lock-doc-string-face' has been removed since it is the same as the existing -`font-lock-string-face'. Where appropriate, fontification +'font-lock-string-face'. Where appropriate, fontification automatically uses these new faces. -Fontification via commands `font-lock-mode' and -`font-lock-fontify-buffer' is now cleanly interruptible (i.e., with +Fontification via commands 'font-lock-mode' and +'font-lock-fontify-buffer' is now cleanly interruptible (i.e., with C-g). If you interrupt during the fontification process, the buffer remains in its previous modified state and all highlighting is removed from the buffer. @@ -1994,14 +2000,14 @@ For C/C++ modes, Font Lock mode is much faster but highlights much more. Other modes are faster/more extensive/more discriminatory, or a combination of these. -To enable Font Lock mode, add the new function `turn-on-font-lock' in +To enable Font Lock mode, add the new function 'turn-on-font-lock' in one of the following ways: - (add-hook 'c-mode-hook 'turn-on-font-lock) + (add-hook 'c-mode-hook #'turn-on-font-lock) Or for any visited file with: - (add-hook 'find-file-hooks 'turn-on-font-lock) + (add-hook 'find-file-hooks #'turn-on-font-lock) *** Supports color and grayscale displays @@ -2010,26 +2016,26 @@ the type of display and background shade. Attributes (face color, bold, italic and underline, and display type and background mode) can be controlled either from Emacs Lisp or X resources. -See the new variables `font-lock-display-type' and -`font-lock-face-attributes'. +See the new variables 'font-lock-display-type' and +'font-lock-face-attributes'. *** Supports more modes The following modes are directly supported: -ada-mode, asm-mode, bibtex-mode, c++-c-mode, c++-mode, c-mode, -change-log-mode, compilation-mode, dired-mode, emacs-lisp-mode, -fortran-mode, latex-mode, lisp-mode, mail-mode, makefile-mode, -outline-mode, pascal-mode, perl-mode, plain-tex-mode, rmail-mode, -rmail-summary-mode, scheme-mode, shell-mode, slitex-mode, tex-mode, -texinfo-mode. +'ada-mode', 'asm-mode', 'bibtex-mode', 'c++-c-mode', 'c++-mode', 'c-mode', +'change-log-mode', 'compilation-mode', 'dired-mode', 'emacs-lisp-mode', +'fortran-mode', 'latex-mode', 'lisp-mode', 'mail-mode', 'makefile-mode', +'outline-mode', 'pascal-mode', 'perl-mode', 'plain-tex-mode', 'rmail-mode', +'rmail-summary-mode', 'scheme-mode', 'shell-mode', 'slitex-mode', 'tex-mode', +'texinfo-mode'. -See the new variables `font-lock-defaults-alist' and -`font-lock-defaults'. +See the new variables 'font-lock-defaults-alist' and +'font-lock-defaults'. Some modes support different levels of fontification. You can choose to use the minimum or maximum available decoration by changing the -value of the new variable `font-lock-maximum-decoration'. +value of the new variable 'font-lock-maximum-decoration'. Programmers are urged to make available to the community their own keywords for modes not yet supported. See font-lock.el for @@ -2047,18 +2053,18 @@ highlighting. To use this package, put in your `~/.emacs': - (add-hook 'font-lock-mode-hook 'turn-on-fast-lock) + (add-hook 'font-lock-mode-hook #'turn-on-fast-lock) -To control the use of caches, see the documentation for `fast-lock-mode'. +To control the use of caches, see the documentation for 'fast-lock-mode'. -** You can tell pop-to-buffer to display certain buffers in the selected +** You can tell 'pop-to-buffer' to display certain buffers in the selected window rather than finding some other window to display them in. There are two variables you can use to specify these buffers. -same-window-buffer-names holds a list of buffer names; if a buffer's +'same-window-buffer-names' holds a list of buffer names; if a buffer's name appears in this list, pop-to-buffer puts it in the selected window. -same-window-regexps holds a list of regexps--if any one of them +'same-window-regexps' holds a list of regexps--if any one of them matches a buffer's name, then pop-to-buffer puts that buffer in the selected window. @@ -2068,7 +2074,7 @@ window. These include shell buffers, mail buffers, telnet buffers, and others. By removing elements from these variables, you can ask Emacs to display those buffers in separate windows. -** The special-display-buffer-names and special-display-regexps lists +** The 'special-display-buffer-names' and 'special-display-regexps' lists have been generalized. An element may now be a list. The car of the list is the buffer name or regular expression for matching buffer names. @@ -2084,17 +2090,17 @@ FUNCTION; its first argument is the buffer, and its remaining arguments are ARGS. ** If the environment variable REPLYTO is set, its value is the default -for mail-default-reply-to. +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 before writing it. Thus, the file never contains anything but Rmail format messages. -** The new variable mail-from-style controls whether the From: header +** The new variable 'mail-from-style' controls whether the From: header should include the sender's full name, and if so, which format to use. -** The new variable mail-personal-alias-file specifies the name of the +** The new variable 'mail-personal-alias-file' specifies the name of the user's personal aliases. This defaults to the file ~/.mailrc. mailabbrev.el used to have its own variable for this purpose (mail-abbrev-mailrc-file). That variable is no longer used. @@ -2111,33 +2117,33 @@ crossreference entries are object to completion. *** Braces are supported as field delimiters in addition to quotes. BibTeX entries may have brace-delimited and quote-delimited fields intermixed. The delimiters generated for new entries are specified by -the variables bibtex-field-left-delimiter and -bibtex-field-right-delimiter on a buffer-local basis. Those variables +the variables 'bibtex-field-left-delimiter' and +'bibtex-field-right-delimiter' on a buffer-local basis. Those variables default to braces, since it is easier to put quote accented characters (as the german umlauts) into a brace-delimited entry. -*** The function bibtex-clean-entry can now be invoked with a prefix +*** The function 'bibtex-clean-entry' can now be invoked with a prefix argument. In this case, a label is automatically generated from various fields in the record. If bibtex-clean-entry is invoked on a record without label, a label is also generated automatically. -Various variables (all beginning with `bibtex-autokey-') control the -creation of that key. The variable bibtex-autokey-edit-before-use +Various variables (all beginning with 'bibtex-autokey-') control the +creation of that key. The variable 'bibtex-autokey-edit-before-use' determines, if the user is allowed to edit auto-generated reference keys before they are used. -*** A New function bibtex-complete-string completes strings with +*** A New function 'bibtex-complete-string' completes strings with respect to the strings defined in this buffer and a set of predefined strings (initialized to the string macros defined in the standard BibTeX style files) in the same way in which ispell-complete-word works with respect to words in a dictionary. Candidates for bibtex-complete-string are initialized from variable -bibtex-predefined-strings and by parsing the files found in -bibtex-string-files for @String definitions. +'bibtex-predefined-strings' and by parsing the files found in +'bibtex-string-files' for @String definitions. *** Every reference/field pair has now attached a comment which appears in the echo area when this field is edited. These comments should provide useful hints for BibTeX usage, especially for BibTeX -beginners. New variable bibtex-help-message determines if these help +beginners. New variable 'bibtex-help-message' determines if these help messages are to appear in the minibuffer when moving to a text entry. *** Inscriptions of menu bar changed from "Entry Types" to @@ -2164,7 +2170,7 @@ didn't. *** Default value for variables bibtex-maintain-sorted-entries and bibtex-sort-ignore-string-entries is now t. -*** All interactive functions are renamed to begin with `bibtex-'. +*** All interactive functions are renamed to begin with 'bibtex-'. *** Keybindings with \C-c\C-e entry changed for unification. Often used reference types are now on control-modified keys, mediocre used @@ -2184,8 +2190,8 @@ use --with-x if you need to request X support explicitly. automatically enable X support if X is installed on your machine.) ** If you use the site-init.el file to set the variable -mail-host-address to a string in the dumped Emacs, that string becomes -the default host address for initializing user-mail-address. +'mail-host-address' to a string in the dumped Emacs, that string becomes +the default host address for initializing 'user-mail-address'. It is used instead of the value of (system-name). @@ -2202,11 +2208,11 @@ macros. Thus, you can now write `(x ,y z) instead of (` (x (, y) z)). The old syntax is still accepted. -*** The new function rassoc is like assoc, except that it compares the +*** The new function 'rassoc' is like 'assoc', except that it compares the key against the cdr of each alist element, where assoc would compare it against the car of each alist element. -*** The new function unintern deletes a symbol from an obarray. The +*** The new function 'unintern' deletes a symbol from an obarray. The first argument can be the symbol to delete, or a string giving its name. The second argument specifies the obarray (nil means the current default obarray). @@ -2215,18 +2221,18 @@ If the specified symbol is not in the obarray, or if there's no symbol in the obarray matching the specified string, unintern does nothing and returns nil. If it does delete a symbol, it returns t. -*** You can specify an alternative read function for use by load and -eval-region by binding the variable load-read-function to some other +*** You can specify an alternative read function for use by 'load' and +'eval-region' by binding the variable 'load-read-function' to some other function. This function should accept one argument just like read. If load-read-function is nil, load and eval-region use ordinary read. -*** The new function `type-of' takes any object as argument, and -returns a symbol identifying the type of that object--one of `symbol', -`integer', `float', `string', `cons', `vector', `marker', `overlay', -`window', `buffer', `subr', `compiled-function', -`window-configuration', `process'. +*** The new function 'type-of' takes any object as argument, and +returns a symbol identifying the type of that object--one of 'symbol', +'integer', 'float', 'string', 'cons', 'vector', 'marker', 'overlay', +'window', 'buffer', 'subr', 'compiled-function', +'window-configuration', 'process'. -*** When you use eval-after-load for a file that is already loaded, it +*** When you use 'eval-after-load' for a file that is already loaded, it executes the FORM right away. As before, if the file is not yet loaded, it arranges to execute FORM if and when the file is loaded later. The result is: if you have called eval-after-load for a file, @@ -2239,24 +2245,24 @@ treating them as a comment. You would not want to use this in a file you edit by hand, but it is useful for commenting out parts of machine-generated files. -*** Two new functions, `plist-get' and `plist-put', +*** Two new functions, 'plist-get' and 'plist-put', allow you to modify and retrieve values from lists formatted as property-lists. -They work like `get' and `put', but operate on any list. -`plist-put' returns the modified property-list; you must store it +They work like 'get' and 'put', but operate on any list. +'plist-put' returns the modified property-list; you must store it back where you got it. -*** The new function add-to-list is called with two elements, +*** The new function 'add-to-list' is called with two elements, a variable that holds a list and a new element. It adds the element to the list unless it is already present. -It compares elements using `equal'. Here is an example: +It compares elements using 'equal'. Here is an example: -(setq foo '(a b)) => (a b) + (setq foo '(a b)) => (a b) -(add-to-list 'foo 'c) => (c a b) + (add-to-list 'foo 'c) => (c a b) -(add-to-list 'foo 'b) => (c a b) + (add-to-list 'foo 'b) => (c a b) -foo => (c a b) + foo => (c a b) ** Changes in compilation. @@ -2281,7 +2287,7 @@ loading the compiled file does not actually bring the function definitions into core. Instead it creates references to the compiled file, and brings each function's definition into core the first time you call that function, or when you force it with the new function -`fetch-bytecode'. +'fetch-bytecode'. Using the lazy loading feature has a few consequences: @@ -2294,7 +2300,7 @@ Using the lazy loading feature has a few consequences: will get nonsense results. To enable the lazy loading feature, set up a non-nil file local -variable binding for the variable `byte-compile-dynamic' in the Lisp +variable binding for the variable 'byte-compile-dynamic' in the Lisp source file. For example, put this on the first line: -*-byte-compile-dynamic: t;-*- @@ -2304,26 +2310,26 @@ contains many functions, most of which are not actually used by a given user in a given session. To turn off the basic feature of referring to the file for doc -strings, set byte-compile-dynamic-docstrings to nil. You can do this +strings, set 'byte-compile-dynamic-docstrings' to nil. You can do this globally, or for one source file by adding this to the first line: -*-byte-compile-dynamic-docstrings: nil;-*- ** Strings -*** Do not pass integer arguments to `concat' (or `vconcat' or -`append'). We are phasing out the old unrecommended support for +*** Do not pass integer arguments to 'concat' (or 'vconcat' or +'append'). We are phasing out the old unrecommended support for integers as arguments to these functions, in preparation for treating numbers as single characters in a future release. To concatenate -numbers in string form, use `number-to-string' first, or rewrite the -call to use `format' instead of `concat'. +numbers in string form, use 'number-to-string' first, or rewrite the +call to use 'format' instead of 'concat'. -*** The new function match-string returns the string of text matched at +*** The new function 'match-string' returns the string of text matched at the given parenthesized expression by the last regexp search, or nil -if there was no match. If the last match was by `string-match' on a +if there was no match. If the last match was by 'string-match' on a string, the string must be given. Therefore, this function can be -used in place of `buffer-substring' and `substring', when using -`match-beginning' and `match-end' to find match positions. +used in place of 'buffer-substring' and 'substring', when using +'match-beginning' and 'match-end' to find match positions. (match-string N) or (match-string N STRING) @@ -2333,11 +2339,11 @@ the portion of STRING that was matched. When used in this way, replace-match returns a newly created string which is the same as STRING except for the matched portion. -*** The new function buffer-substring-no-properties -is like buffer-substring except that the string it returns +*** The new function 'buffer-substring-no-properties' +is like 'buffer-substring' except that the string it returns has no text properties. -*** The function `equal' now considers two strings to be different +*** The function 'equal' now considers two strings to be different if they don't have the same text properties. ** Completion @@ -2352,7 +2358,7 @@ are ignored unless the initial string also starts with a space. *** Local hook variables. There is now a clean way to give a hook variable a buffer-local value. -Call the function `make-local-hook' to do this. +Call the function 'make-local-hook' to do this. Once a hook variable is buffer-local, you can add hooks to it either globally or locally. run-hooks runs the local hook functions @@ -2365,12 +2371,12 @@ function or a global one. Local hooks use t as an element of the (local) value of the hook variable as a flag meaning to use the global value also. -*** The new function local-variable-p tells you whether a particular +*** The new function 'local-variable-p' tells you whether a particular variable is buffer-local in the current buffer or a specified buffer. ** Editing Facilities -*** The function copy-region-as-kill no longer sets this-command; +*** The function 'copy-region-as-kill' no longer sets this-command; as a result, a following kill command will not normally append to the text saved by copy-region-as-kill. @@ -2380,18 +2386,18 @@ instead of looking for the longest match--just as they did in Emacs 18. The reason for this change is to get higher speed. There are new functions you can use if you really want to search or -match with Posix behavior: posix-search-forward, -posix-search-backward, posix-looking-at, and posix-string-match. Call -these just like re-search-forward, re-search-backward, looking-at, and -string-match. +match with Posix behavior: 'posix-search-forward', +'posix-search-backward', 'posix-looking-at', and 'posix-string-match'. +Call these just like 're-search-forward', 're-search-backward', +'looking-at', and 'string-match'. ** Files -*** The new variable `format-alist' defines file formats, +*** The new variable 'format-alist' defines file formats, which are ways of translating between the data in a file and things (text, text-properties, and possibly other information) in a buffer. -`format-alist' has one element for each format. Each element is a +'format-alist' has one element for each format. Each element is a list like this: (NAME DOC-STRING REGEXP FROM-FN TO-FN MODIFY MODE-FN) containing the name of the format, a documentation string, a regular @@ -2405,41 +2411,41 @@ FROM-FN is called to decode files in that format; it gets two args, BEGIN longer matches REGEXP, or else it will get called again. TO-FN is called to encode a region into that format; it is also passed BEGIN and END, and either returns a list of annotations as in - `write-region-annotate-functions', or modifies the region and returns + 'write-region-annotate-functions', or modifies the region and returns the new end position. MODIFY, if non-nil, means the TO-FN modifies the region. If nil, TO-FN may not make any changes and should return a list of annotations. -`insert-file-contents' checks the beginning of the file that it is +'insert-file-contents' checks the beginning of the file that it is inserting to see if it matches one of the regexps. If so, then it calls the decoding function, and then looks for another match. When visiting a file, it also calls the mode function, and sets the -variable `buffer-file-format' to the list of formats that the file +variable 'buffer-file-format' to the list of formats that the file used. -`write-region' calls the encoding functions for each format in -`buffer-file-format' before it writes the file. To save a file in a -different format, either set `buffer-file-format' to a different -value, or call the new function `format-write-file'. +'write-region' calls the encoding functions for each format in +'buffer-file-format' before it writes the file. To save a file in a +different format, either set 'buffer-file-format' to a different +value, or call the new function 'format-write-file'. Since some encoding functions may be slow, you can request that auto-save use a format different from the buffer's default by setting -the variable `auto-save-file-format' to the desired format. This will +the variable 'auto-save-file-format' to the desired format. This will determine the format of all auto-save files. -*** The new function file-ownership-preserved-p tells you whether +*** The new function 'file-ownership-preserved-p' tells you whether deleting a file and recreating it would keep the file's owner unchanged. -*** The new function file-regular-p returns t if a file +*** The new function 'file-regular-p' returns t if a file is a "regular" file (not a directory, symlink, named pipe, terminal, or other I/O device). -*** The new function file-name-sans-extension discards the extension +*** The new function 'file-name-sans-extension' discards the extension of a file name. You call it with a file name, and returns a string lacking the extension. -*** The variable path-separator is a string which says which +*** The variable 'path-separator' is a string which says which character separates directories in a search path. It is ":" for Unix and GNU systems, ";" for MSDOG and Windows NT. @@ -2462,20 +2468,20 @@ like (ctrl meta newline) or (meta ?d), as in XEmacs. (ctrl meta newline) is equivalent to the event type symbol C-M-newline, and (meta ?d) is equivalent to the character ?\M-d. -*** The function event-convert-list converts a list such as +*** The function 'event-convert-list' converts a list such as (meta ?d) into the corresponding event type (a symbol or integer). -*** In an interactive spec, `k' means to read a key sequence. In this +*** In an interactive spec, 'k' means to read a key sequence. In this key sequence, upper case characters and shifted function keys which have no bindings are converted to lower case if that makes them defined. -The new interactive code `K' reads a key sequence similarly, but does -not convert the last event. `K' is useful for reading a key sequence +The new interactive code 'K' reads a key sequence similarly, but does +not convert the last event. 'K' is useful for reading a key sequence to be given a binding. -*** The variable overriding-local-map now has no effect on the menu bar -display unless overriding-local-map-menu-flag is non-nil. This is why +*** The variable 'overriding-local-map' now has no effect on the menu bar +display unless 'overriding-local-map-menu-flag' is non-nil. This is why incremental search no longer temporarily changes the menu bars. Note that overriding-local-map does still affect the execution of key @@ -2486,10 +2492,10 @@ looked up and executed. But this is what you'd normally do anyway: programs that use overriding-local-map normally exit and "put back" any event such as menu-bar that they do not handle specially. -*** The new variable `overriding-terminal-local-map' is like -overriding-local-map, but is specific to a single terminal. +*** The new variable 'overriding-terminal-local-map' is like +'overriding-local-map', but is specific to a single terminal. -*** delete-frame events. +*** 'delete-frame' events. When you use the X window manager's "delete window" command, this now generates a delete-frame event. The standard definition of this event @@ -2497,7 +2503,7 @@ is a command that deletes the frame that received the event, and kills Emacs when the last visible or iconified frame is deleted. You can rebind the event to some other command if you wish. -*** Two new types of events, iconify-frame and make-frame-visible, +*** Two new types of events, 'iconify-frame' and 'make-frame-visible', indicate that the user iconified or deiconified a frame with the window manager. Since the window manager has already done the work, the default definition for both event types in Emacs is to do nothing. @@ -2508,49 +2514,49 @@ the default definition for both event types in Emacs is to do nothing. words, all the screens of a single X server). The value in effect, at any given time, is the one that belongs to the terminal of the selected frame. The terminal-local variables are -default-minibuffer-frame, system-key-alist, defining-kbd-macro, and -last-kbd-macro. There is no way for Lisp programs to create others. +'default-minibuffer-frame', 'system-key-alist', 'defining-kbd-macro', and +'last-kbd-macro'. There is no way for Lisp programs to create others. The terminal-local variables cannot be buffer-local. -*** When you create an X frame, for the `top' and `left' frame +*** When you create an X frame, for the 'top' and 'left' frame parameters, you can now use values of the form (+ N) or (- N), where N is an integer. (+ N) means N pixels to the right of the left edge of the screen and (- N) means N pixels to the left of the right edge. In both cases, N may be zero (exactly at the edge) or negative (putting the window partly off the screen). -The function x-parse-geometry can return values of these forms +The function 'x-parse-geometry' can return values of these forms for certain inputs. -*** The variable menu-bar-file-menu has been renamed to -menu-bar-files-menu to match the actual item that appears in the menu. +*** The variable 'menu-bar-file-menu' has been renamed to +'menu-bar-files-menu' to match the actual item that appears in the menu. (All the other such variable names do match.) -*** The new function active-minibuffer-window returns the minibuffer window +*** The new function 'active-minibuffer-window' returns the minibuffer window currently active, or nil if none is now active. -*** In the functions next-window, previous-window, next-frame, -previous-frame, get-buffer-window, get-lru-window, get-largest-window -and delete-windows-on, if you specify 0 for the last argument, +*** In the functions 'next-window', 'previous-window', 'next-frame', +'previous-frame', 'get-buffer-window', 'get-lru-window', 'get-largest-window' +and 'delete-windows-on', if you specify 0 for the last argument, it means to consider all visible and iconified frames. -*** When you set a frame's cursor type with modify-frame-parameters, +*** When you set a frame's cursor type with 'modify-frame-parameters', you can now specify (bar . INTEGER) as the cursor type. This stands for a bar cursor of width INTEGER. -*** The new function facep returns t if its argument is a face name +*** The new function 'facep' returns t if its argument is a face name (or if it is a vector such as is used internally by the Lisp code to represent a face). *** Each frame can now have a buffer-predicate function, -which is the `buffer-predicate' frame parameter. -When `other-buffer' looks for an alternative buffer, it considers +which is the 'buffer-predicate' frame parameter. +When 'other-buffer' looks for an alternative buffer, it considers only the buffers that fit the selected frame's buffer predicate (if it has one). This is useful for applications that make their own frames. *** When you create an X frame, you can now specify the frame parameter -`display'. This says which display to put the frame on. The value +'display'. This says which display to put the frame on. The value should be a display name--a string of the form "HOST:DPYNUMBER.SCREENNUMBER". @@ -2560,11 +2566,11 @@ a display name string or a frame. A value of nil stands for the selected frame. To close the connection to an X display, use the function -x-close-connection. Specify which display with a display name. You +'x-close-connection'. Specify which display with a display name. You cannot close the connection if Emacs still has frames open on that display. -x-display-list returns a list indicating which displays Emacs has +'x-display-list' returns a list indicating which displays Emacs has connections to. Its elements are display names (strings). *** The icon-type frame parameter may now be a file name. @@ -2572,27 +2578,28 @@ Then the contents of that file specify the icon bitmap to use for that frame. *** The title of an Emacs frame, displayed by most window managers, is -set from frame-title-format or icon-title-format. These have the same -structure as mode-line-format. +set from 'frame-title-format' or 'icon-title-format'. These have the same +structure as 'mode-line-format'. -*** x-display-grayscale-p is a new function that returns non-nil if +*** 'x-display-grayscale-p' is a new function that returns non-nil if your X server can display shades of gray. Currently it returns non-nil for color displays (because they can display shades of gray); we may change it in the next version to return nil for color displays. -*** The frame parameter scroll-bar-width specifies the width of the +*** The frame parameter 'scroll-bar-width' specifies the width of the scrollbar in pixels. ** Buffers -*** Creating a buffer with get-buffer-create does not obey -default-major-mode. That variable is now handled in a separate -function, set-buffer-major-mode. get-buffer-create and generate-new-buffer -always leave the newly created buffer in Fundamental mode. +*** Creating a buffer with 'get-buffer-create' does not obey +'default-major-mode'. That variable is now handled in a separate +function, 'set-buffer-major-mode'. 'get-buffer-create' and +'generate-new-buffer' always leave the newly created buffer +in Fundamental mode. -Creating a new buffer by visiting a file or with switch-to-buffer, -pop-to-buffer, and similar functions does call set-buffer-major-mode -to select the default major mode specified with default-major-mode. +Creating a new buffer by visiting a file or with 'switch-to-buffer', +'pop-to-buffer', and similar functions does call 'set-buffer-major-mode' +to select the default major mode specified with 'default-major-mode'. *** You can now create an "indirect buffer". An indirect buffer shares its text, including text properties, with another buffer (the "base @@ -2602,24 +2609,24 @@ those of the base buffer and all other buffers. An indirect buffer cannot itself be visiting a file (though its base buffer can be). The base buffer cannot itself be indirect. -Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer -named NAME whose base is BASE-BUFFER. If BASE-BUFFER is an indirect -buffer, its base buffer is used as the base for the new buffer. +Use 'make-indirect-buffer' to make an indirect buffer. +If the base buffer is an indirect buffer, its base buffer is used as +the base for the new buffer. You can make an indirect buffer current, or switch to it in a window, just as you would a non-indirect buffer. -The function buffer-base-buffer, given an indirect buffer, returns its +The function 'buffer-base-buffer', given an indirect buffer, returns its base buffer. It returns nil when given an ordinary buffer (not indirect). -The library `noutline' has versions of Outline mode and Outline minor +The library 'noutline' has versions of Outline mode and Outline minor mode which let you display different parts of the outline in different indirect buffers. ** Subprocesses -*** The functions call-process and call-process-region now allow +*** The functions 'call-process' and 'call-process-region' now allow you to direct error message output from the subprocess into a separate destination, instead of mixing it with ordinary output. To do this, specify for the third argument, BUFFER, a list of the form @@ -2646,42 +2653,42 @@ names, respectively. ** Text properties -*** You can now specify which values of the `invisible' property +*** You can now specify which values of the 'invisible' property make text invisible in a given buffer. The variable -`buffer-invisibility-spec', which is always local in all buffers, +'buffer-invisibility-spec', which is always local in all buffers, controls this. -If its value is t, then any non-nil `invisible' property makes +If its value is t, then any non-nil 'invisible' property makes a character invisible. If its value is a list, then a character is invisible if its -`invisible' property value appears as a member of the list, or if it +'invisible' property value appears as a member of the list, or if it appears as the car of a member of the list. -When the `invisible' property value appears as the car of a member of -the `buffer-invisibility-spec' list, then the cdr of that member has +When the 'invisible' property value appears as the car of a member of +the 'buffer-invisibility-spec' list, then the cdr of that member has an effect. If it is non-nil, then an ellipsis appears in place of the character. (This happens only for the *last* invisible character in a series of consecutive invisible characters, and only at the end of a line.) -If a character's `invisible' property is a list, then Emacs checks each -element of the list against `buffer-invisibility-spec'. If any element +If a character's 'invisible' property is a list, then Emacs checks each +element of the list against 'buffer-invisibility-spec'. If any element matches, the character is invisible. -*** The command `list-text-properties-at' shows what text properties +*** The command 'list-text-properties-at' shows what text properties are in effect at point. *** Frame objects now exist in Emacs even on systems that don't support X Windows. You can create multiple frames, and switch between them -using select-frame. The selected frame is actually displayed on your +using 'select-frame'. The selected frame is actually displayed on your terminal; other frames are not displayed at all. The selected frame -number appears in the mode line after `Emacs', except for frame 1. +number appears in the mode line after 'Emacs', except for frame 1. Switching frames on ASCII terminals is therefore more or less equivalent to switching between different window configurations. -*** The new variable window-size-change-functions holds a list of +*** The new variable 'window-size-change-functions' holds a list of functions to be called if window sizes change (or if windows are created or deleted). The functions are called once for each frame on which changes have occurred, with the frame as the sole argument. @@ -2712,16 +2719,16 @@ are the same arguments that the after-change-functions receive. This means the function must accept either four or five arguments. *** You can set defaults for text-properties with the new variable -`default-text-properties'. Its value is a property list; the values +'default-text-properties'. Its value is a property list; the values specified there are used whenever a character (or its category) does not specify a value. -*** The `face' property of a character or an overlay can now be a list +*** The 'face' property of a character or an overlay can now be a list of face names. Formerly it had to be just one face name. -*** Changes in handling the `intangible' text property. +*** Changes in handling the 'intangible' text property. -**** If inhibit-point-motion-hooks is non-nil, then `intangible' properties +**** If inhibit-point-motion-hooks is non-nil, then 'intangible' properties are ignored. **** Moving to just before a stretch of intangible text @@ -2740,26 +2747,26 @@ place point between them. *** Overlay changes. -**** The new function previous-overlay-change returns the position of +**** The new function 'previous-overlay-change' returns the position of the previous overlay start or end, before a specified position. This -is the backwards-moving counterpart of next-overlay-change. +is the backwards-moving counterpart of 'next-overlay-change'. -**** overlay-get now supports category properties on an overlay -the same way get-text-property supports them as text properties. +**** 'overlay-get' now supports category properties on an overlay +the same way 'get-text-property' supports them as text properties. Specifically, if an overlay does not have the property PROP that you -ask for, but it does have a `category' property which is a symbol, +ask for, but it does have a 'category' property which is a symbol, then that symbol's PROP property is used. -**** If an overlay has a non-nil `evaporate' property, it will be +**** If an overlay has a non-nil 'evaporate' property, it will be deleted if it ever becomes empty (i.e., when it spans no characters). -**** If an overlay has a `before-string' and/or `after-string' property, +**** If an overlay has a 'before-string' and/or 'after-string' property, these strings are displayed at the overlay's endpoints. ** Filling -*** The new variable fill-paragraph-function provides a way for major +*** The new variable 'fill-paragraph-function' provides a way for major modes to override the filling of paragraphs. If this is non-nil, fill-paragraph calls it as a function, passing along its sole argument. If the function returns non-nil, fill-paragraph assumes it @@ -2770,57 +2777,57 @@ language modes. *** Text filling and justification changes: -**** The new variable use-hard-newlines can be used to make a +**** The new variable 'use-hard-newlines' can be used to make a distinction between "hard" and "soft" newlines; the fill functions will then never remove a newline that was manually inserted. Hard -newlines are marked with a non-nil `hard' text-property. +newlines are marked with a non-nil 'hard' text-property. -**** The fill-column and left-margin can now be modified by text-properties. +**** The 'fill-column' and 'left-margin' can now be modified by text-properties. Most lisp programs should use the new functions (current-fill-column) and (current-left-margin), which return the proper values to use for the current line. **** There are new functions for dealing with margins: -***** Set-left-margin and set-right-margin (set the value for a region +***** 'set-left-margin' and 'set-right-margin' (set the value for a region and re-fill). These functions take three arguments: two to specify a region, and the desired margin value. -***** Increase-left-margin, decrease-left-margin, increase-right-margin, and -decrease-right-margin (change settings relative to current values, and +***** 'increase-left-margin', 'decrease-left-margin', 'increase-right-margin', +and 'decrease-right-margin' (change settings relative to current values, and re-fill). -***** move-to-left-margin moves point there, optionally adding +***** 'move-to-left-margin' moves point there, optionally adding indentation or changing tabs to spaces in order to make that possible. -beginning-of-line-text also moves past the fill-prefix and any +'beginning-of-line-text' also moves past the 'fill-prefix' and any indentation added to center or right-justify a line, to the beginning of the text that the user actually typed. -***** delete-to-left-margin removes any left-margin indentation, but +***** 'delete-to-left-margin' removes any left-margin indentation, but does not change the property. -**** The paragraph-movement functions look for the paragraph-start and -paragraph-separate regexps at the current left margin, not at the +**** The paragraph-movement functions look for the 'paragraph-start' and +'paragraph-separate' regexps at the current left margin, not at the beginning of the line. This means that those regexps should NOT use ^ to anchor the search. However, for backwards compatibility, a ^ at the beginning of the regexp will be ignored, so most packages won't break. -**** justify-current-line is now capable of doing left, center, or +**** 'justify-current-line' is now capable of doing left, center, or right justification as well as full justification. **** The fill functions can do any kind of justification based on the new -`justification' text-property and `default-justification' variable, +'justification' text-property and 'default-justification' variable, or arguments to the functions. They also have a new option which defeats the normal removal of extra whitespace. -**** The new function `current-justification' returns the kind of +**** The new function 'current-justification' returns the kind of justification used for the current line. The new function -`set-justification' can be used to change it, including re-justifying +'set-justification' can be used to change it, including re-justifying the text of the region according to the new value. -**** Filling and auto-fill are disabled if justification is `none'. +**** Filling and auto-fill are disabled if justification is 'none'. -**** The auto-fill-function is now called regardless of whether +**** The 'auto-fill-function' is now called regardless of whether the fill-column has been exceeded; the function can determine on its own whether filling (or justification) is necessary. @@ -2828,14 +2835,14 @@ own whether filling (or justification) is necessary. ** Processes -*** process-tty-name is a new function that returns the name of the +*** 'process-tty-name' is a new function that returns the name of the terminal that the process itself reads and writes on (not the name of the pty that Emacs uses to talk with that terminal). *** Errors in process filters and sentinels are now normally caught automatically, so that they don't abort other Lisp programs. -Setting debug-on-error non-nil turns off this feature; then errors in +Setting 'debug-on-error' non-nil turns off this feature; then errors in filters and sentinels are not caught. As a result, they can invoke the debugger, under the control of debug-on-error. @@ -2846,10 +2853,10 @@ match data. ** Display -*** The variable message-log-max controls how messages are logged in the +*** The variable 'message-log-max' controls how messages are logged in the "*Messages*" buffer. An integer value means to keep that many lines; t means to log with no limit; nil means disable message logging. Lisp -code that calls `message' excessively (e.g. isearch.el) should probably +code that calls 'message' excessively (e.g. isearch.el) should probably bind this variable to nil. *** Display tables now have a new element, at index 261, specifying the @@ -2859,22 +2866,22 @@ other useful character to store for this element is a space, to make less visual separation between two side-by-side windows displaying related information. -*** The new mode-line-format spec %c displays the current column number. +*** The new 'mode-line-format' spec %c displays the current column number. -*** The new variable blink-matching-delay specifies how long to keep +*** The new variable 'blink-matching-delay' specifies how long to keep the cursor at the matching open-paren, after you insert a close-paren. This is useful mainly on systems which can wait for a fraction of a second--you can then specify fractional values such as 0.5. *** Faster processing of buffers with long lines -The new variable cache-long-line-scans determines whether Emacs +The new variable 'cache-long-line-scans' determines whether Emacs should use caches to handle long lines more quickly. This variable is buffer-local, in all buffers. Normally, the line-motion functions work by scanning the buffer for -newlines. Columnar operations (like `move-to-column' and -`compute-motion') also work by scanning the buffer, summing character +newlines. Columnar operations (like 'move-to-column' and +'compute-motion') also work by scanning the buffer, summing character widths as they go. This works well for ordinary text, but if the buffer's lines are very long (say, more than 500 characters), these motion functions will take longer to execute. Emacs may also take @@ -2899,30 +2906,30 @@ it should only affect their performance. ** System Interface -*** The function user-login-name now accepts an optional +*** The function 'user-login-name' now accepts an optional argument uid. If the argument is non-nil, user-login-name returns the login name for that user id. -*** system-name, user-name, user-full-name and user-real-name are now -variables as well as functions. The variables hold the same values -that the functions would return. The new variable multiple-frames +*** 'system-name', 'user-name', 'user-full-name' and 'user-real-name' are +now variables as well as functions. The variables hold the same values +that the functions would return. The new variable 'multiple-frames' is non-nil if at least two non-minibuffer frames are visible. These -variables may be useful in constructing the value of frame-title-format -or icon-title-format. +variables may be useful in constructing the value of 'frame-title-format' +or 'icon-title-format'. *** Changes in time-conversion functions. -**** The new function format-time-string takes a format string and a +**** The new function 'format-time-string' takes a format string and a time value. It converts the time to a string, according to the format specified. You can specify what kind of conversion to use with %-specifications. -**** The new function decode-time converts a time value into a list of +**** The new function 'decode-time' converts a time value into a list of specific items of information: the year, month, day of week, day of month, hour, minute and second. (A time value is a list of two or three integers.) -**** The new function encode-time converts specific items of time +**** The new function 'encode-time' converts specific items of time information--the second, minute, hour, day, month, year, and time zone--into a time value. @@ -2977,7 +2984,7 @@ You must still explicitly load either iso-transl or iso-acc. ** For a read-only buffer that is also modified, the mode line now displays %* instead of %%. -** M-prior (scroll-other-window-down) is a new command that works like +** M-prior ('scroll-other-window-down') is a new command that works like M-next (and C-M-v) but scrolls in the opposite direction. M-home moves to the beginning of the buffer, in the other window. @@ -3001,7 +3008,7 @@ your .signature file, you now get a -- before the signature. ** Setting rmail-highlighted-headers to nil entirely turns off highlighting in Rmail. However, if your motivation for doing this is that the highlighted text doesn't look good on your display, it might -be better to change the appearance of the `highlight' face. Once +be better to change the appearance of the 'highlight' face. Once you've done that, you may find Rmail highlighting is useful. ** In the calendar, mouse-2 is now used only for commands that apply to a date. @@ -3018,18 +3025,18 @@ is now C-c C-v C-d, not C-c C-v C-h. Thus, C-c C-v C-h is now available for asking for a list of the subcommands of C-c C-v. ** You can now specify "who you are" for various Emacs packages by -setting just one variable, user-mail-address. This currently applies +setting just one variable, 'user-mail-address'. This currently applies to posting news with GNUS and to making change log entries. It may apply to additional Emacs features in the future. * Lisp-Level Changes in Emacs 19.26: -** The function insert-char now takes an optional third argument +** The function 'insert-char' now takes an optional third argument which, if non-nil, says the inserted characters should inherit sticky text properties from the surrounding text. -** The `diary' library has been renamed to `diary-lib'. If you refer +** The 'diary' library has been renamed to 'diary-lib'. If you refer to this library in your Lisp code, you must update the references. ** Sending text to a subprocess can read input from subprocesses if it @@ -3051,23 +3058,23 @@ The old meaning of %+ is now available on %&. It displays * for a modified buffer and - for an unmodified buffer, regardless of read-only status. -** You can now use `underline' in the color list of a face. +** You can now use 'underline' in the color list of a face. It serves as a last resort, and says to underline the face (if previous color list elements can't be used). -** The new function x-color-values returns the list of color values +** The new function 'x-color-values' returns the list of color values for a given color name (a string). The list contains three integers which give the amounts of red, green and blue in the color: (R G B). -** In run-at-time, 0 as the repeat interval means "don't repeat". +** In 'run-at-time', 0 as the repeat interval means "don't repeat". -** The variable trim-versions-without-asking has been renamed to -delete-old-versions. +** The variable 'trim-versions-without-asking' has been renamed to +'delete-old-versions'. -** The new function other-window-for-scrolling returns the choice of +** The new function 'other-window-for-scrolling' returns the choice of other window for C-M-v to scroll. -** Note that the function fceiling was mistakenly documented as fceil before. +** Note that the function 'fceiling' was mistakenly documented as 'fceil' before. * Changes in cc-mode.el in Emacs 19.26: @@ -3081,7 +3088,7 @@ other window for C-M-v to scroll. Note that the custom indent function c-adaptive-block-open has been removed as obsolete. -** You can now specify the `hanginess' of closing braces. See +** You can now specify the 'hanginess' of closing braces. See c-hanging-braces-alist. ** Recognizes try and catch blocks in C++. They are given the @@ -3102,9 +3109,9 @@ other window for C-M-v to scroll. cc-mode.el. ** internal defun c-indent-via-language-element has been renamed - c-indent-line for compatibility with c-mode.el and awk-mode. + c-indent-line for compatibility with c-mode.el and 'awk-mode'. -** new buffer-local variable c-comment-start-regexp for (potential) +** new buffer-local variable 'c-comment-start-regexp' for (potential) flexibility in adding new modes based on cc-mode.el @@ -3112,7 +3119,7 @@ other window for C-M-v to scroll. * Changes in Emacs 19.25 The variable x-cross-pointer-shape (which didn't really exist) has -been renamed to x-sensitive-text-pointer-shape, and now does exist. +been renamed to 'x-sensitive-text-pointer-shape', and now does exist. @@ -3207,7 +3214,7 @@ move the mouse over them. ** In a completion list buffer, the command RET now chooses the completion that is around or next to point. -** If you specify the foreground color for the `mode-line' face, and +** If you specify the foreground color for the 'mode-line' face, and mode-line-inverse-video is non-nil, then the default background color is the usual foreground color. @@ -3228,7 +3235,7 @@ auto-save (as has been possible in Emacs 19). ** C-x r d now runs the command delete-rectangle. -** The new command imenu shows you a menu of interesting places in the +** The new command 'imenu' shows you a menu of interesting places in the current buffer and lets you select one; then it moves point there. The definition of interesting places depends on the major mode, but typically this includes function definitions and such. Normally, @@ -3237,29 +3244,29 @@ event, it shows a mouse popup menu. ** You can make certain chosen buffers, that normally appear in a separate window, appear in special frames of their own. To do this, -set special-display-buffer-names to a list of buffer names; any buffer +set 'special-display-buffer-names' to a list of buffer names; any buffer whose name is in that list automatically gets a special frame when it is to be displayed in another window. A good value to try is ("*compilation*" "*grep*" "*TeX Shell*"). -More generally, you can set special-display-regexps to a list of regular +More generally, you can set 'special-display-regexps' to a list of regular expressions; then each buffer whose name matches any of those regular expressions gets its own frame. -The variable special-display-frame-alist specifies the frame +The variable 'special-display-frame-alist' specifies the frame parameters for these frames. It has a default value, so you don't need to set it. -** If you set sentence-end-double-space to nil, the fill commands +** If you set 'sentence-end-double-space' to nil, the fill commands expect just one space at the end of a sentence. (If you want the sentence commands to accept single spaces, you must modify the regexp -sentence-end also.) +'sentence-end' also.) ** You can suppress the startup echo area message by adding text like this to your .emacs file: -(setq inhibit-startup-echo-area-message "YOUR-LOGIN-NAME") + (setq inhibit-startup-echo-area-message "YOUR-LOGIN-NAME") Simply setting inhibit-startup-echo-area-message to your login name is not sufficient to inhibit the message; Emacs explicitly checks whether @@ -3272,7 +3279,7 @@ message for someone else. ** Outline minor mode now uses C-c C-o as a prefix instead of just C-c. -** In Outline mode, hide-subtree is now C-c C-d. (It was C-c C-h; but +** In Outline mode, 'hide-subtree' is now C-c C-d. (It was C-c C-h; but that is now a conventional way to ask for help about C-c commands.) ** There are two additional commands in Outline mode. @@ -3315,19 +3322,19 @@ buffer to show the last batch of output from the subprogram. point, rather than the word that point is within. *** Comint mode file name completion ignores those files that end with a -string in the new variable comint-completion-fignore. This variable's +string in the new variable 'comint-completion-fignore'. This variable's default value is nil. *** Shell mode uses the variable shell-completion-fignore to set comint-completion-fignore. The default value is nil, but some people prefer ("~" "#" "%"). -*** The function `comint-watch-for-password-prompt' can be used to +*** The function 'comint-watch-for-password-prompt' can be used to suppress echoing when a subprocess asks for a password. To use it, do this: -(add-hook 'comint-output-filter-functions - 'comint-watch-for-password-prompt) + (add-hook 'comint-output-filter-functions + #'comint-watch-for-password-prompt) *** You can use M-x shell-strip-ctrl-m to strip ^M characters from process output. @@ -3353,23 +3360,23 @@ GDB-style symbol completion. This will work with GDB 4.13. ** Rmail no longer gets new mail automatically when you visit an Rmail file specified by name--not even if it is your primary Rmail file. To -get new mail, type `g'. This feature is an advantage because you now +get new mail, type 'g'. This feature is an advantage because you now have a choice of whether to get new mail. (This change actually occurred in an earlier version, but wasn't listed here then, since it made the code do what the documentation already said.) ** Rmail now highlights certain fields automatically, when you use X -windows. The variable rmail-highlighted-headers controls which +windows. The variable 'rmail-highlighted-headers' controls which fields. -** If you set rmail-summary-window-size to an integer, Rmail uses +** If you set 'rmail-summary-window-size' to an integer, Rmail uses a window that many lines high for the summary buffer. -** rmail-input-menu is a new command that visits an Rmail file letting -you choose which file with a mouse menu. rmail-output-menu is +** 'rmail-input-menu' is a new command that visits an Rmail file letting +you choose which file with a mouse menu. 'rmail-output-menu' is similar; it outputs the current message, using a mouse menu to choose which Rmail file. These commands use the variables -rmail-secondary-file-directory and rmail-secondary-file-regexp. +'rmail-secondary-file-directory' and 'rmail-secondary-file-regexp'. ** The mh-e package has been changed substantially. See the file ./MH-E-NEWS for details. @@ -3384,8 +3391,8 @@ date in the calendar window and common three-month-related commands when clicked elsewhere in the calendar window. You can set up colored/shaded highlighting of holidays, diary entry -dates, and today's date, by setting calendar-holiday-marker, -diary-entry-marker, and calendar-today-marker to a face instead of a +dates, and today's date, by setting 'calendar-holiday-marker', +'diary-entry-marker', and 'calendar-today-marker' to a face instead of a character. Using a special face is now the default if you are using a window system. @@ -3393,16 +3400,16 @@ window system. features. *** The appt alarm window stays for the full duration of -appt-display-duration. It no longer disappears when you start typing +'appt-display-duration'. It no longer disappears when you start typing text. *** You can change the way the appointment window is created/deleted by -setting the variables appt-disp-window-function and -appt-delete-window-function. +setting the variables 'appt-disp-window-function' and +'appt-delete-window-function'. For instance, these variables can be set to functions that display appointments in pop-up frames, which are lowered or iconified after -appt-display-duration seconds. +'appt-display-duration' seconds. ** desktop.el can now save a list of buffer-local variables, and saves more global ones. @@ -3423,8 +3430,8 @@ now be debugged with Edebug. *** Edebug specifications may now contain body, &define, name, arg or arglist, def-body, and def-form, to support definitions. -*** edebug-all-defuns is renamed to edebug-all-defs. -def-edebug-form-spec is replaced by def-edebug-form whose arguments +*** edebug-all-defuns is renamed to 'edebug-all-defs'. +def-edebug-form-spec is replaced by 'def-edebug-form' whose arguments are unevaluated. The old names are still available for now. *** Frequency counts and coverage data may be displayed for functions being @@ -3436,13 +3443,13 @@ debugged. *** A new "next" mode stops only after expression evaluation. -*** A new command, top-level-nonstop, does not even stop for unwind-protect, +*** A new command, 'top-level-nonstop', does not even stop for 'unwind-protect', as top-level would. * Changes in CC mode in Emacs 19.23. -`cc-mode' provides ANSI C, K&R C, and ARM C++ language editing. It +'cc-mode' provides ANSI C, K&R C, and ARM C++ language editing. It represents the merge of c++-mode.el and c-mode.el. cc-mode provides a new, more flexible indentation engine so that indentation customization is more intuitive. There are two steps to calculating @@ -3450,8 +3457,8 @@ indentation: first, CC mode analyzes the line for syntactic content, then based on this content it applies user defined offsets and adds this offset to the indentation of some previous line. -The syntactic analysis determines if the line describes a `statement', -`substatement', `class-open', `member-init-intro', etc. These are +The syntactic analysis determines if the line describes a 'statement', +'substatement', 'class-open', 'member-init-intro', etc. These are described in detail with C-h v c-offsets-alist. You can change the offsets interactively with C-c C-o (c-set-offsets), or programmatically in your c-mode-common-hook, which is run both by @@ -3489,75 +3496,75 @@ int foo (int i) you could add the following to your .emacs file: -(defun my-c-mode-common-hook () - (c-set-offset 'case-label 2) - (c-set-offset 'statement-case-intro 2)) -(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) + (defun my-c-mode-common-hook () + (c-set-offset 'case-label 2) + (c-set-offset 'statement-case-intro 2)) + (add-hook 'c-mode-common-hook #'my-c-mode-common-hook) ** New variables: -c-offsets-alist contains an association list of syntactic symbols and +'c-offsets-alist' contains an association list of syntactic symbols and their relative offsets. Do a "C-h v c-offsets-alist" to get a list of all syntactic symbols currently defined, and their meanings. You should not change this variable directly; use the supplied interface -commands c-set-offset and c-set-style. +commands 'c-set-offset' and 'c-set-style'. -c-mode-common-hook is run by both c-mode and c++-mode during their +'c-mode-common-hook' is run by both 'c-mode' and 'c++-mode' during their common initializations. You should put any customizations that are the same for both C and C++ into this hook. -The variable c-strict-semantics-p is used mainly for debugging. When +The variable 'c-strict-semantics-p' is used mainly for debugging. When non-nil, CC mode signals an error if it returns a syntactic symbol that can't be found in c-offsets-alist. If you want CC mode to echo the syntactic analysis for a particular -line when you hit the TAB key, set c-echo-semantic-information-p to +line when you hit the TAB key, set 'c-echo-semantic-information-p' to non-nil. -c-basic-offset controls the standard amount of offset for a level of +'c-basic-offset' controls the standard amount of offset for a level of indentation. You can set a syntactic symbol's offset to + or - as a short-hand for positive or negative c-basic-offset. -c-comment-only-line-offset lets you control indentation given to lines +'c-comment-only-line-offset' lets you control indentation given to lines which contain only a comment, in the case of C++ line style comments, or the introduction to a C block comment. Comment-only lines at column zero can be anchored there independent of the indentation given to other comment-only lines. -c-block-comments-indent-p controls the style of C block comment +'c-block-comments-indent-p' controls the style of C block comment re-indentation. If you put leading stars in front of comment continuation lines, you should set this variable to nil. -c-cleanup-list is a list describing certain C and C++ constructs to be +'c-cleanup-list' is a list describing certain C and C++ constructs to be "cleaned up" as they are typed, but only when the auto-newline feature is turned on. In C++, make sure this variable contains at least 'scope-operator so that double colons will not be separated by a newline. -Colons (`:') and braces (`{` and `}') are special in C and C++. For +Colons (':') and braces (`{` and `}') are special in C and C++. For certain constructs, you may like them to hang on the right edge of the code, or you may like them to start a new line of code. You can use -the two variables c-hanging-braces-alist and c-hanging-colons-alist +the two variables 'c-hanging-braces-alist' and 'c-hanging-colons-alist' to control whether newlines are placed before and/or after colons and braces when certain C and C++ constructs are entered. For example, you can control whether the colon that introduces a C++ member initialization list hangs on the right edge, starts a new line, or has no newlines either before or after it. -c-special-indent-hook is run after a line is indented by CC mode. You +'c-special-indent-hook' is run after a line is indented by CC mode. You can perform any custom indentations here. -c-delete-function is the function that is called when a single +'c-delete-function' is the function that is called when a single character is deleted with the c-electric-delete command (DEL). -c-electric-pound-behavior describes what happens when you enter the +'c-electric-pound-behavior' describes what happens when you enter the `#' that introduces a cpp macro. -If c-tab-always-indent is neither t nor nil, then TAB inserts a tab +If 'c-tab-always-indent' is neither t nor nil, then TAB inserts a tab when within strings, comments, and cpp directives, but it reindents the line unconditionally. -c-inhibit-startup-warnings-p inhibits warnings about any old +'c-inhibit-startup-warnings-p' inhibits warnings about any old version of Emacs you might be running, which could be incompatible with cc-mode. @@ -3613,7 +3620,7 @@ convention of VariableNamesWithoutUnderscoresButEachWordCapitalized. * Lisp programming changes in Emacs 19.23. -** To pop up a dialog box, call x-popup-dialog. +** To pop up a dialog box, call 'x-popup-dialog'. It takes two arguments, POSITION and CONTENTS. POSITION specifies which frame to place the dialog box over; @@ -3635,12 +3642,12 @@ If your Emacs is not using an X toolkit, then it cannot display a real dialog box; so instead it displays a pop-up menu in the center of the frame. -** y-or-n-p, yes-or-no-p and map-y-or-n-p now use menus or dialog boxes +** 'y-or-n-p', 'yes-or-no-p' and 'map-y-or-n-p' now use menus or dialog boxes to ask their question(s) if the command that is running was reached by a mouse event. If you want to control which way these functions work, bind the -variable last-nonmenu-event around the call. These functions use the +variable 'last-nonmenu-event' around the call. These functions use the keyboard if that variable holds a keyboard event (actually, any non-list); they use the mouse if that variable holds a mouse event (actually, any list). @@ -3649,49 +3656,49 @@ non-list); they use the mouse if that variable holds a mouse event a text property. It specifies a face to use when the mouse is in the range of text for which the property is specified. -** When text has a non-nil `intangible' property, you cannot move point +** When text has a non-nil 'intangible' property, you cannot move point within it or right before it. If you try, point actually moves to the -end of the intangible text. Note that this means that backward-char +end of the intangible text. Note that this means that 'backward-char' is a no-op when there is an intangible character to the left of point. -** minibuffer-exit-hook is a new normal hook that is run when you +** 'minibuffer-exit-hook' is a new normal hook that is run when you exit the minibuffer. -** The variable x-cross-pointer-shape specifies the cursor shape to use +** The variable 'x-cross-pointer-shape' specifies the cursor shape to use when the mouse is over text that has a mouse-face property. -** The new variable interpreter-mode-alist specifies major modes to use +** The new variable 'interpreter-mode-alist' specifies major modes to use for shell scripts that specify a command interpreter. Its elements look like (INTERPRETER . MODE); for example, ("perl" . perl-mode) is one element present by default. This feature applies only when the file name doesn't indicate which mode to use. ** If you use a minibuffer-only frame, set the variable -minibuffer-auto-raise to t, and entering the minibuffer will then +'minibuffer-auto-raise' to t, and entering the minibuffer will then raise the minibuffer frame. -** If pop-up-frames is t, display-buffer now looks for an existing +** If 'pop-up-frames' is t, display-buffer now looks for an existing window in any visible frame, showing the specified buffer, and uses such a window in preference to making a new frame. -** In the functions next-window, previous-window, next-frame, -previous-frame, get-buffer-window, get-lru-window, get-largest-window -and delete-windows-on, if you specify `visible' for the last argument, +** In the functions 'next-window', 'previous-window', 'next-frame', +'previous-frame', 'get-buffer-window', 'get-lru-window', 'get-largest-window' +and 'delete-windows-on', if you specify 'visible' for the last argument, it means to consider all visible frames. ** Mouse events now give the X and Y coordinates in pixels, rather than in characters. You can convert these values to characters by dividing by the values of (frame-char-width) and (frame-char-height). -** The new functions mouse-pixel-position and set-mouse-pixel-position +** The new functions 'mouse-pixel-position' and 'set-mouse-pixel-position' read and set the mouse position in units of pixels. The existing -functions mouse-position and set-mouse-position continue to work with +functions 'mouse-position' and 'set-mouse-position' continue to work with units of characters. -** The new function compute-motion is useful for computing the width +** The new function 'compute-motion' is useful for computing the width of certain text when it is displayed. -** The function vertical-motion now takes an option second argument WINDOW +** The function 'vertical-motion' now takes an option second argument WINDOW which says which window to use for the display calculations. vertical-motion always operates on the current buffer. @@ -3699,7 +3706,7 @@ It is ok to specify a window displaying some other buffer. Then vertical-motion uses the width, hscroll and display-table of the specified window, but still scans the current buffer. -** An error no longer sets last-command to t; the value of last-command +** An error no longer sets 'last-command' to t; the value of last-command does reflect the previous command (the one that got an error). If you do not want a particular command to be recognized as the @@ -3728,20 +3735,20 @@ The undo and yank commands do this. ** If you specify an explicit title for a new frame when you create it, the title is used as the resource name when looking up X resources to control the shape of that frame. If you don't specify the frame title, -the value of x-resource-name is used, as before. +the value of 'x-resource-name' is used, as before. ** The frame parameter user-position, if non-nil, says that the user has specified the frame position. Emacs reports this to the window manager, to tell it not to override the position that the user specified. -** Major modes can now set change-major-mode-hook to arrange for state +** Major modes can now set 'change-major-mode-hook' to arrange for state to be cleaned up when the user switches to a new major mode. The function -kill-all-local-variables runs this hook. For best results, make the hook a +'kill-all-local-variables' runs this hook. For best results, make the hook a buffer-local variable so that it will disappear after doing its job and will not interfere with the subsequent major mode. -** The new variable overriding-local-map, if non-nil, specifies a keymap +** The new variable 'overriding-local-map', if non-nil, specifies a keymap that overrides the current local map, all minor mode keymaps, and all text property keymaps. Incremental search uses this feature to override all other keymaps temporarily. @@ -3756,7 +3763,7 @@ key sequences that run the same command COMMAND. Displaying the menu automatically creates and updates the sublist when appropriate; you need never set these up yourself. -lookup-key, key-binding, and similar functions return just COMMAND, +'lookup-key', 'key-binding', and similar functions return just COMMAND, not the whole binding. To precompute this information for a given keymap, you can do @@ -3783,7 +3790,7 @@ from the specifications above.) If you pass the value of overriding-local-map as KEYMAP, where-is-internal searches in exactly the same was as command execution does. -** Use the macro define-derived-mode to define a new major mode that +** Use the macro 'define-derived-mode' to define a new major mode that inherits the definition of another major mode. Here's how to define a command named hypertext-mode that inherits from the command text-mode: @@ -3800,11 +3807,11 @@ its own mode hook. All are given names made by appending a suffix to the name of the new mode. ** A syntax table can now inherit the data for some characters from -standard-syntax-table, while specifying other characters itself. +'standard-syntax-table', while specifying other characters itself. Syntax code 13 means "inherit this character from the standard syntax -table." In modify-syntax-entry, the character `@' represents this code. +table." In 'modify-syntax-entry', the character `@' represents this code. -The function `make-syntax-table' now creates a syntax table which +The function 'make-syntax-table' now creates a syntax table which inherits all letters and control characters (0 to 31 and 128 to 255) from the standard syntax table, while copying the other characters from the standard syntax table. Most syntax tables in Emacs are set @@ -3815,15 +3822,15 @@ sets with additional alphabetic characters in the range 128 to 255. Just changing the standard syntax for these characters affects all major modes. -** The new function transpose-regions swaps two regions of the buffer. +** The new function 'transpose-regions' swaps two regions of the buffer. It preserves the markers in those two regions, so that they stay with the surrounding text as it is swapped. -** revert-buffer now runs before-revert-hook at the beginning and -after-revert-hook at the end. These can be used by minor modes +** 'revert-buffer' now runs 'before-revert-hook' at the beginning and +'after-revert-hook' at the end. These can be used by minor modes that need to clean up state variables. -** The new function get-char-property is like get-text-property, but +** The new function 'get-char-property' is like 'get-text-property', but checks for overlays with properties as well as for text properties. It checks for overlays first, in order of descending priority, and text properties last. @@ -3832,9 +3839,9 @@ get-char-property allows windows as the OBJECT argument, as well as buffers and strings. If you specify a window, then only overlays active on that window are considered. -** Overlays can have the `invisible' property. +** Overlays can have the 'invisible' property. -** The function insert-file-contents now takes an optional fifth +** The function 'insert-file-contents' now takes an optional fifth argument called REPLACE. If this is t, it means to replace the contents of the buffer (actually, just the accessible portion) with the contents of the file. @@ -3843,72 +3850,72 @@ This is better than simply deleting and inserting the whole thing because (1) it preserves some marker positions and (2) it puts less data in the undo list. -** The variable inhibit-first-line-modes-regexps specifies classes of +** The variable 'inhibit-first-line-modes-regexps' specifies classes of file names for which -*- on the first line should not be looked for. -** The variables before-change-functions and after-change-functions +** The variables 'before-change-functions' and 'after-change-functions' hold lists of functions to call before and after a change in the buffer's text. They work much like before-change-function and after-change-function, except that they hold a list of functions instead of just one. -These variables will eventually make before-change-function and -after-change-function obsolete. +These variables will eventually make 'before-change-function' and +'after-change-function' obsolete. -** The variable kill-buffer-query-functions holds a list of functions +** The variable 'kill-buffer-query-functions' holds a list of functions to be called with no arguments when a buffer is about to be killed. (That buffer is the current buffer when the function is called.) If any of the functions returns nil, the buffer is not killed (and the remaining functions in the list are not called). -** The variable kill-emacs-query-functions holds a list of functions +** The variable 'kill-emacs-query-functions' holds a list of functions to be called with no arguments when you ask to exit Emacs. If any of the functions returns nil, the exit is canceled (and the remaining functions in the list are not called). -** The argument for buffer-disable-undo is now optional, -like the argument for buffer-enable-undo. +** The argument for 'buffer-disable-undo' is now optional, +like the argument for 'buffer-enable-undo'. -** The new variable system-configuration holds the canonical three-part +** The new variable 'system-configuration' holds the canonical three-part GNU configuration name for which Emacs was built. -** The function system-name now tries harder to return a fully qualified +** The function 'system-name' now tries harder to return a fully qualified domain name. -** The variable emacs-major-version holds the major version number +** The variable 'emacs-major-version' holds the major version number of Emacs. (Currently 19.) -** The variable emacs-minor-version holds the minor version number +** The variable 'emacs-minor-version' holds the minor version number of Emacs. (Currently 23.) -** The default value of comint-input-autoexpand is now nil. +** The default value of 'comint-input-autoexpand' is now nil. However, Shell mode sets it from the value of shell-input-autoexpand, -whose default value is `history'. +whose default value is 'history'. -** The new function set-process-window-size specifies the terminal window +** The new function 'set-process-window-size' specifies the terminal window size for a subprocess. On some systems it sends the subprocess a signal to let it know that the size has changed. ** %P is a new way to display a percentage in the mode line. It displays the percentage of the buffer text that is above the *bottom* of the window (which includes the text visible, in the window as well -as the text above the top). It displays `Top' as well as the +as the text above the top). It displays 'Top' as well as the percentage if the top of the buffer is visible on screen. ** %+ in the mode line specs displays `*' if the buffer is modified, -and otherwise `-'. It never displays `%', as `%*' would do; whether the +and otherwise '-'. It never displays `%', as `%*' would do; whether the buffer is read-only has no effect on %+. -** The new functions ffloor, fceiling, fround and ftruncate take a +** The new functions 'ffloor', 'fceiling', 'fround' and 'ftruncate' take a floating point argument and return a floating point result whose value is a nearby integer. ffloor returns the nearest integer below; fceiling, the nearest integer above; ftruncate, the nearest integer in the direction towards zero; fround, the nearest integer. -** Setting `print-escape-newlines' to a non-nil value now also makes +** Setting 'print-escape-newlines' to a non-nil value now also makes formfeeds print as ``\f''. -** auto-mode-alist now has a new feature. If an element has the form +** 'auto-mode-alist' now has a new feature. If an element has the form (REGEXP FUNCTION t), and REGEXP matches the file name, then after calling FUNCTION, Emacs deletes the part of the file name that matched REGEXP and then searches auto-mode-alist again for a new match. @@ -3917,26 +3924,26 @@ This is useful for uncompression packages. An entry of this sort for .gz can uncompress the file and then put the uncompressed file in the proper mode according to the name sans .gz. -** The new function emacs-pid returns the process ID number of Emacs. +** The new function 'emacs-pid' returns the process ID number of Emacs. -** user-login-name now consistently checks the LOGNAME environment -variable before USER. user-original-login-name is obsolete, since it +** 'user-login-name' now consistently checks the LOGNAME environment +variable before USER. 'user-original-login-name' is obsolete, since it provides the same functionality. To ignore the environment variables, use user-real-login-name. ** There is a more general way of handling the system-specific X -keysyms. Set the variable system-key-alist to an alist containing +keysyms. Set the variable 'system-key-alist' to an alist containing elements of the form (CODE . SYMBOL), where CODE is the numeric keysym code minus the "vendor specific" bit, and symbol is the name for the function key. -** You can use the variable command-line-functions to set up functions +** You can use the variable 'command-line-functions' to set up functions to process unrecognized command line arguments. The variable's value should be a list of functions of no arguments. The functions are called successively until one of them returns non-nil. -Each function should access the free variables argi (the current -argument) and command-line-args-left (the remaining arguments). The +Each function should access the free variables 'argi' (the current +argument) and 'command-line-args-left' (the remaining arguments). The function should return non-nil only if it recognizes and processes the argument in argi. If it does so, it may consume following arguments as well by removing them from command-line-args-left. @@ -3944,14 +3951,14 @@ as well by removing them from command-line-args-left. ** There's a new way for a magic file name handler to run a primitive and inhibit handling of the file name. Here is how to do it: -(let ((inhibit-file-name-handlers - (cons 'ange-ftp-file-handler - (and (eq inhibit-file-name-operation operation) - inhibit-file-name-handlers))) - (inhibit-file-name-operation operation)) - (apply this-operation args)) + (let ((inhibit-file-name-handlers + (cons 'ange-ftp-file-handler + (and (eq inhibit-file-name-operation operation) + inhibit-file-name-handlers))) + (inhibit-file-name-operation operation)) + (apply this-operation args)) -The function find-file-name-handler now takes two arguments. The +The function 'find-file-name-handler' now takes two arguments. The second argument is OPERATION, the operation for which the handler is being sought. @@ -3961,11 +3968,11 @@ it is not. There is simply no way for find-file-name-handler to do the right thing without receiving the proper value for its second argument. -** The variable completion-regexp-list affects the completion -primitives try-completion and all-completions. They consider +** The variable 'completion-regexp-list' affects the completion +primitives 'try-completion' and 'all-completions'. They consider only the possible completions that match each regexp in the list. -** Case conversion in the function replace-match has been changed. +** Case conversion in the function 'replace-match' has been changed. The old behavior was this: if any word in the old text was capitalized, replace-match capitalized each word of the replacement @@ -3977,24 +3984,24 @@ replace-match capitalizes the first word of the replacement text. ** You can now specify a case table with CANON non-nil and EQV nil. Then the EQV part of the case table is deduced from CANON. -** The new function minibuffer-prompt takes no arguments and returns +** The new function 'minibuffer-prompt' takes no arguments and returns the current minibuffer prompt string. -The new function minibuffer-prompt-width takes no arguments and +The new function 'minibuffer-prompt-width' takes no arguments and returns the display width of the minibuffer prompt string. -** The new function frame-first-window returns the window at the +** The new function 'frame-first-window' returns the window at the upper left corner of a given frame. -** wholenump is a new alias for natnump. +** 'wholenump' is a new alias for 'natnump'. -** The variable installation-directory, if non-@code{nil}, names a -directory within which to look for the `lib-src' and `etc' +** The variable 'installation-directory', if non-@code{nil}, names a +directory within which to look for the 'lib-src' and 'etc' subdirectories. This is non-nil when Emacs can't find those directories in their standard installed locations, but can find them near where the Emacs executable was found. -** invocation-name and invocation-directory are now variables as well +** 'invocation-name' and 'invocation-directory' are now variables as well as functions. The variable values are the same values that the functions return: the Emacs program name sans directories, and the directory it was found in. (invocation-directory may be nil, if Emacs @@ -4019,9 +4026,9 @@ by building Emacs. ** The mouse click M-mouse-2 now inserts the current secondary selection (from Emacs or any other X client) where you click. It does not move point. -This command is called mouse-yank-secondary. +This command is called 'mouse-yank-secondary'. -mouse-kill-secondary no longer has a key binding by default. +'mouse-kill-secondary' no longer has a key binding by default. Clicking M-mouse-3 (mouse-secondary-save-then-kill) twice may be a convenient enough way of killing the secondary selection. Or perhaps there should be a keyboard binding for killing the @@ -4029,13 +4036,13 @@ secondary selection. Any suggestions? ** New packages: -*** `icomplete' provides character-by-character information +*** 'icomplete' provides character-by-character information about what you could complete if you type TAB. -*** `avoid' moves the mouse away from point so that it doesn't hide +*** 'avoid' moves the mouse away from point so that it doesn't hide your typing. -*** `shadowfile' helps you update files that are supposed to be stored +*** 'shadowfile' helps you update files that are supposed to be stored identically in different places (perhaps on different machines). ** C-h p now knows about four additional keywords: data, faces, mouse, @@ -4058,13 +4065,13 @@ This feature was added in 19.21 but did not work smoothly enough. ** Display of buffers with text properties is much faster now. -** The feature previously announced whereby `insert' does not inherit +** The feature previously announced whereby 'insert' does not inherit text properties from surrounding text was not fully implemented -before; but now it is. use `insert-and-inherit' if you wish to +before; but now it is. use 'insert-and-inherit' if you wish to inherit sticky properties from the surrounding text. -** The functions next-property-change, previous-property-change, -next-single-property-change, and previous-single-property-change +** The functions 'next-property-change', 'previous-property-change', +'next-single-property-change', and 'previous-single-property-change' now take one additional optional argument LIMIT that is a position at which to stop scanning. If scan ends without finding the property change sought, these functions return the specified limit. @@ -4151,7 +4158,7 @@ is expected. To define case-conversion for these characters for ISO 8859/1, load the library iso-syntax. (This is not new.) -** M-TAB in Text mode now runs the command ispell-complete-word +** M-TAB in Text mode now runs the command 'ispell-complete-word' which performs completion using the spelling dictionary. The spelling correction submenu now includes this command @@ -4162,7 +4169,7 @@ beginning of a word. ** In incremental search, you can use M-y to yank the most recent kill into the search string. -** The new function ispell-message checks the spelling of a message +** The new function 'ispell-message' checks the spelling of a message you are about to send or post. It ignores text cited from other messages. @@ -4188,8 +4195,8 @@ Indented lines continue the paragraph that is in progress. This makes the user option variable adaptive-fill-mode have its intended effect. ** Local variable specifications in files for variables whose names end -in `-hook' and `-function' are now controlled by the variable -`enable-local-eval', just like the `eval' variable. +in '-hook' and '-function' are now controlled by the variable +'enable-local-eval', just like the 'eval' variable. ** C-x r j (jump-to-register) when restoring a frame configuration now makes all unwanted frames (existing frames not mentioned in the @@ -4199,7 +4206,7 @@ If you want to delete these unwanted frames, use a prefix argument for C-x r j. ** You can customize the calendar to display weeks beginning on -Monday: set the variable `calendar-week-start-day' to 1. +Monday: set the variable 'calendar-week-start-day' to 1. ** Rmail changes. @@ -4220,7 +4227,7 @@ There are new menu bar items for completion/input/output/signal commands. Input behavior is configurable. Variables control whether some windows showing the buffer scroll to the bottom before insertion. These are -`comint-scroll-to-bottom-on-input' and `before-change-function'. By default, +'comint-scroll-to-bottom-on-input' and 'before-change-function'. By default, insertion causes the selected window to scroll to the bottom before insertion occurs. @@ -4228,33 +4235,33 @@ Subprocess output now keeps point at the end of the buffer in each window individually if point was already at the end of the buffer in that window. -If `comint-scroll-show-maximum-output' is non-nil (which is the +If 'comint-scroll-show-maximum-output' is non-nil (which is the default), then scrolling due to arrival of output tries to place the last line of text at the bottom line of the window, so as to show as much useful text as possible. (This mimics the scrolling behavior of many terminals.) -By setting `comint-scroll-to-bottom-on-output', you can opt for having +By setting 'comint-scroll-to-bottom-on-output', you can opt for having point jump to the end of the buffer whenever output arrives--no matter -where in the buffer point was before. If the value is `this', point -jumps in the selected window. If the value is `all', point jumps in -each window that shows the comint buffer. If the value is `other', +where in the buffer point was before. If the value is 'this', point +jumps in the selected window. If the value is 'all', point jumps in +each window that shows the comint buffer. If the value is 'other', point jumps in all nonselected windows that show the current buffer. The default value is nil, which means point does not jump to the end. Input history insertion is configurable. A variable controls whether only the first instance of successive identical inputs is stored in the input history. -This is `comint-input-ignoredups'. +This is 'comint-input-ignoredups'. Completion (bound to TAB) is now more general. Depending on context, completion now operates on the input history, on command names, or (as before) on filenames. Filename completion is configurable. Variables control whether -file/directory suffix characters are added (`comint-completion-addsuffix'), +file/directory suffix characters are added ('comint-completion-addsuffix'), whether shortest completion is acceptable when no further unambiguous -completion is possible (`comint-completion-recexact'), and the timing of -completion candidate listing (`comint-completion-autolist'). +completion is possible ('comint-completion-recexact'), and the timing of +completion candidate listing ('comint-completion-autolist'). Comint mode now provides history expansion. Insert input using `!' and `^', in the same syntax that typical shells use; then type TAB. @@ -4264,12 +4271,12 @@ comint buffer in place of the original input. History references in the input may be expanded before insertion into the input ring, or on input to the interpreter (and therefore -visibly). The variable `comint-input-autoexpand' specifies which. +visibly). The variable 'comint-input-autoexpand' specifies which. You can make the SPC key perform history expansion by binding -SPC to the command `comint-magic-space'. +SPC to the command 'comint-magic-space'. -The command `comint-dynamic-complete-variable' does variable name +The command 'comint-dynamic-complete-variable' does variable name completion using the environment variables as set within Emacs. The variables controlling filename completion apply to variable name completion too. This command is normally available through the menu @@ -4283,54 +4290,54 @@ on output groups (i.e., shell prompt plus associated shell output). TAB now completes commands, as well as file names and expand history. Commands are searched for along the path that Emacs has on startup. -C-c C-f now moves forward a command (`shell-forward-command') and -C-c C-b now moves backward a command (`shell-backward-command'). +C-c C-f now moves forward a command ('shell-forward-command') and +C-c C-b now moves backward a command ('shell-backward-command'). Command completion is configurable. The variables controlling filename completion in comint mode apply, together with a variable controlling whether to restrict possible completions to only files -that are executable (`shell-command-execonly'). +that are executable ('shell-command-execonly'). The input history is initialized from the file name given in the -variable `shell-input-ring-file-name'--normally `.history' in your +variable 'shell-input-ring-file-name'--normally `.history' in your home directory. Directory tracking is more robust. It can cope with command sequences and forked commands, and can detect the failure of directory changing commands in most circumstances. It's still not infallible, of course. -You can now configure the behavior of `pushd'. Variables control -whether `pushd' behaves like `cd' if no argument is given -(`shell-pushd-tohome'), pop rather than rotate with a numeric argument -(`shell-pushd-dextract'), and only add directories to the directory -stack if they are not already on it (`shell-pushd-dunique'). The +You can now configure the behavior of 'pushd'. Variables control +whether 'pushd' behaves like 'cd' if no argument is given +('shell-pushd-tohome'), pop rather than rotate with a numeric argument +('shell-pushd-dextract'), and only add directories to the directory +stack if they are not already on it ('shell-pushd-dunique'). The configuration you choose should match the underlying shell, of course. * Emacs Lisp programming changes in Emacs 19.20. -** A new function `remove-hook' is now used to remove a hook that you might -have added with `add-hook'. +** A new function 'remove-hook' is now used to remove a hook that you might +have added with 'add-hook'. -** There is now a Lisp pretty-printer in the library `pp'. +** There is now a Lisp pretty-printer in the library 'pp'. ** The partial Common Lisp support has been entirely reimplemented. -** When you insert text using `insert', `insert-before-markers' or -`insert-buffer-substring', text properties are no longer inherited +** When you insert text using 'insert', 'insert-before-markers' or +'insert-buffer-substring', text properties are no longer inherited from the surrounding text. When you want to inherit text properties, use the new functions -`insert-and-inherit' or `insert-before-markers-and-inherit'. +'insert-and-inherit' or 'insert-before-markers-and-inherit'. The self-inserting character command does do inheritance. ** Frame creation hooks. -The function make-frame now runs the normal hooks -before-make-frame-hook and after-make-frame-hook. +The function 'make-frame' now runs the normal hooks +'before-make-frame-hook' and 'after-make-frame-hook'. -** You can now use function-key-map to make a key an alias for other +** You can now use 'function-key-map' to make a key an alias for other key sequences that can vary depending on circumstances. To do this, give the key a definition in function-key-map which is a function rather than a specific expansion key sequence. @@ -4339,22 +4346,22 @@ If the function reads input itself, it can have the effect of altering the event that follows. For example, here's how to define C-c h to turn the character that follows into a hyper character: -(define-key function-key-map "\C-ch" 'hyperify) + (define-key function-key-map "\C-ch" 'hyperify) -(defun hyperify (prompt) - (let ((e (read-event))) - (vector (if (numberp e) - (logior (ash 1 20) e) - (if (memq 'hyper (event-modifiers e)) - e - (add-event-modifier "H-" e)))))) + (defun hyperify (prompt) + (let ((e (read-event))) + (vector (if (numberp e) + (logior (ash 1 20) e) + (if (memq 'hyper (event-modifiers e)) + e + (add-event-modifier "H-" e)))))) -(defun add-event-modifier (string e) - (let ((symbol (if (symbolp e) e (car e)))) - (setq symbol (intern (concat string (symbol-name symbol)))) - (if (symbolp e) - symbol - (cons symbol (cdr e))))) + (defun add-event-modifier (string e) + (let ((symbol (if (symbolp e) e (car e)))) + (setq symbol (intern (concat string (symbol-name symbol)))) + (if (symbolp e) + symbol + (cons symbol (cdr e))))) The character translation function gets one argument, which is the prompt that was specified in read-key-sequence--or nil if the key @@ -4367,8 +4374,8 @@ New low-level Lisp features make it possible to write Lisp programs to save text properties in files, and read text properties from files. You can program any file format you like. -The variable `write-region-annotation-functions' should contain a list -of functions to be run by `write-region' to encode text properties in +The variable 'write-region-annotation-functions' should contain a list +of functions to be run by 'write-region' to encode text properties in some fashion as annotations to the text that is written. Each function in the list is called with two arguments: the start and @@ -4384,13 +4391,13 @@ add there. Each list returned by one of these functions must be already sorted in increasing order by POSITION. If there is more than one function, -`write-region' merges the lists destructively into one sorted list. +'write-region' merges the lists destructively into one sorted list. -When `write-region' actually writes the text from the buffer to the +When 'write-region' actually writes the text from the buffer to the file, it intermixes the specified annotations at the corresponding positions. All this takes place without modifying the buffer. -The variable `after-insert-file-functions' should contain a list of +The variable 'after-insert-file-functions' should contain a list of functions to be run each time a file's contents have been inserted into a buffer. Each function receives one argument, the length of the inserted text; point indicates the start of that text. The function @@ -4400,7 +4407,7 @@ value returned by one function is used as the argument to the next. These functions should always return with point at the beginning of the inserted text. -The intended use of `after-insert-file-functions' is for converting +The intended use of 'after-insert-file-functions' is for converting some sort of textual annotations into actual text properties. But many other uses may be possible. @@ -4453,16 +4460,16 @@ mode might want to set this to '("." "(" ")") or some such. ** Comint output hook. -There is now a hook, comint-output-filter-hook, that is run-hooks'ed by the -output filter, comint-output-filter. This is useful for scrolling (see +There is now a hook, 'comint-output-filter-hook', that is run by the +output filter, 'comint-output-filter'. This is useful for scrolling (see below), but also things like processing output for specific text, output highlighting, etc. So that such output processing may be done efficiently, there is a new -variable, comint-last-output-start, that records the position of the start of +variable, 'comint-last-output-start', that records the position of the start of the last output inserted into the buffer (effectively the previous value of process-mark). Output processing functions should process the text -between comint-last-output-start (or perhaps the beginning of the line that +between 'comint-last-output-start' (or perhaps the beginning of the line that the position lies on) and process-mark. ** Comint scrolling. @@ -4478,8 +4485,8 @@ possible. But, then again, there is a comint-show-maximum-output command. The input following point is not deleted when moving around the input history (with M-p etc.). Emacs maintainers may not like this. However, I feel this -is a useful feature. The simple remedy is to put end-of-line in before -delete-region in comint-previous-matching-input. +is a useful feature. The simple remedy is to put 'end-of-line' in before +'delete-region' in 'comint-previous-matching-input'. The input history retrieval commands still wrap-around the input ring, unlike Emacs command history. @@ -4495,23 +4502,23 @@ sessions. ** Another simpler package saveplace.el records your position in each file when you kill its buffer (or kill Emacs), and jumps to the same position when you visit the file again (even in another Emacs -session). Use `toggle-save-place' to turn on place-saving in a given file; +session). Use 'toggle-save-place' to turn on place-saving in a given file; use (setq-default save-place t) to turn it on for all files. ** In Outline mode, you can now customize how to compute the level of a -heading line. Set `outline-level' to a function of no arguments which +heading line. Set 'outline-level' to a function of no arguments which returns the level, assuming point is at the beginning of a heading line. ** You can now specify the prefix key to use for Outline minor mode. -(The default is C-c.) Set the variable outline-minor-mode-prefix to +(The default is C-c.) Set the variable 'outline-minor-mode-prefix' to the key sequence you want to use (as a string or vector). ** In Bibtex mode, C-c e has been changed to C-c C-b. This is because C-c followed by a letter is reserved for users. -** The `mod' function is no longer an alias for `%', but is a separate function -that yields a result with the same sign as the divisor. `floor' now takes an +** The 'mod' function is no longer an alias for `%', but is a separate function +that yields a result with the same sign as the divisor. 'floor' now takes an optional second argument, which divides the first argument before the floor is taken. @@ -4542,7 +4549,7 @@ does for windows. command history. ** If the directory containing the Emacs executable has a sibling named -`lisp', that `lisp' directory is added to the end of `load-path' +'lisp', that 'lisp' directory is added to the end of 'load-path' (provided you don't override the normal value with the EMACSLOADPATH environment variable). This feature may make it easier to move an installed Emacs from place to place. @@ -4568,9 +4575,9 @@ COMPATIBLE with the old (version 18) format. See the documentation of the variable calendar-holidays for details of the new, improved format. -The hook `diary-display-hook' has been split into two: +The hook 'diary-display-hook' has been split into two: diary-display-hook which should be used ONLY for the display and -`diary-hook' which should be used for appointment notification. If +'diary-hook' which should be used for appointment notification. If diary-display-hook is nil (the default), simple-diary-display is used. This allows the diary hooks to be correctly set with add-hook. @@ -4592,23 +4599,23 @@ events, which are then discarded if not defined. Triple events that are not defined convert to the corresponding double event; if that is also not defined, it may convert further. -** The new function event-click-count returns the number of clicks, +** The new function 'event-click-count' returns the number of clicks, from an event which is a list. It is 1 for an ordinary click, drag, or button-down event, 2 for a double event, and 3 or more for a triple event. -** The new function previous-frame is like next-frame, but moves +** The new function 'previous-frame' is like 'next-frame', but moves around through the set of existing frames in the opposite order. -** The post-command-hook now runs even after commands that get an error +** The 'post-command-hook' now runs even after commands that get an error and return to top level. As a consequence of the same change, this hook also runs before Emacs reads the first command. That might sound -paradoxical, as if this hook were the same as the pre-command-hook. +paradoxical, as if this hook were the same as the 'pre-command-hook'. Actually, they are not similar; the latter runs before *execution* of a command, but after it has been read. ** You can turn off the text property hooks that run when point moves -to certain places in the buffer, by binding inhibit-point-motion-hooks +to certain places in the buffer, by binding 'inhibit-point-motion-hooks' to a non-nil value. ** Inserting a string with no text properties into the buffer normally @@ -4642,7 +4649,7 @@ rear-sticky for the property, and the property is non-nil, it dominates. Otherwise, the following character's property value is used if it is front-sticky for that property. -** If you give a character a non-nil `invisible' text property, the +** If you give a character a non-nil 'invisible' text property, the character does not appear on the screen. This works much like selective display. @@ -4652,12 +4659,12 @@ versions. ** In Info, when you go to a node, it runs the normal hook Info-selection-hook. -** You can use the new function `invocation-directory' to get the name +** You can use the new function 'invocation-directory' to get the name of the directory containing the Emacs executable that was run. -** Entry to the minibuffer runs the normal hook minibuffer-setup-hook. +** Entry to the minibuffer runs the normal hook 'minibuffer-setup-hook'. -** The new function minibuffer-window-active-p takes one argument, a +** The new function 'minibuffer-window-active-p' takes one argument, a minibuffer window, and returns t if the window is currently active. @@ -4668,7 +4675,7 @@ minibuffer window, and returns t if the window is currently active. you can select a completion by clicking mouse button 2 on that completion. -** Use the command `list-faces-display' to display a list of +** Use the command 'list-faces-display' to display a list of all the currently defined faces, showing what they look like. ** Menu bar items from local maps now come after the usual items. @@ -4690,9 +4697,9 @@ suitable menu bar items to other major modes. ** The key binding C-x a C-h has been eliminated. This is because it got in the way of the general feature of typing C-h after a prefix character. If you want to run -inverse-add-global-abbrev, you can use C-x a - or C-x a i g instead. +'inverse-add-global-abbrev', you can use C-x a - or C-x a i g instead. -** If you set the variable `rmail-mail-new-frame' to a non-nil value, +** If you set the variable 'rmail-mail-new-frame' to a non-nil value, all the Rmail commands to send mail make a new frame to do it in. When you send the message, or use the menu bar command not to send it, that frame is deleted. @@ -4703,43 +4710,43 @@ the message to it in Rmail format if it is an Rmail file, and in inbox file format otherwise. C-o and o are different only when you specify a new file. -** The function `copy-face' now takes an optional fourth argument +** The function 'copy-face' now takes an optional fourth argument NEW-FRAME. If you specify this, it copies the definition of face OLD-FACE on frame FRAME to face NEW-NAME on frame NEW-FRAME. ** A local map can now cancel out one of the global map's menu items. -Just define that subcommand of the menu item with `undefined' -as the definition. For example, this cancels out the `Buffers' item +Just define that subcommand of the menu item with 'undefined' +as the definition. For example, this cancels out the 'Buffers' item for the current major mode: (local-set-key [menu-bar buffer] 'undefined) ** To put global items at the end of the menu bar, use the new variable -`menu-bar-final-items'. It should be a list of symbols--event types +'menu-bar-final-items'. It should be a list of symbols--event types bound in the menu bar. The menu bar items for these symbols are moved to the end. -** The list returned by `buffer-local-variables' now contains cons-cell +** The list returned by 'buffer-local-variables' now contains cons-cell elements of the form (SYMBOL . VALUE) only for buffer-local variables that have values. For unbound buffer-local variables, the variable name (symbol) appears directly as an element of the list. -** The `modification-hooks' property of a character no longer affects +** The 'modification-hooks' property of a character no longer affects insertion; it runs only for deletion and modification of the character. -To detect insertion, use `insert-in-front-hooks' and -`insert-behind-hooks' properties. The former runs when text is +To detect insertion, use 'insert-in-front-hooks' and +'insert-behind-hooks' properties. The former runs when text is inserted immediately preceding the character that has the property; the latter runs when text is inserted immediately following the character. ** Buffer modification now runs hooks belonging to overlays as well as hooks belonging to characters. If an overlay has a -`modification-hooks' property, it applies to any change to text in the +'modification-hooks' property, it applies to any change to text in the overlay, and any insertion within the overlay. If the overlay has a -`insert-in-front-hooks' property, it runs for insertion at the +'insert-in-front-hooks' property, it runs for insertion at the beginning boundary of the overlay. If the overlay has an -`insert-behind-hooks' property, it runs for insertion at the end +'insert-behind-hooks' property, it runs for insertion at the end boundary of the overlay. The values of these properties should be lists of functions. Each @@ -4747,7 +4754,7 @@ function is called, receiving as arguments the overlay in question, followed by the bounds of the range being modified. ** The new `-name NAME' option directs Emacs to search for its X -resources using the name `NAME', and sets the title of the initial +resources using the name 'NAME', and sets the title of the initial frame. This argument was added for consistency with other X clients. ** The new `-xrm DATABASE' option tells Emacs to treat the string @@ -4786,7 +4793,7 @@ Emacs searches for X resources The paths in the variables XFILESEARCHPATH, XUSERFILESEARCHPATH, and XAPPLRESDIR may contain %-escapes (like the control strings passed to -the Emacs lisp `format' function or C printf function), which Emacs expands. +the Emacs lisp 'format' function or C printf function), which Emacs expands. %N is replaced by the string "Emacs" wherever it occurs. %T is replaced by "app-defaults" wherever it occurs. @@ -4823,29 +4830,29 @@ If XFILESEARCHPATH is unset, Emacs uses the default value This feature was added for consistency with other X applications. -** The new function `text-property-any' scans the region of text from -START to END to see if any character's property PROP is `eq' to +** The new function 'text-property-any' scans the region of text from +START to END to see if any character's property PROP is 'eq' to VALUE. If so, it returns the position of the first such character. Otherwise, it returns nil. The optional fifth argument, OBJECT, specifies the string or buffer to be examined. -** The new function `text-property-not-all' scans the region of text from -START to END to see if any character's property PROP is not `eq' to +** The new function 'text-property-not-all' scans the region of text from +START to END to see if any character's property PROP is not 'eq' to VALUE. If so, it returns the position of the first such character. Otherwise, it returns nil. The optional fifth argument, OBJECT, specifies the string or buffer to be examined. -** The function `delete-windows-on' now takes an optional second +** The function 'delete-windows-on' now takes an optional second argument FRAME, which specifies which frames it should affect. - + If FRAME is nil or omitted, then `delete-windows-on' deletes windows + + If FRAME is nil or omitted, then 'delete-windows-on' deletes windows showing BUFFER (its first argument) on all frames. - + If FRAME is t, then `delete-windows-on' only deletes windows on the + + If FRAME is t, then 'delete-windows-on' only deletes windows on the selected frame; other frames are unaffected. - + If FRAME is a frame, then `delete-windows-on' only deletes windows on + + If FRAME is a frame, then 'delete-windows-on' only deletes windows on the given frame; other frames are unaffected. @@ -4858,21 +4865,21 @@ continue the drag beyond the boundaries of the window, Emacs scrolls the window at a steady rate until you either move the mouse back into the window or release the button. -** RET now exits `query-replace' and `query-replace-regexp'; this makes it +** RET now exits 'query-replace' and 'query-replace-regexp'; this makes it more consistent with the incremental search facility, which uses RET to end the search. ** In C mode, C-c C-u now runs c-up-conditional. C-c C-n and C-c C-p now run new commands that move forward -and back over balanced sets of C conditionals (c-forward-conditional -and c-backward-conditional). +and back over balanced sets of C conditionals ('c-forward-conditional' +and 'c-backward-conditional'). ** The Edit entry in the menu bar has a new alternative: "Choose Next Paste". It gives you a menu showing the various strings in the kill ring; click on one to select it as the text to be yanked ("pasted") the next time you yank. -** If you enable Transient Mark mode and set `mark-even-if-inactive' to +** If you enable Transient Mark mode and set 'mark-even-if-inactive' to non-nil, then the region is highlighted in a transient fashion just as normally in Transient Mark mode, but the mark really remains active all the time; commands that use the region can be used even if the @@ -4882,33 +4889,33 @@ region highlighting turns off. that start with that prefix. ** The VC package now searches for version control commands in the -directories named by the variable `vc-path'; its value should be a +directories named by the variable 'vc-path'; its value should be a list of strings. ** If you are visiting a file that has locks registered under RCS, VC now displays each lock's owner and version number in the mode line -after the string `RCS'. If there are no locks, VC displays the head +after the string 'RCS'. If there are no locks, VC displays the head version number. -** When using X, if you load the `paren' library, Emacs automatically +** When using X, if you load the 'paren' library, Emacs automatically underlines or highlights the matching paren whenever point is next to the outside of a paren. When point is before an open-paren, this shows the matching close; when point is after a close-paren, this shows the matching open. -** The new function `define-key-after' is like `define-key', +** The new function 'define-key-after' is like 'define-key', but takes an extra argument AFTER. It places the newly defined binding after the binding for the event AFTER. -** `accessible-keymaps' now takes an optional second argument, PREFIX. +** 'accessible-keymaps' now takes an optional second argument, PREFIX. If PREFIX is non-nil, it means the value should include only maps for keys that start with PREFIX. -`describe-bindings' also accepts an optional argument PREFIX which +'describe-bindings' also accepts an optional argument PREFIX which means to describe only the keys that start with PREFIX. -** The variable `prefix-help-command' hold a command to run to display help -whenever the character `help-char' follows a prefix key and does not have +** The variable 'prefix-help-command' hold a command to run to display help +whenever the character 'help-char' follows a prefix key and does not have a key binding in that context. ** Emacs now detects double- and triple-mouse clicks. A single mouse @@ -4928,18 +4935,18 @@ their timestamps. To count as double- and triple-clicks, mouse clicks must be at the same location as the first click, and the number of milliseconds between the first release and the second must be less than the value -of the lisp variable `double-click-time'. Setting `double-click-time' +of the lisp variable 'double-click-time'. Setting 'double-click-time' to nil disables multi-click detection. Setting it to t removes the time limit; Emacs then detects multi-clicks by position only. -If `read-key-sequence' finds no binding for a double-click event, but +If 'read-key-sequence' finds no binding for a double-click event, but the corresponding single-click event would be bound, -`read-key-sequence' demotes it to a single-click. Similarly, it +'read-key-sequence' demotes it to a single-click. Similarly, it demotes unbound triple-clicks to double- or single-clicks. This means you don't have to distinguish between single- and multi-clicks if you don't want to. -Emacs reports all clicks after the third as `triple-mouse-N' clicks, +Emacs reports all clicks after the third as 'triple-mouse-N' clicks, but increments the click count after POSITION. For example, a fourth click, soon after the third and at the same location, produces a pair of events of the form: @@ -4952,25 +4959,25 @@ slightly. If a mouse event includes a position list of the form: this denotes exactly the same position as the list: (WINDOW PLACE-SYMBOL (COLUMN . ROW) TIMESTAMP) That is, the event occurred over a non-textual area of the frame, -specified by PLACE-SYMBOL, a symbol like `mode-line' or -`vertical-scroll-bar'. +specified by PLACE-SYMBOL, a symbol like 'mode-line' or +'vertical-scroll-bar'. Enclosing PLACE-SYMBOL in a singleton list does not change the -position denoted, but the `read-key-sequence' function uses the +position denoted, but the 'read-key-sequence' function uses the presence or absence of the singleton list to tell whether or not it should prefix the event with its place symbol. -Normally, `read-key-sequence' prefixes mouse events occurring over +Normally, 'read-key-sequence' prefixes mouse events occurring over non-textual areas with their PLACE-SYMBOLs, to select the sub-keymap appropriate for the event; for example, clicking on the mode line produces a sequence like [mode-line (mouse-1 POSN)] However, if lisp code elects to unread the resulting key sequence by -placing it in the `unread-command-events' variable, it is important -that `read-key-sequence' not insert the prefix symbol again; that +placing it in the 'unread-command-events' variable, it is important +that 'read-key-sequence' not insert the prefix symbol again; that would produce a malformed key sequence like [mode-line mode-line (mouse-1 POSN)] -For this reason, `read-key-sequence' encloses the event's PLACE-SYMBOL +For this reason, 'read-key-sequence' encloses the event's PLACE-SYMBOL in a singleton list when it first inserts the prefix, but doesn't insert the prefix when processing events whose PLACE-SYMBOLs are already thus enclosed. @@ -4979,7 +4986,7 @@ already thus enclosed. * Changes in version 19.15. -** `make-frame-visible', which uniconified frames, is now a command, +** 'make-frame-visible', which uniconified frames, is now a command, and thus may be bound to a key. This makes sense because frames respond to user input while iconified. @@ -4998,11 +5005,11 @@ at the other end. Emacs has only one secondary selection at any time. Starting to set a new one cancels any previous one. The secondary selection displays -using a face named `secondary-selection'. +using a face named 'secondary-selection'. -** There's a new way to request use of Supercite (sc.el). Do this: +** New hook 'mail-citation-hook'. E.g. to request use of Supercite (sc.el): - (add-hook 'mail-citation-hook 'sc-cite-original) + (add-hook 'mail-citation-hook #'sc-cite-original) Currently this works with Rmail. In the future, other Emacs based mail-readers should be modified to understand this hook also. @@ -5011,7 +5018,7 @@ for those other mail readers. ** When a regular expression contains `\(...\)' inside a repetition operator such as `*' or `+', and you ask about the range that was matched -using `match-beginning' and `match-end', the range you get corresponds +using 'match-beginning' and 'match-end', the range you get corresponds to the *last* repetition *only*. In Emacs 18, you would get a range corresponding to all the repetitions. @@ -5027,18 +5034,18 @@ and thus didn't document it.) * Changes in version 19.14. -** To modify read-only text, bind the variable `inhibit-read-only' +** To modify read-only text, bind the variable 'inhibit-read-only' to a non-nil value. If the value is t, then all reasons that might -make text read-only are inhibited (including `read-only' text properties). -If the value is a list, then a `read-only' property is inhibited -if it is `memq' in the list. +make text read-only are inhibited (including 'read-only' text properties). +If the value is a list, then a 'read-only' property is inhibited +if it is 'memq' in the list. -** If you call `get-buffer-window' passing t as its second argument, it +** If you call 'get-buffer-window' passing t as its second argument, it will only search for windows on visible frames. Previously, passing t -as the second argument caused `get-buffer-window' to search all +as the second argument caused 'get-buffer-window' to search all frames, visible or not. -** If you call `other-buffer' with a nil or omitted second argument, it +** If you call 'other-buffer' with a nil or omitted second argument, it will ignore buffers displayed windows on any visible frame, not just the selected frame. @@ -5048,22 +5055,22 @@ to the window or frame that you want. ** The command M-( now inserts spaces outside the open-parentheses in some cases--depending on the syntax classes of the surrounding -characters. If the variable `parens-dont-require-spaces' is non-nil, +characters. If the variable 'parens-dont-require-spaces' is non-nil, it inhibits insertion of these spaces. ** The GUD package now supports the debugger known as xdb on HP/UX -systems. Use M-x xdb. The variable `gud-xdb-directories' lets you +systems. Use M-x xdb. The variable 'gud-xdb-directories' lets you specify a list of directories to search for source code. ** If you are using the mailabbrev package, you should note that its -function for defining an alias is now called `define-mail-abbrev'. -This package no longer contains a definition for `define-mail-alias'; +function for defining an alias is now called 'define-mail-abbrev'. +This package no longer contains a definition for 'define-mail-alias'; that name is used only in mailaliases. ** Inserted characters now inherit the properties of the text before them, by default, rather than those of the following text. -** The function `insert-file-contents' now takes optional arguments BEG +** The function 'insert-file-contents' now takes optional arguments BEG and END that specify which part of the file to insert. BEG defaults to 0 (the beginning of the file), and END defaults to the end of the file. @@ -5073,7 +5080,7 @@ If you specify BEG or END, then the argument VISIT must be nil. * Changes in version 19.13. -** Magic file names can now handle the `load' operation. +** Magic file names can now handle the 'load' operation. ** Bibtex mode now sets up special entries in the menu bar. @@ -5094,7 +5101,7 @@ We may move them again for greater consistency with other modes. * Changes in version 19.12. ** You can now make many of the sort commands ignore case by setting -`sort-fold-case' to a non-nil value. +'sort-fold-case' to a non-nil value. @@ -5102,15 +5109,15 @@ We may move them again for greater consistency with other modes. ** Supercite is installed. -** `write-file-hooks' functions that return non-nil are responsible +** 'write-file-hooks' functions that return non-nil are responsible for making a backup file if you want that to be done. To do so, execute the following code: (or buffer-backed-up (backup-buffer)) You might wish to save the file modes value returned by -`backup-buffer' and use that to set the mode bits of the file -that you write. This is what `basic-save-buffer' does when +'backup-buffer' and use that to set the mode bits of the file +that you write. This is what 'basic-save-buffer' does when it writes a file in the usual way. (This is not actually new, but wasn't documented before.) @@ -5119,12 +5126,12 @@ it writes a file in the usual way. * Changes in version 19.10. -** The command `repeat-complex-command' is now on C-x ESC ESC. +** The command 'repeat-complex-command' is now on C-x ESC ESC. It used to be bound to C-x ESC. The reason for this change is to make function keys work after C-x. -** The variable `highlight-nonselected-windows' now controls whether +** The variable 'highlight-nonselected-windows' now controls whether the region is highlighted in windows other than the selected window (in Transient Mark mode only, of course, and currently only when using X). @@ -5139,26 +5146,26 @@ buffer text according to the ISO Latin-1 standard. With a prefix argument, this command enables European character display if and only if the argument is positive. -** The `-i' command-line argument tells Emacs to use a picture of the +** The '-i' command-line argument tells Emacs to use a picture of the GNU gnu as its icon, instead of letting the window manager choose an icon for it. This option used to insert a file into the current -buffer; use `-insert' to do that now. +buffer; use '-insert' to do that now. -** The `configure' script now supports `--prefix' and `--exec-prefix' +** The 'configure' script now supports '--prefix' and '--exec-prefix' options. -The `--prefix=PREFIXDIR' option specifies where the installation process +The '--prefix=PREFIXDIR' option specifies where the installation process should put emacs and its data files. This defaults to `/usr/local'. - Emacs (and the other utilities users run) go in PREFIXDIR/bin - (unless the `--exec-prefix' option says otherwise). + (unless the '--exec-prefix' option says otherwise). - The architecture-independent files go in PREFIXDIR/lib/emacs/VERSION (where VERSION is the version number of Emacs, like `19.7'). - The architecture-dependent files go in PREFIXDIR/lib/emacs/VERSION/CONFIGURATION (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2), - unless the `--exec-prefix' option says otherwise. + unless the '--exec-prefix' option says otherwise. -The `--exec-prefix=EXECDIR' option allows you to specify a separate +The '--exec-prefix=EXECDIR' option allows you to specify a separate portion of the directory tree for installing architecture-specific files, like executables and utility programs. If specified, - Emacs (and the other utilities users run) go in EXECDIR/bin, and @@ -5166,14 +5173,14 @@ files, like executables and utility programs. If specified, EXECDIR/lib/emacs/VERSION/CONFIGURATION. EXECDIR/bin should be a directory that is normally in users' PATHs. -** When running under X, the new lisp function `x-list-fonts' +** When running under X, the new lisp function 'x-list-fonts' allows code to find out which fonts are available from the X server. The first argument PATTERN is a string, perhaps with wildcard characters; the * character matches any substring, and the ? character matches any single character. PATTERN is case-insensitive. If the optional arguments FACE and FRAME are specified, then -`x-list-fonts' returns only fonts the same size as FACE on FRAME. +'x-list-fonts' returns only fonts the same size as FACE on FRAME. @@ -5188,7 +5195,7 @@ their sizes, or reused by other processes if Emacs doesn't need it. for input, which often avoids the need to do these things while you are typing. -The variable `auto-save-timeout' says how many seconds Emacs should +The variable 'auto-save-timeout' says how many seconds Emacs should wait, after you stop typing, before it does an auto save and a garbage collection. @@ -5200,12 +5207,12 @@ warning again. If you reenable Auto Save mode in that buffer, Emacs will start saving it again with no further warnings. -** A new minor mode called Line Number mode displays the current line +** A new minor mode called 'line-number-mode' displays the current line number in the mode line, updating it as necessary when you move point. However, if the buffer is very large (larger than the value of -`line-number-display-limit'), then the line number doesn't appear. +'line-number-display-limit'), then the line number doesn't appear. This is because computing the line number can be painfully slow if the buffer is very large. @@ -5215,7 +5222,7 @@ buffer is very large. directions. ** You can suppress next-line's habit of inserting a newline when -called at the end of a buffer by setting next-line-add-newlines to nil +called at the end of a buffer by setting 'next-line-add-newlines' to nil (it defaults to t). ** You can now get back recent minibuffer inputs conveniently. While @@ -5233,8 +5240,8 @@ The history feature is available for all uses of the minibuffer, but there are separate history lists for different kinds of input. For example, there is a list for file names, used by all the commands that read file names. There is a list for arguments of commands like -`query-replace'. There are also very specific history lists, such -as the one that `compile' uses for compilation commands. +'query-replace'. There are also very specific history lists, such +as the one that 'compile' uses for compilation commands. ** You can now display text in a mixture of fonts and colors, using the "face" feature, together with the overlay and text property features. @@ -5258,30 +5265,30 @@ C-x n is a prefix for narrowing. C-x a is a prefix for abbrev commands. C-x r C-SPC -C-x r SPC point-to-register (Was C-x /) -C-x r j jump-to-register (Was C-x j) -C-x r s copy-to-register (Was C-x x) -C-x r i insert-register (Was C-x g) -C-x r r copy-rectangle-to-register (Was C-x r) -C-x r k kill-rectangle -C-x r y yank-rectangle -C-x r o open-rectangle -C-x r f frame-configuration-to-register +C-x r SPC 'point-to-register' (Was C-x /) +C-x r j 'jump-to-register' (Was C-x j) +C-x r s 'copy-to-register' (Was C-x x) +C-x r i 'insert-register' (Was C-x g) +C-x r r 'copy-rectangle-to-register' (Was C-x r) +C-x r k 'kill-rectangle' +C-x r y 'yank-rectangle' +C-x r o 'open-rectangle' +C-x r f 'frame-configuration-to-register' (This saves the state of all windows in all frames.) -C-x r w window-configuration-to-register +C-x r w 'window-configuration-to-register' (This saves the state of all windows in the selected frame.) (Use C-x r j to restore a configuration saved with C-x r f or C-x r w.) -C-x n n narrow-to-region (Was C-x n) -C-x n p narrow-to-page (Was C-x p) -C-x n w widen (Was C-x w) +C-x n n 'narrow-to-region' (Was C-x n) +C-x n p 'narrow-to-page' (Was C-x p) +C-x n w 'widen' (Was C-x w) -C-x a l add-mode-abbrev (Was C-x C-a) -C-x a g add-global-abbrev (Was C-x +) -C-x a i l inverse-add-mode-abbrev (Was C-x C-h) -C-x a i g inverse-add-global-abbrev (Was C-x -) -C-x a e expand-abbrev (Was C-x ') +C-x a l 'add-mode-abbrev' (Was C-x C-a) +C-x a g 'add-global-abbrev' (Was C-x +) +C-x a i l 'inverse-add-mode-abbrev' (Was C-x C-h) +C-x a i g 'inverse-add-global-abbrev' (Was C-x -) +C-x a e 'expand-abbrev' (Was C-x ') (The old key bindings C-x /, C-x j, C-x x and C-x g have not yet been removed.) @@ -5300,12 +5307,12 @@ but that you don't want to keep in buffers all the time. ** The keys M-g (fill-region) and C-x a (append-to-buffer) have been eliminated. -** The new command `string-rectangle' inserts a specified string on +** The new command 'string-rectangle' inserts a specified string on each line of the region-rectangle. -** C-x 4 r is now `find-file-read-only-other-window'. +** C-x 4 r is now 'find-file-read-only-other-window'. -** C-x 4 C-o is now `display-buffer', which displays a specified buffer +** C-x 4 C-o is now 'display-buffer', which displays a specified buffer in another window without selecting it. ** Picture mode has been substantially improved. The picture editing commands @@ -5330,17 +5337,17 @@ to enable and disable the new mode. M-x outline-mode is unchanged; it still switches to Outline mode as a major mode. -** The default setting of `version-control' comes from the environment +** The default setting of 'version-control' comes from the environment variable VERSION_CONTROL. ** The user option for controlling whether files can set local -variables is now called `enable-local-variables'. A value of t means +variables is now called 'enable-local-variables'. A value of t means local-variables lists are obeyed; nil means they are ignored; anything else means query the user. -The user option for controlling use of the `eval' local variable is -now called is `enable-local-eval'; its values are interpreted like -those of `enable-local-variables'. +The user option for controlling use of the 'eval' local variable is +now called is 'enable-local-eval'; its values are interpreted like +those of 'enable-local-variables'. ** X Window System changes: @@ -5366,8 +5373,8 @@ one in the future. deletion. ** The variables that control how much undo information to save have -been renamed to `undo-limit' and `undo-strong-limit'. They used to be -called `undo-threshold' and `undo-high-threshold'. +been renamed to 'undo-limit' and 'undo-strong-limit'. They used to be +called 'undo-threshold' and 'undo-high-threshold'. ** You can now use kill commands in read-only buffers. They don't actually change the buffer, and Emacs will beep and warn you that the @@ -5378,7 +5385,7 @@ the kill ring, so you can yank it into other buffers. M-^ deletes the prefix (if it occurs) after the newline that it deletes. -** C-M-l now runs the command `reposition-window'. It scrolls the +** C-M-l now runs the command 'reposition-window'. It scrolls the window heuristically in a way designed to get useful information onto the screen. @@ -5433,14 +5440,14 @@ subsequently. You can no longer use M-, to find the next similar tag; you must use M-. with a prefix argument, instead. The motive for this change is so that you can more reliably use -M-, to resume a suspended `tags-search' or `tags-query-replace'. +M-, to resume a suspended 'tags-search' or 'tags-query-replace'. -** C-x s (`save-some-buffers') now gives you more options when it asks -whether to save a particular buffer. In addition to `y' or `n', you +** C-x s ('save-some-buffers') now gives you more options when it asks +whether to save a particular buffer. In addition to 'y' or 'n', you can answer `!' to save all the remaining buffers, `.' to save this buffer but not save any others, ESC to stop saving and exit the command, and C-h to get help. These options are analogous to those -of `query-replace'. +of 'query-replace'. ** M-x make-symbolic-link does not expand its first argument. This lets you make a link with a target that is a relative file name. @@ -5454,22 +5461,22 @@ makes filling work conveniently. Each bunch of grouped entries is one paragraph, and each collection of entries from one person on one day is considered a page. -** The `comment-region' command adds comment delimiters to the lines that +** The 'comment-region' command adds comment delimiters to the lines that start in the region, thus commenting them out. With a negative argument, it deletes comment delimiters from the lines in the region--this cancels -the effect of `comment-region' without an argument. +the effect of 'comment-region' without an argument. -With a positive argument, `comment-region' adds comment delimiters +With a positive argument, 'comment-region' adds comment delimiters but duplicates the last character of the comment start sequence as many times as the argument specifies. This is a way of calling attention to the comment. In Lisp, you should use an argument at least two, because the indentation convention for single semicolon comments does not leave them at the beginning of a line. -** If `split-window-keep-point' is non-nil, C-x 2 tries to avoid +** If 'split-window-keep-point' is non-nil, C-x 2 tries to avoid shifting any text on the screen by putting point in whichever window happens to contain the screen line the cursor is already on. -The default is that `split-window-keep-point' is non-nil on slow +The default is that 'split-window-keep-point' is non-nil on slow terminals. ** M-x super-apropos is like M-x apropos except that it searches both @@ -5506,10 +5513,10 @@ compilation buffers, and any Emacs feature which creates a special buffer with a particular name. ** M-x compare-windows with a prefix argument ignores changes in whitespace. -If `compare-ignore-case' is non-nil, then differences in case are also +If 'compare-ignore-case' is non-nil, then differences in case are also ignored. -** `backward-paragraph' is now bound to M-{ by default, and `forward-paragraph' +** 'backward-paragraph' is now bound to M-{ by default, and 'forward-paragraph' to M-}. Originally, these commands were bound to M-[ and M-], but they were running into conflicts with the use of function keys. On many terminals, function keys send a sequence beginning ESC-[, so many users have defined this @@ -5519,25 +5526,25 @@ as a prefix key. default; these commands seem to be often hit by accident, and can be quite destructive if their effects are not noticed immediately. -** The function `erase-buffer' is now interactive, but disabled by default. +** The function 'erase-buffer' is now interactive, but disabled by default. ** When visiting a new file, Emacs attempts to abbreviate the file's -path using the symlinks listed in `directory-abbrev-alist'. +path using the symlinks listed in 'directory-abbrev-alist'. ** When you visit the same file in under two names that translate into the same name once symbolic links are handled, Emacs warns you that you have two buffers for the same file. ** If you wish to avoid visiting the same file in two buffers under -different names, set the variable `find-file-existing-other-name' -non-nil. Then `find-file' uses the existing buffer visiting the file, +different names, set the variable 'find-file-existing-other-name' +non-nil. Then 'find-file' uses the existing buffer visiting the file, no matter which of the file's names you specify. -** If you set `find-file-visit-truename' non-nil, then the file name +** If you set 'find-file-visit-truename' non-nil, then the file name recorded for a buffer is the file's truename (in which all symbolic links have been removed), rather than the name you specify. Setting -`find-file-visit-truename' also implies the effect of -`find-file-existing-other-name'. +'find-file-visit-truename' also implies the effect of +'find-file-existing-other-name'. ** C-x C-v now inserts the entire current file name in the minibuffer. This is convenient if you made a small mistake in typing it. Point @@ -5550,40 +5557,40 @@ it. ** C-x q now uses ESC to terminate all iterations of the keyboard macro, rather than C-d as before. -** Use the command `setenv' to set an individual environment variable +** Use the command 'setenv' to set an individual environment variable for Emacs subprocesses. Specify a variable name and a value, both as strings. This command applies only to subprocesses yet to be started. -** Use `rot13-other-window' to examine a buffer with rot13. +** Use 'rot13-other-window' to examine a buffer with rot13. This command does not change the text in the buffer. Instead, it creates a window with a funny display table that applies the code when displaying the text. ** The command `M-x version' now prints the current Emacs version; The -`version' command is an alias for the `emacs-version' command. +'version' command is an alias for the 'emacs-version' command. ** More complex changes in existing packages. -*** `fill-nonuniform-paragraphs' is a new command, much like -`fill-individual-paragraphs' except that only separator lines separate +*** 'fill-nonuniform-paragraphs' is a new command, much like +'fill-individual-paragraphs' except that only separator lines separate paragraphs. Since this means that the lines of one paragraph may have different amounts of indentation, the fill prefix used is the smallest amount of indentation of any of the lines of the paragraph. -*** Filling is now partially controlled by a new minor mode, Adaptive -Fill mode. When this mode is enabled (and it is enabled by default), -if you use M-x fill-region-as-paragraph on an indented paragraph and -you don't have a fill prefix, it uses the indentation of the second -line of the paragraph as the fill prefix. +*** Filling is now partially controlled by a new minor mode, +'adaptive-fill-mode'. When this mode is enabled (and it is enabled +by default), if you use M-x fill-region-as-paragraph on an indented +paragraph and you don't have a fill prefix, it uses the indentation +of the second line of the paragraph as the fill prefix. Adaptive Fill mode doesn't have much effect on M-q in most major modes, because an indented line will probably count as a paragraph starter and thus each line of an indented paragraph will be considered a paragraph of its own. -*** M-q in C mode now runs `c-fill-paragraph', which is designed +*** M-q in C mode now runs 'c-fill-paragraph', which is designed for filling C comments. (We assume you don't want to fill the code in a C program.) @@ -5610,7 +5617,7 @@ i Insert this word in your private dictionary r Replace the word this time with a string typed by you. When the Ispell process starts, it reads your private dictionary which -is the file `~/ispell.words'. If you "insert" words with the `i' command, +is the file `~/ispell.words'. If you "insert" words with the 'i' command, these words are added to that file, but not right away--only at the end of the interactive replacement process. @@ -5654,7 +5661,7 @@ superseding C-c C-y (copy-last-shell-input): The C-x C-a bindings are also active in source files. *** The old TeX mode bindings of M-{ and M-} have been moved to C-c { -and C-c }. (These commands are `up-list' and `tex-insert-braces'; +and C-c }. (These commands are 'up-list' and 'tex-insert-braces'; they are the TeX equivalents of M-( and M-).) This is because M-{ and M-} are now globally defined commands. @@ -5662,22 +5669,22 @@ and M-} are now globally defined commands. `%' is now a word-separator character in Mail mode. -`mail-signature', if non-nil, tells M-x mail to insert your +'mail-signature', if non-nil, tells M-x mail to insert your `.signature' file automatically. If you don't want your signature in a particular message, just delete it before you send the message. You can specify the text to insert at the beginning of each line when you use C-c C-y to yank the message you are replying to. Set -`mail-yank-prefix' to the desired string. A value of `nil' (the +'mail-yank-prefix' to the desired string. A value of 'nil' (the default) means to use indentation, as in Emacs 18. If you use just C-u as the prefix argument to C-c C-y, then it does not insert anything at the beginning of the lines, regardless of the value of -`mail-yank-prefix'. +'mail-yank-prefix'. If you like, you can expand mail aliases as abbrevs, as soon as you type them in. To enable this feature, execute the following: - (add-hook 'mail-setup-hook 'mail-abbrevs-setup) + (add-hook 'mail-setup-hook #'mail-abbrevs-setup) This can go in your .emacs file. @@ -5691,25 +5698,25 @@ Rmail by default gets new mail only from the system inbox file, not from `~/mbox'. In Rmail, you can retry sending a message that failed -by typing `M-m' on the failure message. +by typing 'M-m' on the failure message. By contrast, another new command M-x rmail-resend is used for forwarding a message and marking it as "resent from" you with header fields "Resent-From:" and "Resent-To:". -`e' is now the command to edit a message. -To expunge, type `x'. We know this will surprise people +'e' is now the command to edit a message. +To expunge, type 'x'. We know this will surprise people some of the time, but the surprise will not be disastrous--if -you type `e' meaning to expunge, just turn off editing with C-c C-c -and then type `x'. +you type 'e' meaning to expunge, just turn off editing with C-c C-c +and then type 'x'. Another new Rmail command is `<', which moves to the first message. This is for symmetry with `>'. -Use the `b' command to bury the Rmail buffer and its summary buffer, +Use the 'b' command to bury the Rmail buffer and its summary buffer, if any, removing both of them from display on the screen. -The variable `rmail-output-file-alist' now controls the default +The variable 'rmail-output-file-alist' now controls the default for the file to output a message to. In the Rmail summary buffer, all cursor motion commands select @@ -5724,7 +5731,7 @@ line. Conversely, motion and deletion commands in the Rmail buffer also update the summary buffer. If you set the variable -`rmail-redisplay-summary' to a non-nil value, then they bring the +'rmail-redisplay-summary' to a non-nil value, then they bring the summary buffer (if one exists) back onto the screen. C-M-t is a new command to make a summary by topic. It uses regexp @@ -5732,13 +5739,13 @@ matching against just the subjects of the messages to decide which messages to show in the summary. You can easily convert an Rmail file to system mailbox format with the -command `unrmail'. This command reads two arguments, the name of +command 'unrmail'. This command reads two arguments, the name of the Rmail file to convert, and the name of the new mailbox file. (This command does not change the Rmail file itself.) Rmail now handles Content Length fields in messages. -*** `mail-extract-address-components' unpacks mail addresses. +*** 'mail-extract-address-components' unpacks mail addresses. It takes an address as a string (the contents of the From field, for example) and returns a list of the form (FULL-NAME CANONICAL-ADDRESS). @@ -5747,7 +5754,7 @@ CANONICAL-ADDRESS). **** M-x c-up-conditional -In C mode, `c-up-conditional' moves back to the containing +In C mode, 'c-up-conditional' moves back to the containing preprocessor conditional, setting the mark where point was previously. @@ -5757,7 +5764,7 @@ conditional. When going backwards, `#elif' acts like `#else' followed by `#if'. When going forwards, `#elif' is ignored. **** In C mode, M-a and M-e are now defined as -`c-beginning-of-statement' and `c-end-of-statement'. +'c-beginning-of-statement' and 'c-end-of-statement'. **** In C mode, M-x c-backslash-region is a new command to insert or align `\' characters at the ends of the lines of the region, except @@ -5770,7 +5777,7 @@ whitespace before it. Otherwise, it inserts a new `\'. *** New features in info. When Info looks for an Info file, it searches the directories -in `Info-directory-list'. This makes it easy to install the Info files +in 'Info-directory-list'. This makes it easy to install the Info files that come with various packages. You can specify the path with the environment variable INFOPATH. @@ -5790,15 +5797,15 @@ next node in depth-first order (like `]'). DEL scrolls backwards in the current node; at the end, it moves to the previous node in depth-first order (like `['). -After a menu select, the info `up' command now restores point in the +After a menu select, the info 'up' command now restores point in the menu. The combination of this and the previous two changes means that repeated SPC keystrokes do the right (depth-first traverse forward) thing. `i STRING RET' moves to the node associated with STRING in the index or indices of this manual. If there is more than one match for -STRING, the `i' command finds the first match. +STRING, the 'i' command finds the first match. -`,' finds the next match for the string in the previous `i' command +`,' finds the next match for the string in the previous 'i' command If you click the middle mouse button near a cross-reference, menu item or node pointer while in Info, you will go to the node @@ -5810,7 +5817,7 @@ You can repeat any previous compilation command conveniently using the minibuffer history commands, while in the minibuffer entering the compilation command. -While a compilation is going on, the string `Compiling' appears in +While a compilation is going on, the string 'Compiling' appears in the mode line. When this string disappears, that tells you the compilation is finished. @@ -5828,8 +5835,8 @@ error, no matter how big the buffer is. *** M-x diff and M-x diff-backup. This new command compares two files, displaying the differences in an -Emacs buffer. The options for the `diff' program come from the -variable `diff-switches', whose value should be a string. +Emacs buffer. The options for the 'diff' program come from the +variable 'diff-switches', whose value should be a string. The buffer of differences has Compilation mode as its major mode, so you can use C-x ` to visit successive changed locations in the two @@ -5839,7 +5846,7 @@ other special commands of Compilation mode: SPC and DEL for scrolling, and M-n and M-p for cursor motion. M-x diff-backup compares a file with its most recent backup. -If you specify the name of a backup file, `diff-backup' compares it +If you specify the name of a backup file, 'diff-backup' compares it with the source file that it is a backup of. *** The View commands (such as M-x view-buffer and M-x view-file) no @@ -5877,12 +5884,12 @@ it easier to customize that behavior. Emacs 19 eliminates the old variables `search-...-char' that used to be the way to specify the characters to use for various special purposes in incremental search. Instead, you can define the meaning -of a character in incremental search by modifying `isearch-mode-map'. +of a character in incremental search by modifying 'isearch-mode-map'. *** New commands in Buffer Menu mode. The command C-o now displays the current line's buffer in another -window but does not select it. This is like the existing command `o' +window but does not select it. This is like the existing command 'o' which selects the current line's buffer in another window. The command % toggles the read-only flag of the current line's buffer. @@ -5919,18 +5926,18 @@ perform initial checkin on an unregistered file. By default, VC uses RCS if RCS is installed on your machine; otherwise, SCCS. If you want to make the choice explicitly, you can do -it by setting `vc-default-back-end' to the symbol `RCS' or the symbol -`SCCS'. +it by setting 'vc-default-back-end' to the symbol 'RCS' or the symbol +'SCCS'. You can tell when a file you visit is maintained with version control -because either `RCS' or `SCCS' appears in the mode line. +because either 'RCS' or 'SCCS' appears in the mode line. *** A new Calendar mode has been added, the work of Edward M. Reingold. The mode can display the Gregorian calendar and a variety of other calendars at any date, and interacts with a diary facility similar to -the UNIX `calendar' utility. +the UNIX 'calendar' utility. -*** There is a new major mode for editing binary files: Hexl mode. +*** There is a new major mode for editing binary files: 'hexl-mode'. To use it, use M-x hexl-find-file instead of C-x C-f to visit the file. This command converts the file's contents to hexadecimal and lets you edit the translation. When you save the file, it is converted @@ -5977,22 +5984,22 @@ in the Emacs distribution. and certain other differences between C and C++. It also has a command `fill-c++-comment' which fills a paragraph made of comment lines. -The command `comment-region' is useful in C++ mode for commenting out +The command 'comment-region' is useful in C++ mode for commenting out several consecutive lines, or removing the commenting out of such lines. *** A new package for merging two variants of the same text. It's not unusual for programmers to get their signals crossed and modify the same program in two different directions. Then somebody -has to merge the two versions. The command `emerge-files' makes this +has to merge the two versions. The command 'emerge-files' makes this easier. -`emerge-files' reads two file names and compares them. Then it +'emerge-files' reads two file names and compares them. Then it displays three buffers: one for each file, and one for the differences. If the original version of the file is available, you can make things -even easier using `emerge-files-with-ancestor'. It reads three file +even easier using 'emerge-files-with-ancestor'. It reads three file names--variant 1, variant 2, and the common ancestor--and uses diff3 to compare them. @@ -6007,7 +6014,7 @@ prevents you from doing more than selecting the A or the B version of differences. In Edit mode, all emerge commands use the C-c prefix, and the usual Emacs commands are available. This allows editing the merge buffer, but slows down Emerge operations. Edit and fast modes -are indicated by `F' and `E' in the minor modes in the mode line. +are indicated by 'F' and 'E' in the minor modes in the mode line. The Emerge commands are: @@ -6067,7 +6074,7 @@ If you use a prefix argument, Emerge reads another file name to use for the output file. Once Emerge has prepared the buffer of differences, it runs the hooks -in `emerge-startup-hooks'. +in 'emerge-startup-hooks'. *** Asm mode is a new major mode for editing files of assembler code. It defines these commands: @@ -6124,7 +6131,7 @@ type C-x 6 d, is empty, C-x 6 d kills it.) *** You can supply command arguments such as files to visit to an Emacs that is already running. To do this, you must do this in your .emacs file: - (add-hook 'suspend-hook 'resume-suspend-hook) + (add-hook 'suspend-hook #'resume-suspend-hook) Also you must use the shellscript emacs.csh or emacs.sh, found in the etc subdirectory. @@ -6183,7 +6190,7 @@ VT-100 and H19 terminals; put the following in your `.emacs' file: When flow control is enabled, you must type C-\ to get the effect of a C-s, and type C-^ to get the effect of a C-q. -The function `enable-flow-control' enables flow control unconditionally. +The function 'enable-flow-control' enables flow control unconditionally. ** Changes in Dired @@ -6199,15 +6206,15 @@ parent directory. *** Setting and Clearing Marks There are now two kinds of marker that you can put on a file in Dired: -`D' for deletion, and `*' for any other kind of operation. -The `x' command deletes only files marked with `D', and most +'D' for deletion, and `*' for any other kind of operation. +The 'x' command deletes only files marked with 'D', and most other Dired commands operate only on the files marked with `*'. -To mark files with `D' (also called "flagging" the files), you -can use `d' as usual. Here are some commands for marking with +To mark files with 'D' (also called "flagging" the files), you +can use 'd' as usual. Here are some commands for marking with `*' (and also for unmarking): -**** `m' marks the current file with `*', for an operation other than +**** 'm' marks the current file with `*', for an operation other than deletion. **** `*' marks all executable files. With a prefix argument, it @@ -6223,7 +6230,7 @@ argument, it unmarks all those files. argument, queries for each marked file. Type your help character, usually C-h, at that time for help. -**** `c' replaces all marks that use the character OLD with marks that +**** 'c' replaces all marks that use the character OLD with marks that use the character NEW. You can use almost any character as a mark character by means of this command, to distinguish various classes of files. If OLD is ` ', then the command operates on all unmarked @@ -6248,48 +6255,48 @@ marked files. These are the commands: -**** `C' copies the specified files. You must specify a directory to +**** 'C' copies the specified files. You must specify a directory to copy into, or (if copying a single file) a new name. -If `dired-copy-preserve-time' is non-`nil', then copying sets +If 'dired-copy-preserve-time' is non-'nil', then copying sets the modification time of the new file to be the same as that of the old file. -**** `R' renames the specified files. You must specify a directory to +**** 'R' renames the specified files. You must specify a directory to rename into, or (if renaming a single file) a new name. Dired automatically changes the visited file name of buffers associated with renamed files so that they refer to the new names. -**** `H' makes hard links to the specified files. You must specify a +**** 'H' makes hard links to the specified files. You must specify a directory to make the links in, or (if making just one link) the name to give the link. -**** `S' makes symbolic links to the specified files. You must specify +**** 'S' makes symbolic links to the specified files. You must specify a directory to make the links in, or (if making just one link) the name to give the link. -**** `M' changes the mode of the specified files. This calls the -`chmod' program, so you can describe the desired mode change with any -argument that `chmod' would handle. +**** 'M' changes the mode of the specified files. This calls the +'chmod' program, so you can describe the desired mode change with any +argument that 'chmod' would handle. -**** `G' changes the group of the specified files. +**** 'G' changes the group of the specified files. -**** `O' changes the owner of the specified files. (On normal systems, +**** 'O' changes the owner of the specified files. (On normal systems, only the superuser can do this.) -The variable `dired-chown-program' specifies the name of the -program to use to do the work (different systems put `chown' in +The variable 'dired-chown-program' specifies the name of the +program to use to do the work (different systems put 'chown' in different places. -**** `Z' compresses or uncompresses the specified files. +**** 'Z' compresses or uncompresses the specified files. -**** `L' loads the specified Emacs Lisp files. +**** 'L' loads the specified Emacs Lisp files. -**** `B' byte compiles the specified Emacs Lisp files. +**** 'B' byte compiles the specified Emacs Lisp files. -**** `P' prints the specified files. It uses the variables -`lpr-command' and `lpr-switches' just as `lpr-file' does. +**** 'P' prints the specified files. It uses the variables +'lpr-command' and 'lpr-switches' just as 'lpr-file' does. *** Shell Commands in Dired @@ -6300,17 +6307,17 @@ shell command to multiple files: - If you use `*' in the command, then the shell command runs just once, with the list of file names substituted for the `*'. -Thus, `! tar cf foo.tar * RET' runs `tar' on the entire list of file +Thus, `! tar cf foo.tar * RET' runs 'tar' on the entire list of file names, putting them into one tar file `foo.tar'. The file names are inserted in the order that they appear in the Dired buffer. - If the command string doesn't contain `*', then it runs once for each file, with the file name attached at the end. For example, `! -uudecode RET' runs `uudecode' on each file. +uudecode RET' runs 'uudecode' on each file. To run the shell command once for each file but without being limited to putting the file name inserted in the middle, use a shell loop. -For example, this shell command would run `uuencode' on each of the +For example, this shell command would run 'uuencode' on each of the specified files, writing the output into a corresponding `.uu' file: for file in *; uuencode $file $file >$file.uu; done @@ -6334,7 +6341,7 @@ the regular expression REGEXP. These four commands rename, copy, make hard links and make soft links, in each case computing the new name by regular expression substitution from the name of the old file. They effectively perform -`query-replace-regexp' on the selected file names in the Dired buffer. +'query-replace-regexp' on the selected file names in the Dired buffer. The commands read two arguments: a regular expression, and a substitution pattern. Each selected file name is matched against the @@ -6362,30 +6369,30 @@ as a default the last regular expression specified in a `%' command. *** File Comparison with Dired -**** `=' compares the current file with another file (the file at the -mark), by running the `diff' program. The file at the mark is given -to `diff' first. +**** '=' compares the current file with another file (the file at the +mark), by running the 'diff' program. The file at the mark is given +to 'diff' first. -**** `M-=' compares the current file with its backup file. If there +**** 'M-=' compares the current file with its backup file. If there are several numerical backups, it uses the most recent one. If this file is a backup, it is compared with its original. -The backup file is the first file given to `diff'. +The backup file is the first file given to 'diff'. *** Subdirectories in Dired You can display more than one directory in one Dired buffer. -The simplest way to do this is to specify the options `-lR' for -running `ls'. That produces a recursive directory listing showing +The simplest way to do this is to specify the options '-lR' for +running 'ls'. That produces a recursive directory listing showing all subdirectories, all within the same Dired buffer. You can also insert the contents of a particular subdirectory with the -`i' command. Use this command on the line that describes a file which +'i' command. Use this command on the line that describes a file which is a directory. Inserted subdirectory contents follow the top-level directory of the Dired buffer, just as they do in `ls -lR' output. If the subdirectory's contents are already present in the buffer, the -`i' command just moves to it (type `l' to refresh it). It sets the +'i' command just moves to it (type 'l' to refresh it). It sets the Emacs mark before moving, so C-x C-x takes you back to the old position in the buffer. @@ -6423,18 +6430,18 @@ away. *** Editing the Dired Buffer -**** `l' updates the specified files in a Dired buffer. This means +**** 'l' updates the specified files in a Dired buffer. This means reading their current status from the file system and changing the buffer to reflect it properly. If you use this command on a subdirectory header line, it updates the contents of the subdirectory. -**** `g' updates the entire contents of the Dired buffer. It preserves +**** 'g' updates the entire contents of the Dired buffer. It preserves all marks except for those on files that have vanished. Hidden subdirectories are updated but remain hidden. -**** `k' kills all marked lines (not the files). With a prefix +**** 'k' kills all marked lines (not the files). With a prefix argument, it kills that many lines starting with the current line. This command does not delete files; it just deletes text from the Dired @@ -6445,10 +6452,10 @@ are also deleted from the buffer. Typing `C-u k' on the header line for a subdirectory is another way to delete a subdirectory from the Dired buffer. -*** `find' and Dired. +*** 'find' and Dired. To search for files with names matching a wildcard pattern use -`find-name-dired'. Its arguments are DIRECTORY and +'find-name-dired'. Its arguments are DIRECTORY and PATTERN. It selects all the files in DIRECTORY or its subdirectories whose own names match PATTERN. @@ -6456,17 +6463,17 @@ The files thus selected are displayed in a Dired buffer in which the ordinary Dired commands are available. If you want to test the contents of files, rather than their names, use -`find-grep-dired'. This command takes two minibuffer arguments, +'find-grep-dired'. This command takes two minibuffer arguments, DIRECTORY and REGEXP; it selects all the files in DIRECTORY or its subdirectories that contain a match for -REGEXP. It works by running `find' and `grep'. +REGEXP. It works by running 'find' and 'grep'. -The most general command in this series is `find-dired', which lets -you specify any condition that `find' can test. It takes two -minibuffer arguments, DIRECTORY and FIND-ARGS; it runs `find' in -DIRECTORY with using FIND-ARGS as the arguments to `find' specifying +The most general command in this series is 'find-dired', which lets +you specify any condition that 'find' can test. It takes two +minibuffer arguments, DIRECTORY and FIND-ARGS; it runs 'find' in +DIRECTORY with using FIND-ARGS as the arguments to 'find' specifying which files to accept. To use this command, you need to know how to -use `find'. +use 'find'. ** New amusements and novelties. @@ -6498,14 +6505,14 @@ description of the steps required for installation. *** If you create a Lisp file named `site-start.el', Emacs loads the file whenever it starts up. -*** A new Lisp variable, `data-directory', indicates the directory +*** A new Lisp variable, 'data-directory', indicates the directory containing the DOC file, tutorial, copying agreement, and other -familiar `etc' files. The value of `data-directory' is a simple string. +familiar 'etc' files. The value of 'data-directory' is a simple string. The default should be set at build time, and the person installing Emacs should place all the data files in this directory. The `help.el' functions that look for docstrings and information files check this variable. All Emacs Lisp packages should also be coded so that they -refer to `data-directory' to find data files. +refer to 'data-directory' to find data files. *** The PURESIZE definition has been moved from config.h to its own file, puresize.h. Since almost every file of C source in the @@ -6514,7 +6521,7 @@ on puresize.h, this means that changing the value of PURESIZE causes only those two files to be recompiled. *** The makefile at the top of the Emacs source tree now supports a -`dist' target, which creates a compressed tar file suitable for +'dist' target, which creates a compressed tar file suitable for distribution, using the contents of the source tree. Object files, old file versions, executables, DOC files, and other architecture-specific or easy-to-recreate files are not included in diff --git a/etc/NEWS.20 b/etc/NEWS.20 index 2a9b0b2d259..332d6ded92a 100644 --- a/etc/NEWS.20 +++ b/etc/NEWS.20 @@ -55,11 +55,11 @@ Formerly the name had to be `.emacs'. If you use the name If both `.emacs' and `.emacs.el' exist, the latter file is the one that is used. -** shell-command, and shell-command-on-region, now return +** 'shell-command', and 'shell-command-on-region', now return the exit code of the command (unless it is asynchronous). Also, you can specify a place to put the error output, separate from the command's regular output. -Interactively, the variable shell-command-default-error-buffer +Interactively, the variable 'shell-command-default-error-buffer' says where to put error output; set it to a buffer name. In calls from Lisp, an optional argument ERROR-BUFFER specifies the buffer name. @@ -69,8 +69,8 @@ output is inserted before point in that buffer, with \f\n to separate it from the previous batch of error output. The error buffer is not cleared, so error output from successive commands accumulates there. -** Setting the default value of enable-multibyte-characters to nil in -the .emacs file, either explicitly using setq-default, or via Custom, +** Setting the default value of 'enable-multibyte-characters' to nil in +the .emacs file, either explicitly using 'setq-default', or via Custom, is now essentially equivalent to using --unibyte: all buffers created during startup will be made unibyte after loading .emacs. @@ -79,8 +79,8 @@ example, typing C-x C-f c*.c RET visits all the files whose names match c*.c. To visit a file whose name contains * or ?, add the quoting sequence /: to the beginning of the file name. -** The M-x commands keep-lines, flush-lines and count-matches -now have the same feature as occur and query-replace: +** The M-x commands 'keep-lines', 'flush-lines' and 'count-matches' +now have the same feature as 'occur' and 'query-replace': if the pattern contains any upper case letters, then they never ignore case. @@ -96,10 +96,10 @@ If you subsequently save the buffer, Emacs converts the text back to the same format that was used in the file before. You can turn off end-of-line conversion by setting the variable -`inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group. +'inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group. -** The character set property `prefered-coding-system' has been -renamed to `preferred-coding-system', for the sake of correct spelling. +** The character set property 'prefered-coding-system' has been +renamed to 'preferred-coding-system', for the sake of correct spelling. This is a fairly internal feature, so few programs should be affected. ** Mode-line display of end-of-line format is changed. @@ -110,22 +110,22 @@ is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual end-of-line format is still displayed as a single character (colon for Unix, backslash for DOS and Windows, and forward slash for the Mac). -The values of the variables eol-mnemonic-unix, eol-mnemonic-dos, -eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings, +The values of the variables 'eol-mnemonic-unix', 'eol-mnemonic-dos', +'eol-mnemonic-mac', and 'eol-mnemonic-undecided', which are strings, control what is displayed in the mode line for each end-of-line format. You can now customize these variables. -** In the previous version of Emacs, tar-mode didn't work well if a +** In the previous version of Emacs, 'tar-mode' didn't work well if a filename contained non-ASCII characters. Now this is fixed. Such a filename is decoded by file-name-coding-system if the default value of enable-multibyte-characters is non-nil. -** The command temp-buffer-resize-mode toggles a minor mode +** The command 'temp-buffer-resize-mode' toggles a minor mode in which temporary buffers (such as help buffers) are given windows just big enough to hold the whole contents. ** If you use completion.el, you must now run the function -dynamic-completion-mode to enable it. Just loading the file +'dynamic-completion-mode' to enable it. Just loading the file doesn't have any effect. ** In Flyspell mode, the default is now to make just one Ispell process, @@ -133,11 +133,11 @@ not one per buffer. ** If you use iswitchb but do not call (iswitchb-default-keybindings) to use the default keybindings, you will need to add the following line: - (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup) + (add-hook 'minibuffer-setup-hook #'iswitchb-minibuffer-setup) ** Auto-show mode is no longer enabled just by loading auto-show.el. -To control it, set `auto-show-mode' via Custom or use the -`auto-show-mode' command. +To control it, set 'auto-show-mode' via Custom or use the +'auto-show-mode' command. ** Handling of X fonts' ascent/descent parameters has been changed to avoid redisplay problems. As a consequence, compared with previous @@ -183,7 +183,7 @@ current codepage when it starts. ** Mail changes *** When mail is sent using compose-mail (C-x m), and if -`mail-send-nonascii' is set to the new default value `mime', +'mail-send-nonascii' is set to the new default value 'mime', appropriate MIME headers are added. The headers are added only if non-ASCII characters are present in the body of the mail, and no other MIME headers are already present. For example, the following three @@ -194,11 +194,11 @@ latin-1: Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit -*** The new variable default-sendmail-coding-system specifies the +*** The new variable 'default-sendmail-coding-system' specifies the default way to encode outgoing mail. This has higher priority than -default-buffer-file-coding-system but has lower priority than -sendmail-coding-system and the local value of -buffer-file-coding-system. +'default-buffer-file-coding-system' but has lower priority than +'sendmail-coding-system' and the local value of +'buffer-file-coding-system'. You should not set this variable manually. Instead, set sendmail-coding-system to specify a fixed encoding for all outgoing @@ -248,11 +248,11 @@ brace. These used to be recognized as brace-list-entry's. c-electric-brace also recognizes brace-entry-open braces (brace-list-entry's can no longer be electrified). -*** New command c-indent-line-or-region, not bound by default. +*** New command 'c-indent-line-or-region', not bound by default. *** `#' is only electric when typed in the indentation of a line. -*** Parentheses are now electric (via the new command c-electric-paren) +*** Parentheses are now electric (via the new command 'c-electric-paren') for auto-reindenting lines when parens are typed. *** In "gnu" style, inline-open offset is now set to zero. @@ -273,10 +273,10 @@ Gnus manual for the full story. before. All Message buffers are now also articles in the nndraft group, which is created automatically. -*** `gnus-alter-header-function' can now be used to alter header +*** 'gnus-alter-header-function' can now be used to alter header values. -*** `gnus-summary-goto-article' now accept Message-ID's. +*** 'gnus-summary-goto-article' now accept Message-ID's. *** A new Message command for deleting text in the body of a message outside the region: `C-c C-v'. @@ -284,20 +284,20 @@ outside the region: `C-c C-v'. *** You can now post to component group in nnvirtual groups with `C-u C-c C-c'. -*** `nntp-rlogin-program' -- new variable to ease customization. +*** 'nntp-rlogin-program' -- new variable to ease customization. -*** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit +*** `C-u C-c C-c' in 'gnus-article-edit-mode' will now inhibit re-highlighting of the article buffer. -*** New element in `gnus-boring-article-headers' -- `long-to'. +*** New element in 'gnus-boring-article-headers' -- 'long-to'. -*** `M-i' symbolic prefix command. See the section "Symbolic +*** 'M-i' symbolic prefix command. See the section "Symbolic Prefixes" in the Gnus manual for details. -*** `L' and `I' in the summary buffer now take the symbolic prefix -`a' to add the score rule to the "all.SCORE" file. +*** 'L' and 'I' in the summary buffer now take the symbolic prefix +'a' to add the score rule to the "all.SCORE" file. -*** `gnus-simplify-subject-functions' variable to allow greater +*** 'gnus-simplify-subject-functions' variable to allow greater control over simplification. *** `A T' -- new command for fetching the current thread. @@ -305,21 +305,21 @@ control over simplification. *** `/ T' -- new command for including the current thread in the limit. -*** `M-RET' is a new Message command for breaking cited text. +*** 'M-RET' is a new Message command for breaking cited text. -*** \\1-expressions are now valid in `nnmail-split-methods'. +*** \\1-expressions are now valid in 'nnmail-split-methods'. -*** The `custom-face-lookup' function has been removed. +*** The 'custom-face-lookup' function has been removed. If you used this function in your initialization files, you must -rewrite them to use `face-spec-set' instead. +rewrite them to use 'face-spec-set' instead. *** Canceling now uses the current select method. Symbolic prefix -`a' forces normal posting method. +'a' forces normal posting method. *** New command to translate M******** sm*rtq**t*s into proper text -- `W d'. -*** For easier debugging of nntp, you can set `nntp-record-commands' +*** For easier debugging of nntp, you can set 'nntp-record-commands' to a non-nil value. *** nntp now uses ~/.authinfo, a .netrc-like file, for controlling @@ -330,49 +330,49 @@ has been added. *** A history of where mails have been split is available. -*** A new article date command has been added -- `article-date-iso8601'. +*** A new article date command has been added -- 'article-date-iso8601'. *** Subjects can be simplified when threading by setting -`gnus-score-thread-simplify'. +'gnus-score-thread-simplify'. *** A new function for citing in Message has been added -- -`message-cite-original-without-signature'. +'message-cite-original-without-signature'. -*** `article-strip-all-blank-lines' -- new article command. +*** 'article-strip-all-blank-lines' -- new article command. *** A new Message command to kill to the end of the article has been added. *** A minimum adaptive score can be specified by using the -`gnus-adaptive-word-minimum' variable. +'gnus-adaptive-word-minimum' variable. *** The "lapsed date" article header can be kept continually -updated by the `gnus-start-date-timer' command. +updated by the 'gnus-start-date-timer' command. *** Web listserv archives can be read with the nnlistserv backend. *** Old dejanews archives can now be read by nnweb. -*** `gnus-posting-styles' has been re-activated. +*** 'gnus-posting-styles' has been re-activated. ** Changes to TeX and LaTeX mode -*** The new variable `tex-start-options-string' can be used to give +*** The new variable 'tex-start-options-string' can be used to give options for the TeX run. The default value causes TeX to run in nonstopmode. For an interactive TeX run set it to nil or "". -*** The command `tex-feed-input' sends input to the Tex Shell. In a +*** The command 'tex-feed-input' sends input to the Tex Shell. In a TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some of these keys may not work on all systems). For instance, if you run TeX interactively and if the TeX run stops because of an error, you can continue it without leaving the TeX buffer by typing C-RET. -*** The Tex Shell Buffer is now in `compilation-shell-minor-mode'. +*** The Tex Shell Buffer is now in 'compilation-shell-minor-mode'. All error-parsing commands of the Compilation major mode are available but bound to keys that don't collide with the shell. Thus you can use the Tex Shell for command line executions like a usual shell. -*** The commands `tex-validate-region' and `tex-validate-buffer' check +*** The commands 'tex-validate-region' and 'tex-validate-buffer' check the matching of braces and $'s. The errors are listed in a *Occur* buffer and you can use C-c C-c or mouse-2 to go to a particular mismatch. @@ -380,7 +380,7 @@ mismatch. ** Changes to RefTeX mode *** The table of contents buffer can now also display labels and -file boundaries in addition to sections. Use `l', `i', and `c' keys. +file boundaries in addition to sections. Use 'l', 'i', and 'c' keys. *** Labels derived from context (the section heading) are now lowercase by default. To make the label legal in LaTeX, latin-1 @@ -388,25 +388,25 @@ characters will lose their accent. All Mule characters will be removed from the label. *** The automatic display of cross reference information can also use -a window instead of the echo area. See variable `reftex-auto-view-crossref'. +a window instead of the echo area. See variable 'reftex-auto-view-crossref'. *** kpsewhich can be used by RefTeX to find TeX and BibTeX files. See the -customization group `reftex-finding-files'. +customization group 'reftex-finding-files'. -*** The option `reftex-bibfile-ignore-list' has been renamed to -`reftex-bibfile-ignore-regexps' and indeed can be fed with regular +*** The option 'reftex-bibfile-ignore-list' has been renamed to +'reftex-bibfile-ignore-regexps' and indeed can be fed with regular expressions. *** Multiple Selection buffers are now hidden buffers. ** New/deleted modes and packages -*** The package snmp-mode.el provides major modes for editing SNMP and -SNMPv2 MIBs. It has entries on `auto-mode-alist'. +*** 'snmp-mode' provides major modes for editing SNMP and SNMPv2 MIBs. +It has entries on 'auto-mode-alist'. *** The package sql.el provides a major mode, M-x sql-mode, for editing SQL files, and M-x sql-interactive-mode for interacting with -SQL interpreters. It has an entry on `auto-mode-alist'. +SQL interpreters. It has an entry on 'auto-mode-alist'. *** ispell4.el has been deleted. It got in the way of ispell.el and this was hard to fix reliably. It has long been obsolete -- use @@ -431,7 +431,7 @@ controls whether an external program is invoked or output is written directly to a printer port. Similarly, in the previous version of Emacs, the value of ps-lpr-command did not affect PostScript printing on MS-DOS unless ps-printer-name was set to something other than a -string (eg. t or `pipe'), but now it controls whether an external +string (eg. t or 'pipe'), but now it controls whether an external program is used. (These changes were made so that configuration of printing variables would be almost identical across all platforms.) @@ -442,11 +442,11 @@ input, on those systems the data to be output is now written to a temporary file whose name is passed as the last argument to the external program. -An exception is made for `print', a standard program on Windows NT, -and `nprint', a standard program on Novell Netware. For both of these +An exception is made for 'print', a standard program on Windows NT, +and 'nprint', a standard program on Novell Netware. For both of these programs, the command line is constructed in the appropriate syntax automatically, using only the value of printer-name or ps-printer-name -as appropriate--the value of the relevant `-switches' variable is +as appropriate--the value of the relevant '-switches' variable is ignored, as both programs have no useful switches. ** The value of the variable dos-printer (cf. dos-ps-printer), if it has @@ -460,10 +460,10 @@ This includes Tetris and Snake. * Lisp changes in Emacs 20.4 -** New functions line-beginning-position and line-end-position +** New functions 'line-beginning-position' and 'line-end-position' return the position of the beginning or end of the current line. They both accept an optional argument, which has the same -meaning as the argument to beginning-of-line or end-of-line. +meaning as the argument to 'beginning-of-line' or 'end-of-line'. ** find-file and allied functions now have an optional argument WILDCARD. If this is non-nil, they do wildcard processing, @@ -478,54 +478,54 @@ It is an integer if the size fits in a Lisp integer, float otherwise. the number fits in a Lisp integer) or a cons cell containing two integers. -** The new function directory-files-and-attributes returns a list of +** The new function 'directory-files-and-attributes' returns a list of files in a directory and their attributes. It accepts the same -arguments as directory-files and has similar semantics, except that +arguments as 'directory-files' and has similar semantics, except that file names and attributes are returned. -** The new function file-attributes-lessp is a helper function for +** The new function 'file-attributes-lessp' is a helper function for sorting the list generated by directory-files-and-attributes. It accepts two arguments, each a list of a file name and its attributes. -It compares the file names of each according to string-lessp and +It compares the file names of each according to 'string-lessp' and returns the result. -** The new function file-expand-wildcards expands a wildcard-pattern +** The new function 'file-expand-wildcards' expands a wildcard-pattern to produce a list of existing files that match the pattern. ** New functions for base64 conversion: -The function base64-encode-region converts a part of the buffer -into the base64 code used in MIME. base64-decode-region +The function 'base64-encode-region' converts a part of the buffer +into the base64 code used in MIME. 'base64-decode-region' performs the opposite conversion. Line-breaking is supported optionally. -Functions base64-encode-string and base64-decode-string do a similar +Functions 'base64-encode-string' and 'base64-decode-string' do a similar job on the text in a string. They return the value as a new string. ** -The new function process-running-child-p +The new function 'process-running-child-p' will tell you if a subprocess has given control of its terminal to its own child process. -** interrupt-process and such functions have a new feature: -when the second argument is `lambda', they send a signal +** 'interrupt-process' and such functions have a new feature: +when the second argument is 'lambda', they send a signal to the running child of the subshell, if any, but if the shell itself owns its terminal, no signal is sent. -** There are new widget types `plist' and `alist' which can +** There are new widget types 'plist' and 'alist' which can be used for customizing variables whose values are plists or alists. -** easymenu.el now understands `:key-sequence' and `:style button'. +** easymenu.el now understands ':key-sequence' and `:style button'. :included is an alias for :visible. -easy-menu-add-item now understands the values returned by -easy-menu-remove-item and easy-menu-item-present-p. This can be used +'easy-menu-add-item' now understands the values returned by +'easy-menu-remove-item' and 'easy-menu-item-present-p'. This can be used to move or copy menu entries. ** Multibyte editing changes -*** The definitions of sref and char-bytes are changed. Now, sref is -an alias of aref and char-bytes always returns 1. This change is to +*** The definitions of 'sref' and 'char-bytes' are changed. Now, 'sref' is +an alias of 'aref' and 'char-bytes' always returns 1. This change is to make some Emacs Lisp code which works on 20.2 and earlier also work on the latest Emacs. Such code uses a combination of sref and char-bytes in a loop typically as below: @@ -546,50 +546,50 @@ deleting at the head or the end of the region may signal this error: This is to avoid some bytes being combined together into a character across the boundary. -*** The functions find-charset-region and find-charset-string include -`unknown' in the returned list in the following cases: +*** The functions 'find-charset-region' and 'find-charset-string' include +'unknown' in the returned list in the following cases: o The current buffer or the target string is unibyte and contains 8-bit characters. o The current buffer or the target string is multibyte and contains invalid characters. -*** The functions decode-coding-region and encode-coding-region remove +*** The functions 'decode-coding-region' and 'encode-coding-region' remove text properties of the target region. Ideally, they should correctly preserve text properties, but for the moment, it's hard. Removing text properties is better than preserving them in a less-than-correct way. -*** prefer-coding-system sets EOL conversion of default coding systems. +*** 'prefer-coding-system' sets EOL conversion of default coding systems. If the argument to prefer-coding-system specifies a certain type of end of line conversion, the default coding systems set by prefer-coding-system will specify that conversion type for end of line. -*** The new function thai-compose-string can be used to properly +*** The new function 'thai-compose-string' can be used to properly compose Thai characters in a string. -** The primitive `define-prefix-command' now takes an optional third +** The primitive 'define-prefix-command' now takes an optional third argument NAME, which should be a string. It supplies the menu name for the created keymap. Keymaps created in order to be displayed as menus should always use the third argument. -** The meanings of optional second arguments for read-char, -read-event, and read-char-exclusive are flipped. Now the second +** The meanings of optional second arguments for 'read-char', +'read-event', and 'read-char-exclusive' are flipped. Now the second arguments are INHERIT-INPUT-METHOD. These functions use the current input method (if any) if and only if INHERIT-INPUT-METHOD is non-nil. -** The new function clear-this-command-keys empties out the contents +** The new function 'clear-this-command-keys' empties out the contents of the vector that (this-command-keys) returns. This is useful in programs that read passwords, to prevent the passwords from echoing inadvertently as part of the next command in certain cases. -** The new macro `with-temp-message' displays a temporary message in -the echo area, while executing some Lisp code. Like `progn', it +** The new macro 'with-temp-message' displays a temporary message in +the echo area, while executing some Lisp code. Like 'progn', it returns the value of the last form, but it also restores the previous echo area contents. (with-temp-message MESSAGE &rest BODY) -** The function `require' now takes an optional third argument +** The function 'require' now takes an optional third argument NOERROR. If it is non-nil, then there is no error if the requested feature cannot be loaded. @@ -597,7 +597,7 @@ requested feature cannot be loaded. foreground color, background color or stipple pattern means to clear out that attribute. -** The `outer-window-id' frame property of an X frame +** The 'outer-window-id' frame property of an X frame gives the window number of the outermost X window for the frame. ** Temporary buffers made with with-output-to-temp-buffer are now @@ -605,14 +605,14 @@ read-only by default, and normally use the major mode Help mode unless you put them in some other non-Fundamental mode before the end of with-output-to-temp-buffer. -** The new functions gap-position and gap-size return information on +** The new functions 'gap-position' and 'gap-size' return information on the gap of the current buffer. -** The new functions position-bytes and byte-to-position provide a way +** The new functions 'position-bytes' and 'byte-to-position' provide a way to convert between character positions and byte positions in the current buffer. -** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to +** vc.el defines two new macros, 'edit-vc-file' and 'with-vc-file', to facilitate working with version-controlled files from Lisp programs. These macros check out a given file automatically if needed, and check it back in after any modifications have been made. @@ -694,10 +694,10 @@ C-x RET x specifies a coding system for all subsequent cutting and pasting operations. ** You can specify the printer to use for commands that do printing by -setting the variable `printer-name'. Just what a printer name looks +setting the variable 'printer-name'. Just what a printer name looks like depends on your operating system. You can specify a different printer for the PostScript printing commands by setting -`ps-printer-name'. +'ps-printer-name'. ** Emacs now supports on-the-fly spell checking by the means of a minor mode. It is called M-x flyspell-mode. You don't have to remember @@ -735,17 +735,17 @@ You can use the ENTER key to accept the current conversion. If you type TAB to display a list of alternatives, you can select one of the alternatives with Mouse-2. -The meaning of the variable `input-method-verbose-flag' is changed so -that you can set it to t, nil, `default', or `complex-only'. +The meaning of the variable 'input-method-verbose-flag' is changed so +that you can set it to t, nil, 'default', or 'complex-only'. If the value is nil, extra guidance is never given. If the value is t, extra guidance is always given. - If the value is `complex-only', extra guidance is always given only + If the value is 'complex-only', extra guidance is always given only when you are using complex input methods such as chinese-py. - If the value is `default' (this is the default), extra guidance is + If the value is 'default' (this is the default), extra guidance is given in the following case: o When you are using a complex input method. o When you are using a simple input method but not in the minibuffer. @@ -755,7 +755,7 @@ input-method-verbose-flag to nil or to complex-only is a good choice, and if you are using an input method you are not familiar with, setting it to t is helpful. -The old command select-input-method is now called set-input-method. +The old command 'select-input-method' is now called 'set-input-method'. In the language environment "Korean", you can use the following keys: @@ -787,7 +787,7 @@ Lisp variables in user-loaded libraries. ** C-x r t (string-rectangle) now deletes the existing rectangle contents before inserting the specified string on each line. -** There is a new command delete-whitespace-rectangle +** There is a new command 'delete-whitespace-rectangle' which deletes whitespace starting from a particular column in all the lines on a rectangle. The column is specified by the left edge of the rectangle. @@ -815,7 +815,7 @@ confirmation before overwriting an existing file. When you call the function from a Lisp program, a new optional argument CONFIRM says whether to ask for confirmation in this case. -** If you use find-file-literally and the file is already visited +** If you use 'find-file-literally' and the file is already visited non-literally, the command asks you whether to revisit the file literally. If you say no, it signals an error. @@ -824,22 +824,22 @@ now use the proper name for the mode hook: WHATEVER-mode-hook. Formerly they used the name WHATEVER-mode-hooks, but that is inconsistent with Emacs conventions. -** shell-command-on-region (and shell-command) reports success or +** 'shell-command-on-region' (and shell-command) reports success or failure if the command produces no output. -** Set focus-follows-mouse to nil if your window system or window +** Set 'focus-follows-mouse' to nil if your window system or window manager does not transfer focus to another window when you just move the mouse. -** mouse-menu-buffer-maxlen has been renamed to -mouse-buffer-menu-maxlen to be consistent with the other related +** 'mouse-menu-buffer-maxlen' has been renamed to +'mouse-buffer-menu-maxlen' to be consistent with the other related function and variable names. -** The new variable auto-coding-alist specifies coding systems for +** The new variable 'auto-coding-alist' specifies coding systems for reading specific files. This has higher priority than -file-coding-system-alist. +'file-coding-system-alist'. -** If you set the variable unibyte-display-via-language-environment to +** If you set the variable 'unibyte-display-via-language-environment' to t, then Emacs displays non-ASCII characters are displayed by converting them to the equivalent multibyte characters according to the current language environment. As a result, they are displayed @@ -848,7 +848,7 @@ according to the current fontset. ** C-q's handling of codes in the range 0200 through 0377 is changed. The codes in the range 0200 through 0237 are inserted as one byte of -that code regardless of the values of nonascii-translation-table and +that code regardless of the values of 'nonascii-translation-table' and nonascii-insert-offset. For the codes in the range 0240 through 0377, if @@ -869,14 +869,14 @@ command keys. ** M-x apropos-command, with a prefix argument, no longer looks for user option variables--instead it looks for noninteractive functions. -Meanwhile, the command apropos-variable normally searches for +Meanwhile, the command 'apropos-variable' normally searches for user option variables; with a prefix argument, it looks at all variables that have documentation. ** When you type a long line in the minibuffer, and the minibuffer shows just one line, automatically scrolling works in a special way that shows you overlap with the previous line of text. The variable -minibuffer-scroll-overlap controls how many characters of overlap +'minibuffer-scroll-overlap' controls how many characters of overlap it should show; the default is 20. Meanwhile, Resize Minibuffer mode is still available; in that mode, @@ -904,19 +904,19 @@ the tag around point and puts that into the default grep command. buffer positions from which M-. or other tag-finding commands were invoked. -** The new variable comment-padding specifies the number of spaces -that `comment-region' will insert before the actual text of the comment. +** The new variable 'comment-padding' specifies the number of spaces +that 'comment-region' will insert before the actual text of the comment. The default is 1. ** In Fortran mode the characters `.', `_' and `$' now have symbol -syntax, not word syntax. Fortran mode now supports `imenu' and has -new commands fortran-join-line (M-^) and fortran-narrow-to-subprogram +syntax, not word syntax. Fortran mode now supports 'imenu' and has +new commands 'fortran-join-line' (M-^) and 'fortran-narrow-to-subprogram' (C-x n d). M-q can be used to fill a statement or comment block sensibly. -** GUD now supports jdb, the Java debugger, and pdb, the Python debugger. +** GUD now supports 'jdb', the Java debugger, and 'pdb', the Python debugger. -** If you set the variable add-log-keep-changes-together to a non-nil +** If you set the variable 'add-log-keep-changes-together' to a non-nil value, the command `C-x 4 a' will automatically notice when you make two entries in one day for one file, and combine them. @@ -931,13 +931,13 @@ every night. the variable desktop-enable to t with Custom. *** Minor modes are now restored. Which minor modes are restored -and how modes are restored is controlled by `desktop-minor-mode-table'. +and how modes are restored is controlled by 'desktop-minor-mode-table'. ** There is no need to do anything special, now, to enable Gnus to read and post multi-lingual articles. ** Outline mode has now support for showing hidden outlines when -doing an isearch. In order for this to happen search-invisible should +doing an isearch. In order for this to happen 'search-invisible' should be set to open (the default). If an isearch match is inside a hidden outline the outline is made visible. If you continue pressing C-s and the match moves outside the formerly invisible outline, the outline is @@ -998,7 +998,7 @@ function for something else (10-20 lines of Lisp code). *** The Dired function dired-do-toggle, which toggles marked and unmarked files, is now bound to "t" instead of "T". -*** dired-at-point has been added to ffap.el. It allows one to easily +*** 'dired-at-point' has been added to ffap.el. It allows one to easily run Dired on the directory name at point. *** Dired has a new command: %g. It searches the contents of @@ -1007,7 +1007,7 @@ for a specified regexp. ** VC Changes -*** New option vc-ignore-vc-files lets you turn off version control +*** New option 'vc-ignore-vc-files' lets you turn off version control conveniently. *** VC Dired has been completely rewritten. It is now much @@ -1022,14 +1022,14 @@ currently locked (for CVS, all files not up-to-date are shown). You can change the listing format by setting vc-dired-recurse to nil, then it shows only the given directory, and you may also set vc-dired-terse-display to nil, then it shows all files under version -control plus the names of any subdirectories, so that you can type `i' +control plus the names of any subdirectories, so that you can type 'i' on such lines to insert them manually, as in ordinary Dired. -All Dired commands operate normally in VC Dired, except for `v', which +All Dired commands operate normally in VC Dired, except for 'v', which is redefined as the version control prefix. That means you may type -`v l', `v =' etc. to invoke `vc-print-log', `vc-diff' and the like on +`v l', `v =' etc. to invoke 'vc-print-log', 'vc-diff' and the like on the file named in the current Dired buffer line. `v v' invokes -`vc-next-action' on this file, or on all files currently marked. +'vc-next-action' on this file, or on all files currently marked. The new command `v t' (vc-dired-toggle-terse-mode) allows you to toggle between terse display (only locked files) and full display (all @@ -1044,13 +1044,13 @@ command in the minibuffer, to fine-tune VC Dired's output. file, and CVS detects conflicts, VC now offers to start an ediff session to resolve them. -Alternatively, you can use the new command `vc-resolve-conflicts' to +Alternatively, you can use the new command 'vc-resolve-conflicts' to resolve conflicts in a file at any time. It works in any buffer that contains conflict markers as generated by rcsmerge (which is what CVS uses as well). *** You can now transfer changes between branches, using the new -command vc-merge (C-x v m). It is implemented for RCS and CVS. When +command 'vc-merge' (C-x v m). It is implemented for RCS and CVS. When you invoke it in a buffer under version-control, you can specify either an entire branch or a pair of versions, and the changes on that branch or between the two versions are merged into the working file. @@ -1059,16 +1059,16 @@ using ediff. ** Changes in Font Lock -*** The face and variable previously known as font-lock-reference-face -are now called font-lock-constant-face to better reflect their typical +*** The face and variable previously known as 'font-lock-reference-face' +are now called 'font-lock-constant-face' to better reflect their typical use for highlighting constants and labels. (Its face properties are -unchanged.) The variable font-lock-reference-face remains for now for -compatibility reasons, but its value is font-lock-constant-face. +unchanged.) The variable 'font-lock-reference-face' remains for now for +compatibility reasons, but its value is 'font-lock-constant-face'. ** Frame name display changes -*** The command set-frame-name lets you set the name of the current -frame. You can use the new command select-frame-by-name to select and +*** The command 'set-frame-name' lets you set the name of the current +frame. You can use the new command 'select-frame-by-name' to select and raise a frame; this is mostly useful on character-only terminals, or when many frames are invisible or iconified. @@ -1096,11 +1096,11 @@ C-c C-a if repeated twice consecutively now moves to the process mark, which separates the pending input from the subprocess output and the previously sent input. -C-c M-r now runs comint-previous-matching-input-from-input; +C-c M-r now runs 'comint-previous-matching-input-from-input'; it searches for a previous command, using the current pending input as the search string. -*** New option compilation-scroll-output can be set to scroll +*** New option 'compilation-scroll-output' can be set to scroll automatically in compilation-mode windows. ** C mode changes @@ -1117,7 +1117,7 @@ style is still the default however. *** "java" style now conforms to Sun's JDK coding style. -*** There are new commands c-beginning-of-defun, c-end-of-defun which +*** There are new commands 'c-beginning-of-defun', 'c-end-of-defun' which are alternatives which you could bind to C-M-a and C-M-e if you prefer them. They do not have key bindings by default. @@ -1130,40 +1130,40 @@ namespace-open, namespace-close, and innamespace. *** File local variable settings of c-file-style and c-file-offsets makes the style variables local to that buffer only. -*** New indentation functions c-lineup-close-paren, -c-indent-one-line-block, c-lineup-dont-change. +*** New indentation functions 'c-lineup-close-paren', +'c-indent-one-line-block', 'c-lineup-dont-change'. *** Improvements (hopefully!) to the way CC Mode is loaded. You should now be able to do a (require 'cc-mode) to get the entire package loaded properly for customization in your .emacs file. A new -variable c-initialize-on-load controls this and is t by default. +variable 'c-initialize-on-load' controls this and is t by default. -** Changes to hippie-expand. +** Changes to 'hippie-expand'. -*** New customization variable `hippie-expand-dabbrev-skip-space'. If +*** New customization variable 'hippie-expand-dabbrev-skip-space'. If non-nil, trailing spaces may be included in the abbreviation to search for, -which then gives the same behavior as the original `dabbrev-expand'. +which then gives the same behavior as the original 'dabbrev-expand'. -*** New customization variable `hippie-expand-dabbrev-as-symbol'. If +*** New customization variable 'hippie-expand-dabbrev-as-symbol'. If non-nil, characters of syntax '_' is considered part of the word when expanding dynamically. -*** New customization variable `hippie-expand-no-restriction'. If +*** New customization variable 'hippie-expand-no-restriction'. If non-nil, narrowed buffers are widened before they are searched. -*** New customization variable `hippie-expand-only-buffers'. If +*** New customization variable 'hippie-expand-only-buffers'. If non-empty, buffers searched are restricted to the types specified in this list. Useful for example when constructing new special-purpose -expansion functions with `make-hippie-expand-function'. +expansion functions with 'make-hippie-expand-function'. *** Text properties of the expansion are no longer copied. ** Changes in BibTeX mode. *** Any titleword matching a regexp in the new variable -bibtex-autokey-titleword-ignore (case sensitive) is ignored during +'bibtex-autokey-titleword-ignore' (case sensitive) is ignored during automatic key generation. This replaces variable -bibtex-autokey-titleword-first-ignore, which only checked for matches +'bibtex-autokey-titleword-first-ignore', which only checked for matches against the first word in the title. *** Autokey generation now uses all words from the title, not just @@ -1182,9 +1182,9 @@ bibtex-autokey-name-case-convert. *** Support for character terminals is available: there is a new keymap and the vcursor will appear as an arrow between buffer text. A -variable `vcursor-interpret-input' allows input from the vcursor to be +variable 'vcursor-interpret-input' allows input from the vcursor to be entered exactly as if typed. Numerous functions, including -`vcursor-compare-windows', have been rewritten to improve consistency +'vcursor-compare-windows', have been rewritten to improve consistency in the selection of windows and corresponding keymaps. *** vcursor options can now be altered with M-x customize under the @@ -1194,7 +1194,7 @@ Editing group once the package is loaded. generally a bad side effect. Use M-x customize to set vcursor-key-bindings to t to restore the old behavior. -*** vcursor-auto-disable can be `copy', which turns off copying from the +*** vcursor-auto-disable can be 'copy', which turns off copying from the vcursor, but doesn't disable it, after any non-vcursor command. ** Ispell changes. @@ -1219,7 +1219,7 @@ include: RefTeX has been updated in order to make it more usable with very large projects (like a several volume math book). The parser has been re-written from scratch. To get maximum speed from RefTeX, check the -section `Optimizations' in the manual. +section 'Optimizations' in the manual. *** New recursive parser. @@ -1231,7 +1231,7 @@ recursive parser scans the individual files. Reparsing of changed document parts can now be made faster by enabling partial scans. To use this feature, read the documentation string of -the variable `reftex-enable-partial-scans' and set the variable to t. +the variable 'reftex-enable-partial-scans' and set the variable to t. (setq reftex-enable-partial-scans t) @@ -1250,13 +1250,13 @@ for large documents), you can reuse these buffers by setting *** References to external documents. -The LaTeX package `xr' allows to cross-reference labels in external +The LaTeX package 'xr' allows to cross-reference labels in external documents. RefTeX can provide information about the external documents as well. To use this feature, set up the \externaldocument -macros required by the `xr' package and rescan the document with -RefTeX. The external labels can then be accessed with the `x' key in -the selection buffer provided by `reftex-reference' (bound to `C-c )'). -The `x' key also works in the table of contents buffer. +macros required by the 'xr' package and rescan the document with +RefTeX. The external labels can then be accessed with the 'x' key in +the selection buffer provided by 'reftex-reference' (bound to `C-c )'). +The 'x' key also works in the table of contents buffer. *** Many more labeled LaTeX environments are recognized by default. @@ -1269,13 +1269,13 @@ the enumeration of sections in the *toc* buffer accordingly. *** Mouse support for selection and *toc* buffers The mouse can now be used to select items in the selection and *toc* -buffers. See also the new option `reftex-highlight-selection'. +buffers. See also the new option 'reftex-highlight-selection'. *** New keymaps for selection and table of contents modes. The selection processes for labels and citation keys, and the table of -contents buffer now have their own keymaps: `reftex-select-label-map', -`reftex-select-bib-map', `reftex-toc-map'. The selection processes +contents buffer now have their own keymaps: 'reftex-select-label-map', +'reftex-select-bib-map', 'reftex-toc-map'. The selection processes have a number of new keys predefined. In particular, TAB lets you enter a label with completion. Check the on-the-fly help (press `?' at the selection prompt) or read the Info documentation to find out @@ -1283,18 +1283,18 @@ more. *** Support for the varioref package -The `v' key in the label selection buffer toggles \ref versus \vref. +The 'v' key in the label selection buffer toggles \ref versus \vref. *** New hooks Three new hooks can be used to redefine the way labels, references, and citations are created. These hooks are -`reftex-format-label-function', `reftex-format-ref-function', -`reftex-format-cite-function'. +'reftex-format-label-function', 'reftex-format-ref-function', +'reftex-format-cite-function'. *** Citations outside LaTeX -The command `reftex-citation' may also be used outside LaTeX (e.g. in +The command 'reftex-citation' may also be used outside LaTeX (e.g. in a mail buffer). See the Info documentation for details. *** Short context is no longer fontified. @@ -1305,7 +1305,7 @@ fontified, use (setq reftex-refontify-context t) -** file-cache-minibuffer-complete now accepts a prefix argument. +** 'file-cache-minibuffer-complete' now accepts a prefix argument. With a prefix argument, it does not try to do completion of the file name within its directory; it only checks for other directories that contain the same file name. @@ -1339,50 +1339,50 @@ uses it for keeping notes about his postal Chess games, but it should be helpful for other two-player games as well, as long as they have an established system of notation similar to Chess. -*** The new minor mode checkdoc-minor-mode provides Emacs Lisp +*** The new minor mode 'checkdoc-minor-mode' provides Emacs Lisp documentation string checking for style and spelling. The style guidelines are found in the Emacs Lisp programming manual. *** The net-utils package makes some common networking features available in Emacs. Some of these functions are wrappers around -system utilities (ping, nslookup, etc.); others are implementations of -simple protocols (finger, whois) in Emacs Lisp. There are also +system utilities ('ping', 'nslookup', etc.); others are implementations of +simple protocols ('finger', 'whois') in Emacs Lisp. There are also functions to make simple connections to TCP/IP ports for debugging and the like. -*** highlight-changes-mode is a minor mode that uses colors to +*** 'highlight-changes-mode' is a minor mode that uses colors to identify recently changed parts of the buffer text. -*** The new package `midnight' lets you specify things to be done +*** The new package 'midnight' lets you specify things to be done within Emacs at midnight--by default, kill buffers that you have not used in a considerable time. To use this feature, customize -the user option `midnight-mode' to t. +the user option 'midnight-mode' to t. *** The file generic-x.el defines a number of simple major modes. - apache-generic-mode: For Apache and NCSA httpd configuration files - samba-generic-mode: Samba configuration files - fvwm-generic-mode: For fvwm initialization files - x-resource-generic-mode: For X resource files - hosts-generic-mode: For hosts files (.rhosts, /etc/hosts, etc.) - mailagent-rules-generic-mode: For mailagent .rules files - javascript-generic-mode: For JavaScript files - vrml-generic-mode: For VRML files - java-manifest-generic-mode: For Java MANIFEST files - java-properties-generic-mode: For Java property files - mailrc-generic-mode: For .mailrc files + 'apache-generic-mode': For Apache and NCSA httpd configuration files + 'samba-generic-mode': Samba configuration files + 'fvwm-generic-mode': For fvwm initialization files + 'x-resource-generic-mode': For X resource files + 'hosts-generic-mode': For hosts files (.rhosts, /etc/hosts, etc.) + 'mailagent-rules-generic-mode': For mailagent .rules files + 'javascript-generic-mode': For JavaScript files + 'vrml-generic-mode': For VRML files + 'java-manifest-generic-mode': For Java MANIFEST files + 'java-properties-generic-mode': For Java property files + 'mailrc-generic-mode': For .mailrc files Platform-specific modes: - prototype-generic-mode: For Solaris/Sys V prototype files - pkginfo-generic-mode: For Solaris/Sys V pkginfo files - alias-generic-mode: For C shell alias files - inf-generic-mode: For MS-Windows INF files - ini-generic-mode: For MS-Windows INI files - reg-generic-mode: For MS-Windows Registry files - bat-generic-mode: For MS-Windows BAT scripts - rc-generic-mode: For MS-Windows Resource files - rul-generic-mode: For InstallShield scripts + 'prototype-generic-mode': For Solaris/Sys V prototype files + 'pkginfo-generic-mode': For Solaris/Sys V pkginfo files + 'alias-generic-mode': For C shell alias files + 'inf-generic-mode': For MS-Windows INF files + 'ini-generic-mode': For MS-Windows INI files + 'reg-generic-mode': For MS-Windows Registry files + 'bat-generic-mode': For MS-Windows BAT scripts + 'rc-generic-mode': For MS-Windows Resource files + 'rul-generic-mode': For InstallShield scripts * Lisp changes in Emacs 20.3 since the Emacs Lisp Manual was published @@ -1396,22 +1396,22 @@ Thus, each lisp file is read in a consistent way regardless of whether you started Emacs with --unibyte, so that a Lisp program gives consistent results regardless of how Emacs was started. -** The new function assoc-default is useful for searching an alist, +** The new function 'assoc-default' is useful for searching an alist, and using a default value if the key is not found there. You can specify a comparison predicate, so this function is useful for searching comparing a string against an alist of regular expressions. -** The functions unibyte-char-to-multibyte and -multibyte-char-to-unibyte convert between unibyte and multibyte +** The functions 'unibyte-char-to-multibyte' and +'multibyte-char-to-unibyte' convert between unibyte and multibyte character codes, in a way that is appropriate for the current language environment. -** The functions read-event, read-char and read-char-exclusive now +** The functions 'read-event', 'read-char' and 'read-char-exclusive' now take two optional arguments. PROMPT, if non-nil, specifies a prompt string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the current input method for reading this one event. -** Two new variables print-escape-nonascii and print-escape-multibyte +** Two new variables 'print-escape-nonascii' and 'print-escape-multibyte' now control whether to output certain characters as backslash-sequences. print-escape-nonascii applies to single-byte non-ASCII characters; print-escape-multibyte applies to multibyte @@ -1433,7 +1433,7 @@ considered obsolete. The function char-boundary-p has been deleted. See below for additional changes relating to multibyte characters. -** defcustom, defface and defgroup now accept the keyword `:version'. +** 'defcustom', 'defface' and 'defgroup' now accept the keyword ':version'. Use this to specify in which version of Emacs a certain variable's default value changed. For example, @@ -1446,9 +1446,9 @@ default value changed. For example, :version "20.3") If an entire new group is added or the variables in it have the -default values changed, then just add a `:version' to that group. It +default values changed, then just add a ':version' to that group. It is recommended that new packages added to the distribution contain a -`:version' in the top level group. +':version' in the top level group. This information is used to control the customize-changed-options command. @@ -1489,25 +1489,25 @@ clear that this would be very useful; windows tend to come and go in a very transitory fashion, so that trying to produce any specific effect through a window-local binding would not be very robust. -** `sregexq' and `sregex' are two new functions for constructing +** 'sregexq' and 'sregex' are two new functions for constructing "symbolic regular expressions." These are Lisp expressions that, when evaluated, yield conventional string-based regexps. The symbolic form makes it easier to construct, read, and maintain complex patterns. See the documentation in sregex.el. -** parse-partial-sexp's return value has an additional element which +** 'parse-partial-sexp's return value has an additional element which is used to pass information along if you pass it to another call to parse-partial-sexp, starting its scan where the first call ended. The contents of this field are not yet finalized. -** eval-region now accepts a fourth optional argument READ-FUNCTION. -If it is non-nil, that function is used instead of `read'. +** 'eval-region' now accepts a fourth optional argument READ-FUNCTION. +If it is non-nil, that function is used instead of 'read'. -** unload-feature by default removes the feature's functions from +** 'unload-feature' by default removes the feature's functions from known hooks to avoid trouble, but a package providing FEATURE can define a hook FEATURE-unload-hook to be run by unload-feature instead. -** read-from-minibuffer no longer returns the argument DEFAULT-VALUE +** 'read-from-minibuffer' no longer returns the argument DEFAULT-VALUE when the user enters empty input. It now returns the null string, as it did in Emacs 19. The default value is made available in the history via M-n, but it is not applied here as a default. @@ -1516,66 +1516,66 @@ The other, more specialized minibuffer-reading functions continue to return the default value (not the null string) when the user enters empty input. -** The new variable read-buffer-function controls which routine to use +** The new variable 'read-buffer-function' controls which routine to use for selecting buffers. For example, if you set this variable to -`iswitchb-read-buffer', iswitchb will be used to read buffer names. +'iswitchb-read-buffer', iswitchb will be used to read buffer names. Other functions can also be used if they accept the same arguments as -`read-buffer' and return the selected buffer name as a string. +'read-buffer' and return the selected buffer name as a string. -** The new function read-passwd reads a password from the terminal, +** The new function 'read-passwd' reads a password from the terminal, echoing a period for each character typed. It takes three arguments: a prompt string, a flag which says "read it twice to make sure", and a default password to use if the user enters nothing. -** The variable fill-nobreak-predicate gives major modes a way to +** The variable 'fill-nobreak-predicate' gives major modes a way to specify not to break a line at certain places. Its value is a function which is called with no arguments, with point located at the place where a break is being considered. If the function returns non-nil, then the line won't be broken there. -** window-end now takes an optional second argument, UPDATE. +** 'window-end' now takes an optional second argument, UPDATE. If this is non-nil, then the function always returns an accurate up-to-date value for the buffer position corresponding to the end of the window, even if this requires computation. -** other-buffer now takes an optional argument FRAME +** 'other-buffer' now takes an optional argument FRAME which specifies which frame's buffer list to use. If it is nil, that means use the selected frame's buffer list. -** The new variable buffer-display-time, always local in every buffer, +** The new variable 'buffer-display-time', always local in every buffer, holds the value of (current-time) as of the last time that a window was directed to display this buffer. ** It is now meaningful to compare two window-configuration objects -with `equal'. Two window-configuration objects are equal if they +with 'equal'. Two 'window-configuration' objects are equal if they describe equivalent arrangements of windows, in the same frame--in other words, if they would give the same results if passed to -set-window-configuration. +'set-window-configuration'. -** compare-window-configurations is a new function that compares two +** 'compare-window-configurations' is a new function that compares two window configurations loosely. It ignores differences in saved buffer positions and scrolling, and considers only the structure and sizes of windows and the choice of buffers to display. -** The variable minor-mode-overriding-map-alist allows major modes to +** The variable 'minor-mode-overriding-map-alist' allows major modes to override the key bindings of a minor mode. The elements of this alist -look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP). +look like the elements of 'minor-mode-map-alist': (VARIABLE . KEYMAP). If the VARIABLE in an element of minor-mode-overriding-map-alist has a non-nil value, the paired KEYMAP is active, and totally overrides the map (if any) specified for the same variable in minor-mode-map-alist. -minor-mode-overriding-map-alist is automatically local in all buffers, +'minor-mode-overriding-map-alist' is automatically local in all buffers, and it is meant to be set by major modes. -** The function match-string-no-properties is like match-string +** The function 'match-string-no-properties' is like 'match-string' except that it discards all text properties from the result. -** The function load-average now accepts an optional argument +** The function 'load-average' now accepts an optional argument USE-FLOATS. If it is non-nil, the load average values are returned as floating point numbers, rather than as integers to be divided by 100. -** The new variable temporary-file-directory specifies the directory +** The new variable 'temporary-file-directory' specifies the directory to use for creating temporary files. The default value is determined in a reasonable way for your operating system; on GNU and Unix systems it is based on the TMP and TMPDIR environment variables. @@ -1586,7 +1586,7 @@ it is based on the TMP and TMPDIR environment variables. keywords :visible and :filter. The existing keyword :keys is now better supported. -The variable `easy-menu-precalculate-equivalent-keybindings' controls +The variable 'easy-menu-precalculate-equivalent-keybindings' controls a new feature which calculates keyboard equivalents for the menu when you define the menu. The default is t. If you rarely use menus, you can set the variable to nil to disable this precalculation feature; @@ -1597,7 +1597,7 @@ then the calculation is done only if you use the menu bar. In a keymap, a key binding that has the format (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING) defines a menu item. Now a menu item definition may also be a list that -starts with the symbol `menu-item'. +starts with the symbol 'menu-item'. The format is: (menu-item ITEM-NAME) or @@ -1617,7 +1617,7 @@ The supported properties include :keys DESCRIPTION DESCRIPTION is a string that describes an equivalent keyboard binding for REAL-BINDING. DESCRIPTION is expanded with - `substitute-command-keys' before it is used. + 'substitute-command-keys' before it is used. :key-sequence KEY-SEQUENCE KEY-SEQUENCE is a key-sequence for an equivalent keyboard binding. @@ -1637,7 +1637,7 @@ Eventually ordinary X-buttons may be supported. ** New event types -*** The new event type `mouse-wheel' is generated by a wheel on a +*** The new event type 'mouse-wheel' is generated by a wheel on a mouse (such as the MS Intellimouse). The event contains a delta that corresponds to the amount and direction that the wheel is rotated, which is typically used to implement a scroll or zoom. The format is: @@ -1653,7 +1653,7 @@ forward, away from the user. As of now, this event type is generated only on MS Windows. -*** The new event type `drag-n-drop' is generated when a group of +*** The new event type 'drag-n-drop' is generated when a group of files is selected in an application outside of Emacs, and then dragged and dropped onto an Emacs frame. The event contains a list of filenames that were dragged and dropped, which are then typically @@ -1669,9 +1669,9 @@ As of now, this event type is generated only on MS Windows. ** Changes relating to multibyte characters. -*** The variable enable-multibyte-characters is now read-only; +*** The variable 'enable-multibyte-characters' is now read-only; any attempt to set it directly signals an error. The only way -to change this value in an existing buffer is with set-buffer-multibyte. +to change this value in an existing buffer is with 'set-buffer-multibyte'. *** In a string constant, `\ ' now stands for "nothing at all". You can use it to terminate a hex escape which is followed by a character @@ -1681,9 +1681,9 @@ that could otherwise be read as part of the hex escape. in Emacs 19 and before. The function chars-in-string has been deleted. -The function concat-chars has been renamed to `string'. +The function concat-chars has been renamed to 'string'. -*** The function set-buffer-multibyte sets the flag in the current +*** The function 'set-buffer-multibyte' sets the flag in the current buffer that says whether the buffer uses multibyte representation or unibyte representation. If the argument is nil, it selects unibyte representation. Otherwise it selects multibyte representation. @@ -1694,12 +1694,12 @@ viewed as characters; a sequence of two bytes which is treated as one character when the buffer uses multibyte representation will count as two characters using unibyte representation. -This function sets enable-multibyte-characters to record which +This function sets 'enable-multibyte-characters' to record which representation is in use. It also adjusts various data in the buffer (including its markers, overlays and text properties) so that they are consistent with the new representation. -*** string-make-multibyte takes a string and converts it to multibyte +*** 'string-make-multibyte' takes a string and converts it to multibyte representation. Most of the time, you don't need to care about the representation, because Emacs converts when necessary; however, it makes a difference when you compare strings. @@ -1708,7 +1708,7 @@ The conversion of non-ASCII characters works by adding the value of nonascii-insert-offset to each character, or by translating them using the table nonascii-translation-table. -*** string-make-unibyte takes a string and converts it to unibyte +*** 'string-make-unibyte' takes a string and converts it to unibyte representation. Most of the time, you don't need to care about the representation, but it makes a difference when you compare strings. @@ -1716,18 +1716,18 @@ The conversion from multibyte to unibyte representation loses information; the only time Emacs performs it automatically is when inserting a multibyte string into a unibyte buffer. -*** string-as-multibyte takes a string, and returns another string +*** 'string-as-multibyte' takes a string, and returns another string which contains the same bytes, but treats them as multibyte. -*** string-as-unibyte takes a string, and returns another string +*** 'string-as-unibyte' takes a string, and returns another string which contains the same bytes, but treats them as unibyte. -*** The new function compare-strings lets you compare +*** The new function 'compare-strings' lets you compare portions of two strings. Unibyte strings are converted to multibyte, so that a unibyte string can match a multibyte string. You can specify whether to ignore case or not. -*** assoc-ignore-case now uses compare-strings so that +*** 'assoc-ignore-case' now uses compare-strings so that it can treat unibyte and multibyte strings as equal. *** Regular expression operations and buffer string searches now @@ -1745,21 +1745,21 @@ expression [^\0-\177] works for it. *** Structure of coding system changed. All coding systems (including aliases and subsidiaries) are named -by symbols; the symbol's `coding-system' property is a vector +by symbols; the symbol's 'coding-system' property is a vector which defines the coding system. Aliases share the same vector as the principal name, so that altering the contents of this vector affects the principal name and its aliases. You can define your own alias name of a coding system by the function -define-coding-system-alias. +'define-coding-system-alias'. The coding system definition includes a property list of its own. Use -the new functions `coding-system-get' and `coding-system-put' to -access such coding system properties as post-read-conversion, -pre-write-conversion, character-translation-table-for-decode, -character-translation-table-for-encode, mime-charset, and -safe-charsets. For instance, (coding-system-get 'iso-latin-1 +the new functions 'coding-system-get' and 'coding-system-put' to +access such coding system properties as 'post-read-conversion', +'pre-write-conversion', 'character-translation-table-for-decode', +'character-translation-table-for-encode', 'mime-charset', and +'safe-charsets'. For instance, (coding-system-get 'iso-latin-1 'mime-charset) gives the corresponding MIME-charset parameter -`iso-8859-1'. +'iso-8859-1'. Among the coding system properties listed above, safe-charsets is new. The value of this property is a list of character sets which this @@ -1771,54 +1771,54 @@ also be handled safely by systems other than Emacs as far as they are capable of that coding system. Though, Emacs itself can encode the other character sets and read it back correctly. -*** The new function select-safe-coding-system can be used to find a +*** The new function 'select-safe-coding-system' can be used to find a proper coding system for encoding the specified region or string. This function requires a user interaction. -*** The new functions find-coding-systems-region and -find-coding-systems-string are helper functions used by -select-safe-coding-system. They return a list of all proper coding +*** The new functions 'find-coding-systems-region' and +'find-coding-systems-string' are helper functions used by +'select-safe-coding-system'. They return a list of all proper coding systems to encode a text in some region or string. If you don't want a user interaction, use one of these functions instead of -select-safe-coding-system. +'select-safe-coding-system'. *** The explicit encoding and decoding functions, such as -decode-coding-region and encode-coding-string, now set -last-coding-system-used to reflect the actual way encoding or decoding +'decode-coding-region' and 'encode-coding-string', now set +'last-coding-system-used' to reflect the actual way encoding or decoding was done. -*** The new function detect-coding-with-language-environment can be +*** The new function 'detect-coding-with-language-environment' can be used to detect a coding system of text according to priorities of coding systems used by some specific language environment. -*** The functions detect-coding-region and detect-coding-string always +*** The functions 'detect-coding-region' and 'detect-coding-string' always return a list if the arg HIGHEST is nil. Thus, if only ASCII characters are found, they now return a list of single element -`undecided' or its subsidiaries. +'undecided' or its subsidiaries. -*** The new functions coding-system-change-eol-conversion and -coding-system-change-text-conversion can be used to get a different +*** The new functions 'coding-system-change-eol-conversion' and +'coding-system-change-text-conversion' can be used to get a different coding system than what specified only in how end-of-line or text is converted. -*** The new function set-selection-coding-system can be used to set a +*** The new function 'set-selection-coding-system' can be used to set a coding system for communicating with other X clients. -*** The function `map-char-table' now passes as argument only valid +*** The function 'map-char-table' now passes as argument only valid character codes, plus generic characters that stand for entire character sets or entire subrows of a character set. In other words, -each time `map-char-table' calls its FUNCTION argument, the key value +each time 'map-char-table' calls its FUNCTION argument, the key value either will be a valid individual character code, or will stand for a range of characters. -*** The new function `char-valid-p' can be used for checking whether a +*** The new function 'char-valid-p' can be used for checking whether a Lisp object is a valid character code or not. -*** The new function `charset-after' returns a charset of a character +*** The new function 'charset-after' returns a charset of a character in the current buffer at position POS. *** Input methods are now implemented using the variable -input-method-function. If this is non-nil, its value should be a +'input-method-function'. If this is non-nil, its value should be a function; then, whenever Emacs reads an input event that is a printing character with no modifier bits, it calls that function, passing the event as an argument. Often this function will read more input, first @@ -1834,10 +1834,10 @@ The input method function is not called when reading the second and subsequent events of a key sequence. *** You can customize any language environment by using -set-language-environment-hook and exit-language-environment-hook. +'set-language-environment-hook' and 'exit-language-environment-hook'. -The hook `exit-language-environment-hook' should be used to undo -customizations that you made with set-language-environment-hook. For +The hook 'exit-language-environment-hook' should be used to undo +customizations that you made with 'set-language-environment-hook'. For instance, if you set up a special key binding for a specific language environment by set-language-environment-hook, you should set up exit-language-environment-hook to restore the normal key binding. @@ -1859,9 +1859,9 @@ session or permanently. (Permanent settings are stored automatically in your .emacs file.) ** Scroll bars are now on the left side of the window. -You can change this with M-x customize-option scroll-bar-mode. +You can change this with M-x customize-option 'scroll-bar-mode'. -** The mode line no longer includes the string `Emacs'. +** The mode line no longer includes the string 'Emacs'. This makes more space in the mode line for other information. ** When you select a region with the mouse, it is highlighted @@ -1873,7 +1873,7 @@ delete the character before point, as usual. ** In an incremental search the whole current match is highlighted on terminals which support this. (You can disable this feature -by setting search-highlight to nil.) +by setting 'search-highlight' to nil.) ** In the minibuffer, in some cases, you can now use M-n to insert the default value into the minibuffer as text. In effect, @@ -1885,7 +1885,7 @@ past.) ** In Text mode, now only blank lines separate paragraphs. This makes it possible to get the full benefit of Adaptive Fill mode in Text mode, and other modes derived from it (such as Mail mode). -TAB in Text mode now runs the command indent-relative; this +TAB in Text mode now runs the command 'indent-relative'; this makes a practical difference only when you use indented paragraphs. As a result, the old Indented Text mode is now identical to Text mode, @@ -1897,18 +1897,18 @@ use the new mode, Paragraph Indent Text mode. ** Scrolling changes *** Scroll commands to scroll a whole screen now preserve the screen -position of the cursor, if scroll-preserve-screen-position is non-nil. +position of the cursor, if 'scroll-preserve-screen-position' is non-nil. In this mode, if you scroll several screens back and forth, finishing on the same screen where you started, the cursor goes back to the line where it started. -*** If you set scroll-conservatively to a small number, then when you +*** If you set 'scroll-conservatively' to a small number, then when you move point a short distance off the screen, Emacs will scroll the screen just far enough to bring point back on screen, provided that -does not exceed `scroll-conservatively' lines. +does not exceed 'scroll-conservatively' lines. -*** The new variable scroll-margin says how close point can come to the +*** The new variable 'scroll-margin' says how close point can come to the top or bottom of a window. It is a number of screen lines; if point comes within that many lines of the top or bottom of the window, Emacs recenters the window. @@ -2005,7 +2005,7 @@ sequences already in the buffer, byte by byte. This is probably not what you want. If you want to edit a file of unibyte characters (Latin-1, for -example), you can do it by specifying `no-conversion' as the coding +example), you can do it by specifying 'no-conversion' as the coding system when reading the file. This coding system also turns off multibyte characters in that buffer. @@ -2038,18 +2038,18 @@ characters). Emacs does not use any fontset by default. Its default font is still chosen as in previous versions. You can tell Emacs to use a fontset -with the `-fn' option or the `Font' X resource. +with the '-fn' option or the 'Font' X resource. Emacs creates a standard fontset automatically according to the value -of standard-fontset-spec. This fontset's short name is -`fontset-standard'. Bold, italic, and bold-italic variants of the +of 'standard-fontset-spec'. This fontset's short name is +'fontset-standard'. Bold, italic, and bold-italic variants of the standard fontset are created automatically. -If you specify a default ASCII font with the `Font' resource or `-fn' +If you specify a default ASCII font with the 'Font' resource or '-fn' argument, a fontset is generated from it. This works by replacing the FOUNDRY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name with `*' then using this to specify a fontset. This fontset's short -name is `fontset-startup'. +name is 'fontset-startup'. Emacs checks resources of the form Fontset-N where N is 0, 1, 2... The resource value should have this form: @@ -2081,7 +2081,7 @@ Here is the substitution rule: (This is to prevent use of auto-scaled fonts.) The function which processes the fontset resource value to create the -fontset is called create-fontset-from-fontset-spec. You can also call +fontset is called 'create-fontset-from-fontset-spec'. You can also call that function explicitly to create a fontset. With the X resource Emacs.Font, you can specify a fontset name just @@ -2127,7 +2127,7 @@ If the immediately following command does not use the coding system, then C-x RET c ultimately has no effect. For example, C-x RET c iso-8859-1 RET C-x C-f temp RET -visits the file `temp' treating it as ISO Latin-1. +visits the file 'temp' treating it as ISO Latin-1. *** You can specify the coding system for a file using the -*- construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*- @@ -2169,7 +2169,7 @@ in the corresponding buffer. By default, process input and output are not translated at all. -*** The variable file-name-coding-system specifies the coding system +*** The variable 'file-name-coding-system' specifies the coding system to use for encoding file names before operating on them. It is also used for decoding file names obtained from the system. @@ -2203,7 +2203,7 @@ the coding system used in the visited file. It normally follows the first dash. A dash indicates the default state of affairs: no code conversion -(except CRLF => newline if appropriate). `=' means no conversion +(except CRLF => newline if appropriate). '=' means no conversion whatsoever. The ISO 8859 coding systems are represented by digits 1 through 9. Other coding systems are represented by letters: @@ -2232,7 +2232,7 @@ two additional characters appear in between the dash and the file coding system. These two characters describe the coding system for keyboard input, and the coding system for terminal output. -*** The new variable rmail-file-coding-system specifies the code +*** The new variable 'rmail-file-coding-system' specifies the code conversion to use for RMAIL files. The default value is nil. When you read mail with Rmail, each message is decoded automatically @@ -2240,7 +2240,7 @@ into Emacs' internal format. This has nothing to do with rmail-file-coding-system. That variable controls reading and writing Rmail files themselves. -*** The new variable sendmail-coding-system specifies the code +*** The new variable 'sendmail-coding-system' specifies the code conversion for outgoing mail. The default value is nil. Actually, there are three different ways of specifying the coding system @@ -2259,7 +2259,7 @@ translations. ** An easy new way to visit a file with no code or format conversion of any kind: Use M-x find-file-literally. There is also a command -insert-file-literally which inserts a file into the current buffer +'insert-file-literally' which inserts a file into the current buffer without any conversion. ** C-q's handling of octal character codes is changed. @@ -2277,7 +2277,7 @@ Precisely which Info files are used to look it up depends on the major mode. For example, in C mode, the GNU libc manual is used. ** M-TAB in most programming language modes now runs the command -complete-symbol. This command performs completion on the symbol name +'complete-symbol'. This command performs completion on the symbol name in the buffer before point. With a numeric argument, it performs completion based on the set of @@ -2310,19 +2310,19 @@ tell Emacs to go ahead anyway. ** If you wish to use Show Paren mode to display matching parentheses, it is no longer sufficient to load paren.el. Instead you must call -show-paren-mode. +'show-paren-mode'. ** If you wish to use Delete Selection mode to replace a highlighted selection when you insert new text, it is no longer sufficient to load -delsel.el. Instead you must call the function delete-selection-mode. +delsel.el. Instead you must call the function 'delete-selection-mode'. ** If you wish to use Partial Completion mode to complete partial words within symbols or filenames, it is no longer sufficient to load -complete.el. Instead you must call the function partial-completion-mode. +complete.el. Instead you must call the function 'partial-completion-mode'. ** If you wish to use uniquify to rename buffers for you, it is no longer sufficient to load uniquify.el. You must also -set uniquify-buffer-name-style to one of the non-nil legitimate values. +set 'uniquify-buffer-name-style' to one of the non-nil legitimate values. ** Changes in View mode. @@ -2330,23 +2330,23 @@ set uniquify-buffer-name-style to one of the non-nil legitimate values. Do H in view mode for a list of commands. *** There are two new commands for entering View mode: -view-file-other-frame and view-buffer-other-frame. +'view-file-other-frame' and 'view-buffer-other-frame'. *** Exiting View mode does a better job of restoring windows to their previous state. -*** New customization variable view-scroll-auto-exit. If non-nil, +*** New customization variable 'view-scroll-auto-exit'. If non-nil, scrolling past end of buffer makes view mode exit. -*** New customization variable view-exits-all-viewing-windows. If +*** New customization variable 'view-exits-all-viewing-windows'. If non-nil, view-mode will at exit restore all windows viewing buffer, not just the selected window. -*** New customization variable view-read-only. If non-nil, visiting a -read-only file automatically enters View mode, and toggle-read-only +*** New customization variable 'view-read-only'. If non-nil, visiting a +read-only file automatically enters View mode, and 'toggle-read-only' turns View mode on or off. -*** New customization variable view-remove-frame-by-deleting controls +*** New customization variable 'view-remove-frame-by-deleting' controls how to remove a not needed frame at view mode exit. If non-nil, delete the frame, if nil make an icon of it. @@ -2363,10 +2363,10 @@ blocks if a match is inside the block. The block is hidden again if the search is continued and the next match is outside the block. By customizing the variable -isearch-hide-immediately you can choose to hide all the temporarily +'isearch-hide-immediately' you can choose to hide all the temporarily shown blocks only when exiting from incremental search. -By customizing the variable hs-isearch-open you can choose what kind +By customizing the variable 'hs-isearch-open' you can choose what kind of blocks to temporarily show during isearch: comment blocks, code blocks, all of them or none. @@ -2384,7 +2384,7 @@ However, the mode will not be changed if This applies to M-x set-visited-file-name as well. -However, if you set change-major-mode-with-file-name to nil, then +However, if you set 'change-major-mode-with-file-name' to nil, then these commands do not change the major mode. ** M-x occur changes. @@ -2440,30 +2440,30 @@ The expansion is also copied verbatim if the abbreviation itself has mixed case. And using SPC M-/ to copy an additional word always copies it verbatim except when the previous copied word is all caps. -*** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search' +*** The values of 'dabbrev-case-replace' and 'dabbrev-case-fold-search' are no longer Lisp expressions. They have simply three possible values. -`dabbrev-case-replace' has these three values: nil (don't preserve -case), t (do), or `case-replace' (do like M-x query-replace). -`dabbrev-case-fold-search' has these three values: nil (don't ignore -case), t (do), or `case-fold-search' (do like search). +'dabbrev-case-replace' has these three values: nil (don't preserve +case), t (do), or 'case-replace' (do like M-x query-replace). +'dabbrev-case-fold-search' has these three values: nil (don't ignore +case), t (do), or 'case-fold-search' (do like search). ** Minibuffer history lists are truncated automatically now to a -certain length. The variable history-length specifies how long they +certain length. The variable 'history-length' specifies how long they can be. The default value is 30. ** Changes in Mail mode. -*** The key C-x m no longer runs the `mail' command directly. -Instead, it runs the command `compose-mail', which invokes the mail +*** The key C-x m no longer runs the 'mail' command directly. +Instead, it runs the command 'compose-mail', which invokes the mail composition mechanism you have selected with the variable -`mail-user-agent'. The default choice of user agent is -`sendmail-user-agent', which gives behavior compatible with the old +'mail-user-agent'. The default choice of user agent is +'sendmail-user-agent', which gives behavior compatible with the old behavior. -C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs -compose-mail-other-frame. +C-x 4 m now runs 'compose-mail-other-window', and C-x 5 m runs +'compose-mail-other-frame'. *** While composing a reply to a mail message, from Rmail, you can use the command C-c C-r to cite just the region from the message you are @@ -2480,23 +2480,23 @@ need to expand mail aliases yourself before sending mail. *** New features in the mail-complete command. -**** The mail-complete command now inserts the user's full name, -for local users or if that is known. The variable mail-complete-style +**** The 'mail-complete' command now inserts the user's full name, +for local users or if that is known. The variable 'mail-complete-style' controls the style to use, and whether to do this at all. -Its values are like those of mail-from-style. +Its values are like those of 'mail-from-style'. -**** The variable mail-passwd-command lets you specify a shell command +**** The variable 'mail-passwd-command' lets you specify a shell command to run to fetch a set of password-entries that add to the ones in /etc/passwd. -**** The variable mail-passwd-file now specifies a list of files to read +**** The variable 'mail-passwd-file' now specifies a list of files to read to get the list of user ids. By default, one file is used: /etc/passwd. ** You can "quote" a file name to inhibit special significance of special syntax, by adding `/:' to the beginning. Thus, if you have a directory named `/foo:', you can prevent it from being treated as a -reference to a remote host named `foo' by writing it as `/:/foo:'. +reference to a remote host named 'foo' by writing it as `/:/foo:'. Emacs uses this new construct automatically when necessary, such as when you start it with a working directory whose name might otherwise @@ -2560,7 +2560,7 @@ for output. Gnus. *** Scoring can now be performed with logical operators like -`and', `or', `not', and parent redirection. +'and', 'or', 'not', and parent redirection. *** Article washing status can be displayed in the article mode line. @@ -2569,18 +2569,18 @@ article mode line. *** Suppression of duplicate articles based on Message-ID. -(setq gnus-suppress-duplicates t) + (setq gnus-suppress-duplicates t) *** New variables for specifying what score and adapt files are to be considered home score and adapt files. See -`gnus-home-score-file' and `gnus-home-adapt-files'. +'gnus-home-score-file' and 'gnus-home-adapt-files'. *** Groups can inherit group parameters from parent topics. *** Article editing has been revamped and is now usable. *** Signatures can be recognized in more intelligent fashions. -See `gnus-signature-separator' and `gnus-signature-limit'. +See 'gnus-signature-separator' and 'gnus-signature-limit'. *** Summary pick mode has been made to look more nn-like. Line numbers are displayed and the `.' command can be @@ -2597,7 +2597,7 @@ generating lines in buffers. *** Several commands in the group buffer can be undone with `C-M-_'. -*** Scoring can be done on words using the new score type `w'. +*** Scoring can be done on words using the new score type 'w'. *** Adaptive scoring can be done on a Subject word-by-word basis: @@ -2616,7 +2616,7 @@ the native server. `M-x gnus-group-clear-data-on-native-groups' *** A new command for reading collections of documents -(nndoc with nnvirtual on top) has been added -- `C-M-d'. +(nndoc with nnvirtual on top) has been added -- 'C-M-d'. *** Process mark sets can be pushed and popped. @@ -2651,14 +2651,14 @@ sorting functions, and each topic can be sorted independently. *** More hooks and functions have been added to remove junk from incoming mail before saving the mail. - See `nnmail-prepare-incoming-header-hook'. + See 'nnmail-prepare-incoming-header-hook'. *** The nnml mail backend now understands compressed article files. *** To enable Gnus to read/post multi-lingual articles, you must execute the following code, for instance, in your .emacs. - (add-hook 'gnus-startup-hook 'gnus-mule-initialize) + (add-hook 'gnus-startup-hook #'gnus-mule-initialize) Then, when you start Gnus, it will decode non-ASCII text automatically and show appropriate characters. (Note: if you are using gnus-mime @@ -2712,17 +2712,17 @@ share the same style variable settings; to make them buffer local, set c-style-variables-are-local-p to t in your .emacs file. Note that you must do this *before* CC Mode is loaded. -*** The new variable c-indentation-style holds the C style name +*** The new variable 'c-indentation-style' holds the C style name of the current buffer. -*** The variable c-block-comments-indent-p has been deleted, because +*** The variable 'c-block-comments-indent-p' has been deleted, because it is no longer necessary. C mode now handles all the supported styles of block comments, with no need to say which one you will use. *** There is a new indentation style "python", which specifies the C style that the Python developers like. -*** There is a new c-cleanup-list option: brace-elseif-brace. +*** There is a new 'c-cleanup-list' option: brace-elseif-brace. This says to put ...} else if (...) {... on one line, just as brace-else-brace says to put ...} else {... on one line. @@ -2744,17 +2744,17 @@ other developers. Such files are made read-only by CVS. To get a writable copy, type C-x C-q in a buffer visiting such a file. VC then calls "cvs edit", which notifies the other developers of it. -*** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for +*** 'vc-version-diff' (C-u C-x v =) now suggests reasonable defaults for version numbers, based on the current state of the file. ** Calendar changes. -*** A new function, list-holidays, allows you list holidays or +*** A new function, 'list-holidays', allows you list holidays or subclasses of holidays for ranges of years. Related menu items allow you do this for the year of the selected date, or the following/previous years. -*** There is now support for the Baha'i calendar system. Use `pb' in +*** There is now support for the Baha'i calendar system. Use 'pb' in the *Calendar* buffer to display the current Baha'i date. The Baha'i calendar, or "Badi calendar" is a system of 19 months with 19 days each, and 4 intercalary days (5 during a Gregorian leap year). The @@ -2771,17 +2771,17 @@ layout. Some printer systems print a header page and force the first page to be printed on the back of the header page when using duplex. If your printer system has this behavior, set variable -`ps-banner-page-when-duplexing' to t. +'ps-banner-page-when-duplexing' to t. -If variable `ps-banner-page-when-duplexing' is non-nil, it prints a +If variable 'ps-banner-page-when-duplexing' is non-nil, it prints a blank page as the very first printed page. So, it behaves as if the very first character of buffer (or region) were a form feed ^L (\014). -The variable `ps-spool-config' specifies who is responsible for +The variable 'ps-spool-config' specifies who is responsible for setting duplex mode and page size. Valid values are: - lpr-switches duplex and page size are configured by `ps-lpr-switches'. - Don't forget to set `ps-lpr-switches' to select duplex + lpr-switches duplex and page size are configured by 'ps-lpr-switches'. + Don't forget to set 'ps-lpr-switches' to select duplex printing for your printer. setpagedevice duplex and page size are configured by ps-print using the @@ -2790,15 +2790,15 @@ setting duplex mode and page size. Valid values are: nil duplex and page size are configured by ps-print *not* using the setpagedevice PostScript operator. -The variable `ps-spool-tumble' specifies how the page images on +The variable 'ps-spool-tumble' specifies how the page images on opposite sides of a sheet are oriented with respect to each other. If -`ps-spool-tumble' is nil, ps-print produces output suitable for -bindings on the left or right. If `ps-spool-tumble' is non-nil, +'ps-spool-tumble' is nil, ps-print produces output suitable for +bindings on the left or right. If 'ps-spool-tumble' is non-nil, ps-print produces output suitable for bindings at the top or bottom. -This variable takes effect only if `ps-spool-duplex' is non-nil. +This variable takes effect only if 'ps-spool-duplex' is non-nil. The default value is nil. -The variable `ps-header-frame-alist' specifies a header frame +The variable 'ps-header-frame-alist' specifies a header frame properties alist. Valid frame properties are: fore-color Specify the foreground frame color. @@ -2824,25 +2824,25 @@ properties alist. Valid frame properties are: Any other property is ignored. Don't change this alist directly; instead use Custom, or the -`ps-value', `ps-get', `ps-put' and `ps-del' functions (see there for +'ps-value', 'ps-get', 'ps-put' and 'ps-del' functions (see there for documentation). Ps-print can also print footers. The footer variables are: -`ps-print-footer', `ps-footer-offset', `ps-print-footer-frame', -`ps-footer-font-family', `ps-footer-font-size', `ps-footer-line-pad', -`ps-footer-lines', `ps-left-footer', `ps-right-footer' and -`ps-footer-frame-alist'. These variables are similar to those +'ps-print-footer', 'ps-footer-offset', 'ps-print-footer-frame', +'ps-footer-font-family', 'ps-footer-font-size', 'ps-footer-line-pad', +'ps-footer-lines', 'ps-left-footer', 'ps-right-footer' and +'ps-footer-frame-alist'. These variables are similar to those controlling headers. *** Color management (subgroup) -If `ps-print-color-p' is non-nil, the buffer's text will be printed in +If 'ps-print-color-p' is non-nil, the buffer's text will be printed in color. *** Face Management (subgroup) If you need to print without worrying about face background colors, -set the variable `ps-use-face-background' which specifies if face +set the variable 'ps-use-face-background' which specifies if face background should be used. Valid values are: t always use face background color. @@ -2851,47 +2851,47 @@ background should be used. Valid values are: *** N-up printing (subgroup) -The variable `ps-n-up-printing' specifies the number of pages per +The variable 'ps-n-up-printing' specifies the number of pages per sheet of paper. -The variable `ps-n-up-margin' specifies the margin in points (pt) +The variable 'ps-n-up-margin' specifies the margin in points (pt) between the sheet border and the n-up printing. -If variable `ps-n-up-border-p' is non-nil, a border is drawn around +If variable 'ps-n-up-border-p' is non-nil, a border is drawn around each page. -The variable `ps-n-up-filling' specifies how the page matrix is filled +The variable 'ps-n-up-filling' specifies how the page matrix is filled on each sheet of paper. Following are the valid values for -`ps-n-up-filling' with a filling example using a 3x4 page matrix: +'ps-n-up-filling' with a filling example using a 3x4 page matrix: - `left-top' 1 2 3 4 `left-bottom' 9 10 11 12 + 'left-top' 1 2 3 4 'left-bottom' 9 10 11 12 5 6 7 8 5 6 7 8 9 10 11 12 1 2 3 4 - `right-top' 4 3 2 1 `right-bottom' 12 11 10 9 + 'right-top' 4 3 2 1 'right-bottom' 12 11 10 9 8 7 6 5 8 7 6 5 12 11 10 9 4 3 2 1 - `top-left' 1 4 7 10 `bottom-left' 3 6 9 12 + 'top-left' 1 4 7 10 'bottom-left' 3 6 9 12 2 5 8 11 2 5 8 11 3 6 9 12 1 4 7 10 - `top-right' 10 7 4 1 `bottom-right' 12 9 6 3 + 'top-right' 10 7 4 1 'bottom-right' 12 9 6 3 11 8 5 2 11 8 5 2 12 9 6 3 10 7 4 1 -Any other value is treated as `left-top'. +Any other value is treated as 'left-top'. *** Zebra stripes (subgroup) -The variable `ps-zebra-color' controls the zebra stripes grayscale or +The variable 'ps-zebra-color' controls the zebra stripes grayscale or RGB color. -The variable `ps-zebra-stripe-follow' specifies how zebra stripes +The variable 'ps-zebra-stripe-follow' specifies how zebra stripes continue on next page. Visually, valid values are (the character `+' to the right of each column indicates that a line is printed): - `nil' `follow' `full' `full-follow' + 'nil' 'follow' 'full' 'full-follow' Current Page -------- ----------- --------- ---------------- 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + @@ -2919,86 +2919,86 @@ to the right of each column indicates that a line is printed): 22 + 22 + -------- ----------- --------- ---------------- -Any other value is treated as `nil'. +Any other value is treated as 'nil'. *** Printer management (subgroup) -The variable `ps-printer-name-option' determines the option used by +The variable 'ps-printer-name-option' determines the option used by some utilities to indicate the printer name; it's used only when -`ps-printer-name' is a non-empty string. If you're using the lpr -utility to print, for example, `ps-printer-name-option' should be set +'ps-printer-name' is a non-empty string. If you're using the lpr +utility to print, for example, 'ps-printer-name-option' should be set to "-P". -The variable `ps-manual-feed' indicates if the printer requires manual +The variable 'ps-manual-feed' indicates if the printer requires manual paper feeding. If it's nil, automatic feeding takes place. If it's non-nil, manual feeding takes place. -The variable `ps-end-with-control-d' specifies whether C-d (\x04) +The variable 'ps-end-with-control-d' specifies whether C-d (\x04) should be inserted at end of the generated PostScript. Non-nil means do so. *** Page settings (subgroup) -If variable `ps-warn-paper-type' is nil, it's *not* treated as an +If variable 'ps-warn-paper-type' is nil, it's *not* treated as an error if the PostScript printer doesn't have a paper with the size -indicated by `ps-paper-type'; the default paper size will be used -instead. If `ps-warn-paper-type' is non-nil, an error is signaled if +indicated by 'ps-paper-type'; the default paper size will be used +instead. If 'ps-warn-paper-type' is non-nil, an error is signaled if the PostScript printer doesn't support a paper with the size indicated -by `ps-paper-type'. This is used when `ps-spool-config' is set to -`setpagedevice'. +by 'ps-paper-type'. This is used when 'ps-spool-config' is set to +'setpagedevice'. -The variable `ps-print-upside-down' determines the orientation for -printing pages: nil means `normal' printing, non-nil means -`upside-down' printing (that is, the page is rotated by 180 degrees). +The variable 'ps-print-upside-down' determines the orientation for +printing pages: nil means 'normal' printing, non-nil means +'upside-down' printing (that is, the page is rotated by 180 degrees). -The variable `ps-selected-pages' specifies which pages to print. If +The variable 'ps-selected-pages' specifies which pages to print. If it's nil, all pages are printed. If it's a list, list elements may be integers specifying a single page to print, or cons cells (FROM . TO) specifying to print from page FROM to TO. Invalid list elements, that is integers smaller than one, or elements whose FROM is greater than its TO, are ignored. -The variable `ps-even-or-odd-pages' specifies how to print even/odd +The variable 'ps-even-or-odd-pages' specifies how to print even/odd pages. Valid values are: nil print all pages. - `even-page' print only even pages. + 'even-page' print only even pages. - `odd-page' print only odd pages. + 'odd-page' print only odd pages. - `even-sheet' print only even sheets. - That is, if `ps-n-up-printing' is 1, it behaves like - `even-page', but for values greater than 1, it'll + 'even-sheet' print only even sheets. + That is, if 'ps-n-up-printing' is 1, it behaves like + 'even-page', but for values greater than 1, it'll print only the even sheet of paper. - `odd-sheet' print only odd sheets. - That is, if `ps-n-up-printing' is 1, it behaves like - `odd-page'; but for values greater than 1, it'll print + 'odd-sheet' print only odd sheets. + That is, if 'ps-n-up-printing' is 1, it behaves like + 'odd-page'; but for values greater than 1, it'll print only the odd sheet of paper. Any other value is treated as nil. -If you set `ps-selected-pages' (see there for documentation), pages -are filtered by `ps-selected-pages', and then by -`ps-even-or-odd-pages'. For example, if we have: +If you set 'ps-selected-pages' (see there for documentation), pages +are filtered by 'ps-selected-pages', and then by +'ps-even-or-odd-pages'. For example, if we have: (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20)) -and we combine this with `ps-even-or-odd-pages' and -`ps-n-up-printing', we get: +and we combine this with 'ps-even-or-odd-pages' and +'ps-n-up-printing', we get: -`ps-n-up-printing' = 1: - `ps-even-or-odd-pages' PAGES PRINTED +'ps-n-up-printing' = 1: + 'ps-even-or-odd-pages' PAGES PRINTED nil 1, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20 even-page 4, 6, 8, 10, 12, 14, 16, 20 odd-page 1, 7, 9, 13, 15 even-sheet 4, 6, 8, 10, 12, 14, 16, 20 odd-sheet 1, 7, 9, 13, 15 -`ps-n-up-printing' = 2: - `ps-even-or-odd-pages' PAGES PRINTED +'ps-n-up-printing' = 2: + 'ps-even-or-odd-pages' PAGES PRINTED nil 1/4, 6/7, 8/9, 10/12, 13/14, 15/16, 20 even-page 4/6, 8/10, 12/14, 16/20 odd-page 1/7, 9/13, 15 @@ -3007,23 +3007,23 @@ and we combine this with `ps-even-or-odd-pages' and *** Miscellany (subgroup) -The variable `ps-error-handler-message' specifies where error handler +The variable 'ps-error-handler-message' specifies where error handler messages should be sent. It is also possible to add a user-defined PostScript prologue code in front of all generated prologue code by setting the variable -`ps-user-defined-prologue'. +'ps-user-defined-prologue'. -The variable `ps-line-number-font' specifies the font for line numbers. +The variable 'ps-line-number-font' specifies the font for line numbers. -The variable `ps-line-number-font-size' specifies the font size in +The variable 'ps-line-number-font-size' specifies the font size in points for line numbers. -The variable `ps-line-number-color' specifies the color for line -numbers. See `ps-zebra-color' for documentation. +The variable 'ps-line-number-color' specifies the color for line +numbers. See 'ps-zebra-color' for documentation. -The variable `ps-line-number-step' specifies the interval in which -line numbers are printed. For example, if `ps-line-number-step' is set +The variable 'ps-line-number-step' specifies the interval in which +line numbers are printed. For example, if 'ps-line-number-step' is set to 2, the printing will look like: 1 one line @@ -3040,14 +3040,14 @@ integer an integer specifying the interval in which line numbers are printed. If it's smaller than or equal to zero, 1 is used. -`zebra' specifies that only the line number of the first line in a +'zebra' specifies that only the line number of the first line in a zebra stripe is to be printed. -Any other value is treated as `zebra'. +Any other value is treated as 'zebra'. -The variable `ps-line-number-start' specifies the starting point in -the interval given by `ps-line-number-step'. For example, if -`ps-line-number-step' is set to 3, and `ps-line-number-start' is set to +The variable 'ps-line-number-start' specifies the starting point in +the interval given by 'ps-line-number-step'. For example, if +'ps-line-number-step' is set to 3, and 'ps-line-number-start' is set to 3, the output will look like: one line @@ -3062,20 +3062,20 @@ the interval given by `ps-line-number-step'. For example, if one line ... -The variable `ps-postscript-code-directory' specifies the directory +The variable 'ps-postscript-code-directory' specifies the directory where the PostScript prologue file used by ps-print is found. -The variable `ps-line-spacing' determines the line spacing in points, +The variable 'ps-line-spacing' determines the line spacing in points, for ordinary text, when generating PostScript (similar to -`ps-font-size'). +'ps-font-size'). -The variable `ps-paragraph-spacing' determines the paragraph spacing, +The variable 'ps-paragraph-spacing' determines the paragraph spacing, in points, for ordinary text, when generating PostScript (similar to -`ps-font-size'). +'ps-font-size'). -The variable `ps-paragraph-regexp' specifies the paragraph delimiter. +The variable 'ps-paragraph-regexp' specifies the paragraph delimiter. -The variable `ps-begin-cut-regexp' and `ps-end-cut-regexp' specify the +The variable 'ps-begin-cut-regexp' and 'ps-end-cut-regexp' specify the start and end of a region to cut out when printing. ** hideshow changes. @@ -3083,33 +3083,33 @@ start and end of a region to cut out when printing. *** now supports hiding of blocks of single line comments (like // for C++, ; for lisp). -*** Support for java-mode added. +*** Support for 'java-mode' added. -*** When doing `hs-hide-all' it is now possible to also hide the comments -in the file if `hs-hide-comments-when-hiding-all' is set. +*** When doing 'hs-hide-all' it is now possible to also hide the comments +in the file if 'hs-hide-comments-when-hiding-all' is set. -*** The new function `hs-hide-initial-comment' hides the comments at +*** The new function 'hs-hide-initial-comment' hides the comments at the beginning of the files. Finally those huge RCS logs don't stay in your -way! This is run by default when entering the `hs-minor-mode'. +way! This is run by default when entering the 'hs-minor-mode'. -*** Now uses overlays instead of `selective-display', so is more +*** Now uses overlays instead of 'selective-display', so is more robust and a lot faster. *** A block beginning can span multiple lines. -*** The new variable `hs-show-hidden-short-form' if t, directs hideshow +*** The new variable 'hs-show-hidden-short-form' if t, directs hideshow to show only the beginning of a block when it is hidden. See the documentation for more details. ** Changes in Enriched mode. -*** When you visit a file in enriched-mode, Emacs will make sure it is +*** When you visit a file in 'enriched-mode', Emacs will make sure it is filled to the current fill-column. This behavior is now independent of the size of the window. When you save the file, the fill-column in use is stored as well, so that the whole buffer need not be refilled the next time unless the fill-column is different. -*** use-hard-newlines is now a minor mode. When it is enabled, Emacs +*** 'use-hard-newlines' is now a minor mode. When it is enabled, Emacs distinguishes between hard and soft newlines, and treats hard newlines as paragraph boundaries. Otherwise all newlines inserted are marked as soft, and paragraph boundaries are determined solely from the text. @@ -3118,8 +3118,8 @@ as soft, and paragraph boundaries are determined solely from the text. *** Custom support -The variables font-lock-face-attributes, font-lock-display-type and -font-lock-background-mode are now obsolete; the recommended way to specify +The variables 'font-lock-face-attributes', 'font-lock-display-type' and +'font-lock-background-mode' are now obsolete; the recommended way to specify the faces to use for Font Lock mode is with M-x customize-group on the new custom group font-lock-faces. If you set font-lock-face-attributes in your ~/.emacs file, Font Lock mode will respect its value. However, you should @@ -3145,9 +3145,9 @@ support Font Lock mode, via the command global-font-lock-mode. *** Configurable support Support for C, C++, Objective-C and Java can be more easily configured for -additional types and classes via the new variables c-font-lock-extra-types, -c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it, -java-font-lock-extra-types. These value of each of these variables should be a +additional types and classes via the new variables 'c-font-lock-extra-types', +'c++-font-lock-extra-types', 'objc-font-lock-extra-types' and, you guessed it, +'java-font-lock-extra-types'. The value of each of these variables should be a list of regexps matching the extra type names. For example, the default value of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the convention that C type names end in _t. This results in slower fontification. @@ -3158,38 +3158,38 @@ it easier to make specific and common changes for the fontification of types. *** Adding highlighting patterns to existing support -You can use the new function font-lock-add-keywords to add your own +You can use the new function 'font-lock-add-keywords' to add your own highlighting patterns, such as for project-local or user-specific constructs, for any mode. -For example, to highlight `FIXME:' words in C comments, put: +For example, to highlight 'FIXME:' words in C comments, put: - (font-lock-add-keywords 'c-mode '(("\\