diff --git a/.gitattributes b/.gitattributes index 15f83aeeb186..65a943f69540 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ # Attributes of Emacs files in the Git repository. -# Copyright 2015-2018 Free Software Foundation, Inc. +# Copyright 2015-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/.gitignore b/.gitignore index d3712b0d6cf5..48b15837d43a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Files that Git should ignore in the Emacs source directory. -# Copyright 2009-2018 Free Software Foundation, Inc. +# Copyright 2009-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 60c4d551d7ba..ff51c20726bc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -# Copyright (C) 2017-2018 Free Software Foundation, Inc. +# Copyright (C) 2017-2019 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # @@ -35,6 +35,8 @@ stages: test: stage: test + variables: + EMACS_EMBA_CI: 1 script: - ./autogen.sh autoconf - ./configure --without-makeinfo diff --git a/CONTRIBUTE b/CONTRIBUTE index 0b68052a0cd6..df7220a4ee65 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -54,6 +54,12 @@ packages the patch's commit message and changes. To send just one such patch without additional remarks, you can use a command like 'git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'. +Once the cumulative amount of your submissions exceeds about 15 lines +of non-trivial changes, we will need you to assign to the FSF the +copyright for your contributions. Ask on emacs-devel@gnu.org, and we +will send you the necessary form together with the instructions to +fill and email it, in order to start this legal paperwork. + ** Issue tracker (a.k.a. "bug tracker") The Emacs issue tracker at https://debbugs.gnu.org lets you view bug @@ -287,15 +293,23 @@ the current release branch. Periodically, the current release branch is merged into the master, using the gitmerge function described in admin/notes/git-workflow. -If you are fixing a bug that exists in the current release, be sure to -commit it to the release branch; it will be merged to the master -branch later by the gitmerge function. - -Documentation fixes (in doc strings, in manuals, and in comments) -should always go to the release branch, if the documentation to be -fixed exists and is relevant to the release-branch codebase. Doc -fixes are always considered "safe" -- even when a release branch is in -feature freeze, it can still receive doc fixes. +If you are fixing a bug that exists in the current release, you should +generally commit it to the release branch; it will be merged to the +master branch later by the gitmerge function. However, when the +release branch is for Emacs version NN.2 and later, or when it is for +Emacs version NN.1 that is in the very last stages of its pretest, +that branch is considered to be in a feature freeze: only bug fixes +that are "safe" or are fixing major problems should go to the release +branch, the rest should be committed to the master branch. This is so +to avoid destabilizing the next Emacs release. If you are unsure +whether your bug fix is "safe" enough for the release branch, ask on +the emacs-devel mailing list. + +Documentation fixes (in doc strings, in manuals, in NEWS, and in +comments) should always go to the release branch, if the documentation +to be fixed exists and is relevant to the release-branch codebase. +Doc fixes are always considered "safe" -- even when a release branch +is in feature freeze, it can still receive doc fixes. When you know that the change will be difficult to merge to the master (e.g., because the code on master has changed a lot), you can diff --git a/ChangeLog.1 b/ChangeLog.1 index 011b383ca93d..8324af328579 100644 --- a/ChangeLog.1 +++ b/ChangeLog.1 @@ -14700,7 +14700,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.2 b/ChangeLog.2 index b01ab19ebec8..8695c410ecf3 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -35787,7 +35787,7 @@ See ChangeLog.1 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2015-2018 Free Software Foundation, Inc. + Copyright (C) 2015-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.3 b/ChangeLog.3 index a0a4794b4e03..de51077a0e4e 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,5360 @@ +2019-08-22 Nicolas Petton + + * etc/AUTHORS: Update. + +2019-08-21 Nicolas Petton + + * etc/NEWS: Delete temporary markup. + +2019-08-20 Noam Postavsky + + Fix process filter documentation (Bug#13400) + + * doc/lispref/processes.texi (Asynchronous Processes): Note that input + may read when sending data as well. + (Output from Processes): Note that functions which send data may also + trigger reading from processes. + (Input to Processes, Filter Functions): Note that filter functions may + be called recursively. + +2019-08-19 Tino Calancha + + Fix query-replace-regexp undo feature + + Ensure that non-regexp strings used with `looking-at' are quoted. + * lisp/replace.el (perform-replace): Quote regexp (Bug#37073). + * test/lisp/replace-tests.el (replace-tests-perform-replace-regexp-flag): + New variable. + (replace-tests-with-undo): Use it. + (query-replace-undo-bug37073): Add tests. + +2019-08-18 Eli Zaretskii + + Support the new Japanese era name + + * admin/unidata/NormalizationTest.txt: + * admin/unidata/UnicodeData.txt: Add U+32FF SQUARE ERA NAME REIWA. + Do not merge to master. + + * test/lisp/international/ucs-normalize-tests.el + (ucs-normalize-tests--failing-lines-part1) + (ucs-normalize-tests--failing-lines-part2): Update. Do not + merge to master. + + * etc/NEWS: Mention the change. + +2019-08-18 Eli Zaretskii + + Fix a typo in char-width-table + + * lisp/international/characters.el (char-width-table): Fix a + typo in zero-width characters. + +2019-08-17 Eli Zaretskii + + Minor update in admin/notes/unicode + + * admin/notes/unicode: Mention changes to be done in + setup-default-fontset in fontset.el. (Bug#14461) + +2019-08-17 Noam Postavsky + + Fix lisp indent infloop on unfinished strings (Bug#37045) + + * lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): Stop trying to + skip over strings if we've hit the end of buffer. + * test/lisp/emacs-lisp/lisp-mode-tests.el + (lisp-indent-unfinished-string): New test. + +2019-08-17 Eli Zaretskii + + Improve commentary in composite.el + + * lisp/composite.el (compose-gstring-for-graphic) + (compose-gstring-for-terminal): Add comments that explain + Unicode General Category mnemonics in human-readable terms. + (Bug#14461) + +2019-08-16 Eli Zaretskii + + Fix markup in dired-x.texi + + * doc/misc/dired-x.texi (Omitting Variables) + (Local Variables, Shell Command Guessing) + (Advanced Cleaning Variables, Special Marking Function): Fix + markup and indexing. (Bug#14212) + +2019-08-10 Eli Zaretskii + + * src/callproc.c (Fcall_process): Doc fix. + +2019-08-10 Eli Zaretskii + + Improve documentation of features that use the fringes + + * doc/emacs/display.texi (Fringes): Add cross-reference to + where indicate-empty-lines is described. + (Useless Whitespace): Add an @anchor for a more accurate + cross-reference in "Fringes". + +2019-08-10 Mauro Aranda + + Fix docstrings in pong + + * lisp/play/pong.el (pong-move-left pong-move-right): Refer to the + right bats and directions of movement. (Bug#36959) + +2019-08-09 Eli Zaretskii + + Improve doc strings of 'append-to-buffer' and friends + + * lisp/simple.el (append-to-buffer, prepend-to-buffer) + (copy-to-buffer): Doc fixes. + +2019-08-08 Mauro Aranda + + Fix octave-mode ElDoc support + + * lisp/progmodes/octave.el (octave-eldoc-function-signatures): Fix the + regexp used, so no match happens when there is no defined function FN. + Also, tweak the regexp to support GNU Octave 4.2.x and newer. (Bug#36459) + +2019-08-08 Eli Zaretskii + + Avoid Groff hanging on MS-Windows when invoked by "M-x man" + + * lisp/man.el (Man-build-man-command): On MS-Windows, redirect + stdin of 'man' to the null device, to make sure Groff exits + immediately after formatting the man page. + +2019-08-07 Philipp Stephani + + Ignore pending_signals when checking for quits. + + pending_signals is often set if no quit is pending. This results in + bugs in module code if the module returns but no quit is actually + pending. + + * src/emacs-module.c (module_should_quit): Use QUITP macro to check + whether the caller should quit. + + * src/eval.c: Remove obsolete comment. + +2019-08-03 Basil L. Contovounesios + + Fix nnmail-expiry-wait docs and custom :types + + * doc/misc/gnus.texi (Group Parameters, Expiring Mail): + * lisp/gnus/gnus-cus.el (gnus-group-parameters): Clarify + descriptions of nnmail-expiry, nnmail-expiry-wait, and + nnmail-expiry-wait-function. + * lisp/gnus/nnmail.el (nnmail-expiry-wait) + (nnmail-expiry-wait-function): Clarify docstrings and fix custom + :types (bug#36850). + +2019-08-03 Eli Zaretskii + + * lisp/simple.el (kill-do-not-save-duplicates): Doc fix. (Bug#36827) + +2019-08-03 Eli Zaretskii + + Improve documentation of debugging Lisp syntax error + + * doc/lispref/debugging.texi (Syntax Errors, Excess Open) + (Excess Close): Name the commands invoked by the key + sequences. Add cross-references to appropriate sections of + the Emacs manual. (Bug#21385) + + (cherry picked from commit faafd467a374c9398ee4668cdc173611d35693ed) + +2019-07-30 Noam Postavsky + + Add index for "\( in strings" (Bug#25195) + + * doc/emacs/programs.texi (Left Margin Paren): Add index for "\( in + strings". + * doc/lispref/positions.texi (List Motion): Add index, and cross + reference. + +2019-07-30 Martin Rudalics + + Fix doc-string of 'fit-window-to-buffer' (Bug#36848) + + * lisp/window.el (fit-window-to-buffer): Fix doc-string. + + Suggested by Drew Adams + +2019-07-26 Tino Calancha + + Update view-mode docstring + + Not all the kill commands save the text in the kill ring + by default (e.g. `kill-rectangle'). + It is more precise to just say that the kill commands save + the text and do not change the buffer (Bug#36741). + * lisp/view.el (view-mode): Update docstring. + +2019-07-26 Noam Postavsky + + Fix subproc listening when setting filter to non-t (Bug#36591) + + * src/process.c (Fset_process_filter): Call add_process_read_fd + according to the state of process filter before it's updated. This + restores the correct functioning as it was before 2016-02-16 "Allow + setting the filter masks later". Inline the set_process_filter_masks + call instead of fixing it that function, because it is also called + from connect_network_socket, and we don't want to change the behavior + of that function so close to release. + * test/src/process-tests.el (set-process-filter-t): New test. + +2019-07-26 Noam Postavsky + + * etc/NEWS.25: Belatedly announce rcirc-reconnect-delay. + +2019-07-26 Noam Postavsky + + Mention term.el's \032 dir tracking in commentary (Bug#19524) + + * lisp/term.el: Mention both forms of directory tracking in + commentary. Remove obsolete ChangeLog comments. Move more relevant + summary comments to the top. + +2019-07-26 Stefan Kangas + + Remove upload functionality of package-x from the elisp manual + + Suggested by Stefan Monnier. + Ref: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19537#8 + + * doc/lispref/package.texi (Package Archives): Don't document + package-x upload functions in the elisp manual, since they are not + very commonly used. (Bug#19537) + * lisp/emacs-lisp/package-x.el (package-archive-upload-base) + (package-upload-buffer, package-upload-file): Add to the doc strings + any details removed from the elisp manual that would otherwise be + missing. + +2019-07-25 Nicolas Petton + + * etc/AUTHORS: Update. + +2019-07-23 Basil L. Contovounesios + + Clarify Gravatar docs + + For discussion, see the following thread: + https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html + * doc/misc/gnus.texi (X-Face): Fix cross-reference. + (Gravatars): + * lisp/gnus/gnus-gravatar.el (gnus-gravatar-too-ugly): + * lisp/image/gravatar.el (gravatar-cache-ttl, gravatar-rating) + (gravatar-size): Clarify user option descriptions. + (gravatar-retrieve, gravatar-retrieve-synchronously): Document + return value. + +2019-07-22 Alan Mackenzie + + * doc/lispref/display.texi (Defining Faces): Say a face can't be undefined. + +2019-07-21 Noam Postavsky + + Handle completely undecoded input in term (Bug#29918) + + * lisp/term.el (term-emulate-terminal): Avoid errors if the whole + decoded string is eight-bit characters. Don't attempt to save the + string for next iteration in that case. + * test/lisp/term-tests.el (term-decode-partial) + (term-undecodable-input): New tests. + +2019-07-20 N. Jackson (tiny change) + + * doc/misc/forms.texi (Control File Format): Fix a doc error. + + (Bug#36693) + +2019-07-17 Basil L. Contovounesios + + Fix typo in package-alist docstring + + Pointed out by Michael Heerdegen . + * lisp/emacs-lisp/package.el (package-alist): Fix docstring + grammar (bug#17403). + +2019-07-14 Markus Triska + + * doc/lispref/text.texi (Mode-Specific Indent): Fix a typo (bug#36646). + +2019-07-13 Eli Zaretskii + + Improve doc string of 'bidi-display-reordering' + + * src/buffer.c (syms_of_buffer) : + Further doc fix. + +2019-07-13 Stefan Kangas + + Add warning to bidi-display-reordering doc string + + This explanation was given by Eli Zaretskii on emacs-devel. + For discussion, see: + https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00294.html + + * src/buffer.c (syms_of_buffer): Add warning to doc string of + bidi-display-reordering to explain that it should only be used for + debugging. + +2019-07-12 YAMAMOTO Mitsuharu + + Raise required librsvg version so as to match the current use + + * configure.ac: Set RSVG_REQUIRED to 2.14.0 as rsvg_handle_get_dimensions + needs it. + +2019-07-10 Michael Albinus + + * lisp/net/tramp-sh.el (tramp-inline-compress-start-size): Set nil on w32. + +2019-07-09 Stefan Monnier + + * lisp/progmodes/verilog-mode.el: One more ELPA Version: + +2019-07-06 Stefan Monnier + + * lisp/svg.el, lisp/progmodes/ada-mode.el: Fix bug#36360. + + Tell package.el their version number, for better behavior w.r.t the + versions available in GNU ELPA + +2019-07-06 Eli Zaretskii + + Minor copyedit of "Font Lock" in user manual + + * doc/emacs/display.texi (Font Lock): Make the wording about + "enabling Font Lock" crystal clear. (Bug#36529) + +2019-07-06 Eli Zaretskii + + Improve description of image descriptors + + * doc/lispref/display.texi (Image Descriptors): More accurate + description of where image files are looked up. (Bug#36523) + +2019-07-06 Eli Zaretskii + + Improve documentation of secondary selections + + * doc/emacs/killing.texi (Secondary Selection): Improve + wording. Mention that 'M-mouse-1' can be used to cancel + secondary selections. (Bug#36365) + +2019-07-06 Eli Zaretskii + + * src/fns.c (Fmapconcat): Doc fix. (Bug#36418) + +2019-07-06 YAMAMOTO Mitsuharu + + Avoid crash inside CFCharacterSetIsLongCharacterMember (Bug#36507) + + * src/macfont.m (macfont_supports_charset_and_languages_p) + (macfont_has_char): Don't pass integers outside the Unicode codespace to + CFCharacterSetIsLongCharacterMember. Do not merge to master. + +2019-07-06 Noam Postavsky + + Fix python.el docstring (Bug#36458) + + * lisp/progmodes/python.el (python-shell--prompt-calculated-output-regexp): + python-shell-set-prompt-regexp doesn't exist, presumably + python-shell-prompt-set-calculated-regexps was meant. + +2019-07-03 Eli Zaretskii + + * lisp/hi-lock.el (hi-lock-line-face-buffer): Doc fix. (Bug36448) + +2019-06-29 Stefan Kangas + + Fix typo in doc string of file-exists-p (bug#36408) + + * src/fileio.c (Ffile_exists_p): Fix typo in doc string. + +2019-06-28 Juanma Barranquero + + * test/lisp/url/url-file-tests.el (url-file): Fix for POSIX filenames. + +2019-06-28 Stefan Kangas + + Fix typo in windows.texi + + * doc/lispref/windows.texi (Window History): Fix typo. (Bug#36412) + +2019-06-26 Basil L. Contovounesios + + Clarify & update (elisp) Writing Emacs Primitives + + * doc/lispref/internals.texi (Writing Emacs Primitives): Update some + of the sample code listings, fixing argument lists and parentheses. + Replace ... with @dots{}. Describe UNEVALLED special forms as + taking a single argument. (bug#36392) + +2019-06-26 Eli Zaretskii + + Clarify a subtle issue in the Internals chapter of lispref + + * doc/lispref/internals.texi (Writing Emacs Primitives): + Clarify the issue with relocation of buffer or string text as + side effect of Lisp evaluation. (Bug#36392) + +2019-06-26 Noam Postavsky + + Fix sgml-mode handling of quotes within parens (Bug#36347) + + * lisp/textmodes/sgml-mode.el (sgml-syntax-propertize): Use + syntax-ppss-table if set. This is only needed on the release branch, + on master the caller (syntax-propertize) already does this. + (sgml-mode): Set syntax-ppss-table to sgml-tag-syntax-table. This + correctly classifies parens as punctuation, so they won't confuse the + parser. + * test/lisp/textmodes/sgml-mode-tests.el (sgml-tests--quotes-syntax): + New test copied from master, with two cases added for this bug. + +2019-06-21 Juanma Barranquero + + Rename 'make-symbolic-link' argument NEWNAME to LINKNAME + + * src/fileio.c (Fmake_symbolic_link): Fix docstring. + * doc/lispref/files.texi (Changing Files): Doc fix. + +2019-06-20 Robert Pluim + + Check that length of data returned by sysctl is non-zero + + The length of the data returned by sysctl can be zero, which was not + checked for. This could cause crashes, e.g. when querying + non-existent processes. (Bug#36279) + + * src/sysdep.c (list_system_processes) [DARWIN_OS || __FreeBSD__]: + (system_process_attributes) [__FreeBSD__]: + (system_process_attributes) [DARWIN_OS]: + * src/filelock.c (get_boot_time) [CTL_KERN && KERN_BOOTTIME]: Check + for zero length data returned by sysctl. + +2019-06-17 Juanma Barranquero + + * test/lisp/progmodes/python-tests.el (python-virt-bin): Doc fix. + +2019-06-17 Juanma Barranquero + + Fix Python tests depending on system-type + + * test/lisp/progmodes/python-tests.el (python-virt-bin): New function. + (python-shell-calculate-exec-path-2) + (python-shell-calculate-exec-path-3) + (python-shell-calculate-exec-path-4) + (python-shell-with-environment-1, python-shell-with-environment-2): + Use it. + +2019-06-16 Juanma Barranquero + + Fix problem with wdired test when symlinks cannot be created. + + * test/lisp/wdired-tests.el (wdired-test-symlink-name): + Skip test if 'make-symbolic-link' fails for whatever reason; + that's not what's being tested. + +2019-06-16 Eli Zaretskii + + Improve wording of documentation of click events + + * doc/lispref/commands.texi (Click Events, Accessing Mouse): + Improve and clarify wording. (Bug#36232) + +2019-06-16 Mattias Engdegård + + Backport: Fix typo in regexp-opt example code + + * doc/lispref/searching.texi (Regexp Functions): + Fix typo in example code (Bug#34596). + +2019-06-15 Stefan Kangas + + Remove outdated comment in winner.el (Bug#36185) + + * lisp/winner.el: Remove outdated comment. + +2019-06-15 Michael Albinus + + Fix accidential change in tramp-tests; do not merge with master + + * lisp/net/trampver.el: Change version to "2.3.5.26.3". + (customize-package-emacs-version-alist): Add Tramp version + integrated in Emacs 26.3. + + * test/lisp/net/tramp-tests.el (tramp-test42-auto-load): + Add skip for w32. + +2019-06-15 Juanma Barranquero + + tramp-test42-auto-load: Add expected-result. + + * test/lisp/net/tramp-tests.el (tramp-test42-auto-load): + Expect a failed result if remote file access is not enabled, + as it happens while doing the test on Windows. + +2019-06-15 Juanma Barranquero + + * test/lisp/url/url-file-tests.el (url-file): Use file:///, not file://. + +2019-06-15 Juanma Barranquero + + Fix doc of srecompile-compile-split-code (Bug#36200) + + * lisp/cedet/srecode/compile.el (srecode-compile-split-code): + Remove leftover text from docstring. + +2019-06-14 Eric Abrahamsen + + Make sure Gnus imap group names are decoded before searching + + do not merge (fix unnecessary in Emacs 27) + + * lisp/gnus/nnir.el (nnir-run-imap): Ensure that non-ascii group names + have been fully decoded before passing them to imap search. + +2019-06-14 Eli Zaretskii + + Remove failing test erroneously added in backport + + * test/src/thread-tests.el (threads-test-bug33073): Remove + test which cannot work on the emacs-26 branch. Do not merge + to master. Reported by Juanma Barranquero . + +2019-06-14 Juanma Barranquero + + * lisp/net/sieve-manage.el (sieve-manage-parse-capability): Doc fix. + +2019-06-12 Nicolas Petton + + Bump Emacs version to 26.2.90 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version. + +2019-06-12 Nicolas Petton + + * etc/AUTHORS: Update. + +2019-06-12 Martin Rudalics + + Fix description of 'display-buffer-in-previous-window' again (Bug#36161) + + * lisp/window.el (display-buffer-in-previous-window): Make + doc-string more explicit (Bug#36161). + * doc/lispref/windows.texi (Buffer Display Action Functions): + Make description of 'display-buffer-in-previous-window' more + explicit. + (Buffer Display Action Alists): Mention + 'display-buffer-in-previous-window' in description of + 'reusable-frames' entry. + +2019-06-11 Eli Zaretskii + + Consistently use @minus{} for negative arguments + + * doc/emacs/mark.texi (Marking Objects): + * doc/misc/gnus.texi (Selecting a Group): + * doc/emacs/programs.texi (Comment Commands): + * doc/emacs/killing.texi (Deletion): + * doc/emacs/display.texi (Recentering): + * doc/lispref/display.texi (Face Attributes): + * doc/lispref/searching.texi (String Search, Regexp Search): + Make the markup of "-N" use @minus{} uniformly. (Bug#35885) + +2019-06-11 Martin Rudalics + + Fix doc of 'display-buffer-in-previous-window' (Bug#36161) + + * doc/lispref/windows.texi (Buffer Display Action Functions): + * lisp/window.el (display-buffer-in-previous-window): Tell + that 'display-buffer-in-previous-window' prefers + non-selected windows (Bug#36161). + +2019-06-10 Juanma Barranquero + + lisp/*.el: Minor docstring fixes + + * lisp/subr.el (definition-prefixes): Reflow docstring. + + * lisp/svg.el (svg-create): Doc fix to allow arg higlighting. + (svg-gradient, svg-rectangle): Improve docstring formatting. + +2019-06-10 Eli Zaretskii + + Avoid assertion violation when comparing with main-thread + + * src/thread.c (unmark_main_thread): New function. + * src/lisp.h (unmark_main_thread): Prototype it. + * src/alloc.c (garbage_collect_1): Call it after sweeping. + (Bug#33073) + + * test/src/thread-tests.el (threads-test-bug33073): New test. + +2019-06-10 Andreas Schwab + + Revert "Don't mark main_thread (Bug#36155)" + + This reverts commit 1877b7b4d79b3434379fd5a4abd85906c25df00c. + +2019-06-10 Andreas Schwab + + Don't mark main_thread (Bug#36155) + + * src/thread.c (mark_threads_callback): Don't mark main_thread. + +2019-06-09 Eli Zaretskii + + More quotation fixes (Bug#35885) + + * doc/emacs/text.texi (Quotation Marks): Fix a typo. + * doc/emacs/modes.texi (Minor Modes): Fix another case of + showing quotations. + +2019-06-08 Eli Zaretskii + + Minor copyedits in efaq-w32 + + * doc/misc/efaq-w32.texi (Grep, Recursive grep): More accurate + description of using 'findstr' as a poor-man's replacement for + 'grep'. Reported by 范凯 + +2019-06-08 Eli Zaretskii + + Tiny improvement of documentation of major mode conventions + + * doc/lispref/modes.texi (Major Mode Conventions): More + accurate advice regarding customization of 'C-M-a' by major + modes. + +2019-06-08 Juanma Barranquero + + * nt/addpm.c (main): Fix buffer overflow + +2019-06-07 Eli Zaretskii + + Resurrect display-line-number-mode in client frames + + * lisp/linum.el (linum-on): Mention bug#35726 in a comment. + * lisp/display-line-numbers.el + (display-line-numbers--turn-on): Don't check for daemon. + (Bug#35726) + +2019-06-07 Eli Zaretskii + + * src/fns.c (Fmapconcat): Doc fix. (Bug#35710) + +2019-06-07 Phillip Lord + + Fix typo + + * nt/README.W32: + +2019-06-06 Eli Zaretskii + + * lisp/term/w32-win.el ([noname]): Bind to 'ignore'. (Bug#36083) + +2019-06-05 Eli Zaretskii + + Fix styling of Unicode codepoints in manuals + + * doc/lispref/nonascii.texi (Character Properties): + * doc/lispref/display.texi (Glyphless Chars) + (Bidirectional Display): + * doc/emacs/search.texi (Lax Search): + * doc/emacs/text.texi (Quotation Marks): + * doc/emacs/basic.texi (Inserting Text): Canonicalize the + style of "U+NNNN CHARACTER NAME". (Bug#35885) + +2019-06-04 Eli Zaretskii + + Fix a few uses of quotes in user manual + + * doc/emacs/text.texi (Quotation Marks): + * doc/emacs/display.texi (Text Display): + * doc/emacs/basic.texi (Inserting Text): Fix some more + quotes. (Bug#35885) + +2019-06-03 Eli Zaretskii + + More minor copyedits in the Emacs manual + + * doc/emacs/basic.texi (Arguments): + * doc/emacs/display.texi (Recentering, Text Display): + * doc/emacs/regs.texi (Text Registers, Rectangle Registers): + * doc/emacs/mark.texi (Disabled Transient Mark): Fix + inaccuracies and typos. (Bug#35885) + +2019-06-03 Eli Zaretskii + + Fix minor issues in the Emacs manual + + * doc/emacs/search.texi (Regexp Replace, Regexps): + * doc/emacs/kmacro.texi (Keyboard Macro Query) + (Save Keyboard Macro): Fix inaccuracies and typos. + (Bug#35885) + +2019-06-03 Martin Rudalics + + Try to improve text on atomic windows in Elisp manual + + * doc/lispref/windows.texi (Deleting Windows): Mention how + 'delete-window' and 'delete-other-windows' handle atomic + windows. Minor rewrite. + (Quitting Windows): Mention how 'quit-restore-window' handles + atomic windows and that it tries to avoid raising an error. + (Atomic Windows): Tell how to dissolve atomic windows. + +2019-06-01 Noam Postavsky + + Don't recommend insert-before-markers in process filters + + See and + Bug#35334. + * doc/lispref/processes.texi (Filter Functions): Go back to using + plain insert in the example filter. Add note about updating window + point. + +2019-06-01 Noam Postavsky + + Disable byte-compile-cond-use-jump-table (Bug#35770) + + * lisp/emacs-lisp/bytecomp.el (byte-compile-cond-use-jump-table): Set + to nil by default. + + Don't merge to master, the bug is already fixed there. + +2019-06-01 Noam Postavsky + + Allow macros autoloaded as functions during bytecomp (Bug#36022) + + * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't pass + symbols which don't have a known definition to + byte-compile--function-signature, it fails to compile code which + previously compiled successfully (for example, gnus.el until + 2019-06-01 "* lisp/gnus/gnus.el: Mark autoloaded macros as such" which + autoloads some macros as if they were functions). + +2019-06-01 Glenn Morris + + * lisp/gnus/gnus.el: Mark autoloaded macros as such. + + This avoids a build failure. + +2019-06-01 Eli Zaretskii + + Speed up redisplay of HELLO + + * etc/HELLO: Set 'inhibit-compacting-font-caches' non-nil + locally. (Bug#36032) + + * lisp/files.el: Add 'inhibit-compacting-font-caches' to the + list of built-in variables for which we set up + 'safe-local-variable' properties. + +2019-06-01 Eli Zaretskii + + Improve documentation of 'safe-local-variable' property + + * doc/lispref/variables.texi (File Local Variables): Document + how to define 'safe-local-variable' properties for built-in + variables. + +2019-05-31 Stefan Monnier + + * lisp/emacs-lisp/package.el: Obey buffer-file-coding-system (bug#35739) + + `url-insert-file-contents` saves in buffer-file-coding-system + the coding-system used to decode the contents. Preserve this + as the contents is moved from buffer to string to buffer, and use + it when saving the contents to file, so as to try and better preserve + the original byte sequence. + + (package--buffer-string, package--cs): New functions. + (package--check-signature): Encode `string` if a coding-system + was specified in buffer-file-coding-system. + (package--download-one-archive, package-install-from-archive): + Obey and preserve the buffer-file-coding-system if specified. + + Do not merge. + +2019-05-31 Noam Postavsky + + Warn about wrong number of args for subrs (Bug#35767) + + * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't + assume byte-compile-fdefinition will return non-nil. + * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-wrong-args) + (bytecomp-warn-wrong-args-subr): New tests. + +2019-05-31 Noam Postavsky + + Use plain symbols for eieio type descriptors (Bug#29220) + + Since Emacs 26, eieio objects use a class record (with circular + references) as the type descriptor of the object record. This causes + problems when reading back an object from a string, because the class + record is not `eq' to the canonical one (which means that read objects + don't satisfy the foo-p predicate). + * lisp/emacs-lisp/eieio.el (make-instance): As a (partial) fix, set + the record's type descriptor to a plain symbol for the type descriptor + when eieio-backward-compatibility is non-nil (the default). + * lisp/emacs-lisp/eieio-core.el (eieio--object-class): Call + eieio--class-object on the type tag when eieio-backward-compatibility + is non-nil. + (eieio-object-p): Use eieio--object-class instead of + eieio--object-class-tag. + * test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el + (eieio-test-persist-hash-and-vector) + (eieio-test-persist-interior-lists): Make into functions. + (eieio-persist-hash-and-vector-backward-compatibility) + (eieio-persist-hash-and-vector-no-backward-compatibility) + (eieio-test-persist-interior-lists-backward-compatibility) + (eieio-test-persist-interior-lists-no-backward-compatibility): New + tests which call them, eieio-backward-compatibility let-bound. + +2019-05-31 Paul Eggert + + Pacify GCC 9 -Wredundant-decls + + * src/gmalloc.c (_fraghead) [!HYBRID_MALLOC]: + Make it static in this case, too. This avoids having both + ‘extern struct list _fraghead[];’ and + ‘static struct list _fraghead[BLOCKLOG];’, which + GCC 9 complains about. + +2019-05-31 Paul Eggert + + Pacify librsvg 2.45.1 and later + + * src/image.c (svg_load_image): Pacify librsvg 2.45.1 and later, + and add a FIXME comment about the deprecated librsvg functions. + Backport from master. + +2019-05-31 Paul Eggert + + Simplify xd_signature to pacify GCC 9 + + * src/dbusbind.c (xd_signature): Use simpler way to set up + the subsignature. This also pacifies GCC 9 on Fedora 30 x86-64. + Backport from master. + +2019-05-31 Paul Eggert + + Pacify GCC when compiling unexelf.c on Fedora 30 + + * src/unexelf.c (unexec): Pacify GCC 9. + +2019-05-31 Paul Eggert + + Suppress GCC 9 “no longer supported” messages + + * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Remove -Wchkp. + This suppresses a boatload of warnings of the form + “gcc: warning: switch ‘-Wchkp’ is no longer supported”. + when using GCC 9. Do not merge to master. + +2019-05-30 Stefan Kangas + + Fix docstring of bookmark-get-bookmark + + * lisp/bookmark.el (bookmark-get-bookmark): Document optional + argument NOERROR. (bug#20148) + +2019-05-26 Noam Postavsky + + Avoid infloop in read-multiple-choice (Bug#32257) + + * lisp/emacs-lisp/rmc.el (read-multiple-choice): When `read-char' + signals an error "Non-character input-event", call `read-event' to + take the non-character event out of the queue. Don't merge to master, + we just use `read-event' directly there, rather than this solution + which relies a particular error message. + +2019-05-25 Eli Zaretskii + + Improve documentation of decoding into a unibyte buffer + + * doc/lispref/nonascii.texi (Explicit Encoding): Document what + happens when DESTINATION of decoding is a unibyte buffer. + + * src/coding.c (Fdecode_coding_region) + (Fdecode_coding_string): Document what happens if DESTINATION + is a unibyte buffer. + +2019-05-25 Mauro Aranda + + Remove redundants "See" before @xref or @pxref (Bug#35793) + + * doc/lispref/control.texi (Control Structures): + * doc/lispref/modes.texi (Search-based Fontification): + * doc/misc/cc-mode.texi (Filling and Line Breaking Commands) + (Auto-newline Insertion, Other Special Indentations): + * doc/misc/dbus.texi (Errors and Events): + * doc/misc/dired-x.texi (Find File At Point): + * doc/misc/eudc.texi (Display of Query Results, Inline Query Expansion): + * doc/misc/gnus-faq.texi (FAQ 3-11): + * doc/misc/gnus.texi (Group Parameters, Posting Styles) + (Spam Package Introduction): + * doc/misc/org.texi (LaTeX fragments, Previewing LaTeX fragments): + * doc/misc/reftex.texi (Commands): + Remove redundant "See" before cross references. + * doc/lispref/functions.texi (Function Safety): Redundant "see" is in + ignored text, but remove it anyway. + * doc/lispref/positions.texi (Skipping Characters): Remove redundant + "See" before cross references. Change @xref to @pxref, which is + more suitable when at the end of a sentence. + + Most of the redundants "See" found by Noam Postavsky. + +2019-05-23 Dario Gjorgjevski + + Fix customization type of recentf-max-saved-items + + Change the customization type of recentf-max-saved-items to include + nil, as it is an allowed value (Bug#35771). + * lisp/recentf.el (recentf-max-saved-items): Change the customization + type in the defcustom. + +2019-05-22 Tom Levy (tiny change) + + Fix a typo in ELisp manual + + * doc/lispref/sequences.texi (Sequence Functions): Fix a typo. + (Bug#35817) + +2019-05-21 Noam Postavsky + + Add option to disable help completion autoloading (Bug#28607) + + * lisp/help-fns.el (help-enable-completion-auto-load): New option. + (help--symbol-completion-table): Consult it. + * doc/emacs/building.texi (Lisp Libraries): Document it. + * etc/NEWS: Announce it. + * doc/lispref/loading.texi (Autoload by Prefix): New section. + (Autoload): Reference it. + +2019-05-20 Noam Postavsky + + Don't segfault on force-window-update of deleted window + + * src/window.c (Fforce_window_update): Do nothing for deleted + windows (Bug#35784). + +2019-05-20 Mauro Aranda + + Fix typo in ELisp manual + + * doc/lispref/variables.texi (Directory Local Variables): Fix typo in + dir-locals-set-class-variables description. (Bug#35799) + +2019-05-20 Mauro Aranda + + Remove repeated function call in picture.el + + * lisp/textmodes/picture.el (picture-mode-map): Remove repeated + define-key call. (Bug#35772) + +2019-05-19 Basil L. Contovounesios + + Fix Hideshow key binding typo in Emacs manual + + * doc/emacs/programs.texi (Hideshow): Add missing function and key + index entries. Fix hs-toggle-hiding binding typo. (bug#35798) + +2019-05-17 Eric Abrahamsen + + Backport: Fix name of gnus-summary-sort-by-mark(s) + + * lisp/gnus/gnus-sum.el (gnus-summary-sort-by-marks): Needs the + "s", according to docs and keymap both. (bug#35765) + + (cherry picked from commit 13248f7444630508cfc3b78a07e8d96613af11c8) + +2019-05-17 Eli Zaretskii + + Remove from docs references to obsolete MULE variables + + * src/search.c (search_buffer): Remove obsolete text from a + comment. + * src/fns.c (Fstring_make_unibyte): Remove obsolete text from + a doc string. + +2019-05-17 Konstantin Kharlamov + + Do potentially destructive operations in prepare-commit-msg + + * build-aux/git-hooks/prepare-commit-msg: If someone occasionally puts + Signed-off line, it will likely get there through -s option of git. + Exploit this fact to abort before a user got a chance to type commit + message. (Bug#35368) + +2019-05-14 Paul Eggert + + Backport: fix broken build on m68k + + The GCC + valgrind fix caused the m68k build to fail (Bug#35711). + Simplify string allocation a bit to make similar problems less + likely in the future. + * src/alloc.c (sdata, SDATA_NBYTES, SDATA_DATA) [GC_CHECK_STRING_BYTES]: + Use the same implementation as with !GC_CHECK_STRING_BYTES, + as the special case is no longer needed. + (SDATA_ALIGN): New constant. + (SDATA_SIZE): Remove this macro, replacing with ... + (sdata_size): ... this new function. All uses changed. + Properly account for sizes and alignments even in the m68k case, + and even if GC_CHECK_STRING_BYTES is not defined. + +2019-05-14 Noam Postavsky + + Handle GNUTLS_E_AGAIN in emacs_gnutls_read (Bug#34341) + + Don't merge to master, this has already been fixed there by 2019-01-15 + "Fix unlikely races with GnuTLS, datagrams". + * src/gnutls.c (emacs_gnutls_read): Similar to emacs_gnutls_write, + when gnutls_record_recv returns GNUTLS_E_AGAIN set errno to EGAIN. + +2019-05-12 Neil Roberts + + Let dir locals for more specific modes override those from less + + The list of dir local variables to apply is now sorted by the number + of parent modes of the mode used as the key in the association list. + That way when the variables are applied in order the variables from + more specific modes will override those from less specific modes. + + If there are directory entries in the list then they are sorted in + order of name length. The list of modes for that dir is then + recursively sorted with the same mechanism. That way variables tied + to a particular subdirectory override those in in a parent directory. + + Previously the behaviour didn’t seem to be well defined anyway and was + dependent on the order they appeared in the file. However this order + was changed in version 26.1 and it probably also depended on the + number of dir-local files that are merged. + + Bug#33400 + + * lisp/files.el (dir-locals-get-sort-score, dir-locals-sort-variables) + (dir-locals-read-from-dir): Sort the dir locals so that more precise + modes and directory-specific entries have override lesser ones. + * doc/emacs/custom.texi (Directory Variables): Document the priority. + +2019-05-11 Eli Zaretskii + + Improve documentation of Hexl mode + + * doc/emacs/misc.texi (Editing Binary Files): Clarify + "insertion". Improve wording. Add a few Hexl commands. + (Bug#35580) + +2019-05-09 Alan Mackenzie + + Fix description of (move-to-column t) when column is inside a tab + + This fixes bug #35647. State that when indent-tabs-mode is non-nil, spaces + are inserted before the tab rather than the tab being replaced by spaces. + + * doc/lispref/text.texi (columns) + * src/indent.c (move-to-column): Make the above documentation amendment. + +2019-05-09 Noam Postavsky + + Recognize single quote attribute values in nxml and sgml (Bug#35381) + + * lisp/textmodes/sgml-mode.el (sgml-specials): Add single quote. + (sgml-syntax-propertize-rules): Handle single quote. + * test/lisp/nxml/nxml-mode-tests.el (nxml-mode-font-lock-quotes): New + test. + * test/lisp/textmodes/sgml-mode-tests.el + (sgml-delete-tag-bug-8203-should-not-delete-apostrophe): Now passes. + +2019-05-09 Noam Postavsky + + Disable extra display of in nxml-mode (Bug#32897) + + * lisp/nxml/nxml-mode.el (nxml-char-ref-display-extra): Don't put + display for the newline, it makes the indentation look wrong. + +2019-05-09 Noam Postavsky + + Fix nxml-get-inside (Bug#32003) + + The change from 2016-01-16 "lisp/nxml: Use syntax-tables for comments" + made nxml-get-inside return non-nil for any string or comment, + including attribute strings. This caused incorrect and therefore + indentation. + * lisp/nxml/nxml-rap.el: Update commentary to reflect changes to + nxml-mode parsing. + (nxml-get-inside): Only return non-nil when inside comments and + generic strings, not normal quote-delimited strings. + * test/lisp/nxml/nxml-mode-tests.el: New tests. + +2019-05-08 Eli Zaretskii + + Fix positioning client buffer as instructed by emacsclient + + * lisp/server.el (server-switch-buffer): Let-bind + switch-to-buffer-preserve-window-point to nil when switching + to the client buffer, when the client requested a specific + position. (Bug#35602) + +2019-05-08 Stefan Monnier + + * etc/package-keyring.gpg: Add the 2019 key (backport) + +2019-05-08 Vitalie Spinu + + Fix incorrect cloning of eieio-instance-inheritor objects (Bug#34840) + + * lisp/emacs-lisp/eieio-base.el (clone): Unbound slots of + eieio-instance-inheritor objects as documented in the docs string + and implemented in the original eieio implementation. + +2019-05-07 Vitalie Spinu + + Fix cloning of eieio-named objects (Bug#22840) + + * lisp/emacs-lisp/eieio-base.el (clone): Correctly set the name of the + cloned objects from eieio-named instances. + +2019-05-07 Basil L. Contovounesios + + Fix ibuffer-unmark-backward synopsis (bug#35572) + + * lisp/ibuffer.el (ibuffer-mode): Fix synopsis of + ibuffer-unmark-backward along with other minor copy-edits. + +2019-05-05 Noam Postavsky + + Clarify handling of long options (Bug#24949) + + * doc/emacs/cmdargs.texi (Emacs Invocation): Note that space can be + used instead of "=" only if an option requires an argument. + +2019-05-04 Eli Zaretskii + + Improve documentation of the daemon and emacsclient + + * doc/emacs/misc.texi (emacsclient Options): + * doc/emacs/cmdargs.texi (Initial Options): Document that + using --daemon=NAME will need to specify the same NAME when + invoking 'emacscilent'. (Bug#35547) + +2019-05-02 Noam Postavsky + + * etc/NEWS.24: Belatedly announce delete-consecutive-dups. + +2019-05-01 Glenn Morris + + * admin/update_autogen: Handle git worktree. + +2019-05-01 Noam Postavsky + + Update process filter example (Bug#35044) + + * doc/lispref/processes.texi (Filter Functions): Use + insert-before-markers in the "ordinary" filter example, like + internal-default-process-filter does. + +2019-04-29 YAMAMOTO Mitsuharu + + * src/macfont.m (macfont_shape): Use convenient LGLYPH_NEW. + +2019-04-28 Noam Postavsky + + Recommend using font-lock-face over face (Bug#35044) + + * doc/lispref/modes.texi (Precalculated Fontification): Explain + advantages of using font-lock-face over face. + +2019-04-28 Noam Postavsky + + Check if mouse_face_overlay was deleted (Bug#35273) + + * src/xdisp.c (note_mouse_highlight): Check if the mouse_face_overlay + actually points to a buffer, before calling + mouse_face_overlay_overlaps on it. + +2019-04-27 Paul Eggert + + Port to platforms where tputs is in libtinfow + + * configure.ac (tputs_library): Also try tinfow, ncursesw (Bug#33977). + + (cherry picked from commit a3d52b3057c98bce581bc94912ef3ced6fad6f14) + +2019-04-23 Glenn Morris + + * admin/admin.el (set-version): Check for increase in version length, + rather than a .50 version. + +2019-04-22 Noam Postavsky + + Be more careful about indent-sexp going over eol (Bug#35286) + + * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Only go over multiple + sexps if the end of line is within a sexp. + * test/lisp/emacs-lisp/lisp-mode-tests.el + (indent-sexp-stop-before-eol-comment) + (indent-sexp-stop-before-eol-non-lisp): New tests. + +2019-04-22 Basil L. Contovounesios + + Backport: Improve pure and side-effect-free docs + + For discussion, see thread starting at: + https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html + * doc/lispref/customize.texi (Composite Types): Do not overspecify + :match-alternatives predicates. + * doc/lispref/eval.texi (Intro Eval): Anchor definition of "side + effect" for cross-referencing... + * doc/lispref/functions.texi (What Is a Function): ...from here. + Define what a pure function is. + * doc/lispref/internals.texi (Writing Emacs Primitives): Describe + currently preferred approach to marking primitives as pure and + side-effect-free. + * doc/lispref/symbols.texi (Standard Properties): Expand description + of pure and side-effect-free properties. + + (cherry picked from commit 4430a9b54fca266e48d0eb8b72d83706910f10b8) + +2019-04-22 Basil L. Contovounesios + + Backport: Avoid using obsolete indent-relative-maybe + + * lisp/electric.el (electric-indent-functions-without-reindent): + * lisp/indent.el (indent-according-to-mode): Check for + indent-relative-first-indent-point in addition to its obsolete alias + indent-relative-maybe. + * lisp/obsolete/vi.el (vi-com-map): Use + indent-relative-first-indent-point in place of its obsolete alias + indent-relative-maybe. + + (cherry picked from commit 0e468a620458fecd003c396050aa6deb722982c1) + +2019-04-21 Mauro Aranda + + Avoid false positives and false negatives of Info-quoted face + + * lisp/info.el (Info-mode-font-lock-keywords): Modify the regexp, for + matching single quotes of opening single quote and closing single + quote, and avoid matching text followed by a curly quote when it is + not quoting. (Bug#35202) + +2019-04-21 Eli Zaretskii + + Fix markup related to quoting in Info + + * doc/misc/sc.texi (Citations): Fix markup of '>'. + * doc/misc/mh-e.texi (Speedbar): Fix markup in a @table. + * doc/misc/calc.texi (Yacas Language Mode): Fix a typo. + * doc/emacs/mark.texi (Setting Mark): Remove duplicate + quoting. (Bug#35202) + +2019-04-21 Noam Postavsky + + Use pkg-config to find lcms2 CFLAGS and LIBS (Bug#30346) + + * configure.ac: Use EMACS_CHECK_MODULES fors LCMS2 rather than + AC_SEARCH_LIBS. + * src/Makefile.in: Get LCMS2_LIBS and LCMS2_CFLAGS from configure, + instead of just LIBLCMS2. + + (cherry picked from commit cb3863370cbe574810f796726faa39ba0de0a429) + +2019-04-20 Glenn Morris + + Add a package: line to c-submit-bug-report. + + * lisp/progmodes/cc-mode.el (c-submit-bug-report): + Add a Package: line for mail clients that do not support X- headers. + +2019-04-20 Glenn Morris + + * admin/admin.el (set-version): Add NEWS headers for a .50 version. + +2019-04-20 Eli Zaretskii + + Backport doc improvement in ELisp manual + + * doc/lispref/processes.texi (Accepting Output): Backport: + document how do avoid race conditions while waiting for all of + the process's output to arrive. + +2019-04-19 Noam Postavsky + + Document insert-image-file's return value (Bug#32978) + + * lisp/image-file.el (insert-image-file): Document return value. + +2019-04-19 Braun Gábor (tiny change) + + Autoload cua-toggle-rectangle-mark (Bug#34947) + + * lisp/emulation/cua-base.el (cua-toggle-rectangle-mark): Autoload it. + Library cua-base.el binds cua-toggle-rectangle-mark to a key in the + :set function in (defcustom cua-rectangle-mark-key ...), so it should + ensure that the command is defined. + +2019-04-19 Noam Postavsky + + Tell xclip not to expect job-control under eshell (Bug#35257) + + * lisp/eshell/esh-proc.el (eshell-needs-pipe): Add "xclip" and other + programs that xclip.el (in GNU ELPA) calls with + `process-connection-type' bound to nil. + +2019-04-18 Basil L. Contovounesios + + Fix off-by-one-link error in image--set-property + + * lisp/image.el (image--set-property): Ensure new value is set even + in the unlikely case that the plist is empty. Fix off-by-one-link + error when deleting a property. (bug#35285) + * test/lisp/image-tests.el: New file. + (image--set-property): New test. + +2019-04-16 Glenn Morris + + * admin/admin.el (make-manuals-dist--1): + Update for incompatible copy-file change re "directories". + +2019-04-16 Robert Pluim + + Document some compilation-mode faces + + * doc/emacs/building.texi (Compilation Mode): Describe faces + available to affect appearance of compilation-mode buffers. + +2019-04-16 Eli Zaretskii + + Mention the assignment form in "Copyright Assignment" + + * doc/emacs/trouble.texi (Copyright Assignment): Mention the + copyright assignment form explicitly. Suggested by Konstantin + Kharlamov . + +2019-04-16 Eli Zaretskii + + Fix confusing wording in the user manual + + * doc/emacs/maintaining.texi (VC Undo): Remove a potentially + inaccurate, outdated, and/or confusing sentence. (Bug#35290) + +2019-04-15 Eli Zaretskii + + Fix the MSDOS build when running under CWSDPMI + + * src/msdos.c (the_only_tty_output): Define. + * src/msdos.h (the_only_tty_output): Declare. + * src/frame.c (make_terminal_frame) [MSDOS]: + * src/dispnew.c (init_display) [MSDOS]: Set up + f->output_data.tty pointer using the_only_tty_output, before + dereferencing the pointer. This prevents crashes with DPMI + servers that provide NULL pointer protection. + +2019-04-15 Stefan Monnier + + * lisp/progmodes/python.el: Be more careful about temp file removal + + (python-shell-prompt-detect): Use unwind-protect to try and not leave + file behind in case of error. + +2019-04-14 Alexander Gramiak + + Backport: Plug memory leak in GTK x-display-monitor-attributes-list + + * src/frame.c (free_monitors) [USE_GTK]: Define in the GTK case as + well. + + * src/xfns.c (x-display-monitor-attributes-list) [USE_GTK]: Plug + memory leak. Use dupstring over xstrdup as gdk_monitor_get_model may + return NULL. + +2019-04-14 Alexander Gramiak + + Backport: * lisp/frame.el (frame--size-history): Fix infloop. (Bug#35272) + +2019-04-14 Robert Pluim + + Downcase charset + + RFC 2046 specifies that the charset parameter is case-insensitive. + + * lisp/gnus/gnus-icalendar.el (gnus-icalendar-with-decoded-handle): + Downcase charset. Suggested by Christophe TROESTLER + . (Bug#35265). + +2019-04-14 Phillip Lord + + Update for Emacs-26 + + * nt/README.W32: Update details about packaging which changed for + Emacs-26. + +2019-04-12 Eli Zaretskii + + * doc/lispref/display.texi (Showing Images): Fix a typo. (Bug#35240 + +2019-04-11 Nicolas Petton + + Bump Emacs version to 26.2 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 26.2. + +2019-04-11 Nicolas Petton + + * etc/HISTORY: Update for Emacs 26.2 release. + + * etc/AUTHORS: Update. + +2019-04-11 Eli Zaretskii + + Improve documentation of 'read-command' + + * src/minibuf.c (Fread_command): Document the return value + when DEFAULT-VALUE is nil and the user enters nothing. + * doc/lispref/minibuf.texi (High-Level Completion): Document + the printed representation of a symbol whose name is empty. + (Bug#3522) + +2019-04-11 Eli Zaretskii + + Fix an outdated URL in a comment + + * src/emacs.c: Fix reference to Cocoa CoreFoundation Release + Notes. (Bug#35225) + +2019-04-11 Basil L. Contovounesios + + Backport: Fix comment-empty-lines docstring (bug#35152) + + * lisp/newcomment.el (comment-empty-lines): Consistently use US + commas in docstring. Fix indentation of and typo in custom :type. + + (cherry picked from commit 690c678fb6c1fb5b2f828f9bb90782bd0b01c399) + +2019-04-11 Alex Branham + + Backport: Update documentation for indent-relative functions + + * lisp/indent.el (indent-relative): Document what happens when there + is no previous nonblank line. + * doc/lispref/text.texi (Relative Indent): Document + indent-relative-first-indent-point instead of obsolete + indent-relative-maybe. Fix documentation of which argument from + 'indent-relative' is used. + + Bug#34858 + + (cherry picked from commit 10cd65878c741d2a22a1f2c36c54fcad4e516f72) + +2019-04-11 Noam Postavsky + + Update nxml-mode.texi: completion now gives xmlns="-!-" + + * doc/misc/nxml-mode.texi (Completion): As of 2016-01-16 "* lisp/nxml: + Use standard completion; it also works for company-mode", completing + an attribute when there is only one candidate inserts both quotes. + Update the example accordingly. + +2019-04-10 Eric Abrahamsen + + Note that choose-completion-string-functions funcs take four args + + * lisp/simple.el (choose-completion-string-functions): Functions in + this list actually need to accept four arguments, though the fourth + should be ignored. + +2019-04-10 Gemini Lasswell + + Address name conflicts in EIEIO documentation (bug#31660) + + * doc/misc/eieio.texi (Quick Start): Rename the class used in the + example from 'record' to 'person'. + (Building Classes): Advise user to check for name conflicts before + naming a class. Add a missing apostrophe. + (Making New Objects): Correct grammar. Rename the class used in the + example from 'record' to 'my-class'. + +2019-04-09 Mattias Engdegård + + Clarify the TESTFN argument to `alist-get' + + * lisp/subr.el (alist-get): + Rephrase the initial text to clarify the meaning of the TESTFN argument. + It's an equality predicate, not a look-up function (Bug#35206). + + (cherry picked from commit c81465580fe262f28ce47502c00f4afcbe3b8f8d) + +2019-04-08 Eli Zaretskii + + * src/editfns.c (Fnarrow_to_region): Doc fix. (Bug#35163) + +2019-04-06 Eli Zaretskii + + Fix doc strings of 'vc-version-diff' and 'vc-version-ediff' + + * lisp/vc/vc.el (vc-version-diff, vc-version-ediff): Describe + arguments in the doc strings. (Bug#35019) + +2019-04-06 Eli Zaretskii + + Improve documentation of set-window-start + + * doc/lispref/windows.texi (Window Start and End): + * src/window.c (Fset_window_start): Document that reliable + setting of a window start position requires to adjust point to + be visible. (Bug#34038) + +2019-04-06 Eli Zaretskii + + Improve documentation of window parameters + + * doc/lispref/windows.texi (Cyclic Window Ordering): Describe + the effect of the 'other-window' window parameter. + (Window Parameters): Improve the descriptions of window + parameters. Move the detailed description of the + 'quit-restore' window parameter from here... + (Quitting Windows): ...to here. (Bug#35063) + +2019-04-06 Eli Zaretskii + + Improve commentary in frame.el + + * lisp/frame.el: Improve commentary for display-* functions. + (Bug#35058) + +2019-04-06 Mauro Aranda + + Fix typo in a doc string + + * lisp/autorevert.el (global-auto-revert-mode): Fix a typo. + (Bug#35165) + +2019-03-20 Paul Eggert + + Say which regexp ranges should be avoided + + * doc/lispref/searching.texi (Regexp Special): Say that + regular expressions like "[a-m-z]" and "[[:alpha:]-~]" should + be avoided, for the same reason that regular expressions like + "+" and "*" should be avoided: POSIX says their behavior is + undefined, and they are confusing anyway. Also, explain + better what happens when the bound of a range is a raw 8-bit + byte; the old explanation appears to have been obsolete + anyway. Finally, say that ranges like "[\u00FF-\xFF]" that + mix non-ASCII characters and raw 8-bit bytes should be + avoided, since it’s not clear what they should mean. + +2019-03-20 Nicolas Petton + + * etc/AUTHORS: Update. + + * ; ChangeLog.3 update + +2019-03-20 Eli Zaretskii + + Improve indexing of the user manual + + * doc/emacs/search.texi (Word Search): Improve indexing of + "M-s M-w". + +2019-03-19 Basil L. Contovounesios + + Fix url-copy-file arglist + + * lisp/url/url-handlers.el: Silence byte-compiler. + (url-copy-file): Add 6th argument following change to copy-file in + 2012-12-16T19:22:27+01:00!romain@orebokech.com. (bug#4410) + +2019-03-19 Eli Zaretskii + + Fix downloading updates for packages with non-ASCII descriptions + + * lisp/emacs-lisp/package.el (package--download-one-archive): + Make sure archive contents are written using UTF-8 encoding. + (Bug#34909) + (list-packages): Set buffer's encoding to UTF-8. + +2019-03-18 Nicolas Petton + + * etc/NEWS: Remove temporary markers. + +2019-03-15 Alan Mackenzie + + * doc/misc/cc-mode.texi (Config Basics): in @itemize, @asis -> @w{} + +2019-03-15 Eli Zaretskii + + Don't clobber 'comint-input-autoexpand' in 'read-shell-command' + + * lisp/shell.el (shell-completion-vars): Set only the + buffer-local value of 'comint-input-autoexpand'. (Bug#34815) + +2019-03-13 Martin Rudalics + + Document restrictions when setting window margins, fringes or scroll bars + + * src/window.c (Fset_window_margins, Fset_window_fringes) + (Fset_window_scroll_bars): In doc-strings tell that a window + must be large enough to accommodate fringes, sroll bars and + margins of the desired size. + * doc/lispref/display.texi (Fringe Size/Pos, Scroll Bars) + (Display Margins): Tell that windows must be large enough to + accommodate fringes, sroll bars and margins of the desired + size. + +2019-03-10 Eli Zaretskii + + More improvements for 'read-buffer's doc string + + * src/minibuf.c (Fread_buffer): Further improve the doc + string. (Bug#347694) + +2019-03-10 Alan Mackenzie + + * lisp/progmodes/cc-defs.el: Update c-version to 5.33.2 for Emacs 26.2 + +2019-03-09 Eli Zaretskii + + * src/minibuf.c (Fread_buffer): Minor doc fixes. (Bug#34749) + +2019-03-09 Eli Zaretskii + + Fix markup of fake keys in the ELisp manual + + * doc/lispref/keymaps.texi (Menu Bar, Tool Bar): Fix markup of + fake keys. (Bug#34785) + +2019-03-09 Eli Zaretskii + + Avoid errors in Auto Revert mode + + * lisp/autorevert.el (auto-revert-buffers): Cancel + auto-revert-timer only if it is non-nil. This avoids errors + on first invocation of Auto-Revert mode. + +2019-03-09 Michael Albinus + + Mention empty strings in file name expansion, emacs lisp reference + + * doc/lispref/files.texi (Files, File Name Expansion): + Mention also empty strings. + +2019-03-08 Alan Mackenzie + + cc-mode.texi: Work around makeinfo alignment bug. Fix problem with ss index + + * doc/misc/cc-mode.texi (top level): Using txicommandconditionals to + differentiate between the C and perl versions of Texinfo, create an "ss + index" unless we are both using the C Texinfo and are building the .dvi output + format. + (Config Basics): Work around a perl Texinfo alignment bug by writing a + separate version of an item list structure for this version, simplifying it + considerably. + +2019-03-08 Martin Rudalics + + Warn against recursive invocations of 'buffer-list-update-hook' (Bug#34765) + + * src/buffer.c (Vbuffer_list_update_hook): + * doc/lispref/buffers.texi (Buffer List): Warn against + recursive invocations of 'buffer-list-update-hook' (Bug#34765). + +2019-03-08 Martin Rudalics + + Provide more details in doc-string of 'delete-windows-on' (Bug#34749) + + * lisp/window.el (delete-windows-on): Provide more details in + doc-string (Bug#34749). + +2019-03-08 Eli Zaretskii + + Improve documentation of 'delete-windows-on' + + * doc/emacs/windows.texi (Change Window): Document + 'delete-windows-on'. + + * lisp/window.el (delete-windows-on): Doc fix. (Bug#34749) + +2019-03-08 Eli Zaretskii + + * lisp/frame.el (make-frame-command): Doc fix. (Bug#34715) + +2019-03-07 Eli Zaretskii + + Avoid undefined behavior in gdb-mi.el + + * lisp/progmodes/gdb-mi.el (gdb-send): Don't call match-string + if this is not a control command. (Bug#34769) + +2019-03-06 Martin Rudalics + + * lisp/window.el (fit-frame-to-buffer): Make doc-string more accurate. + +2019-03-05 Basil L. Contovounesios + + Minor spelling and grammar fixes (bug#34756) + + doc/misc/cc-mode.texi (Style Variables, Customizing Indentation): + doc/misc/ede.texi (Extending EDE, ede-project-placeholder) + (ede-target, ede-proj-target, ede-compilation-program, ede-compiler) + (ede-linker): Remove apostrophe from possessive "it's". + doc/lispintro/emacs-lisp-intro.texi (Find a File): + doc/misc/gnus-faq.texi (FAQ 2-2): Write "an other" as a single word. + doc/misc/gnus.texi (Article Buttons): + lisp/gnus/gnus-art.el (gnus-button-mid-or-mail-heuristic-alist) + (gnus-button-mid-or-mail-heuristic): Write singular number of + Message-IDs, rather than plural. + lisp/gnus/message.el (message-user-fqdn): Capitalize initialism. + +2019-03-04 Eli Zaretskii + + Minor improvement of documentation of '(when CONDITION . SPEC)' + + * doc/lispref/display.texi (Other Display Specs): Add a caveat + to using the '(when CONDITION . SPEC)' display specs. + +2019-03-02 Eli Zaretskii + + Improve documentation of 'auto-coding-functions' + + * doc/lispref/nonascii.texi (Default Coding Systems): Clarify + that the functions in 'auto-coding-functions' are called both + for decoding and for encoding. + + * lisp/international/mule.el (auto-coding-functions): Doc fix. + +2019-03-02 Eli Zaretskii + + Fix visiting XML files with non-Unix EOL format + + * lisp/international/mule.el (sgml-xml-auto-coding-function) + (sgml-html-meta-auto-coding-function): Don't use + 'buffer-file-coding-system' if the buffer is unibyte. + (Bug#34704) + +2019-03-02 Basil L. Contovounesios + + Update example major mode code in Elisp manual + + * doc/lispref/modes.texi (Example Major Modes): Update code examples + to reflect current state of lisp/textmodes/text-mode.el and + lisp/emacs-lisp/lisp-mode.el. (bug#34671) + +2019-03-01 Eli Zaretskii + + Fix a typo in the Calc manual + + * doc/misc/calc.texi (Algebraic Tutorial): Fix parentheses in + @example. (Bug#34689) + +2019-03-01 Eli Zaretskii + + Minor improvement in cross-references of the ELisp manual + + * doc/lispref/modes.texi (Minor Mode Conventions): Add + cross-references to related major-mode descriptions. (Bug#34678) + +2019-03-01 Tobias Bading (tiny change) + + Fix last change on 'compilation-parse-errors' + + * lisp/progmodes/compile.el (compilation-parse-errors): Fix + previous change in this function. (Bug#34479) + +2019-02-25 Dmitry Gutov + + Backport: js--re-search-backward-inner: Fix infloop + + Fix JS indentation infloop reported in + https://github.com/mooz/js2-mode/issues/513. + + * lisp/progmodes/js.el (js--re-search-backward-inner): Account for + multiline string literals. + * test/manual/indent/js.js: New test example. + + (cherry picked from commit b01a4295c2f9bb58858880e4e28b05cc8396791c) + +2019-02-23 Eli Zaretskii + + Minor improvement for docs of completion + + * doc/lispref/minibuf.texi (Completion Commands) + (Completion in Buffers, Programmed Completion): Add to text + that references completion tables a cross-reference to where + "completion table" is described. + (Programmed Completion): Fix the description of + 'completion-table-dynamic'. Add more cross-references. + +2019-02-22 Ken Brown + + Disable the timerfd interface on Cygwin + + * configure.ac (emacs_cv_have_timerfd): Set to "no" on Cygwin. + +2019-02-22 Eli Zaretskii + + Fix a typo in the doc string of 'regex-opt' + + * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix example in + the doc string. (Bug#34596) + +2019-02-21 Michael Albinus + + Document bash 5.0.0 misbehavior in tramp.texi (Bug#34192) + + * doc/misc/tramp.texi (Frequently Asked Questions): Warn about + bash 5.0.0 and HISTSIZE=0. (Bug#34192) + +2019-02-20 Nicolas Petton + + Bump Emacs version to 26.1.92 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 26.1.92. + +2019-02-20 Nicolas Petton + + * ; ChangeLog.3 update + + * etc/AUTHORS: Update. + +2019-02-20 Glenn Morris + + Remove .art from the default list of ImageMagick extensions + + It seems that .art files can be non-image files that + ImageMagick mistakenly treats as extremely large images. + Real .art images seem rare. + * lisp/image.el (imagemagick-enabled-types): Remove ART. (Bug#22289) + +2019-02-19 Eli Zaretskii + + Fix input after setting x-wait-for-event-timeout nil + + * src/w32term.c (x_make_frame_visible): Call unblock_input + before returning early. (Bug#34575) + +2019-02-19 Martin Rudalics + + Fix two warnings in eshell.texi + + * doc/misc/eshell.texi (Built-ins, Globbing): Fix `.' or `,' + must follow @xref, not `f' warnings. + +2019-02-18 Stefan Monnier + + * lisp/minibuffer.el (completion-table-dynamic): Improve docstring + +2019-02-18 David Pathakjee (tiny change) + + * lisp/emacs-lisp/debug.el (debug-on-variable-change): Doc fix. (Bug#34518) + +2019-02-17 Eli Zaretskii + + Fix a typo in ELisp manual + + * doc/lispref/abbrevs.texi (Abbrev Table Properties): Fix a + typo. (Bug#34508) + +2019-02-16 Paul Eggert + + Update citations of Internet RFCs + + For example, RFC 822 has been obsoleted by RFC 2822, which in + turn has been obsoleted by RFC 5322. + * doc/emacs/ack.texi, doc/lispref/os.texi: + * doc/misc/emacs-mime.texi, doc/misc/gnus-coding.texi: + * doc/misc/gnus.texi, doc/misc/sc.texi: + * lisp/calendar/parse-time.el, lisp/gnus/gnus-cite.el: + * lisp/gnus/gnus-util.el, lisp/gnus/message.el: + * lisp/gnus/mm-bodies.el, lisp/gnus/nnrss.el: + * lisp/mail/feedmail.el, lisp/mail/ietf-drums.el: + * lisp/mail/mail-extr.el, lisp/mail/mail-utils.el: + * lisp/mail/mailclient.el, lisp/mail/mailheader.el: + * lisp/mail/rfc2047.el, lisp/mail/rfc822.el, lisp/mail/rmail.el: + * lisp/mail/sendmail.el, lisp/mail/smtpmail.el: + * lisp/mail/supercite.el, lisp/mh-e/mh-e.el: + * lisp/mh-e/mh-utils.el, lisp/net/imap.el: + * lisp/net/newst-backend.el, lisp/org/org-id.el: + * lisp/ps-samp.el, lisp/simple.el, lisp/url/url-util.el: + Update RFC citations. + +2019-02-16 Eli Zaretskii + + Fix handling of manpage references divided by hyphenation + + * lisp/man.el (Man-reference-regexp): Accept a newline as part + of a manpage name only if it's preceded by a hyphen. (Bug#34286) + (Man-translate-references): Adapt to change in + 'Man-reference-regexp'. + (Man-default-man-entry): Support references divided between + two lines by an ASCII hyphen. This is a left-over from fixing + bug#6289. + +2019-02-16 Gregor Zattler (tiny change) + + * doc/misc/eshell.texi: Fix some @ref's. + +2019-02-16 Eli Zaretskii + + Fix a typo in lispref/syntax.texi + + * doc/lispref/syntax.texi (Syntax Table Internals): Fix a + typo. (Bug#34495) + +2019-02-15 Victor J. Orlikowski (tiny change) + + Avoid errors in erc-dcc.el when erc-dcc-verbose is non-nil + + * lisp/erc/erc-dcc.el (erc-dcc-get-filter): Don't assume STR + is always a string. Use 'buffer-name' to get the DCC file + name, as buffer-file-name is not set in the process buffer. + +2019-02-15 Daniel Lopez (tiny change) + + Fix faces in compilation messages + + * lisp/progmodes/compile.el (compilation-parse-errors): Don't + clobber the value of TYPE inside the loop. (Bug#34479) + +2019-02-15 Gregor Zattler + + * doc/misc/eshell.texi (Built-ins): Fix alias description + + Dear eamcs developers, eshells current documentation first states + that alias definitions are not saved to an alias file, later that + they are saved to an alias file. I tested it and the latter is + correct. + + Please find attached a patch which fixes this. + + Thanks for working on emacs which is really great, Gregor + + >From 1fe51cc769ab7a30d0896fb3d6105c0561243fa7 Mon Sep 17 00:00:00 2001 + From: Gregor Zattler + Date: Wed, 13 Feb 2019 20:19:38 +0100 + Subject: * doc/misc/eshell.texi (Built-ins): Fix alias description. + + Bring description of built-in 'alias' in line with (info "(eshell) Aliases"), + which describes the actual behaviur. + + (cherry picked from commit a48099ce7ff63cda416a870766fe61f5b8ac7c2c) + +2019-02-14 Katsumi Yamaoka + + Work for empty MIME attachments (related to bug#34387) + + * lisp/gnus/mm-view.el (mm-inline-text): + Make undisplayer do nothing if the part is empty. + + * lisp/gnus/mm-decode.el (mm-copy-to-buffer): Work for empty MIME part. + * lisp/gnus/mml.el (mime-to-mml): Ditto. + +2019-02-14 Jackson Ray Hamilton + + Backport: js-indent-align-list-continuation: Make variable safe + + * lisp/progmodes/js.el (js-indent-align-list-continuation): Indicate + variable is safe as a file-local variable. This fixes the + js-indent-align-list-continuation-nil test when run with make. + + (cherry picked from commit dd319f2711f895eec87c1017b82cd9d88d9ecd0a) + +2019-02-13 Eli Zaretskii + + Avoid crashes upon C-g in nested invocations of 'read_char' + + * src/keyboard.c (read_char, read_event_from_main_queue): + Ensure the global value of getcjmp is restored when the stack + is unwound by the likes of 'throw', by calling + record_unwind_protect_ptr instead of restoring the value + manually. (Bug#34394) + (restore_getcjmp): Argument is now 'void *', to match the + signature of record_unwind_protect_ptr. + + (cherry picked from commit 10527fca66e39d7067986904161fa33741abcd26) + +2019-02-12 Stefan Monnier + + * src/data.c (Fmake_local_variable): Fix bug#34318 + + Revert part of ed962f2b8a. + + * test/src/data-tests.el (data-tests-make-local-forwarded-var): + Add corresponding test. + +2019-02-12 Eli Zaretskii + + Minor fixes in ELisp manual wrt syntax-table properties + + * doc/lispref/syntax.texi (Syntax Properties): Fix reference + to syntax-table properties. (Bug#34455) + (Control Parsing): Remove redundant @vindex entry. + +2019-02-12 Michael Albinus + + * admin/notes/emba: New file. + +2019-02-11 Eli Zaretskii + + Fix Hunspell invocation for discovering its dictionaries + + * lisp/textmodes/ispell.el + (ispell-find-hunspell-dictionaries): Invoke Hunspell with the + -a switch, to prevent it from initializing its curses UI. + (Bug#34272) + +2019-02-08 Eli Zaretskii + + Minor improvements to do strings in callproc.c + + * src/callproc.c (Fcall_process, Fcall_process_region): Minor + fixes to doc strings. Suggested by Nicholas Drozd + . (Bug#34274) + +2019-02-08 Eli Zaretskii + + Improve documentation of 'date-to-time' and 'parse-time-string' + + * doc/lispref/os.texi (Time Parsing): Document + 'parse-time-string', and refer to it for the description of + the argument of 'date-to-time'. + + * lisp/calendar/time-date.el (date-to-time): Refer in the doc + string to 'parse-time-string' for more information about the + format of the DATE argument. (Bug#34303) + +2019-02-08 Nick Drozd + + Fix downloading of URLs that end in a slash + + * lisp/net/eww.el (eww-download-callback): Fix download URL + file name. Previously this wasn't handling download URLs + correctly, resulting in all downloaded pages being named + "!", "!(1)", etc. (Bug#34291) + +2019-02-08 Nick Drozd + + * doc/misc/eww.texi (Basics): Fix eww keybindings. (Bug#34291) + +2019-02-08 Robert Pluim + + Fix process-thread docstring + + * src/process.c (Fprocess_thread): Correct docstring. + +2019-02-08 Eli Zaretskii + + Fix failures of vc-find-revision with non-ASCII file names + + * lisp/vc/vc.el (vc-find-revision): Instead of binding + coding-system-for-write, make the buffer-file-coding-system of + the temporary buffer be no-conversion. This avoids the + unwanted side effect of not encoding the command-line + arguments of the VCS commands invoked by the backend. + (Bug#34350) + +2019-02-07 Eli Zaretskii + + * doc/lispref/tips.texi (Documentation Tips): Fix quotes. (Bug#34372) + +2019-02-05 Alex Branham + + Add documentation for tabulated-list functions in the elisp manual + + * doc/lispref/modes.texi: Add documentation for + 'tabulated-list-delete-entry', 'tabulated-list-get-id', + 'tabulated-list-get-entry', 'tabulated-list-header-overlay-p', + 'tabulated-list-put-tag', and 'tabulated-list-set-col'. + + Bug#21074 + +2019-02-03 Jean-Christophe Helary + + Fix URL in ucs-normalize.el + + * lisp/international/ucs-normalize.el: Fix URL of the HFS + normalization reference. (Bug#34300) + +2019-02-03 Alan Mackenzie + + * etc/PROBLEMS: Amend entry for profiler bug #34235 to mention kernel 4.14.97 + +2019-02-02 Glenn Morris + + * make-dist: Remove references to src/stamp-h.in. + + This file was removed two years ago in 2f89350. + No need to merge to master. + +2019-02-02 Paul Eggert + + * etc/PROBLEMS: Mention profiler-report bug (Bug#34235). + +2019-02-01 Eli Zaretskii + + Correct the docs of inserting kmacro counter + + * doc/emacs/kmacro.texi (Keyboard Macro Counter): Correct the + description of the affect "C-u" has on inserting the macro + counter. Define "previous counter value". + + * lisp/kmacro.el (kmacro-insert-counter) + (kmacro-start-macro-or-insert-counter): Fix the doc strings + regarding the effect of "C-u". (Bug#34263) + +2019-02-01 Nicholas Drozd + + * doc/misc/calc.texi (Algebraic Tutorial): Fix a typo. (Bug#34273) + +2019-02-01 Eli Zaretskii + + Avoid errors in 'rmail-get-new-mail' + + * lisp/mail/rmail.el (rmail-insert-inbox-text): Don't assume + the Rmail protocol is always a string when calling + 'rmail-remote-proto-p'. (Bug#34252) + +2019-01-31 Paul Eggert + + Fix process-contact bug with TCP connections + + This fixes a regression from Emacs 25.3 (Bug#34134). + * src/process.c (server_accept_connection): + Set host correctly, fixing a bug introduced in + 2017-09-16T21:29:18Z!eggert@cs.ucla.edu + when working around a GCC bug. + +2019-01-29 Eli Zaretskii + + Minor copyedits in last manual change + + * doc/emacs/custom.texi (Authentication): Improve markup, + indexing, and wording. + +2019-01-29 Eli Zaretskii + + Improve documentation of face numbers + + * doc/lispref/display.texi (Face Functions): Mention where the + face number is used and that it depends on the 'face' property + of the face symbol. Improve indexing. + +2019-01-27 Michael Albinus + + * doc/emacs/custom.texi (Authentication): Refer to the "Help for users" node. + +2019-01-26 Michael Albinus + + New node Authentication in the Emacs manual + + * doc/emacs/custom.texi (Customization): + * doc/emacs/emacs.texi (Top): Add node Authentication. + +2019-01-25 Alan Mackenzie + + Fix a loop in c-fl-decl-start. This fixes bug #34186. + + * lisp/progmodes/cc-mode.el (c-fl-decl-start) In the pair of operations + c-syntactic-skip-backward and c-forward-syntactic-ws, ensure the latter + doesn't come back to the position before the former, and break out of the + enclosing loop if it does. + +2019-01-25 Eli Zaretskii + + Fix LaTeX output of month and day from cal-tex.el + + * lisp/calendar/cal-tex.el (cal-tex-cursor-week-iso) + (cal-tex-week-hours): Escape a lone blank, to make it through + LaTeX. (Bug#34148) + +2019-01-25 Daniel Kahn Gillmor (tiny change) + + Avoid elisp crash for OpenPGP User IDs with no e-mail address + + * lisp/gnus/mml-sec.el (mml-secure-check-user-id): Verify that + there is an e-mail address in the current User ID before trying + to downcase it. (Bug#34121) + +2019-01-25 Benjamin Riefenstahl + + image-mode: Do not use default scaling (bug#33990) + + * lisp/image-mode.el (image-toggle-display-image): Set :scale == 1 so + that create-image does not apply additional scaling. + +2019-01-25 Benjamin Riefenstahl + + create-image: Expand documentation (bug#33990) + + * lisp/image.el (create-image): Discuss default for :scale in the doc + string. + +2019-01-21 Eli Zaretskii + + Improve documentation of 'isearch-filter-predicate' + + * lisp/isearch.el (isearch-filter-predicate) + (isearch-filter-visible): Doc fixes. (Bug#34150) + +2019-01-19 Trevor Spiteri (tiny change) + + Fix cursor column positioning on Grep hits + + * lisp/progmodes/grep.el (grep-match-face): Move before first + use, to avoid byte-compilation warning. + (grep-regexp-alist): Don't quote grep-match-face. (Bug#34068) + +2019-01-18 Eli Zaretskii + + Fix a typo in ELisp manual + + * doc/lispref/nonascii.texi (Converting Representations): Fix + inconsistency between @defun and the argument description of + 'byte-to-string'. (Bug#34119) + +2019-01-15 Alan Third + + Prevent redrawing if frame is garbaged + + * src/nsterm.m ([EmacsView viewWillDraw]): Cancel drawing if the frame + has been garbaged. + * src/xdisp.c (expose_window_tree, expose_frame): Remove NS only + exceptions. + +2019-01-14 Eli Zaretskii + + Attempt to fix hangs on MS-Windows due to C-g + + * src/w32uniscribe.c (uniscribe_otf_capability): Set + inhibit-quit around calls to otf_features, because the latter + cons Lisp data structures while we are in a critical section. + * src/xdisp.c (ALLOCATE_HDC) [HAVE_NTGUI]: Set inhibit-quit. + (RELEASE_HDC) [HAVE_NTGUI]: Restore inhibit-quit. + (OPTIONAL_HDC, DECLARE_HDC): Remove macros, their job is now + done by ALLOCATE_HDC and by a single #ifdef. + (draw_glyphs): Adapt to the above changes in macros. + (Bug#34059) + +2019-01-13 Eli Zaretskii + + Fix Calc graph output on MS-Windows + + The previous code relied on "pgnuplot" executable, which is + no longer provided with Gnuplot 5.x. + * lisp/calc/calc.el (calc-gnuplot-name): Set to "pgnuplot" on + MS-Windows only if such an executable exists. + * lisp/calc/calc-graph.el (calc-graph-w32-p): New defsubst. + (calc-graph-plot, calc-graph-command, calc-gnuplot-command) + (calc-graph-init): Call calc-graph-w32-p wherever we need to + do something special for invoking gnuplot on MS-Windows, + instead of comparing against calc-gnuplot-name. + (calc-graph-plot): Set the terminal to "qt" on MS-Windows when + pgnuplot.exe is not available. + (calc-graph-kill): Delete the temporary files only after + killing the gnuplot process, otherwise the deletion might fail + on MS-Windows because the files are still in use. + +2019-01-13 Eli Zaretskii + + Fix a minor mistake in ELisp manual + + * doc/lispref/buffers.texi (Modification Time): Fix + documentation of 'visited-file-modtime'. (Bug#34055) + +2019-01-12 Stephen Berman + + * etc/tutorials/TUTORIAL: Fix typo (bug#34049) + +2019-01-12 Devon Sean McCullough + + Fix UI of Buffer-menu + + * lisp/buff-menu.el (Buffer-menu-execute): Don't remove + entries of buffers whose killing the user didn't confirm. + (Bug#33669) + +2019-01-12 Philip K (tiny change) + + Reinitialize ispell-really-enchant when changing the speller + + * lisp/textmodes/ispell.el (ispell-check-version): Reset also + ispell-really-enchant. (Bug#34019) + +2019-01-07 Leo Liu + + Speed up loading css-mode + + lisp/textmodes/css-mode.el: Remove (require 'eww) which is redundant + and slow. (Bug#33939) + +2019-01-07 Michael Albinus + + Adapt filenotify-tests for emba + + * .gitlab-ci.yml (test): Add EMACS_EMBA_CI variable. + + * test/lisp/filenotify-tests.el (file-notify-test03-events) + (file-notify-test05-file-validity) + (file-notify-test06-dir-validity) + (file-notify-test07-many-events) + (file-notify-test09-watched-file-in-watched-dir): Adapt tests for emba. + +2019-01-07 Nicolas Petton + + Bump Emacs version to 26.1.91 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 26.1.91. + +2019-01-07 Nicolas Petton + + * etc/AUTHORS: Update. + +2019-01-07 Leo Liu + + * lisp/textmodes/mhtml-mode.el: Avoid loading flyspell. (Bug#33939) + +2019-01-05 Paul Eggert + + Improve GC+Cairo workaround + + Suggested by Eli Zaretskii (Bug#20890#31). + * src/font.h (font_data_structures_may_be_ill_formed): New function. + * src/ftfont.c (ftfont_close): + * src/ftcrfont.c (ftcrfont_close): Use it. + + (cherry picked from commit d02fd482fbeaf6ed551e78223b538495cb0c3541) + +2019-01-05 Paul Eggert + + Work around GC+Cairo bug + + Workaround suggested by Robert Pluim (Bug#20890#13). + * src/ftfont.c (ftfont_close) [USE_CAIRO]: + Do nothing if GC is in progress. + +2019-01-05 Eli Zaretskii + + Improve commentary in font.h + + * src/font.h (struct font, struct font_driver): Fix typos and + wording in comments. Document all driver methods. + +2019-01-04 Martin Rudalics + + Fix definition of Qwindow_point_insertion_type (Bug#33871) + + * src/window.c (Qwindow_point_insertion_type): Fix definition + (Bug#33871). + +2019-01-04 Eli Zaretskii + + Improve documentation of 'server-name' + + * doc/emacs/misc.texi (Emacs Server, TCP Emacs server) + (emacsclient Options): + * lisp/server.el (server-name): Document the usage of + 'server-name' to specify the server file as an absolute file + name. Do not merge to master. (Bug#33934) + +2019-01-04 Eli Zaretskii + + Update Unicode copyright notice + + * admin/unidata/copyright.html: Updated version from the + Unicode Consortium's site. + +2019-01-02 Michael Albinus + + Handle quoted file names in filenotify.el + + * lisp/filenotify.el (file-notify-add-watch): Do not save + quoted file names in `file-notify-descriptors'. + + * test/lisp/files-tests.el + (files-file-name-non-special-notify-handlers): Do not expect + to fail. + +2019-01-01 Paul Eggert + + Fix copyright years by hand + + These are dates that admin/update-copyright did not update, or + updated incorrectly. + +2019-01-01 Paul Eggert + + Update copyright year to 2019 + + Run 'TZ=UTC0 admin/update-copyright $(git ls-files)'. + +2018-12-31 Eli Zaretskii + + * doc/man/emacs.1.in: Fix value of default frame height. (Bug#33921) + +2018-12-30 Martin Rudalics + + In user manual fix value of default frame height (Bug#33921) + + * doc/emacs/cmdargs.texi (Window Size X): Fix value of default + frame height (Bug#33921). + +2018-12-29 Eli Zaretskii + + Improve documentation of 'file-local-name' and related APIs + + * doc/lispref/files.texi (Unique File Names) + (Magic File Names, File Name Expansion): Improve documentation + of the "local part" of a remote file name. + * doc/lispref/processes.texi (Synchronous Processes) + (Asynchronous Processes): State explicitly that program and + file names passed to functions that start remote processes + need to be relative or obtained by 'file-local-name'. + + * lisp/files.el (file-local-name): + * lisp/simple.el (start-file-process, process-file): Improve + the documentation of the "local part" of a remote file name, + and its use in APIs that start remote processes. + +2018-12-29 Michael Albinus + + Fix Bug#31704. Do not merge + + * lisp/net/tramp.el (tramp-eshell-directory-change): + Use `path-separator' as it does eshell. (Bug#31704) + +2018-12-29 Michael Albinus + + Fix Bug#31704. Do not merge + + * lisp/eshell/esh-proc.el (eshell-gather-process-output): Do not + let `expand-file-name' prefix remote file names with MS Windows + volume letter. + + * lisp/net/tramp.el (tramp-eshell-directory-change): + Use `path-separator' as it does eshell. (Bug#31704) + +2018-12-29 Eli Zaretskii + + * lisp/files.el (cd): Fix last change. (Bug#33791) + +2018-12-29 Eli Zaretskii + + Fix remote directories in Eshell on MS-Windows + + * lisp/files.el (cd): Support remote directory names on + MS-Windows. (Bug#33791) + +2018-12-29 Drew Adams + + Fix :type 'group' in defcustom + + * lisp/wid-edit.el (group): Fix the :format spec. (Bug#33566) + +2018-12-28 Alan Third + + Fix NS fringe bitmap drawing bug (bug#33864) + + * src/nsterm.m (ns_draw_fringe_bitmap): Check the rectangle to clear + correctly. + +2018-12-28 Eli Zaretskii + + Fix commentary in dispnew.c + + * src/dispnew.c (buffer_posn_from_coords): Fix inaccuracies in + the commentary. + +2018-12-27 Paul Eggert + + Improve accept-process-process doc + + * doc/lispref/processes.texi (Accepting Output): + * src/process.c (Faccept_process_output): + Document that (accept-process-output P) can return non-nil + even after P has exited, and that it can return nil even if P + is still running (Bug#33839). + +2018-12-23 Stephen Leake + + Fix a simple bug in display-buffer-use-some-frame + + * lisp/window.el (display-buffer-use-some-frame): Simplify the + predicate, fix TYPE arg to window--display-buffer. + +2018-12-23 Michael Albinus + + Clarify thread switching while waiting for process output + + * doc/lispref/threads.texi (Threads): Clarify, that thread + switching happens when waiting for process output from + asynchronous processes. + +2018-12-22 Charles A. Roelli + + Improve process doc. with respect to handling of large input (Bug#33191) + + * src/process.c (Fprocess_send_region, Fprocess_send_string): + Document that process input longer than the process input + buffer may be split into bunches. Remove an outdated + reference to a 500 character split boundary. + * doc/lispref/processes.texi (Asynchronous Processes): Remove + mention of "stray character injections" in PTY processes. See + also the comment about ICANON in src/sysdep.c, function + child_setup_tty. + +2018-12-22 Terrence Brannon + + Minor copyedits in landmark.el + + * lisp/obsolete/landmark.el: Fix author's email and commentary. + +2018-12-20 Alan Mackenzie + + Check result from c-backward-token-2 to avoid infinite loop + + This fixes bug #33784. + + * lisp/progmodes/cc-fonts.el (c-get-fontification-context): While moving back + over enclosing parentheses, check that c-backward-token-2 actually moves. + +2018-12-19 Paul Eggert + + cl-make-random-state was not copying its arg + + Problem reported by Xu Chunyang (Bug#33731). + * lisp/emacs-lisp/cl-extra.el (cl-make-random-state): + Use copy-sequence, not copy-tree, so that the record is copied. + * test/lisp/emacs-lisp/cl-extra-tests.el: + (cl-extra-test-cl-make-random-state): New test. + +2018-12-19 Glenn Morris + + Skip a vc-bzr test if run as root + + * test/lisp/vc/vc-bzr-tests.el (vc-bzr-test-faulty-bzr-autoloads): + Skip this test when run as root. This works around a race + condition in root-specific code in vc-mode-line when deleting a file. + +2018-12-19 Chris Feng + + Backport: Handle unread-command-events consistently (bug#23980) + + * src/keyboard.c (read_char): Events put into `unread-command-events' + with the form (t . EVENT) should always have the t stripped when read + out. + * test/src/keyboard-tests.el: New tests for `unread-command-events'. + + (cherry picked from commit 1f3f4b1296613b8cdc0632a68fde86e86ddad866) + +2018-12-19 Glenn Morris + + Restrict downcasing in elisp xref tests (bug#25534) + + The tests happen to not fail at the moment because find-library-name + now has an extra feature, find-library--from-load-history, which + happens to do a case-insensitive regexp match; but still it seems + better not to rely on this. + + * test/lisp/progmodes/elisp-mode-tests.el (xref--case-insensitive): + New variable. + (xref-elisp-test-run, emacs-test-dir): Only downcase if the + filesystem seems to be case-insensitive. + +2018-12-18 Rob Browning + + Avoid test failures if directory name looks like a regexp + + Taken from + * test/lisp/ibuffer-tests.el (ibuffer-filter-inclusion-3): + * test/lisp/net/tramp-tests.el (tramp-test42-remote-load-path): + Regexp-quote file names to avoid failures with directory names + of the form "build/emacs-i87jK3/emacs-26.1+1/...". + +2018-12-18 Michael Albinus + + Fix Bug#33524 + + * lisp/progmodes/flymake-proc.el + (flymake-proc-create-temp-with-folder-structure): + Unquote file-name. (Bug#33524) + +2018-12-17 Glenn Morris + + * doc/lispintro/emacs-lisp-intro.texi (Finding More): Fix xref. + +2018-12-17 Paul Eggert + + More porting to GCC 8 of --enable-gcc-warnings + + Backport from master. + I ran into this when building Emacs 26 with GCC 8 on Fedora 29 x86. + * lwlib/lwlib-Xaw.h (xaw_update_one_value, xaw_popup_menu): + * lwlib/lwlib-Xlw.h (xlw_update_one_value, xlw_pop_instance): + * lwlib/lwlib.h (lw_allow_resizing, lw_set_main_areas) [!USE_MOTIF]: + No longer const. + * src/emacs-module.c: Ignore -Wcast-function-type. + +2018-12-15 Glenn Morris + + Fix an epg test for recent GnuPG versions (bug#33439) + + * test/lisp/epg-tests.el (epg-decrypt-1): + Tell recent GnuPG (e.g. 2.2.11) not to worry about missing MDC. + +2018-12-14 Robert Pluim + + Document font structure layout constraints + + This has to be the same as in src/ftcrfont.c and src/ftfont.c + + * src/xftfont.c (struct xftfont_info): Document layout constraints. + +2018-12-14 Robert Pluim + + Document font structure layout constraints + + The layout of the initial members of ftcrfont_info must match + ftfont_info + + * src/ftcrfont.c (struct ftcrfont_info): Likewise. + + * src/ftfont.c (struct ftfont_info): Document layout constraints. + +2018-12-14 Eli Zaretskii + + Fix display of line numbers in empty lines beyond EOB + + * src/xdisp.c (maybe_produce_line_number): When the current + line is at EOB, use the 'line-number-current-line' face only + on that single line, but not on the rest of empty lines beyond + EOB. (Bug#33732) + +2018-12-11 Eli Zaretskii + + Fix redisplay when a window's scroll bar or fringes are changed + + * src/window.c (set_window_fringes, set_window_scroll_bars): + Set windows_or_buffers_changed flag to cause immediate + thorough redisplay of a window when scroll bars or fringes are + changed. (Bug#33694) + +2018-12-11 Martin Rudalics + + Tiny markup fix in Elisp manual + + * doc/lispref/lists.texi (Building Lists): Use '@var' instead + of '@code' for argument. + +2018-12-10 Alan Mackenzie + + CC Mode: stop extra parens on expression causing false fontification as type + + * lisp/progmodes/cc-fonts.el (c-get-fontification-context): recognize + arithmetic operator followed by several open parentheses, not just one, as not + being an argument list. + +2018-12-10 Ari Roponen + + Fix cairo scrolling for side-by-side windows + + Backport: Fixes Bug#33442. + + * src/xterm.c (x_scroll_run) [USE_CAIRO]: Fix scrolling for + side-by-side split windows. (Bug#31288) + + (cherry picked from commit 6e362a32bc9d21f73a0f29ca6f45481edeea6f29) + +2018-12-10 Alan Mackenzie + + CC Mode: stop wrongly recognizing "func(a * 9)" as "pointer to type a" + + * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): When testing for an + identifier after "a *", on failure additionally check for a digit, setting a + new flag variable got-number if one is found. In the test for CASE 18, check + this flag. + +2018-12-10 Stefan Monnier + + * lisp/emacs-lisp/cursor-sensor.el: Add motivation + +2018-12-10 Raimon Grau + + Guard occur against an undefined orig-line + + * lisp/replace.el (occur-engine): Avoid inserting the current line if + orig-line is nil. This happens, for example, when reverting an occur + buffer with `list-matching-lines-jump-to-current-line' set to t. + (Bug#33476) + +2018-12-09 Eli Zaretskii + + Indexing followup to recent changes + + * doc/lispref/text.texi (Special Properties): Index + 'cursor-sensor-inhibit'. (Bug#33664) + +2018-12-09 Stefan Monnier + + Improve documentation of cursor-sensor.el (bug#33664) + + * doc/lispref/text.texi (Special Properties): Mention cursor-sensor-inhibit. + * lisp/emacs-lisp/cursor-sensor.el (Commentary): Add cursor-sensor-mode. + (cursor-sensor-inhibit): Add docstring. + +2018-12-09 Stefan Monnier + + * doc/lispref/commands.texi (Adjusting Point): Bug#33662 + + Tweak text to clarify intangibility. + +2018-12-09 Michael Albinus + + Tramp multi-hop methods must be inline + + * doc/misc/tramp.texi (Ad-hoc multi-hops): Involved methods must + be inline methods. + +2018-12-08 Ari Roponen + + Fix scaling problem in Cairo builds + + * src/xterm.c (x_begin_cr_clip) [USE_GTK]: + (x_update_begin) [USE_CAIRO && USE_GTK]: Support scaling. + (Bug#33442) + +2018-12-06 Juri Linkov + + * lisp/simple.el (next-line-or-history-element): Use current-column + + in all position calculations. + (previous-line-or-history-element): Idem. (Bug#33640) + +2018-12-03 Martin Rudalics + + A few further fixes of window internals description + + * doc/lispref/internals.texi (Window Internals): Add a few + more items and clarify description of some others. + +2018-12-02 Eli Zaretskii + + Revert "Revert "Fix infloop in GC mark_kboards"" + + This reverts commit c418c85617babbe7b63730fefb71e2c87a0141af. + This reinstates the original fix, as it had nothing to do + with the behavior reported in bug#33571, which seems to be + the expected behavior. + +2018-12-02 Eli Zaretskii + + Revert "Fix infloop in GC mark_kboards" + + This reverts commit af914fc26db273d8788e7efa57c569f0f778d037, + since it caused unintended adverse effects on echoing of keys. + (Bug#33571) + +2018-12-02 Glenn Morris + + * lisp/emacs-lisp/subr-x.el (if-let, when-let): Doc fix: active voice. + +2018-12-01 Paul Eggert + + Fix infloop in GC mark_kboards + + Do not merge to master, as I have a more systematic fix there. + * src/keyboard.c (mark_kboards): Fix infloop (Bug#33547). + +2018-12-01 Alan Third + + Fix macOS run-time feature check + + * src/nsterm.m (x_set_parent_frame) [NS_IMPL_COCOA]: Fix run-time + feature check. + +2018-12-01 Stefan Monnier + + * etc/NEWS-*: Fix capitalization of "Emacs" + +2018-12-01 Eli Zaretskii + + Fix "M-x man" when there's no 'man' program on PATH + + * lisp/man.el (Man-bgproc-sentinel): Make sure the process + buffer is not read-only when inserting a message into it. + (Bug#33510) + +2018-11-30 Paul Eggert + + Fix core dump in dbus-message-internal + + Backport from master. + * src/dbusbind.c (Fdbus_message_internal): + Don’t go past array end (Bug#33530). + +2018-11-30 Michael Albinus + + * doc/misc/dbus.texi (Type Conversion): Fix typo. (Bug#33551) + +2018-11-30 Eli Zaretskii + + Improve documentation of gdb-mi.el + + * lisp/progmodes/gdb-mi.el (gdb-show-changed-values) + (gdb-max-children): Doc fixes. + + * doc/emacs/building.texi (Source Buffers, Stack Buffer) + (GDB User Interface Layout): Mention some additional + customizable variables. (Bug#33548) + +2018-11-29 Thomas Fitzsimmons + + LDAP: Set process-connection-type to t on Darwin + + * lisp/net/ldap.el (ldap-search-internal): Set + process-connection-type to t on Darwin. Do not merge to + master. (Bug#33050) + +2018-11-28 Eli Zaretskii + + Fix a typo in a doc string + + * lisp/emacs-lisp/map-ynp.el (read-answer-short): Fix typo. + (Bug#33528) + +2018-11-28 Eli Zaretskii + + Minor markup fix in frames.texi + + * doc/lispref/frames.texi (Frame Layout): Fix markup of @table + entries. (Bug#33531) + +2018-11-28 Glenn Morris + + * lisp/net/trampver.el (customize-package-emacs-version-alist): + Add 2.3.3. + + * lisp/mh-e/mh-e.el (customize-package-emacs-version-alist): Additions. + +2018-11-27 Glenn Morris + + * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Pass format to message. + +2018-11-27 Robert Pluim + + Don't call xwidget functions until GTK has been initialized + + Follow up fix to Bug#33294. + + * src/gtkutil.c: Define xg_gtk_initialized. + (xg_initialize): Set it when GTK has finished initializing. + + * src/gtkutil.h: Declare xg_gtk_initialized. + + * src/xwidget.c (Fmake_xwidget): Error out if GTK has not been + initialized. + (xwidget_init_view): Likewise. + +2018-11-27 Eli Zaretskii + + Improve documentation of Ediff wordwise commands + + * lisp/vc/ediff.el (ediff-windows-wordwise) + (ediff-windows-linewise, ediff-regions-wordwise): Update and + clarify the doc strings. + + * doc/misc/ediff.texi (Major Entry Points): Update and clarify + the documentation of 'ediff-windows-wordwise' and + 'ediff-regions-wordwise'. See the discussion starting at + https://lists.gnu.org/archive/html/help-gnu-emacs/2018-11/msg00197.html + for the details. + +2018-11-26 Eli Zaretskii + + Support Hunspell 1.7.0 in ispell.el + + * lisp/textmodes/ispell.el + (ispell-find-hunspell-dictionaries): Invoke Hunspell with an + additional command-line argument, to work around a misfeature + in Hunspell 1.7.0 that prevents it from reporting the loaded + dictionary. (Bug#33493) + +2018-11-26 Eli Zaretskii + + Avoid clearing echo-area message by auto-save-visited-file-name + + * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Record the + previous echo-area message, if any, and restore it before + exiting. (Bug#33490) + +2018-11-25 Alan Third + + Set tooltip text color (bug#33452) + + + * src/nsmenu.m: ([EmacsTooltip init]): Set text color to black. + +2018-11-25 Alan Third + + Fix more drawing bugs in NS port (bug#32932) + + * src/nsterm.m (ns_row_rect): New function. + (ns_clip_to_row): Remove function. + (ns_copy_bits): Fix mistake. + (ns_shift_glyphs_for_insert): Mark the frame as dirty instead of + directly copying. + (ns_draw_fringe_bitmap): Stop using ns_clip_to_row. + (ns_draw_window_cursor): Stop using ns_clip_to_row and perform a + display when not in redisplay. + (ns_update_window_begin): Remove redundant code that never executes. + ([EmacsView drawRect:]): Show the rectangle being exposed in NSTRACE. + * src/xdisp.c (expose_window_tree) [HAVE_NS]: + (expose_frame) [HAVE_NS]: Redraw even if the frame is garbaged. + +2018-11-24 Alan Mackenzie + + Fix bug #33416, where typing a ) in a comment at EOB caused a loop (CC Mode). + + * lisp/progmodes/cc-mode.el (c-fl-decl-start): A c-forward-syntactic-ws leaves + point inside whitespace when moving over a comment at EOB which has no + terminating LF. Check this possibility and correct for it. + +2018-11-24 Ulrich Müller + + Update the calc units table + + On 2018-11-16, the 26th meeting of the General Conference on Weights + and Measures (CGPM) has redefined the International System of Units by + adopting fixed values for the Planck constant, the elementary charge, + the Boltzmann constant, and the Avogadro constant: + https://www.bipm.org/utils/en/pdf/CGPM/Draft-Resolution-A-EN.pdf + + * lisp/calc/calc-units.el (math-standard-units): Update according + to redefinition of the SI in 2018. (Bug#33412) + +2018-11-24 Eli Zaretskii + + Improve indexing in the ELisp manual + + * doc/lispref/control.texi (Control Structures, Sequencing) + (Conditionals, Iteration, Catch and Throw, Handling Errors) + (Cleanups): + * doc/lispref/eval.texi (Self-Evaluating Forms) + (Symbol Forms, Function Forms, Macro Forms, Special Forms) + (Quoting, Backquote): Add index entries that begin with + "forms". (Bug#33440) + +2018-11-23 Eli Zaretskii + + More Symbola-related extensions for default fontset + + * lisp/international/fontset.el (setup-default-fontset): Add + few more blocks of symbols and punctuation supported by latest + Symbola. + +2018-11-23 Eli Zaretskii + + Better support for display of U+1F900..U+1F9FF block + + * lisp/international/fontset.el (setup-default-fontset): Add + the [#x1F900..#x1F9FF] block to those supported by Symbola. + +2018-11-23 Eli Zaretskii + + Improve documentation of 'edit-abbrevs-mode' + + * lisp/abbrev.el (edit-abbrevs-mode): Refer to 'edit-abbrevs' + for more detailed usage information. (Bug#33443) + (edit-abbrevs): Doc fix. + +2018-11-22 Eli Zaretskii + + Improve documentation of 'dired-do-compress' + + * lisp/dired-aux.el (dired-do-compress): Describe in the doc + string the effect on directories and on compressed archive. + (Bug#33450) + +2018-11-22 Eli Zaretskii + + Improve doc string and display of 'describe-character' + + * lisp/descr-text.el (describe-char): Explain how does the + function obtain the various data about the character. Don't + display "preferred" before "charset": it tends to confuse + people. + +2018-11-21 Eli Zaretskii + + * etc/NEWS: Clarify what 'Z' does in Dired. (Bug#33450) + +2018-11-20 Eli Zaretskii + + Update the docs of object internals + + * doc/lispref/internals.texi (Buffer Internals) + (Window Internals, Process Internals): Update the descriptions + of Lisp objects. + +2018-11-19 Stephen Berman + + Fix two Edebug defcustoms (bug#33428) + + * lisp/emacs-lisp/edebug.el (edebug-print-length) + (edebug-print-level): Fix customization type to allow setting + the documented valid value nil via the Customize interface. + +2018-11-19 Michael Albinus + + Fix Bug#33141 + + * lisp/net/tramp.el (tramp-make-tramp-file-name): Avoid check for + empty method with simplified `tramp-syntax'. (Bug#33141) + +2018-11-19 Eli Zaretskii + + Improve documentation of the window tree + + * doc/lispref/windows.texi (Windows and Frames): More accurate + wording regarding the relation of a mini-window to its frame's + window tree. + + * src/window.h (struct window): Improve commentary to some + fields. + +2018-11-19 Eli Zaretskii + + Fix window scrolling on TTY frames when there's no mode line + + * src/window.c (window_internal_height): Remove tests for + next, prev, and parent pointers, as they are unrelated to + whether a window has a mode line. (Bug#33363) + +2018-11-19 Eli Zaretskii + + Fix decoding XML files encoded in ISO-8859 + + * lisp/international/mule.el (sgml-xml-auto-coding-function): + Avoid signaling an error from coding-system-equal when the XML + encoding tag specifies an encoding whose type is 'charset'. + (Bug#33429) + +2018-11-19 Nicolas Petton + + * etc/AUTHORS: Update. + +2018-11-18 Martin Rudalics + + Fix description of some window hooks + + * doc/lispref/windows.texi (Window Hooks): Remove text that + warns against using 'save-window-excursion' while running + 'window-size-change-functions', it's no more relevant. + Clarify description of 'window-configuration-change-hook'. + +2018-11-18 Gary Fredericks (tiny change) + + Run 'window--adjust-process-windows' when frame size changes (Bug#32720) + + * lisp/window.el (window-size-change-functions): Run + 'window--adjust-process-windows' from + 'window-size-change-functions' too (Bug#32720, "another issue" + in Bug#33230). + +2018-11-16 Eli Zaretskii + + Avoid errors in zone.el when there's overlay at EOB + + * lisp/play/zone.el (zone): Make sure the window-end position + is calculated accurately, to avoid errors from + buffer-substring. (Bug#33384) + +2018-11-16 Eli Zaretskii + + Document Emacs 26 behavior of Dired's 'Z' on directories + + * doc/emacs/dired.texi (Operating on Files): Document behavior + of 'Z' on directories. + + * etc/NEWS: Belatedly announce the new behavior of Dired's 'Z' + on directory names and on .tar.gz archives. + +2018-11-15 Eli Zaretskii + + Fix a typo in the Emacs manual + + * doc/emacs/rmail.texi (Rmail Deletion): Fix a typo. + Reported by Jorge P. de Morais Neto + in emacs-manual-bugs@gnu.org + +2018-11-15 Paul Eggert + + Fix tempfile creation when byte compiling + + This improves on the recent fix for master failing to build + on FreeBSD. Suggested by Stefan Monnier in: + https://lists.gnu.org/r/emacs-devel/2018-01/msg00600.html + * lisp/emacs-lisp/bytecomp.el (byte-compile-file): + Put tempfile next to the target file, as was the original intent. + + (cherry picked from commit 64c846738617d1d037eac0cefb6586c04317b0a1) + +2018-11-14 Markus Triska + + Small documentation correction. + + * doc/lispref/windows.texi (Textual Scrolling): In the description of + scroll-up-aggressively, refer to scroll-down-aggressively instead of + a recursive reference to scroll-up-aggressively. (Bug#33369) + +2018-11-14 Eli Zaretskii + + * src/coding.c (Fcheck_coding_systems_region): Doc fix. (Bug#33372) + +2018-11-14 Michael Albinus + + Fix Bug#33364 + + * lisp/net/tramp.el (tramp-parse-sconfig-group): Support also + "Host host1 host2 ..." syntax. (Bug#33364) + +2018-11-13 Michael Albinus + + * test/README: Explain $REMOTE_TEMPORARY_FILE_DIRECTORY. + +2018-11-12 Glenn Morris + + Avoid kill-emacs-hook errors hanging batch mode + + * src/emacs.c (Fkill_emacs): Prevent errors from kill-emacs-hook + hanging Emacs in batch mode. (Bug#29955) + + (cherry picked from commit 109da684c5124e22505917fe0255ca66f2a6bfc9) + +2018-11-12 Nicolas Petton + + Bump Emacs version to 26.1.90 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 26.1.90. + +2018-11-12 Nicolas Petton + + * etc/AUTHORS: Update. + +2018-11-12 Paul Eggert + + Work around dumping bug on GNU/Linux ppc64le + + Problem reported by Thomas Fitzsimmons (Bug#33174). + Do not merge to master, as we have a better fix there. + * src/Makefile.in (emacs$(EXEEXT)): + (bootstrap-emacs$(EXEEXT)): + Unset EMACS_HEAP_EXEC before invoking temacs. + +2018-11-11 Eli Zaretskii + + * lisp/files.el (write-file): Clarify the doc string. (Bug#33339) + +2018-11-11 Simen Heggestøyl + + Fix typos in midnight.el + + * lisp/midnight.el (clean-buffer-list-delay-general) + (clean-buffer-list-kill-regexps) + (clean-buffer-list-kill-buffer-names): Fix docstring typos. + +2018-11-10 Eli Zaretskii + + Improve documentation of 'move-file-to-trash' + + * doc/emacs/files.texi (Misc File Ops): Index + move-file-to-trash. State that the way to restore trashed + files is system-dependent. + +2018-11-09 Stefan Monnier + + * src/data.c (Ftype_of): xwidget objects are possible! (bug#33294) + + (syms_of_data): Define Qwidget here. + * src/xwidget.c (syms_of_xwidget): Instead of here. + +2018-11-09 Eli Zaretskii + + Improve documentation of Diff mode + + * doc/emacs/files.texi (Diff Mode): Document the effect of + prefix argument on the Diff mode's commands. Document + 'diff-jump-to-old-file'. + +2018-11-09 Noam Postavsky + + Note that lex bound lambda forms are not self-quoting (Bug#33199) + + * doc/lispref/functions.texi (Anonymous Functions): + * lisp/subr.el (lambda): Note that under lexical binding a lambda form + yields a closure object (Bug#33199). + +2018-11-08 Martin Rudalics + + Rewrite buffer display related doc-strings and doc + + * lisp/window.el (display-buffer-overriding-action) + (display-buffer-alist, display-buffer-base-action) + (display-buffer-fallback-action, display-buffer-assq-regexp) + (display-buffer): Rewrite doc-strings using suggestions by + Alan Mackenzie . + (display-buffer-use-some-frame): Adjust doc-string and + reformat code. + * doc/lispref/windows.texi (Buffer Display Action Alists): + Make docs on 'window-height', 'window-width' and + 'preserve-size' entries more accurate. + +2018-11-06 Eli Zaretskii + + Fix call to GlobalMemoryStatusEx in w32.c + + * src/w32.c (system_process_attributes): Initialize the size + of the data structure passed to GlobalMemoryStatusEx, + otherwise it fails. + +2018-11-04 Eli Zaretskii + + Improve recent changes in documentation of window handling + + * doc/lispref/windows.texi (Displaying Buffers) + (Choosing Window, Buffer Display Action Functions) + (Buffer Display Action Alists, Choosing Window Options) + (Precedence of Action Functions, The Zen of Buffer Display): + Fix wording, punctuation, and markup. Remove redundant + cross-references. + + * doc/emacs/windows.texi (Window Choice, Temporary Displays): + Fix wording and punctuation. + +2018-11-04 Martin Rudalics + + Rewrite documentation of buffer display + + * doc/emacs/windows.texi (Window Choice): Rewrite, replacing + references to older buffer display options with references to + and examples of buffer display actions. + (Temporary Displays): Rewrite display of *Completions* + example. + + * doc/lispref/elisp.texi (Top): New Windows section + 'Displaying Buffers'. + * doc/lispref/frames.texi (Child Frames): Adjust cross + reference. + * doc/lispref/windows.texi (Windows): New section 'Displaying + Buffers'. Move sections 'Choosing Window', 'Display Action + Functions' and 'Choosing Window Options' there and adjust + namings. Preferably write 'Buffer Display Action' instead of + 'Display Action'. More consistently use @w{} to make key + binding specifications unsplittable. + (Displaying Buffers): New section. + (Choosing Window): Make it a subsection of 'Displaying + Buffers'. More explicitly describe how 'display-buffer' + compiles its list of action functions and the action alist. + (Buffer Display Action Functions): Rename from 'Display Action + Functions', make it a subsection of 'Displaying Buffers' and + rewrite it. Elide more detailed descriptions of action alist + entries; these are now in the new section 'Buffer Display + Action Functions'. Remove example. + (Buffer Display Action Alists): New subsection of 'Displaying + Buffers' giving a comprehensive description of recognized + action alist entries with appropriate indexing. Contents were + partially moved here from the old 'Display Action Functions' + section. + (Choosing Window Options): Make it a subsection of 'Displaying + Buffers'. Add examples of how to rewrite old buffer display + options with the help of buffer display actions. + (Precedence of Action Functions): New subsection of + 'Displaying Buffers' explaining the execution order of action + functions with the help of a detailed example. + (The Zen of Buffer Display): New subsection of 'Displaying + Buffers' supplying guidelines on how to write and use buffer + display actions with examples. + (Side Windows, Displaying Buffers in Side Windows) + (Frame Layouts with Side Windows, Atomic Windows): Update + references to the 'Displaying Buffers' subsections. + +2018-11-03 Eli Zaretskii + + Improve documentation of destructuring-binding macros + + * lisp/emacs-lisp/pcase.el (pcase-dolist, pcase-let) + (pcase-let*): Improve the doc strings. + + * doc/lispref/sequences.texi (Sequence Functions): Improve + wording and rename arguments of seq-let to be more + descriptive. Add a cross-reference to "Destructuring with + pcase Patterns". + * doc/lispref/control.texi (Pattern-Matching Conditional): + Improve wording and the menu. + (pcase Macro): Incorporate patch suggested by Paul Eggert + . Reformat text. + (Destructuring with pcase Patterns): Rename from + "Destructuring patterns", and improve wording and indexing. + +2018-11-03 Eli Zaretskii + + Avoid byte compilation warning in rcirc.el + + * lisp/net/rcirc.el (rcirc-prompt-start-marker): Move + definition before 1st use to avoild byte-compiler warning. + +2018-11-03 Basil L. Contovounesios + + Avoid race in rcirc process filter (bug#33145) + + * lisp/net/rcirc.el (rcirc-filter): Clear rcirc-process-output + before processing its constituent lines. Otherwise, if rcirc-filter + runs again before the last rcirc-process-server-response is + finished, the contents of rcirc-process-output could be duplicated. + +2018-11-03 Jordan Wilson (tiny change) + + Avoid file-name errors when viewing PDF from Gnus + + * lisp/doc-view.el (doc-view-mode): Run the output file name + through 'convert-standard-filename', to avoid problems with + characters that are not allowed in file names on some + systems. (Bug#32989) + +2018-11-02 Eli Zaretskii + + Avoid crashes with remapped default face in Org mode + + * src/xfaces.c (face_at_buffer_position): Look up BASE_FACE_ID + anew if it is not in the frame's face cache. This avoids + crashes when Org mode sets up for a new major mode in embedded + code fragment, and the default face is remapped. (Bug#33222) + +2018-11-01 Eric Abrahamsen + + Doc fix for checkdoc-continue + + * lisp/emacs-lisp/checkdoc.el (checkdoc-continue): There is no second + optional argument, and the function always starts from point. + +2018-11-01 Eli Zaretskii + + Fix a typo in autoload.el + + * lisp/emacs-lisp/autoload.el (update-directory-autoloads): + Remove stray backslashes. (Bug#33231) + +2018-10-31 Stefan Monnier + + * doc/lispref/control.texi (Destructuring patterns): New subsection. + +2018-10-31 Gemini Lasswell + + Add regression test for Bug#33014 + + Backport from master. + * test/src/eval-tests.el: + (eval-tests-byte-code-being-evaluated-is-protected-from-gc): New test. + (eval-tests-33014-var): New variable. + (eval-tests-33014-func, eval-tests-33014-redefine): New functions. + +2018-10-31 Paul Eggert + + Refer to bytecode constant vectors (Bug#33014) + + Backport from master. + * src/bytecode.c (exec_byte_code): Save VECTOR into stack slot + so that it survives GC. The stack slot was otherwise unused, + so this doesn’t cost us memory, only a store insn. + +2018-10-30 Stefan Monnier + + * lisp/emacs-lisp/pcase.el: Improve docstrings. + +2018-10-30 Eli Zaretskii + + * lisp/emacs-lisp/rx.el (rx): Fix typo in doc string. (Bug#33205) + +2018-10-30 Eli Zaretskii + + Improve doc string of 'call-process' + + * src/callproc.c (Fcall_process): Clarify DESTINATION in the + doc string. + +2018-10-30 Eli Zaretskii + + Document that generic functions cannot be commands + + * doc/lispref/commands.texi (Defining Commands): + * doc/lispref/functions.texi (Generic Functions): Document + that generic functions cannot be turned into commands. + (Bug#33170) + +2018-10-28 Charles A. Roelli + + * lisp/mail/rmailsum.el (rmail-summary-output): Add lost word to doc. + +2018-10-28 Charles A. Roelli + + Add index entries for more isearch commands/bindings (Bug#32990) + + * doc/emacs/search.texi (Basic Isearch): Index isearch-exit, + isearch-abort, isearch-cancel, isearch-repeat-forward, + isearch-repeat-backward and their bindings. + (Repeat Isearch): Index isearch-ring-advance, + isearch-ring-retreat and isearch-edit-string. + (Special Isearch): Index isearch-quote-char, + isearch-char-by-name and their bindings. Index + isearch-query-replace and isearch-query-replace-regexp, and + the latter's binding. Explain what + isearch-query-replace-regexp does. Index isearch-complete. + (Word Search): Index isearch-toggle-word. + +2018-10-27 Noam Postavsky + + * lisp/simple.el (filter-buffer-substring): Clarify doc (Bug#33179). + +2018-10-27 Eli Zaretskii + + Fix recent change in lispref/processes.texi. + + * doc/lispref/processes.texi (Asynchronous Processes): Clarify + wording. Suggested by Thomas Fitzsimmons . + (Bug#33050) + +2018-10-27 Eli Zaretskii + + * lisp/simple.el (region-extract-function): Doc fix. (Bug#33167) + + * lisp/simple.el (region-bounds): Doc fix. (Bug#33168) + +2018-10-27 Eli Zaretskii + + Improve documentation of 'process-connection-type' + + * doc/lispref/processes.texi (Asynchronous Processes): Clarify + better when it is advisable to use pipes for communicating + with subprocesses. (Bug#33050) + +2018-10-27 Pierre Téchoueyres + + Unify prompt for gnupg passphrase between GNU/Linux and MS-Windows. + + * lisp/epg.el (epg--start): Use 'raw-text' for coding system instead + of 'binary', in order to avoid spurious carriage return on Microsoft + Windows and MS-DOS when prompting for a password. (Bug#33040) + +2018-10-27 Eli Zaretskii + + Doc fix of 'gnus-fetch-old-headers' + + * lisp/gnus/gnus-sum.el (gnus-fetch-old-headers): Avoid + treating 'some' and 'invisible' as symbols that need to be + hyperlinked. Reported by Robert Pluim . + (Bug#33090) + +2018-10-27 Eric Abrahamsen + + Deactivate incorrect hyperlinking in gnus-build-sparse-threads doc + + * lisp/gnus/gnus-sum.el (gnus-build-sparse-threads): Add the word + "symbol" so it doesn't link to the `some' function. (Bug#33090) + +2018-10-27 Eli Zaretskii + + Minor copyedits in cmdargs.texi + + * doc/emacs/cmdargs.texi (Initial Options): Document '-nsl'. + Add a cross-reference to "Writing Dynamic Modules". + +2018-10-27 Eli Zaretskii + + Improve documentation of X resource loading + + * doc/emacs/cmdargs.texi (Initial Options): + * doc/emacs/frames.texi (Frame Parameters): + * doc/emacs/xresources.texi (Resources): Document the + '--no-x-resources' command-line option and the fact that X + resources override .emacs settings of frame parameters. + (Bug#32975) + +2018-10-27 Michael Albinus + + * lisp/net/tramp-sh.el (tramp-inline-compress-commands): + + Suppress warnings about obsolete environment variable GZIP. + +2018-10-25 Noam Postavsky + + Don't error when indenting malformed Lisp (Bug#30891) + + * lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): If we run out + of indent stack, reset the parse state. + +2018-10-25 Charles A. Roelli + + Improve 'isearch-delete-char' documentation (Bug#32990) + + * doc/emacs/search.texi (Basic Isearch): Index + 'isearch-delete-char', its keybinding and the isearch "input + item" concept, and define the latter. + (Error in Isearch): Clarify the different uses of DEL and + C-M-w during isearch. + + * lisp/isearch.el (isearch-delete-char): Correct its + documentation and link to the Info node '(emacs)Basic Isearch' + which explains less technically how this function works in + everyday usage. + +2018-10-25 Alan Third + + Improve XPM load failure message (bug#33126) + + * src/image.c (xpm_load_image): Only XPM3 is supported, so make that + explicit. + +2018-10-25 Eli Zaretskii + + Avoid infloop in CPerl mode fontification + + * lisp/progmodes/cperl-mode.el + (cperl-font-lock-fontify-region-function): Stop the loop at + EOB, to avoid inflooping there. (Bug#33114) + +2018-10-25 Andreas Schwab + + Fix minibuffer-help-form for lexical binding + + * lisp/simple.el (set-variable): Substitute var into + minibuffer-help-form. + * lisp/cus-edit.el (custom-prompt-variable): Likewise. + +2018-10-24 Alan Third + + Fix some NS drawing issues (bug#32932) + + * src/nsterm.m (ns_clip_to_rect): + (ns_reset_clipping): Remove gsaved variable and associated code. + (ns_flush_display): Remove function. + (ns_copy_bits): use translateRectsNeedingDisplayInRect:by: to copy any + pending drawing actions along with the image. + ([EmacsView windowWillResize:toSize:]): Remove unneeded call. + ([EmacsView drawRect:]): Remove redundant call to ns_clear_frame_area, + and optimize the exposed rectangles. + (ns_draw_window_cursor): Remove unneeded disabling of screen updates. + +2018-10-24 Katsumi Yamaoka + + * lisp/gnus/mm-util.el (mm-decompress-buffer): Fix split-string args. + +2018-10-24 Noam Postavsky + + * doc/misc/calc.texi (Summary): The +/- key is 'p', not 'P'. + +2018-10-23 Robert Pluim + + Correct typo in GNU ELPA url + + * doc/misc/efaq.texi (Packages that do not come with Emacs): + Correct typo in GNU ELPA url (Bug#33072). Change other url + references to use https scheme. + +2018-10-22 Eli Zaretskii + + * doc/misc/dired-x.texi (Omitting Variables): Fix wording. (Bug#33112) + +2018-10-20 Michael Heerdegen + + Fix help-form binding in dired-create-files + + This fixes Bug#32630: since "dired-aux" moved to lexical binding mode, + the free variable TO in the constructed HELP-FORM got out of scope of + the surrounding 'let'. + + * lisp/dired-aux.el (dired-create-files): Make the binding of + HELP-FORM a string. + +2018-10-20 Eli Zaretskii + + Fix a pasto in a Gnus doc string + + * lisp/gnus/gnus-art.el (gnus-article-treat-fold-newsgroups): + Doc string fix. (Bug#33081) + +2018-10-19 Mauro Aranda (tiny change) + + Update revert-buffer documentation + + * doc/emacs/files.texi (Reverting): Document that revert-buffer + does keep undo history. (Bug#33084) + +2018-10-18 Juri Linkov + + * lisp/mail/smtpmail.el (smtpmail-send-queued-mail): Load file with .el suffix. + + For the case when load-prefer-newer is t, ensure loading the right file + by explicitly adding the .el suffix. Use the same variable names + as in the function smtpmail-send-it. (Bug#33055) + +2018-10-16 Glenn Morris + + Tweak Makefile emacs-module.h handling + + * Makefile.in (install-arch-indep, uninstall): Respect DESTDIR. + Handle whitespace. Remove non-portable mkdir argument. + + (cherry picked from commit c1d0dbd6ca92cb221024382b19654e4fbf1d1ed3) + +2018-10-16 Philipp Stephani + + Install emacs-module.h (Bug#31929) + + * Makefile.in (includedir): New variable. + (install-arch-indep): Install emacs-module.h. + (uninstall): Uninstall emacs-module.h. + + (cherry picked from commit 00ea749f2af44bff6ea8c1259477fbf0ead8a306) + +2018-10-15 Alan Mackenzie + + Clarify documentation of fractional vertical scrolling and some doc strings + + * doc/lispref/windows.texi (vertical scrolling): Clarify the meaning of + vertical scrolling by referring to tall screen lines, images, and the display + action. Clarify an ambiguous English tense. + + * src/window.c (window-vscroll, set-window-vscroll): Amend doc strings to + refer to display. + +2018-10-15 Charles A. Roelli + + * lisp/isearch.el (isearch-cmds): Recall absent isearch--state slot. + +2018-10-14 Alan Mackenzie + + doc/lispref/edebug.texi (Specification List) Remove obstrusive blank line + +2018-10-14 Eli Zaretskii + + Fix wording in module API documentation + + * doc/lispref/internals.texi (Module Functions): Fix confusing + wording. Reported by Basil L. Contovounesios . + +2018-10-13 Eli Zaretskii + + Fix redisplay of glyphless characters + + * src/conf_post.h (bool_bf): Use 'unsigned int' in the MinGW + builds. Suggested by Tom Tromey . (Bug#33017) + * src/dispnew.c (scrolling_window): Update commentary + regarding xwidget builds. + +2018-10-13 Robert Pluim + + Update --without-toolkit-scroll-bars doc + + * configure.ac (--without-toolkit-scroll-bars): Update list of + affected toolkits. + +2018-10-13 Robert Pluim + + Call GTK functions only on GTK scrollbars + + * src/gtkutil.c (xg_set_background_color) [USE_TOOLKIT_SCROLL_BARS]: + Don't call GTK functions on non-GTK scrollbars (Bug#32975). + +2018-10-13 Eli Zaretskii + + Update the description of startup in ELisp manual + + * doc/lispref/os.texi (Startup Summary): Remove stale + reference to window-system-initialization-alist. Reported by + Zhang Haijun . + +2018-10-13 Eli Zaretskii + + Use the 'line-number' face for line-number fields past EOB + + * src/xdisp.c (get_phys_cursor_geometry): Treat rows at and + beyond ZV specially. Don't let the cursor exceed the + vertical dimensions of the row. + (maybe_produce_line_number): Use the 'line-number' face + instead of 'default' for blank fields beyond ZV. Don't update + the IT metrics when displaying blank line-number fields beyond + ZV. (Bug#32337) + +2018-10-12 Alan Third + + Ensure NS frame is redrawn correctly after scroll + + * src/nsterm.m (ns_copy_bits): Set needsDisplay so the previous cursor + position is redrawn. + +2018-10-12 Alex Branham + + Avoid byte-compiler warning in em-rebind.el + + * lisp/eshell/em-rebind.el (eshell-delete-backward-char): Use + 'delete-char' instead of delete-backward-char. (Bug#32945) + +2018-10-12 Eli Zaretskii + + Improve indexing of 'C-SPC C-SPC' + + * doc/emacs/mark.texi (Disabled Transient Mark): Fix + indexing. (Bug#32959) + +2018-10-11 Eric Abrahamsen + + Fix bug with precious entries in Gnus registry + + * lisp/registry.el (registry-collect-prune-candidates): This `cdr' was + an error: it meant that the last key in the precious list, would be + considered a nil. Since the precious list only contains the symbol + 'mark by default, marks were never considered precious. + * doc/misc/gnus.texi (Store arbitrary data): Fix typo: "marks" should + be "mark". + +2018-10-11 Eli Zaretskii + + Document in the ELisp manual how to write loadable modules + + * doc/lispref/internals.texi (Writing Dynamic Modules) + (Module Initialization, Module Functions, Module Values) + (Module Misc, Module Nonlocal): New nodes. + * doc/lispref/loading.texi (Dynamic Modules): Add + cross-reference to the new node. + * doc/lispref/internals.texi (GNU Emacs Internals): + * doc/lispref/elisp.texi (Top): Update menus for the new nodes. + +2018-10-11 Tino Calancha + + dired-do-shell-command: Notify users after abort the command + + * lisp/dired-aux.el (dired-do-shell-command): Notify users that + the command have aborted when they answer 'n' to the prompt (Bug#32969). + +2018-10-11 Michael Albinus + + Adapt Tramp version. Do not merge with master + + * lisp/net/trampver.el: Change version to "2.3.5.26.2". + (customize-package-emacs-version-alist): Add Tramp version + integrated in Emacs 26.2. + +2018-10-10 Alan Third + + Fix Apple Script permissions error + + * nextstep/templates/Info.plist.in: Add NSAppleEventsUsageDescription + message to enable AppleEvents usage. + +2018-10-10 Mauro Aranda (tiny change) + + Fix typo in 'timerp' documentation + + * doc/lispref/os.texi (Timers): Fix typo in 'timerp' documentation. + (Bug#32999) + +2018-10-08 Charles A. Roelli + + * doc/emacs/mark.texi (Mark): Index "(de)activating the mark". + + (Bug#32956) + +2018-10-08 Scott Corley (tiny change) + + Fix overflow lockup with frames > 255 lines + + Backport from master. + * src/scroll.c (struct matrix_elt): Change unsigned char fields to + int to handle frames with more than 255 lines (Bug#32951). + +2018-10-07 Eli Zaretskii + + Avoid assertion violations in nonsensical calls to 'signal' + + * src/eval.c (Fsignal): If both arguments are nil, replace the + first one with 'error', to avoid assertion violations further + down the line. (Bug#32961) + +2018-10-06 Charles A. Roelli + + * lisp/simple.el (transient-mark-mode): Correct documentation. (Bug#32956) + +2018-10-06 Eli Zaretskii + + Update the locale and language database + + * lisp/international/mule-cmds.el (locale-language-names): + Update the list of supported locales. Use existing language + names where available. + +2018-10-05 Eli Zaretskii + + Fix a typo in a doc string. + + * lisp/window.el (display-buffer-alist): Fix a typo in a doc string. + Reported by Michael Heerdegen . + +2018-10-05 Katsumi Yamaoka + + Make nneething allow CRLF-encoded files (bug#32940) + + * lisp/gnus/nneething.el (nneething-request-article): + Bind coding system to raw-text instead of binary when reading a file, + that may be CRLF-encoded (bug#32940). + +2018-10-04 Eric Abrahamsen + + Further fix to eieio-persistent + + * lisp/emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value): + Make handling of hash tables and vectors recursive. This is + necessary because the write process, in `eieio-override-prin1' is + also recursive. With any luck, this will be the last fix of its + kind. If that's true, cherry-pick to Emacs 26.2 later on. + +2018-10-04 Eli Zaretskii + + Avoid ridiculously high stack limit requests on macOS + + * src/emacs.c (main): Avoid wraparound in subtraction of + rlim_t values, in case rlim_t is an unsigned type. (Bug#32338) + +2018-10-03 Charles A. Roelli + + Improve documentation of 'read-hide-char' + + * src/minibuf.c (syms_of_minibuf) : Clarify + documentation and mention where else the variable is used. + * doc/lispref/minibuf.texi (Reading a Password): Add an index + entry for 'read-hide-char'. + +2018-10-03 Alan Mackenzie + + In follow mode, prevent the cursor resting on a partially displayed line + + Don't merge to master. This fixes bug #32848 + + * lisp/follow.el (follow-adjust-window): If point ends up in a partially + displayed line in a left hand or middle window, move it one line + forward, to + prevent unwanted scrolling should make-cursor-line-fully-visible be + non-nil. + +2018-10-03 Alan Mackenzie + + Revert "Temporary workaround for bug #32848 for branch emacs-26" + + This reverts commit 6650751ce73413d05599df07a9c5bc70744260f3. + +2018-10-03 Alan Mackenzie + + Revert "* etc/NEWS: Note setting make-cursor-line-fully-visible to nil in follow-mode" + + This reverts commit f3c8f4bde2de2b9d42c44f5e44f34c427bebdc58. + +2018-10-03 Alan Mackenzie + + * etc/NEWS: Note setting make-cursor-line-fully-visible to nil in follow-mode + + Also re-insert the "temporary note" explaining --- and +++. + +2018-10-03 Noam Postavsky + + Fix note about interactive advice (Bug#32905) + + * doc/lispref/functions.texi (Core Advising Primitives): Add missing + ':', and finish the sentence fragment. + +2018-10-01 Michael Albinus + + Comple fix for Bug#32550 + + * lisp/net/tramp.el (tramp-rfn-eshadow-update-overlay): + Use `save-excursion'. This completes the fix of Bug#32550. + +2018-10-01 Eli Zaretskii + + * lisp/savehist.el (savehist-mode): Doc fix. (Bug#32889) + +2018-09-30 Nicolas Goaziou + + Org manual: Rewrite the Org Mobile section + + * doc/misc/org.texi (Org Mobile): Rewritten from "MobileOrg" section. + Remove all references to non-free software. + Moved into "Miscellaneous", much like Org Crypt library. No longer an + appendix. + (Footnotes): Remove a reference to "MobileOrg". + (Bug#32722) + +2018-09-30 Alan Mackenzie + + Temporary workaround for bug #32848 for branch emacs-26 + + Do not merge with master. + + * lisp/follow.el (follow-mode): Set make-cursor-line-fully-visible to nil + buffer locally whilst follow-mode is active. + +2018-09-29 Tino Calancha + + Improve cl-do, cl-do* docstrings + + * lisp/emacs-lisp/cl-macs.el(cl-do, cl-do*): + Improve docstring (Bug#32803). + +2018-09-29 Eli Zaretskii + + Avoid returning early in 'while-no-input' due to subprocesses + + * src/keyboard.c (kbd_buffer_store_buffered_event): Support + also the internal buffer-switch events. + (syms_of_keyboard) : New DEFSYM. + + * lisp/subr.el (while-no-input-ignore-events): Ignore + 'buffer-switch' events. Reported by Michael Heerdegen + . + + * etc/NEWS: Mention the change in behavior of 'while-no-input' + +2018-09-29 John Shahid + + Cleanup when opening a new terminal fails. (Bug#32794) + + * src/term.c (init_tty): Call delete_terminal_internal if emacs_open + fail. + * src/terminal.c (delete_terminal): Move some code into + delete_terminal_internal and call it. + (delete_terminal_internal): New function. + * src/termhooks.h: Prototype for delete_terminal_internal. + +2018-09-28 Alan Third + + Fix deprecation warning + + * src/nsterm.m (ns_term_init): Use writeToFile or writeToURL as + required. + +2018-09-28 Alan Third + + Make all NS drawing be done from drawRect + + See bug#31904 and bug#32812. + + * src/nsterm.m (ns_update_begin): Don't lock focus, only clip if there + is already a view focused. + (ns_update_end): Don't mess with view focusing any more. + (ns_focus): Only clip drawing if there is already a focused view, + otherwise mark area dirty for later drawing. Renamed ns_clip_to_rect. + All callers changed. + (ns_unfocus): Don't unfocus the view any more. Renamed + ns_reset_clipping. All callers changed. + (ns_clip_to_row): Update to match ns_clip_to_rect. + (ns_clear_frame): + (ns_clear_frame_area): + (ns_draw_fringe_bitmap): + (ns_draw_window_cursor): + (ns_draw_vertical_window_border): + (ns_draw_window_divider): + (ns_dumpglyphs_stretch): + (ns_draw_glyph_string): Only draw if ns_focus or ns_clip_to_row + return YES. + (ns_copy_bits): Remove superfluous calls to ns_(un)focus. + (ns_flush_display): New function. + +2018-09-28 Michael Albinus + + Fix Bug#32828 + + * lisp/net/dbus.el (dbus-init-bus): Return number of connections, + as promised by the docstring. (Bug#32828) + +2018-09-28 Noam Postavsky + + * lisp/net/shr.el (shr-copy-url): Fix docstring. + +2018-09-27 Eli Zaretskii + + Fix typos in documentation + + * doc/misc/vhdl-mode.texi (Custom Indentation Functions): + * doc/misc/url.texi (Customization): + * doc/misc/tramp.texi (Overview): + * doc/misc/srecode.texi (Developing Template Functions): + * doc/misc/sieve.texi (Sieve Mode): + * doc/misc/reftex.texi (Options - Creating Citations): + * doc/misc/org.texi (Cooperation, Conflicts): + * doc/misc/gnus.texi (Misc Group Stuff): + * doc/misc/eshell.texi (Bugs and ideas): + * doc/misc/calc.texi (Summary): + * doc/man/emacsclient.1: + * doc/lispref/os.texi (Security Considerations): + * doc/lispref/control.texi (pcase Macro): + * CONTRIBUTE: Fix typos. Reported by Mak Kolybabi + (Bug#32853) + +2018-09-24 Stefan Monnier + + * doc/emacs/kmacro.texi (Basic Keyboard Macro): Mention old bindings + + According to Apple gospel, function keys are partly going the way of the dodo + so F3/F4 can, like in the good old days, be hard to reach for some users. + +2018-09-24 Eli Zaretskii + + Improve docs of functions/variables related to 'display-buffer' + + * lisp/window.el (display-buffer, pop-to-buffer-same-window) + (display-buffer-same-window, display-buffer-in-side-window) + (same-window-p, display-buffer-overriding-action) + (display-buffer-base-action) + (display-buffer--same-window-action) + (display-buffer--other-frame-action) + (with-current-buffer-window, with-displayed-buffer-window) + (display-buffer-alist, display-buffer-assq-regexp) + (display-buffer-other-frame): Clarify and improve the doc + strings. (Bug#32798) + +2018-09-23 Stefan Monnier + + * lisp/mouse.el (tear-off-window): Fix non-mouse use (bug#32799) + +2018-09-22 Eli Zaretskii + + Improve documentation of directory-local variables + + * lisp/files.el (hack-local-variables, normal-mode) + (after-find-file, find-file-hook): Mention directory-local + variables in the doc strings. Suggested by Marcin Borkowski + . + + * doc/emacs/custom.texi (File Variables, Directory Variables): + Clarify that directory-local variables are overridden by + file-local ones. + +2018-09-22 Eli Zaretskii + + Don't use obsolete variable 'save-place' in documentation + + * doc/lispref/customize.texi (Variable Definitions): Replace + example of saveplace defcustom with a fictitious one, which + will not bit-rot with time. (Bug#32741) + +2018-09-22 Mark A. Hershberger + + Use save-place-mode instead of save-place + + * lisp/menu-bar.el (menu-bar-options-save, menu-bar-options-menu): + * lisp/saveplace.el (save-place-to-alist, save-places-to-alist) + (save-place-find-file-hook, save-place-dired-hook): Use + save-place-mode instead of the obsolete save-place. + +2018-09-20 Eli Zaretskii + + More accurate docs for 'text-char-description' + + * src/keymap.c (Ftext_char_description): + * doc/lispref/help.texi (Describing Characters): More accurate + description of 'text-char-description'. Remove incorrect + examples from the ELisp manual. (Bug#32743) + +2018-09-20 Noam Postavsky + + Document synchronous behavior of eshell/make (Bug#32513) + + * doc/misc/eshell.texi (Built-ins): + * lisp/eshell/em-unix.el (eshell/make): Mention that it falls back to + the external 'make' command when called synchronously. + +2018-09-20 Shigeru Fukaya + + Fix bs-show with wide characters (Bug#17822) + + * lisp/bs.el (bs--insert-one-entry, bs-show-in-buffer): Use + string-width instead of length. + +2018-09-19 Eli Zaretskii + + Improve Custom menu labels for 2 options + + * lisp/dired.el (dired-use-ls-dired): + * lisp/progmodes/xref.el (xref-prompt-for-identifier): Improve + the doc string and the defcustom menu/tags text. (Bug#32756) + +2018-09-19 Eli Zaretskii + + Improve wording of last change in dired-x.texi + + * doc/misc/dired-x.texi (Shell Command Guessing): Clarify + wording in description of 'dired-guess-shell-alist-user'. + Avoid passive tense. (Bug#32733) + +2018-09-18 Eli Zaretskii + + Fix GnuTLS test suite with GnuTLS versions 3.4.x + + * src/gnutls.c (gnutls_cipher_get_tag_size): Make it return + zero only for versions of GnuTLS < 3.2.2, where + gnutls_cipher_get_tag_size was introduced. This fixes the + GnuTLS test suite, which assumes that any cipher whose tag + size is non-zero is AEAD-capable, and doesn't test such ciphers + if AEAD is not available, i.e. for GnuTLS < 3.5.1. (Bug#32446) + +2018-09-17 Noam Postavsky + + Fix build with gnutls versions 3.0 to 3.2 (Bug#32446) + + We previously used functions available only in 3.2+ for all 3.x + versions. + * src/gnutls.c [GNUTLS_VERSION_NUMBER < 0x030501]: Replace calls to + gnutls_cipher_get_tag_size with 0. + [GNUTLS_VERSION_NUMBER < 0x030200]: Alias gnutls_cipher_get_iv_size + to gnutls_cipher_get_block_size, gnutls_digest_list to + gnutls_mac_list, and gnutls_digest_get_name to gnutls_mac_get_name. + [WINDOWSNT]: Adjust DLL function definitions and declarations + accordingly. + +2018-09-17 Eli Zaretskii + + Fix the Bubbles game on TTY frames + + * lisp/play/bubbles.el (bubbles--col-offset) + (bubbles--row-offset): Doc fixes. + (bubbles--compute-offsets): Conflate the GUI and TTY code into + a single common version. Set the offsets to simple numbers, + not to lists. + (bubbles--initialize, bubbles--show-scores): Wrap offset + values in a list, so that they are interpreted as pixel + values, not as units of character width. This fixes the game + on TTY frames. (Bug#32744) + +2018-09-17 Allen Li + + Add choice to reshow certificate information (Bug#31877) + + In various situations, the window displaying the certificate + information can be hidden (such as if the user accidentally presses ?, + which causes the read-multiple-choice help window to replace it). + Instead of leaving the user to make a choice blindly, add a choice to + reshow the certification information. + + * lisp/net/nsm.el (nsm-query-user): Add reshow choice. + +2018-09-16 Glenn Morris + + * src/alloc.c (Fbool_vector, Flist, Fvector): Doc tweak. + + Use a simpler, consistent form. + +2018-09-15 Alan Mackenzie + + * src/alloc.c (vector): Fix grammatical error in doc string: "are" -> "is". + +2018-09-15 Eli Zaretskii + + Avoid adverse side effects of fixing bug#21824 + + * test/src/buffer-tests.el + (overlay-modification-hooks-deleted-overlay): New test. + + * src/buffer.c (report_overlay_modification): Don't bypass all + the overlay-modification hooks; instead, invoke each function + only if the buffer associated with the overlay is the current + buffer. (Bug#30823) + +2018-09-15 Eli Zaretskii + + Document changes called out in NEWS + + * doc/lispref/lists.texi (Association Lists): Document + 'assoc-delete-all'. + * doc/lispref/minibuf.texi (Minibuffers): Adapt menu. + (Multiple Queries): Document 'read-answer'. + + * etc/NEWS: Reflect the above documentation in the respective + entries. + +2018-09-14 Glenn Morris + + Tiny doc updates re yum/dnf etc + + * INSTALL: Mention dnf and Debian unversioned emacs package. + * doc/misc/efaq.texi (Installing Emacs): Mention dnf. + +2018-09-14 Leo Liu + + Remove unused variable + + * lisp/progmodes/prolog.el (prolog-hungry-delete-key-flag): Remove. + +2018-09-14 Leo Liu + + Fix (thing-at-point 'list) regression (Bug#31772) + + * lisp/thingatpt.el (thing-at-point-bounds-of-list-at-point): Revert + to pre 26.1 behavior. Return whole sexp at point if no enclosing + list. + (list-at-point): New optional arg to ignore comments and strings. + + * test/lisp/thingatpt-tests.el + (thing-at-point-bounds-of-list-at-point): Fix and augment tests. + +2018-09-14 Robert Pluim + + Clarify meaning of '*' + + * doc/misc/dired-x.texi (Shell Command Guessing): Clarify meaning + of '*'. (Bug#32733) + +2018-09-12 Paul Eggert + + * etc/PROBLEMS: Document Ubuntu 16.04 issue. + +2018-09-12 Alex Branham (tiny change) + + Increase default value for imenu-auto-rescan-maxout + + * lisp/imenu.el (imenu-auto-rescan-maxout): Increase default value to + 600000. (Bug#18426) + * doc/emacs/programs.texi (imenu-auto-rescan-maxout): Add + documentation for imenu-auto-rescan-maxout. + +2018-09-11 Eli Zaretskii + + Improve recent change to ELisp manual + + * doc/lispref/commands.texi (Keyboard Events): Add index entry + for "character event". (Bug#32562) + +2018-09-11 Eli Zaretskii + + * doc/lispref/display.texi (SVG Images): Improve wording. + + * doc/lispref/display.texi (SVG Images): Fix a typo. (Bug#32690) + +2018-09-10 Eli Zaretskii + + Clarify completion text in the ELisp manual + + * doc/lispref/minibuf.texi (Programmed Completion): Clarify + text. Suggested by Stefan Monnier . + +2018-09-10 Eli Zaretskii + + Fix handling of abbreviated control command in gdb-mi.el + + * lisp/progmodes/gdb-mi.el (gdb-control-commands-regexp): + Support unambiguous abbreviations of commands. (Bug#32576) + +2018-09-10 Eli Zaretskii + + Clarify documentation of functions reading character events + + * doc/lispref/help.texi (Describing Characters): + * doc/lispref/commands.texi (Keyboard Events) + (Reading One Event, Classifying Events): Make the distinction + between characters and character events more explicit. + + * src/keymap.c (Ftext_char_description) + (Fsingle_key_description): + * src/lread.c (Fread_char, Fread_char_exclusive): Doc fixes, + to make a clear distinction between a character input event + and a character code. (Bug#32562) + +2018-09-07 Eli Zaretskii + + Record :version for built-in variables while dumping + + * lisp/cus-start.el (standard): Record the ':version; of the + symbols when dumping, so that 'describe-variable' could tell + which built-in variables were added/changed in recent + versions. + +2018-09-07 YAMAMOTO Mitsuharu + + * src/process.c (connect_network_socket): Fix memory leak. (Bug#32604) + +2018-09-05 Glenn Morris + + * Makefile.in (appdatadir): Use the non-obsolete location "metainfo". + +2018-09-04 Stefan Monnier + + Better fix for bug#32550 + + * lisp/rfn-eshadow.el (rfn-eshadow-overlay): Give it a global default. + + * lisp/net/tramp.el (rfn-eshadow-overlay): Declare it as dynamically scoped. + (tramp-rfn-eshadow-update-overlay): Revert the corresponding part of + last change. + +2018-09-04 Michael Albinus + + Fix Bug#32550 + + * lisp/net/tramp.el (tramp-rfn-eshadow-setup-minibuffer): Do not + use `symbol-value'. + (tramp-rfn-eshadow-update-overlay): Do not use `symbol-value'. Do + not let-bind `rfn-eshadow-overlay', assign it directly (due to + lexical binding). (Bug#32550) + +2018-09-04 Martin Rudalics + + Don't call XGetGeometry for frames without outer X window (Bug#32615) + + * src/xfns.c (frame_geometry): Don't call XGetGeometry when + FRAME has no outer X window; return nil instead. (Bug#32615) + +2018-09-03 Paul Eggert + + * lisp/calculator.el: Fix doc typo. + +2018-09-03 Glenn Morris + + Standardize calc bug reporting instructions + + * doc/misc/calc.texi (Reporting Bugs): Use standard commands. + * lisp/calc/calc-misc.el (report-calc-bug, calc-report-bug): + * lisp/calc/calc.el (calc-bug-address): Change to be + obsolete aliases for standard Emacs bug reporting items. + +2018-08-31 Michael Albinus + + Rename thread-alive-p to thread-live-p + + * doc/lispref/threads.texi (Basic Thread Functions): Use thread-live-p. + + * etc/NEWS: 'thread-alive-p' has been renamed to 'thread-live-p'. + + * src/thread.c (thread_live_p): Rename from thread_alive_p. Adapt + all callees. + (Fthread_live_p): Rename from Fthread_alive_p. + (syms_of_threads): Make thread-alive-p an alias of thread-live-p. + + * test/src/thread-tests.el (all): Replace `thread-alive-p' by + `thread-live-p'. + (threads-live): Rename from `threads-alive'. + +2018-08-30 Miciah Masters (tiny change) + + rcirc: Document /reconnect as a built-in command (Bug#29656) + + The change "New command rcirc-cmd-reconnect" from 2014-04-09 (shipped + in Emacs 25.1) added a /reconnect command to rcirc but did not + document it and did not delete the example /reconnect command + definition in the manual. + * doc/misc/rcirc.texi (rcirc commands): Document the built-in /reconnect + command. + (Hacking and Tweaking): Delete example reconnect command. + +2018-08-30 Noam Postavsky + + * test/lisp/calc/calc-tests.el (calc-imaginary-i): New test. + +2018-08-28 Glenn Morris + + admin.el: respect environment settings for makeinfo etc + + * admin/admin.el (manual-makeinfo, manual-texi2pdf, manual-texi2dvi): + New variables. + (manual-html-mono, manual-html-node, manual-pdf, manual-ps): Use them. + +2018-08-28 Glenn Morris + + * etc/PROBLEMS: New entry about GTK+ 3 crash with some X servers. + +2018-08-28 Noam Postavsky + + Index profiler commands in elisp manual + + * doc/lispref/debugging.texi (Profiling): Add index entries for + profiler-start, profiler-report, profiler-stop. + +2018-08-28 Noam Postavsky + + Fix math-imaginary-i check + + Reported by Bastian Erdnüß at + . + * lisp/calc/calc-cplx.el (math-imaginary-i): Check for a value + of (polar 1 ). + +2018-08-28 Eli Zaretskii + + Avoid infinite hscrolling loops when line numbers are displayed + + * src/xdisp.c (maybe_produce_line_number): Don't produce line + numbers if we don't have enough screen estate. (Bug#32351) + +2018-08-28 Eli Zaretskii + + Avoid crashes in malformed defvar + + * src/eval.c (Fdefvar): Don't call XSYMBOL on something that + might not be a symbol. This avoids crashes due to malformed + 'defvar' forms. (Bug#32552) + +2018-08-28 Glenn Morris + + * configure.ac (emacs_config_features): Add GLIB, XDBE, XIM. + + * configure.ac: Doc fixes related to --with-xim. + +2018-08-28 Glenn Morris + + Small checkdoc quoting fix (bug#32546) + + * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): + Fix quoting thinko. + +2018-08-26 Sergey Vinokurov + + Fix detection of freed emacs_values (Bug#32479) + + * src/emacs-module.c (module_free_global_ref): Compare a value to be + freed with all entries of the list. + + * test/data/emacs-module/mod-test.c (Fmod_test_globref_free): New + function. + (emacs_module_init): Make it accessible from Lisp. + * test/src/emacs-module-tests.el (mod-test-globref-free-test): New + test which uses it. + +2018-08-25 Eli Zaretskii + + Avoid crashes with very wide TTY frames on MS-Windows + + * src/w32console.c : Reduce the number of elements + to 80. + : New static variables. + (w32con_clear_end_of_line): If the line is wider than the + current size of the "empty row" in 'glyphs', reallocate + 'glyphs' to support the full width of the frame. This + avoids segfaults when the frame is wider than 256 columns. + (Bug#32445) + +2018-08-25 Wenjamin Petrenko (tiny change) + + Prevent `modify-file-local-variable-prop-line' from adding extra ';' + + * lisp/files-x.el (modify-file-local-variable-prop-line): Handle + whitespace when checking if there's already a ';' before the + variable (Bug#23294). + +2018-08-24 Glenn Morris + + Update GNOME bugtracker URLs + + * configure.ac, admin/notes/multi-tty, etc/PROBLEMS: + * src/emacs.c (main): + * src/xterm.c (x_connection_closed): Update GNOME bugtracker URLs. + +2018-08-23 Eli Zaretskii + + Clarify in the Emacs manual that ChangeLog files are not used + + * doc/emacs/trouble.texi (Sending Patches): Use "commit log" + instead of "change log", to avoid the interpretation that we + are talking about literal ChangeLog files. (Bug#32359) + +2018-08-21 Eli Zaretskii + + Recognize codepage 65001 as a valid encoding + + * lisp/international/mule-conf.el (cp65001): Define it as an + alias for UTF-8. + +2018-08-18 Eli Zaretskii + + Avoid compilation warning in nt/addpm.c + + * nt/addpm.c [!MINGW_W64]: Undefine _WIN32_IE before + redefining it, to avoid compilation warnings. + +2018-08-17 Basil L. Contovounesios + + Fix duplicate custom group names in bibtex.el + + * lisp/textmodes/bibtex.el (bibtex-BibTeX-entry-alist): + Change :group from BibTeX to bibtex. (bug#32436) + +2018-08-17 Eli Zaretskii + + Fix outdated text in the Calc manual + + * doc/misc/calc.texi (Internals): Don't advertise + 'calc-extensions' which no longer exists. Reported by Francis + Wright . + +2018-08-13 Paul Eggert + + Port better to x86 -fexcess-precision=fast + + Problem reported by Eli Zaretskii in: + https://lists.gnu.org/r/emacs-devel/2018-08/msg00380.html + * src/data.c (arithcompare): Work around incompatibility + between gcc -fexcess-precision=fast and the C standard on x86, + by capturing the results of floating-point comparisons before + the excess precision spontaneously decays. Although this fix + might not work in general, it does work here and is probably + good enough for the platforms we care about. + + (cherry picked from commit a84cef90957f2379cc0df6bd908317fc441971ce) + +2018-08-13 Paul Eggert + + Add comment about floating point test + + * test/src/data-tests.el (data-tests--float-greater-than-fixnums): + New constant. + (data-tests-=, data-tests-<, data-tests->, data-tests-<=) + (data-tests->=, data-tests-min): Use it. + +2018-08-13 Tino Calancha + + Ibuffer: Add toggle ibuffer-do-toggle-lock + + Toggle the locked status in marked buffers or the buffer + at point (Bug#32421). + * lisp/ibuffer.el (ibuffer-do-toggle-lock): New command. + (ibuffer-mode-map): Bind it to 'L'. + (ibuffer-mode-operate-map): Add entries for + `ibuffer-do-toggle-read-only' and `ibuffer-do-toggle-lock'. + * etc/NEWS (Changes in Specialized Modes and Packages in Emacs 26.2): + Announce the change. + +2018-08-13 Tino Calancha + + Ibuffer: Detect correctly the buffers running a process + + * lisp/ibuffer.el (filename-and-process): Store the process buffer + as a text property; check for such property to detect a buffer + with a process (Bug#32420). + +2018-08-12 Michael Albinus + + Backport fix for Bug#32226 + + * test/lisp/shadowfile-tests.el: Set Tramp variables for hydra. + (shadow-test06-literal-groups, shadow-test07-regexp-groups) + (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): + Use `set-visited-file-name' instead of setting the value in + `buffer-file-name' directly. + (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): + Test for writable temporary directory. Suppress errors in + cleanup. (Bug#32226) + +2018-08-12 Yuri D'Elia + + Do not consider external packages to be removable (Bug#27822) + + Packages which are not directly user-installed shouldn't be autoremoved, + since they can be setup through a different path (via + `package-directory-list') where we have no authority over. + * lisp/emacs-lisp/package.el (package--user-installed-p): New + function. + (package--removable-packages): Use it. + +2018-08-11 Paul Eggert + + * src/alloc.c: Remove obsolete comments. + +2018-08-11 Eli Zaretskii + + Better support utf-8-with-signature and utf-8-hfs in HTML + + * lisp/international/mule.el (sgml-html-meta-auto-coding-function): + Support UTF-8 with BOM and utf-8-hfs as variants of UTF-8, and + obey the buffer's encoding if it is one of these variants, instead + of re-encoding in UTF-8 proper. (Bug#20623) + +2018-08-11 Eli Zaretskii + + Don't use -Wabi compiler option + + * configure.ac: Add -Wabi to the list of disabled warning + options. For the details, see + http://lists.gnu.org/archive/html/emacs-devel/2018-08/msg00123.html. + +2018-08-10 Filipp Gunbin + + Fix bugs in `auth-source-netrc-parse-one'. + + * lisp/auth-source.el (auth-source-netrc-parse-one): Ensure that match + data is not overwritten in `auth-source-netrc-parse-next-interesting'. + Ensure that blanks are skipped before and after going over comments + and eols. + * test/lisp/auth-source-tests.el (auth-source-test-netrc-parse-one): New test. + + (cherry picked from commit 60ff8101449eea3a5ca4961299501efd83d011bd) + +2018-08-09 Eli Zaretskii + + Fix copying text properties by 'format' + + * src/editfns.c (styled_format): Add the spec beginning index + to the info recorded for each format spec, and use it to + detect the case that a format spec and its text property end + where the next spec with another property begins. (Bug#32404) + + * test/src/editfns-tests.el (format-properties): Add tests for + bug#32404. + +2018-08-09 Alexander Gramiak + + Improve error messages regarding initial-buffer-choice (Bug#29098) + + * lisp/startup.el (command-line-1) : Make the + messages conform to Emacs conventions, and show the invalid return + value in the message. + +2018-08-09 Glenn Morris + + * test/lisp/wdired-tests.el (wdired-test-unfinished-edit-01): Fix typo. + +2018-08-09 Lars Ingebrigtsen + + Make async :family 'local failures fail correctly again + + * src/fileio.c (get_file_errno_data): Refactor out into its own + function so that we can reuse the error handling from an async + context (bug#31901). + + * src/process.c (connect_network_socket): When an async :family + 'local client fails (with a file error, for instance), mark the + process as failed. + + (cherry picked from commit 92ba34d89ac4f5b5bbb818e1c39a3cc12a405790) + +2018-08-09 Noam Postavsky + + Fix emacsclient check for term.el buffer (Bug#21041) + + * lib-src/emacsclient.c (find_tty): Check for any TERM value with + prefix of "eterm", not just "eterm" itself. Also check for ",term:" + in INSIDE_EMACS value. + +2018-08-08 Eli Zaretskii + + Improve documentation of 'set-fontset-font' + + * doc/lispref/display.texi (Fontsets): Fix description of + 'set-fontset-font'. + * src/fontset.c (Fset_fontset_font): Doc fix. (Bug#32401) + +2018-08-07 Eli Zaretskii + + Improve documentation of M-? + + * doc/emacs/maintaining.texi (Identifier Search): + * lisp/progmodes/xref.el (xref-find-references): Improve + documentation of xref-find-references and + xref-prompt-for-identifier. (Bug#32389) + +2018-08-07 Ivan Shmakov + + Reinterpret Esperanto characters in iso-transl as iso-8859-3. + + * lisp/international/iso-transl.el (iso-transl-language-alist): + Reinterpret Esperanto characters as iso-8859-3 (were: iso-8859-1). + (Bug#32371) + +2018-08-07 Eli Zaretskii + + Fix Flyspell mode when several languages are mixed in a buffer + + * lisp/textmodes/flyspell.el (flyspell-external-point-words): + Handle "misspelled" words that actually belong to a language + unsupported by the current dictionary. (Bug#32280) Fix the test + for Ispell the program. + +2018-08-04 Juri Linkov + + New function read-answer (Bug#31782) + + * lisp/emacs-lisp/map-ynp.el (read-answer-short): New defcustom. + (read-answer): New function. + * lisp/subr.el (assoc-delete-all): New function. + * etc/NEWS: Announce them. + + * lisp/dired.el (dired-delete-file): Use read-answer. + (dired--yes-no-all-quit-help): Remove function. + (dired-delete-help): Remove defconst. + + (backported from master, "New function read-answer (bug#30073)" and + "Respect non-saved value of `read-short-answer' (Bug#31782)") + +2018-08-02 Eli Zaretskii + + Avoid assertion violations in maybe_produce_line_number + + * src/xdisp.c (redisplay_window): Make sure desired_matrix is + cleared before calling try_window. This is important when + display-line-numbers is non-nil, because line-number display code + assumes each glyph row is completely cleared when it is called to + produce a line number. (Bug#32358) + +2018-08-02 Eli Zaretskii + + Avoid assertion violations in set_text_properties_1 + + * src/textprop.c (set_text_properties): If the call to + modify_text_properties modifies the interval tree as side effect, + recalculate the correct interval for START and END. (Bug#32265) + +2018-07-31 Stephen Berman + + Fix wdired test failure when byte compiled (bug#32318) + + * test/lisp/wdired-tests.el: Require wdired. Defvar dired-query + to silence byte-compiler. + +2018-07-30 Stephen Berman + + * test/lisp/wdired-tests.el (wdired-test-symlink-name): New test. + +2018-07-29 Raimon Grau + + Fix url's thing-at-point beginning-op (Bug#32028) + + * lisp/thingatpt.el (url): Fix beginning-op making. + +2018-07-29 Eli Zaretskii + + Fix last change in 'char_width' + + * src/character.c (char_width): Make sure variable C is always + initialized. (Bug#32276) + +2018-07-29 Stephen Berman + + Add initial tests for wdired.el + + * test/lisp/wdired-tests.el: New file. + +2018-07-28 Stephen Berman + + Fix use of non-nil wdired-use-interactive-rename + + This is a fairly minimal fix for the release branch; a more + comprehensive fix is on master, so do not merge this to master. + + * lisp/wdired.el (wdired-search-and-rename): Remove dired-filename + text property in order to find new filename when it only partially + replaces old filename (bug#32173). If user quits before renaming + succeeds, restore the dired-filename text property. + +2018-07-28 Eli Zaretskii + + Fix compilation with mingw.org's MinGW 5.x headers + +2018-07-28 Eli Zaretskii + + Update the list of special forms in the ELisp manual + + * doc/lispref/eval.texi (Special Forms): + * doc/lispref/frames.texi (Mouse Tracking): 'track-mouse' is + nowadays a macro. (Bug#32284) + +2018-07-28 Noam Postavsky + + Don't fail to indent-sexp before a full sexp (Bug#31984) + + * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Only signal error if the + initial forward-sexp fails. Suppress scan-error forn any of the + forward-sexp calls after that. + * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-cant-go): New + test. + +2018-07-27 Eli Zaretskii + + Fix calls to modifications hooks in replace-buffer-contents + + * src/editfns.c (Freplace_buffer_contents): Call the modification + hooks on the entire region where replacements could have taken + place. The previous attempts of being more accurate just + introduced bugs. (Bug#32278) + +2018-07-27 Eli Zaretskii + + * src/character.c (char_width): Support glyphs with faces. (Bug#32276) + +2018-07-27 Eli Zaretskii + + Display raw bytes as belonging to 'eight-bit' charset + + * lisp/descr-text.el (describe-char): + * lisp/simple.el (what-cursor-position): Display characters in the + range #x3FFF80..#x3FFF9F as belonging to charset 'eight-bit', not + 'tis620-2533'. + * lisp/international/mule-diag.el (describe-character-set): + Improve description of :supplementary-p. + +2018-07-26 Eli Zaretskii + + Fix inaccurate text in the user manual + + * doc/emacs/mule.texi (International Chars): Correct inaccurate + description of raw bytes display by "C-x =". + +2018-07-26 Michael Albinus + + Copyedits in tramp.texi, improved example with bash's readline + + * doc/misc/tramp.texi (all): Unify some wordings. + (Frequently Asked Questions): Update example with bash's readline. + +2018-07-25 Michael Albinus + + Minor Tramp doc update + + * doc/misc/tramp.texi (Frequently Asked Questions): Disable bash's + INPUTRC. + +2018-07-25 Michael Albinus + + File Shadowing is not available on MS Windows + + * doc/emacs/files.texi (File Shadowing): File Shadowing is not + available on MS Windows. + + * test/lisp/shadowfile-tests.el (shadow-test00-clusters) + (shadow-test01-sites, shadow-test02-files) + (shadow-test03-expand-cluster-in-file-name) + (shadow-test04-contract-file-name, shadow-test05-file-match) + (shadow-test06-literal-groups, shadow-test07-regexp-groups) + (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): + Skip under MS Windows. + +2018-07-24 Noam Postavsky + + Let bookmark-jump override window-point (Bug#31751) + + * lisp/bookmark.el (bookmark-jump): Use pop-to-buffer-same-window + instead of switch-to-buffer, the latter obeys + switch-to-buffer-preserve-window-point and so loses the bookmark's + point. + +2018-07-23 Noam Postavsky + + Omit keymap from subword-mode docstring (Bug#32212) + + * lisp/progmodes/subword.el (subword-mode): Remove listing of + subword-mode-map bindings, since it is empty as of 2014-03-23 "Merge + capitalized-words-mode and subword-mode". + +2018-07-23 Tino Calancha + Noam Postavsky + + Prevent line-mode term from showing user passwords + + For buffers whose mode derive from comint-mode, the user password is + read from the minibuffer and it's hidden. A buffer in term-mode and + line submode, instead shows the passwords. Make buffers in line + term-mode to hide passwords too (Bug#30190). + + * lisp/term.el (term-send-invisible): Prefer the more robust + `read-passwd' instead of `term-read-noecho'. + (term-watch-for-password-prompt): New function. + (term-emulate-terminal): Call it each time we receive non-escape + sequence output. + +2018-07-22 Jonathan Kyle Mitchell + + Check for special filenames in eshell (Bug#30724) + + * lisp/eshell/esh-cmd.el (eshell-lisp-command): Check for "~" + in lisp commands with the eshell-filename-arguments property + (Bug#30724). + + * lisp/eshell/em-dirs.el (eshell/cd, eshell/pushd, eshell/popd): + * lisp/eshell/em-ls.el (eshell/ls): + * lisp/eshell/em-unix.el (eshell/rm, eshell/mkdir, eshell/rmdir) + (eshell/mv, eshell/cp, eshell/ln, eshell/cat, eshell/du, eshell/diff): + * lisp/eshell/esh-ext.el (eshell/addpath): Add + eshell-filename-arguments to symbol plist. + +2018-07-22 Noam Postavsky + + Fix indent-sexp of #s(...) (Bug#31984) + + * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Look for a sexp that + ends after the current line. + * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-go): New test. + +2018-07-22 Noam Postavsky + + Add save-match-data to abbreviate-file-name (Bug#32201) + + * lisp/files.el (abbreviate-file-name): Save match-data around + expand-file-name; it is not guaranteed to preserve match-data, and may + well do so depending on what file handlers and hooks are in effect. + +2018-07-21 Eli Zaretskii + + Fix last change in editfns.c + + * src/editfns.c (Freplace_buffer_contents): Fix last change: always + call buffer modification hooks, even if nothing was deleted/inserted. + (bug#32237) + +2018-07-21 Eli Zaretskii + + Fix calls to buffer modification hooks from replace-buffer-contents + + * src/editfns.c (Freplace_buffer_contents): Don't call buffer + modification hooks if nothing was deleted/inserted. (Bug#32237) + +2018-07-21 Michael Albinus + + Fix Bug#32226 + + * lisp/shadowfile.el (shadow-site-name, shadow-name-site): + Use "[-.[:word:]]+" as hostname regexp. (Bug#32226) + + * test/lisp/shadowfile-tests.el (shadow-test06-literal-groups) + (shadow-test07-regexp-groups, shadow-test08-shadow-todo) + (shadow-test09-shadow-copy-files): Skip if needed. + +2018-07-21 Eli Zaretskii + + Improve doc strings of several variables in keyboard.c + + * src/keyboard.c (syms_of_keyboard) + + : Make sure the first + sentence of the doc string fits on a single line. + +2018-07-20 Michael Albinus + + Fix (Bug#32218). Do not merge with master + + * doc/misc/trampver.texi: + * lisp/net/trampver.el: Change version to "2.3.4.26.2". + (customize-package-emacs-version-alist): Add Tramp version + integrated in Emacs 26.2. + + * lisp/net/tramp.el (tramp-handle-file-truename): + * lisp/net/tramp-adb.el (tramp-adb-handle-file-truename): + * lisp/net/tramp-sh.el (tramp-sh-handle-file-truename): Fix problem + with trailing slash. (Bug#32218) + + * test/lisp/net/tramp-tests.el (tramp-test21-file-links): + Remove `tramp--test-emacs27-p' check. + +2018-07-20 Eli Zaretskii + + Improve documentation of 'pcase-defmacro rx' + + * lisp/emacs-lisp/rx.el (rx): Clarify and improve the doc string. + For the details, see the discussion starting at + http://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00399.html. + +2018-07-19 Eli Zaretskii + + Fix TTY colors breakage by 'clear-face-cache' + + Without examining the right frame, 'tty-color-24bit' was erroneously + treating a GUI frame as a 24-bit TTY frame. + * lisp/term/tty-colors.el (tty-color-24bit): Accept optional + argument DISPLAY and pass it to display-color-cells. Doc fix. + (tty-color-define, tty-color-desc): Pass the FRAME argument to + tty-color-24bit. (Bug#32072) + +2018-07-18 Michael Albinus + + * admin/MAINTAINERS: Add files maintained by me (Michael Albinus). + +2018-07-18 Michael Albinus + + Adapt shadowfile.el for Tramp (Bug#4526, Bug#4846) + + * etc/NEWS: Mention changes in shadowfile.el. + + * lisp/shadowfile.el (top): Require 'tramp instead of 'ange-ftp. + (shadow-cluster): New defstruct. + (shadow-make-cluster, shadow-cluster-name, shadow-cluster-primary) + (shadow-cluster-regexp, shadow-get-user) + (shadow-parse-fullname): Remove. + (shadow-info-file, shadow-todo-file, shadow-system-name) + (shadow-homedir, shadow-regexp-superquote, shadow-suffix) + (shadow-set-cluster, shadow-get-cluster, shadow-site-name) + (shadow-name-site, shadow-site-primary, shadow-site-cluster) + (shadow-read-site, shadow-parse-name, shadow-make-fullname) + (shadow-replace-name-component, shadow-local-file) + (shadow-expand-cluster-in-file-name, shadow-contract-file-name) + (shadow-same-site, shadow-file-match, shadow-define-cluster) + (shadow-define-literal-group, shadow-define-regexp-group) + (shadow-make-group, shadow-shadows-of-1, shadow-read-files) + (shadow-write-info-file, shadow-write-todo-file) + (shadow-initialize): Adapt variables and functions. + + * test/lisp/shadowfile-tests.el: New file. + +2018-07-18 Noam Postavsky + + Fix auth-source-delete (Bug#26184) + + * lisp/auth-source.el (auth-source-delete): Fix `auth-source-search' + call. + * test/lisp/auth-source-tests.el (auth-source-delete): New test. + +2018-07-17 Eli Zaretskii + + Avoid assertion violations in gnutls.c + + * src/gnutls.c (Fgnutls_hash_digest, gnutls_symmetric) + (Fgnutls_hash_mac): Check CONSP before invoking XCDR. (Bug#32187) + Report values of invalid arguments when signaling an error. + +2018-07-14 Eli Zaretskii + + Don't use a literal "C-u" in ispell.el help message text + + * lisp/textmodes/ispell.el (ispell-command-loop): Use + "\\[universal-argument]" instead of a literal "C-u". (Bug#32142) + +2018-07-14 Eli Zaretskii + + Improve documentation of 'seqp' + + * doc/lispref/sequences.texi (Sequence Functions): Add text to + explain the relation between 'seqp' and 'sequencep'. (Bug#32125) + +2018-07-14 Eli Zaretskii + + Clarify usage and dependencies between several Flyspell features + + * lisp/textmodes/flyspell.el (flyspell-region) + (flyspell-small-region, flyspell-persistent-highlight): + Documentation improvements. (Bug#32142) + +2018-07-13 Michael Albinus + + Use consistent function names in thread-tests.el + + * test/src/thread-tests.el (threads-call-error, threads-custom) + (threads-errors, threads-sticky-point, threads-signal-early): + Rename, using naming convention to prefix with "threads-". + +2018-07-13 Michael Albinus + + Fix format error in Faccept_process_output + + * src/process.c (Faccept_process_output): Do not use format spec + "%p", it isn't valid for error(). + +2018-07-13 Paul Eggert + + Lessen stack consumption in recursive read1 + + * src/lread.c (read1): Shrink local buffer size from + MAX_ALLOCA to 128 (Bug#31995). + +2018-07-13 Noam Postavsky + + Match w32 paths in grep sans --null hits (Bug#32051) + + * lisp/progmodes/grep.el (grep-regexp-alist): Add an optional part to + match paths starting with C: (other drive letters). + * test/lisp/progmodes/compile-tests.el + (compile-tests--grep-regexp-testcases) + (compile-tests--grep-regexp-tricky-testcases) + (compile-test-grep-regexps): New tests. + (compile--test-error-line): Return `compilation-message'. + +2018-07-13 Noam Postavsky + + Fix previous make-network-process change + + * src/process.c (Fmake_network_process): On 2018-07-09 "Explicitly + reject :server and :nowait (Bug#31903)", the sense of the SERVER check + was accidentally reversed so that we ended up looking for the wrong + ADDRESS. Reported by T.V Raman in + . + +2018-07-12 Eli Zaretskii + + Another documentation improvement in flyspell.el + + * lisp/textmodes/flyspell.el (flyspell-persistent-highlight): Doc + fix. + +2018-07-12 Eli Zaretskii + + Improve documentation of Flyspell + + For the background, see + http://lists.gnu.org/archive/html/help-gnu-emacs/2018-07/msg00099.html. + + * doc/emacs/fixit.texi (Spelling): Add a couple of caveats. + * lisp/textmodes/flyspell.el: Update commentary. + +2018-07-12 Michael Albinus + + Provide feature 'threads + + * src/thread.c (syms_of_threads): Provide feature "threads". + + * test/src/thread-tests.el (top): Declare the functions. + (all): Use (featurep 'threads) check. + +2018-07-11 Miciah Masters (tiny change) + + Save the server alias on reconnect (Bug#29657) + + rcirc does not retain the server alias on reconnect. As a result, rcirc + fails to re-use server and channel buffers when an alias is used. Further + problems may ensue when aliases are used to differentiate multiple + connections to the same host, for example when using a single IRC bouncer + or proxy to connect to multiple IRC networks. + + Save the server alias when connecting to a server so that reconnect will + retain the alias. + * lisp/net/rcirc.el (rcirc-connect): Include server-alias when setting + rcirc-connection-info. + +2018-07-11 Basil L. Contovounesios + + Refer to "proper lists" instead of "true lists" + + * doc/lispref/lists.texi (Cons Cells, Building Lists): + * doc/lispref/sequences.texi (Vector Functions): Use the more + popular term "proper", rather than "true", to qualify nil-terminated + lists. + + For discussion, see the following emacs-devel subthreads: + https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00112.html + https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00138.html + +2018-07-10 John Shahid + + Avoid turning on the global-minor-mode recursively + + * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Clear + the buffer-list inside MODE-enable-in-buffers to avoid enabling the + mode recursively. (Bug#31793) + +2018-07-10 Michael Albinus + + Fix Bug#32085 + + * doc/misc/tramp.texi (GVFS based methods): `dav' and `davs' do + not support paths in the volume name. (Bug#32085) + +2018-07-10 Noam Postavsky + + Stop using indent-line-to in lisp-indent-line (Bug#32014) + + This is partial revert of "Remove ignored argument from + lisp-indent-line", because `indent-line-to' doesn't respect field + boundaries. + * lisp/emacs-lisp/lisp-mode.el (lisp-indent-line): Use delete-region + and indent-to instead of `indent-line-to'. + * test/lisp/emacs-lisp/lisp-mode-tests.el + (lisp-indent-with-read-only-field): Expect to pass. + + Don't merge to master, we will fix indent-line-to there instead. + +2018-07-10 Noam Postavsky + + Explicitly reject :server and :nowait (Bug#31903) + + * src/process.c (Fmake_network_process): Explicitly check for and + signal an error when passed both :server and :nowait non-nil. In + Emacs 25, :nowait would be ignored in this case, but as of Emacs 26.1 + this gives an error, albeit an unclear one. Also remove obsolete + comment regarding configurations lacking non-blocking mode, the + corresponding code was removed in 2012-11-17 "Assume POSIX 1003.1-1988 + or later for fcntl.h." + +2018-07-09 Michael Albinus + + Fix Bug#32090 + + * lisp/files-x.el (connection-local-normalize-criteria): Do not + use PROPERTIES anymore. + (connection-local-get-profiles): Rewrite, in order to accept any + property as optional. (Bug#32090) + (connection-local-set-profiles): + Adapt ´connection-local-normalize-criteria' call. + + * test/lisp/files-x-tests.el + (files-x-test-connection-local-set-profiles) + (files-x-test-hack-connection-local-variables-apply): Extend tests. + +2018-07-08 Paul Eggert + + Fix floating point exceptions on Alpha (Bug#32086) + + Backport from master. + * admin/merge-gnulib (GNULIB_MODULES): Add fpieee. + * m4/fpieee.m4: New file, copied from Gnulib. + * m4/gnulib-comp.m4: Regenerate. + +2018-07-08 Paul Eggert + + Fix bootstrap infloop in GNU/Linux alpha + + * src/emacs.c (main): Do not re-exec if EMACS_HEAP_EXEC + is already set (Bug#32083). + +2018-07-08 Eli Zaretskii + + Minor fix of a recent documentation change + + * lisp/net/gnutls.el (gnutls-algorithm-priority): Clarify the doc + string. + +2018-07-08 Lars Ingebrigtsen + + Mention the NSM in the gnutls variable doc strings + + * lisp/net/gnutls.el (gnutls-algorithm-priority): Mention the Network + Security Manager here since this variable is an obvious place + for people concerned about network security to look. + (gnutls-verify-error): Ditto. + (gnutls-min-prime-bits): Ditto. + +2018-07-08 Michael Albinus + + Remove test code from last commit + +2018-07-08 Michael Albinus + + Fix Bug#32084 + + * test/lisp/net/dbus-tests.el (dbus-test02-register-service-own-bus): + Unset $DISPLAY when calling dbus-launch, in order to avoid + possible X11 authentication errors. (Bug#32084) + +2018-07-07 Basil L. Contovounesios + + Fix (length NON-SEQUENCE) documentation + + Suggested by Eli Zaretskii in the following threads: + https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00171.html + https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00206.html + + * doc/lispref/sequences.texi (Sequence Functions): Mention that + 'length' signals a 'wrong-type-argument' also when given a + non-sequencep argument. + +2018-07-07 Eli Zaretskii + + Fix bug #11732 + + * src/w32fns.c (w32_wnd_proc): Fix handling of Windows input + methods. (Bug#11732) + +2018-07-07 Eli Zaretskii + + Improve documentation of 'emacs-lock-mode' + + * lisp/emacs-lock.el (emacs-lock-mode): Mention in the doc string + the special handling of some major modes due to + 'emacs-lock-unlockable-modes'. + +2018-07-07 Eli Zaretskii + + * lisp/imenu.el (imenu-generic-expression): Doc fix. (Bug#32016) + +2018-07-07 Eli Zaretskii + + Improve indexing of 'eval-defun' in ELisp manual + + * doc/lispref/display.texi (Defining Faces): + * doc/lispref/debugging.texi (Explicit Debug): + * doc/lispref/customize.texi (Variable Definitions): + * doc/lispref/variables.texi (Defining Variables): Add index + entries for 'eval-defun'. (Bug#32066) + +2018-07-06 Paul Eggert + + Fix (length CIRCULAR) documentation + + * doc/lispref/sequences.texi (Sequence Functions): + Correct documentation of what (length X) does when + X is a circular list. + +2018-07-06 Michael Albinus + + Tramp editorials + + * doc/misc/tramp.texi (Android shell setup): Mention Termux. + + * lisp/net/tramp-sh.el (tramp-remote-process-environment): + Use proper spelling "Tramp" in docstring. + +2018-07-06 Eli Zaretskii + + Clarify and improve doc strings of 'eval-last-sexp' and friends + + * lisp/simple.el (eval-expression, eval-expression-print-format): + * lisp/progmodes/elisp-mode.el (eval-last-sexp): Doc fixes. + (Bug#32064) + +2018-07-06 Glenn Morris + + Automate upload of Emacs manuals to gnu.org + + * admin/make-manuals, admin/upload-manuals: New scripts. + * admin/admin.el (make-manuals, make-manuals-dist): Handle batch mode. + * admin/make-tarball.txt: Update web-page details. + +2018-07-05 Mike Kupfer + + Fix MH-E mail composition with GNU Mailutils (SF#485) + + * lisp/mh-e/mh-comp.el (mh-bare-components): Recursively delete + the temporary folder. + +2018-07-03 Eli Zaretskii + + Speed up 'replace-buffer-contents' some more + + * src/editfns.c (EXTRA_CONTEXT_FIELDS): New members beg_a and beg_b. + (Freplace_buffer_contents): Set up ctx.beg_a and ctx.beg_b. + (buffer_chars_equal): Use ctx->beg_a and ctx->beg_b instead of + calling BUF_BEGV, which is expensive. This speeds up the recipe + in bug#31888 by 30%. + +2018-07-03 Glenn Morris + + * doc/emacs/docstyle.texi: Avoid messing up the html output. + + Previously the @hyphenation commands somehow caused the + section to go missing, with makeinfo 4.13 at least. + 2018-07-01 Paul Eggert * etc/HISTORY: Cite Brinkhoff on early history. @@ -61157,14 +66514,14 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit f205928d1f93f4373d755ca91805a88e022ac414 (inclusive). +commit a6d0172e8330a5683517eba78356d4c70ad979d7 (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: ;; coding: utf-8 ;; End: - Copyright (C) 2015-2018 Free Software Foundation, Inc. + Copyright (C) 2015-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/GNUmakefile b/GNUmakefile index 0c1a757e20c8..e878dbbb55a1 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,6 +1,6 @@ # Build Emacs from a fresh tarball or version-control checkout. -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2019 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/INSTALL b/INSTALL index 0c56fff6d4a6..72bba25df81a 100644 --- a/INSTALL +++ b/INSTALL @@ -1,5 +1,5 @@ GNU Emacs Installation Guide -Copyright (C) 1992, 1994, 1996-1997, 2000-2018 Free Software Foundation, +Copyright (C) 1992, 1994, 1996-1997, 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/INSTALL.REPO b/INSTALL.REPO index caa46b478f13..6dca9dd7147b 100644 --- a/INSTALL.REPO +++ b/INSTALL.REPO @@ -76,7 +76,7 @@ never platform-specific. -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/Makefile.in b/Makefile.in index 19bf7c423ffd..364deeae226a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1992-2018 Free Software Foundation, Inc. +# Copyright (C) 1992-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. @@ -151,6 +151,9 @@ libexecdir=@libexecdir@ # Currently only used for the systemd service file. libdir=@libdir@ +# Where to install emacs-module.h. +includedir=@includedir@ + # Where to install Emacs's man pages. # Note they contain cross-references that expect them to be in section 1. mandir=@mandir@ @@ -558,6 +561,8 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \ ## See also these comments from 2004 about cp -r working fine: ## https://lists.gnu.org/r/autoconf-patches/2004-11/msg00005.html install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} + umask 022 && $(MKDIR_P) "$(DESTDIR)$(includedir)" + $(INSTALL_DATA) src/emacs-module.h "$(DESTDIR)$(includedir)/emacs-module.h" -set ${COPYDESTS} ; \ unset CDPATH; \ $(set_installuser); \ @@ -741,6 +746,7 @@ install-strip: ### ### Don't delete the lisp and etc directories if they're in the source tree. uninstall: uninstall-$(NTDIR) uninstall-doc + rm -f "$(DESTDIR)$(includedir)/emacs-module.h" $(MAKE) -C lib-src uninstall -unset CDPATH; \ for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" ; do \ diff --git a/README b/README index 8fcbb2f43d63..5462db0400bc 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 26.1.50 of GNU Emacs, the extensible, +This directory tree holds version 26.3.50 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/admin/ChangeLog.1 b/admin/ChangeLog.1 index c31875094db0..6889407074c5 100644 --- a/admin/ChangeLog.1 +++ b/admin/ChangeLog.1 @@ -2577,7 +2577,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index 1a4157ac53e7..cbf84d55df50 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS @@ -210,8 +210,8 @@ Paul Eggert Michael Albinus src/inotify.c lisp/autorevert.el - lisp/files.el (file-name-non-special) lisp/eshell/em-tramp.el + lisp/files.el (file-name-non-special) lisp/net/ange-ftp.el lisp/notifications.el lisp/shadowfile.el diff --git a/admin/README b/admin/README index 58e3c5b423e6..54b79abc5b1c 100644 --- a/admin/README +++ b/admin/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/admin.el b/admin/admin.el index 1cad7ae27762..d7de42e07823 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -1,6 +1,6 @@ ;;; admin.el --- utilities for Emacs administration -;; Copyright (C) 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 2001-2019 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -138,7 +138,10 @@ Root must be the root of an Emacs source tree." (if (eq 2 (length newversion)) 0 1)))) (majorbump (and oldversion (not (equal oldmajor newmajor)))) (minorbump (and oldversion (not majorbump) - (not (equal (cadr oldversion) (cadr newversion))))) + (or (not (equal (cadr oldversion) (cadr newversion))) + ;; Eg 26.2 -> 26.2.50. + (and (> (length newversion) + (length oldversion)))))) (newsfile (expand-file-name "etc/NEWS" root)) (oldnewsfile (expand-file-name (format "etc/NEWS.%s" oldmajor) root))) (unless (> (length newversion) 2) ; pretest or release candidate? @@ -696,6 +699,7 @@ style=\"text-align:left\">") (if (file-directory-p stem) (delete-directory stem t)) (make-directory stem) + (setq stem (file-name-as-directory stem)) (copy-file "../doc/misc/texinfo.tex" stem) (unless (equal type "emacs") (copy-file "../doc/emacs/emacsver.texi" stem) @@ -718,7 +722,7 @@ style=\"text-align:left\">") (setq ats t) (message "Unexpanded: %s" (match-string 0))) (if ats (error "Unexpanded configure variables in Makefile?"))) - (write-region nil nil (expand-file-name (format "%s/Makefile" stem)) + (write-region nil nil (expand-file-name (format "%sMakefile" stem)) nil 'silent)) (call-process "tar" nil nil nil "-cf" tarfile stem) (delete-directory stem t) diff --git a/admin/alloc-colors.c b/admin/alloc-colors.c index e1a344bee89b..5f47accf6825 100644 --- a/admin/alloc-colors.c +++ b/admin/alloc-colors.c @@ -1,6 +1,6 @@ /* Allocate X colors. Used for testing with dense colormaps. -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/admin/authors.el b/admin/authors.el index 1ff98fa588ae..a3f8bdde8412 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -1,7 +1,7 @@ ;;; authors.el --- utility for maintaining Emacs's AUTHORS file -;; Copyright (C) 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 2000-2019 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/build-configs b/admin/build-configs index 3739d4b953fe..09800fc17206 100755 --- a/admin/build-configs +++ b/admin/build-configs @@ -1,7 +1,7 @@ #! /usr/bin/perl # Build Emacs in several different configurations. -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el index cedb625fb0dc..8c4a444bdcd7 100644 --- a/admin/bzrmerge.el +++ b/admin/bzrmerge.el @@ -1,6 +1,6 @@ ;;; bzrmerge.el --- help merge one Emacs bzr branch to another -;; Copyright (C) 2010-2018 Free Software Foundation, Inc. +;; Copyright (C) 2010-2019 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: maint diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in index 8755c181f03e..0327a5df7eb0 100644 --- a/admin/charsets/Makefile.in +++ b/admin/charsets/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2015-2018 Free Software Foundation, Inc. +# Copyright (C) 2015-2019 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index c7e7aa7d2cfd..8e19972f3dfb 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2015-2018 Free Software Foundation, Inc. +# Copyright (C) 2015-2019 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/charsets/mapfiles/README b/admin/charsets/mapfiles/README index 825ec6242686..7e4493bdc656 100644 --- a/admin/charsets/mapfiles/README +++ b/admin/charsets/mapfiles/README @@ -1,4 +1,4 @@ -Copyright (C) 2009-2018 Free Software Foundation, Inc. +Copyright (C) 2009-2019 Free Software Foundation, Inc. Copyright (C) 2009, 2010, 2011 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H13PRO009 diff --git a/admin/cus-test.el b/admin/cus-test.el index 13d777dfcea4..f9fd53d98e85 100644 --- a/admin/cus-test.el +++ b/admin/cus-test.el @@ -1,6 +1,6 @@ ;;; cus-test.el --- tests for custom types and load problems -;; Copyright (C) 1998, 2000, 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000, 2002-2019 Free Software Foundation, Inc. ;; Author: Markus Rost ;; Maintainer: Markus Rost diff --git a/admin/diff-tar-files b/admin/diff-tar-files index 87446fb00e45..79a035baeea0 100755 --- a/admin/diff-tar-files +++ b/admin/diff-tar-files @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/find-gc.el b/admin/find-gc.el index fb564039c7b4..c985b1f7b216 100644 --- a/admin/find-gc.el +++ b/admin/find-gc.el @@ -1,6 +1,6 @@ ;;; find-gc.el --- detect functions that call the garbage collector -;; Copyright (C) 1992, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 1058088cce94..bcf32f12e7f7 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -1,6 +1,6 @@ ;;; gitmerge.el --- help merge one Emacs branch into another -;; Copyright (C) 2010-2018 Free Software Foundation, Inc. +;; Copyright (C) 2010-2019 Free Software Foundation, Inc. ;; Authors: David Engster ;; Stefan Monnier diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in index 1f6a8639b336..2d9d0e8a47f3 100644 --- a/admin/grammars/Makefile.in +++ b/admin/grammars/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -## Copyright (C) 2013-2018 Free Software Foundation, Inc. +## Copyright (C) 2013-2019 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/grammars/c.by b/admin/grammars/c.by index 3755c3232201..bd1b6a528eef 100644 --- a/admin/grammars/c.by +++ b/admin/grammars/c.by @@ -1,5 +1,5 @@ ;;; c.by -- LL grammar for C/C++ language specification -;; Copyright (C) 1999-2018 Free Software Foundation, Inc. +;; Copyright (C) 1999-2019 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam ;; David Ponce diff --git a/admin/grammars/grammar.wy b/admin/grammars/grammar.wy index d8647f935516..f7664de655a6 100644 --- a/admin/grammars/grammar.wy +++ b/admin/grammars/grammar.wy @@ -1,6 +1,6 @@ ;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars ;; -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; ;; Author: David Ponce ;; Maintainer: David Ponce diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy index b3c23d5ce1e4..88beafeddb42 100644 --- a/admin/grammars/java-tags.wy +++ b/admin/grammars/java-tags.wy @@ -1,6 +1,6 @@ ;;; java-tags.wy -- Semantic LALR grammar for Java -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; ;; Author: David Ponce ;; Maintainer: David Ponce diff --git a/admin/grammars/js.wy b/admin/grammars/js.wy index 653d2b0fd13a..441fd416c128 100644 --- a/admin/grammars/js.wy +++ b/admin/grammars/js.wy @@ -1,6 +1,6 @@ ;;; javascript-jv.wy -- LALR grammar for Javascript -;; Copyright (C) 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 2005-2019 Free Software Foundation, Inc. ;; Copyright (C) 1998-2011 Ecma International. ;; Author: Joakim Verona diff --git a/admin/grammars/make.by b/admin/grammars/make.by index 3f550dfb2015..905166d221de 100644 --- a/admin/grammars/make.by +++ b/admin/grammars/make.by @@ -1,6 +1,6 @@ ;;; make.by -- BY notation for Makefiles. -;; Copyright (C) 1999-2018 Free Software Foundation, Inc. +;; Copyright (C) 1999-2019 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam ;; David Ponce diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy index 1f02d439d533..5e5bdc194cc8 100644 --- a/admin/grammars/python.wy +++ b/admin/grammars/python.wy @@ -1,6 +1,6 @@ ;;; python.wy -- LALR grammar for Python -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, ;; 2009, 2010 Python Software Foundation; All Rights Reserved diff --git a/admin/grammars/scheme.by b/admin/grammars/scheme.by index ce9fff0286a5..91c7808e84cc 100644 --- a/admin/grammars/scheme.by +++ b/admin/grammars/scheme.by @@ -1,6 +1,6 @@ ;;; scheme.by -- Scheme BNF language specification -;; Copyright (C) 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 2001-2019 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/admin/grammars/srecode-template.wy b/admin/grammars/srecode-template.wy index de52ede8e75c..fb56d23af50a 100644 --- a/admin/grammars/srecode-template.wy +++ b/admin/grammars/srecode-template.wy @@ -1,6 +1,6 @@ ;;; srecode-template.wy --- Semantic Recoder Template parser -;; Copyright (C) 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 2005-2019 Free Software Foundation, Inc. ;; Author: Eric Ludlam ;; Keywords: syntax diff --git a/admin/last-chance.el b/admin/last-chance.el index c536ca8b716d..5f993be18e27 100644 --- a/admin/last-chance.el +++ b/admin/last-chance.el @@ -1,6 +1,6 @@ ;;; last-chance.el --- dangling deterrence -*- lexical-binding: t; -*- -;; Copyright (C) 2016-2018 Free Software Foundation, Inc. +;; Copyright (C) 2016-2019 Free Software Foundation, Inc. ;; Author: Thien-Thi Nguyen ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/make-emacs b/admin/make-emacs index 5ff2f5a1eef4..b7cca06e1c67 100755 --- a/admin/make-emacs +++ b/admin/make-emacs @@ -2,7 +2,7 @@ # Build Emacs with various options for profiling, debugging, # with and without warnings enabled etc. -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/make-manuals b/admin/make-manuals index 7b9f6a287180..4e65d3d87532 100755 --- a/admin/make-manuals +++ b/admin/make-manuals @@ -1,7 +1,7 @@ #!/bin/bash ### make-manuals - create the Emacs manuals to upload to the gnu.org website -## Copyright 2018 Free Software Foundation, Inc. +## Copyright 2018-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/admin/merge-gnulib b/admin/merge-gnulib index b23adc26fb27..8e768a423197 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -4,7 +4,7 @@ # # admin/merge-gnulib -# Copyright 2012-2018 Free Software Foundation, Inc. +# Copyright 2012-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/merge-pkg-config b/admin/merge-pkg-config index a7d71227d8d3..61f96e53f941 100755 --- a/admin/merge-pkg-config +++ b/admin/merge-pkg-config @@ -4,7 +4,7 @@ # # admin/merge-pkg-config -# Copyright 2014-2018 Free Software Foundation, Inc. +# Copyright 2014-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index c39458184f62..cda258339eac 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker @@ -241,21 +241,29 @@ report, and Bcc: the control server (note the commands have no effect if you just send them to the bug-report number). Bcc: is better than Cc: in case people use Reply-to-All in response. +For the full documentation of control commands, see +https://debbugs.gnu.org/server-control.html + Some useful control commands: +*** To close a bug and indicate in what Emacs version it was fixed +close 123 VERSION + +where VERSION is XX.YY numerical version number, like 42.1. + *** To reopen a closed bug: reopen 123 *** Bugs can be tagged in various ways (eg wontfix, patch, etc). The available tags are: -patch wontfix moreinfo unreproducible fixed notabug +patch wontfix moreinfo unreproducible fixed notabug security confirmed See https://debbugs.gnu.org/Developer#tags The list of tags can be prefixed with +, - or =, meaning to add (the default), remove, or reset the tags. E.g.: tags 123 + wontfix -** URL shortcuts +*** URL shortcuts https://debbugs.gnu.org/... @@ -266,7 +274,7 @@ from:submitter@email.address severity:severity # all bugs of given severity tag:tag # all bugs with given tag -** Usertags +*** Usertags See @@ -410,21 +418,21 @@ reassign 1234 emacs Note that reassigning clears the list of found versions, even if the new packages includes the original one. -** To remove spam from the tracker, move it to the 'spam' pseudo-package: +*** To remove spam from the tracker, move it to the 'spam' pseudo-package: reassign 123 spam (Should not be necessary any more, now that the input is moderated.) -** To change the title of a bug: +*** To change the title of a bug: retitle 123 Some New Title -** To change the submitter address: +*** To change the submitter address: submitter 123 none@example.com Note that it does not seem to work to specify "Submitter:" in the pseudo-header when first reporting a bug. -** How does archiving work? +*** How does archiving work? You can still send mail to a bug after it is closed. After 28 days with no activity, the bug is archived, at which point no more changes can be made. If you try to send mail to the bug after that (or merge with diff --git a/admin/notes/copyright b/admin/notes/copyright index 246950eca544..b2c74a835be9 100644 --- a/admin/notes/copyright +++ b/admin/notes/copyright @@ -1,4 +1,4 @@ -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/notes/emba b/admin/notes/emba new file mode 100644 index 000000000000..cb0dbc48095e --- /dev/null +++ b/admin/notes/emba @@ -0,0 +1,64 @@ +-*- mode: outline; coding: utf-8 -*- + +Copyright (C) 2019 Free Software Foundation, Inc. +See the end of the file for license conditions. + +NOTES FOR EMACS CONTINUOUS BUILD ON EMBA + +A continuous build for Emacs can be found at +, a Gitlab instance. It watches the +Emacs git repository and starts a pipeline (jobset) if there are new +changes. This happens for all Emacs branches. + +* Mail notifications + +In addition to the web interface, emba can send notifications by email +when a job fails. It sends notifications about test status to +. + +If you want to receive these notifications, please subscribe at +. + +Alternatively, these notifications can be read via gmane at +. + +The messages contain a URL to the log file of the failed job, like +. + +* Emacs jobset + +The Emacs jobset is defined in the Emacs source tree, file +'.gitlab-ci.yml'. It could be adapted for every Emacs branch, see +. + +Every job runs in a Debian docker container. It uses the local clone +of the Emacs git repository to perform a bootstrap and test of Emacs. +This could happen for several jobs with changed configuration, compile +and test parameters. + +* Emba configuration + +The emba configuration files are hosted on +. + +* Identifying emba + +Lisp packages, Makefiles, scripts, and other software could determine +whether they run on emba by checking for the environment variable +EMACS_EMBA_CI. + + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . diff --git a/admin/notes/font-backend b/admin/notes/font-backend index fcb9c3717805..eef7439bcc11 100644 --- a/admin/notes/font-backend +++ b/admin/notes/font-backend @@ -1,4 +1,4 @@ -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/notes/hydra b/admin/notes/hydra index 5fe833236b18..49c995f3f7ed 100644 --- a/admin/notes/hydra +++ b/admin/notes/hydra @@ -1,6 +1,6 @@ -*- mode: outline; coding: utf-8 -*- -Copyright (C) 2013-2018 Free Software Foundation, Inc. +Copyright (C) 2013-2019 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index 5b34bb598ef5..c124f37d23b6 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -1,6 +1,6 @@ -*- coding: utf-8; mode: text; -*- -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. From README.multi-tty in the multi-tty branch. diff --git a/admin/notes/unicode b/admin/notes/unicode index 4240ac1e76db..da0b0655724c 100644 --- a/admin/notes/unicode +++ b/admin/notes/unicode @@ -1,6 +1,6 @@ -*-mode: text; coding: utf-8;-*- -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Importing a new Unicode Standard version into Emacs @@ -49,6 +49,9 @@ of OTF script tags in otf-script-alist, whose source is on this page: https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags Other databases in fontset.el might also need to be updated as needed. +One notable place to check is the function setup-default-fontset, +where new scripts will generally need some addition, most probably to +the list of "simple" scripts (search for "Simple"). The function 'ucs-names', defined in lisp/international/mule-cmds.el, might need to be updated because it knows about used and unused ranges diff --git a/admin/notes/www b/admin/notes/www index 2652eccc15f7..ed2349d96678 100644 --- a/admin/notes/www +++ b/admin/notes/www @@ -1,6 +1,6 @@ -*- outline -*- -Copyright (C) 2013-2018 Free Software Foundation, Inc. +Copyright (C) 2013-2019 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS WWW PAGES diff --git a/admin/nt/README-UNDUMP.W32 b/admin/nt/README-UNDUMP.W32 index e54e208a9be8..d692a30dbcf3 100644 --- a/admin/nt/README-UNDUMP.W32 +++ b/admin/nt/README-UNDUMP.W32 @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Emacs for Windows diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server index 3378820e16b0..0c68d99c2ffe 100644 --- a/admin/nt/README-ftp-server +++ b/admin/nt/README-ftp-server @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Precompiled Distributions of diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index fe98ebdcc7c8..c6864e1687f0 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -## Copyright (C) 2017-2018 Free Software Foundation, Inc. +## Copyright (C) 2017-2019 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/nt/dist-build/build-zips.sh b/admin/nt/dist-build/build-zips.sh index d008626bb3b8..0069dc9c46bf 100755 --- a/admin/nt/dist-build/build-zips.sh +++ b/admin/nt/dist-build/build-zips.sh @@ -1,6 +1,6 @@ #!/bin/bash -## Copyright (C) 2017-2018 Free Software Foundation, Inc. +## Copyright (C) 2017-2019 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs index e2e00d5b8867..71c4431418da 100755 --- a/admin/quick-install-emacs +++ b/admin/quick-install-emacs @@ -1,7 +1,7 @@ #!/bin/sh ### quick-install-emacs --- do a halfway-decent job of installing emacs quickly -## Copyright (C) 2001-2018 Free Software Foundation, Inc. +## Copyright (C) 2001-2019 Free Software Foundation, Inc. ## Author: Miles Bader diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index 818404f8baf5..31efba0227a8 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2012-2018 Free Software Foundation, Inc. +# Copyright (C) 2012-2019 Free Software Foundation, Inc. # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/unidata/NormalizationTest.txt b/admin/unidata/NormalizationTest.txt index 72a31bcdf18e..64914028a9d6 100644 --- a/admin/unidata/NormalizationTest.txt +++ b/admin/unidata/NormalizationTest.txt @@ -2149,6 +2149,7 @@ 32FC;32FC;32FC;30F0;30F0; # (㋼; ㋼; ㋼; ヰ; ヰ; ) CIRCLED KATAKANA WI 32FD;32FD;32FD;30F1;30F1; # (㋽; ㋽; ㋽; ヱ; ヱ; ) CIRCLED KATAKANA WE 32FE;32FE;32FE;30F2;30F2; # (㋾; ㋾; ㋾; ヲ; ヲ; ) CIRCLED KATAKANA WO +32FF;32FF;32FF;4EE4 548C;4EE4 548C; # (㋿; ㋿; ㋿; 令和; 令和; ) SQUARE ERA NAME REIWA 3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8; # (㌀; ㌀; ㌀; アパート; アハ◌゚ート; ) SQUARE APAATO 3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1; # (㌁; ㌁; ㌁; アルファ; アルファ; ) SQUARE ARUHUA 3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2; # (㌂; ㌂; ㌂; アンペア; アンヘ◌゚ア; ) SQUARE ANPEA diff --git a/admin/unidata/UnicodeData.txt b/admin/unidata/UnicodeData.txt index ec32fafbce5f..e33f9b32e415 100644 --- a/admin/unidata/UnicodeData.txt +++ b/admin/unidata/UnicodeData.txt @@ -11836,6 +11836,7 @@ 32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; 32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; 32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; +32FF;SQUARE ERA NAME REIWA;So;0;L; 4EE4 548C;;;;N;;;;; 3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; 3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; 3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; diff --git a/admin/unidata/blocks.awk b/admin/unidata/blocks.awk index ea62d87d4430..1b1d3fc66ba7 100755 --- a/admin/unidata/blocks.awk +++ b/admin/unidata/blocks.awk @@ -1,6 +1,6 @@ #!/usr/bin/awk -f -## Copyright (C) 2015-2018 Free Software Foundation, Inc. +## Copyright (C) 2015-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/admin/unidata/copyright.html b/admin/unidata/copyright.html index 0df59c120a89..84322c85380c 100644 --- a/admin/unidata/copyright.html +++ b/admin/unidata/copyright.html @@ -131,7 +131,7 @@

Unicode® Terms of Use

  1. Unicode Copyright.
      -
    1. Copyright © 1991-2018 Unicode, Inc. All rights reserved.
    2. +
    3. Copyright © 1991-2019 Unicode, Inc. All rights reserved.
    4. Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and @@ -250,7 +250,8 @@

      EXHIBIT 1
       Unicode Data Files include all data files under the directories
       http://www.unicode.org/Public/, http://www.unicode.org/reports/,
      -http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
      +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/,
      +http://www.unicode.org/ivd/data/, and
       http://www.unicode.org/utility/trac/browser/.
       
       Unicode Data Files do not include PDF online code charts under the
      @@ -272,7 +273,7 @@ 

      EXHIBIT 1
      COPYRIGHT AND PERMISSION NOTICE -Copyright © 1991-2018 Unicode, Inc. All rights reserved. +Copyright © 1991-2019 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index 8cc1893adbbf..749cde2178c8 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -1,6 +1,6 @@ ;; unidata-gen.el -- Create files containing character property data. -;; Copyright (C) 2008-2018 Free Software Foundation, Inc. +;; Copyright (C) 2008-2019 Free Software Foundation, Inc. ;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/unidata/uvs.el b/admin/unidata/uvs.el index 6bb6a2ab763a..277d33bbd816 100644 --- a/admin/unidata/uvs.el +++ b/admin/unidata/uvs.el @@ -1,6 +1,6 @@ ;;; uvs.el --- utility for UVS (format 14) cmap subtables in OpenType fonts. -;; Copyright (C) 2014-2018 Free Software Foundation, Inc. +;; Copyright (C) 2014-2019 Free Software Foundation, Inc. ;; Author: YAMAMOTO Mitsuharu diff --git a/admin/update-copyright b/admin/update-copyright index d3ffb4774c30..44cb84d8cc9d 100755 --- a/admin/update-copyright +++ b/admin/update-copyright @@ -7,7 +7,7 @@ # By default, this script uses the local-time calendar year. # Set the UPDATE_COPYRIGHT_YEAR environment variable to override the default. -# Copyright 2013-2018 Free Software Foundation, Inc. +# Copyright 2013-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/update_autogen b/admin/update_autogen index d21186747926..651d35beafbf 100755 --- a/admin/update_autogen +++ b/admin/update_autogen @@ -1,7 +1,7 @@ #!/usr/bin/env bash ### update_autogen - update some auto-generated files in the Emacs tree -## Copyright (C) 2011-2018 Free Software Foundation, Inc. +## Copyright (C) 2011-2019 Free Software Foundation, Inc. ## Author: Glenn Morris @@ -47,7 +47,7 @@ cd $PD cd ../ [ -d admin ] || die "Could not locate admin directory" -[ -d .git ] || die "No .git directory" +[ -e .git ] || die "No .git" usage () { diff --git a/admin/upload-manuals b/admin/upload-manuals index 1aa7d8be32dc..08b47d741d7e 100755 --- a/admin/upload-manuals +++ b/admin/upload-manuals @@ -2,7 +2,7 @@ ### upload-manuals - upload the Emacs manuals to the gnu.org website -## Copyright 2018 Free Software Foundation, Inc. +## Copyright 2018-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/autogen.sh b/autogen.sh index acebc2381a3f..bf8d61f0c65d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,7 +1,7 @@ #!/bin/sh ### autogen.sh - tool to help build Emacs from a repository checkout -## Copyright (C) 2011-2018 Free Software Foundation, Inc. +## Copyright (C) 2011-2019 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org @@ -323,7 +323,7 @@ git_config diff.texinfo.xfuncname \ tailored_hooks= sample_hooks= -for hook in commit-msg pre-commit; do +for hook in commit-msg pre-commit prepare-commit-msg; do cmp -- build-aux/git-hooks/$hook "$hooks/$hook" >/dev/null 2>&1 || tailored_hooks="$tailored_hooks $hook" done diff --git a/build-aux/config.guess b/build-aux/config.guess index 588fe82a42aa..5dacc2912368 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,6 +1,6 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2019 Free Software Foundation, Inc. timestamp='2018-01-01' @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2019 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/build-aux/config.sub b/build-aux/config.sub index f2632cd8a2be..cb90ee490998 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -1,6 +1,6 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2019 Free Software Foundation, Inc. timestamp='2018-01-01' @@ -67,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2019 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/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index 1ce4cee2648b..4ed261425d33 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -1,7 +1,7 @@ #!/bin/sh # Check the format of GNU Emacs change log entries. -# Copyright 2014-2018 Free Software Foundation, Inc. +# Copyright 2014-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit index c0455fb2fa2a..e29a69f25b8b 100755 --- a/build-aux/git-hooks/pre-commit +++ b/build-aux/git-hooks/pre-commit @@ -1,7 +1,7 @@ #!/bin/sh # Check file names in git commits for GNU Emacs. -# Copyright 2014-2018 Free Software Foundation, Inc. +# Copyright 2014-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/prepare-commit-msg b/build-aux/git-hooks/prepare-commit-msg new file mode 100755 index 000000000000..3562a8022345 --- /dev/null +++ b/build-aux/git-hooks/prepare-commit-msg @@ -0,0 +1,45 @@ +#!/bin/sh +# Check the format of GNU Emacs change log entries. + +# Copyright 2019 Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +# Prefer gawk if available, as it handles NUL bytes properly. +if type gawk >/dev/null 2>&1; then + awk=gawk +else + awk=awk +fi + +exec $awk ' + # Catch the case when someone ran git-commit with -s option, + # which automatically adds Signed-off-by. + /^Signed-off-by: / { + print "'\''Signed-off-by:'\'' in commit message" + status = 1 + } + END { + if (status != 0) { + print "Commit aborted; please see the file 'CONTRIBUTE'" + } + exit status + } +' <"$COMMIT_MSG_FILE" diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index d8074aadabfe..69520eeae709 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -9,7 +9,7 @@ my $VERSION = '2017-09-13 06:45'; # UTC # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. -# Copyright (C) 2008-2018 Free Software Foundation, Inc. +# Copyright (C) 2008-2019 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog index bdf45360aa4a..7cd7c58c355d 100755 --- a/build-aux/gitlog-to-emacslog +++ b/build-aux/gitlog-to-emacslog @@ -2,7 +2,7 @@ # Convert git log output to ChangeLog format for GNU Emacs. -# Copyright (C) 2014-2018 Free Software Foundation, Inc. +# Copyright (C) 2014-2019 Free Software Foundation, Inc. # Author: Paul Eggert diff --git a/build-aux/make-info-dir b/build-aux/make-info-dir index cf8ffabd2199..2dcac87b4899 100755 --- a/build-aux/make-info-dir +++ b/build-aux/make-info-dir @@ -2,7 +2,7 @@ ### make-info-dir - create info/dir, for systems without install-info -## Copyright (C) 2013-2018 Free Software Foundation, Inc. +## Copyright (C) 2013-2019 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/build-aux/move-if-change b/build-aux/move-if-change index f15923613c8b..69662a3ff8b2 100755 --- a/build-aux/move-if-change +++ b/build-aux/move-if-change @@ -8,7 +8,7 @@ VERSION='2017-09-13 06:45'; # UTC # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2019 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/msys-to-w32 b/build-aux/msys-to-w32 index ca23302a5b59..758d172355de 100755 --- a/build-aux/msys-to-w32 +++ b/build-aux/msys-to-w32 @@ -2,7 +2,7 @@ # Convert a MSYS path list to Windows-native format. # Status is zero if successful, nonzero otherwise. -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/update-copyright b/build-aux/update-copyright index 3bb26abea1b6..19d881316afa 100755 --- a/build-aux/update-copyright +++ b/build-aux/update-copyright @@ -5,7 +5,7 @@ eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" "$@"' my $VERSION = '2018-01-04.14:48'; # UTC -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2019 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/update-subdirs b/build-aux/update-subdirs index 8bc4f1a8b0f7..75509956276d 100755 --- a/build-aux/update-subdirs +++ b/build-aux/update-subdirs @@ -1,7 +1,7 @@ #!/bin/sh # Write into $1/subdirs.el a list of subdirs of directory $1. -# Copyright (C) 1994-1995, 1997, 1999, 2001-2018 Free Software +# Copyright (C) 1994-1995, 1997, 1999, 2001-2019 Free Software # Foundation, Inc. # This file is part of GNU Emacs. diff --git a/config.bat b/config.bat index e5b3a0898e3b..3f8f73f04d07 100644 --- a/config.bat +++ b/config.bat @@ -1,7 +1,7 @@ @echo off rem ---------------------------------------------------------------------- rem Configuration script for MSDOS -rem Copyright (C) 1994-1999, 2001-2018 Free Software Foundation, Inc. +rem Copyright (C) 1994-1999, 2001-2019 Free Software Foundation, Inc. rem This file is part of GNU Emacs. diff --git a/configure.ac b/configure.ac index 029f451cd4a1..b4a41ba78cad 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ dnl autoconf dnl in the directory containing this script. dnl If you changed any AC_DEFINES, also run autoheader. dnl -dnl Copyright (C) 1994-1996, 1999-2018 Free Software Foundation, Inc. +dnl Copyright (C) 1994-1996, 1999-2019 Free Software Foundation, Inc. dnl dnl This file is part of GNU Emacs. dnl @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 26.1.50, bug-gnu-emacs@gnu.org) +AC_INIT(GNU Emacs, 26.3.50, bug-gnu-emacs@gnu.org) 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. @@ -360,7 +360,7 @@ OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts]) OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support]) OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping]) -OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars]) +OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif/Xaw3d/GTK toolkit scroll bars]) OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d]) OPTION_DEFAULT_ON([xim],[at runtime, default X11 XIM to off]) AC_ARG_WITH([ns],[AS_HELP_STRING([--with-ns], @@ -2500,7 +2500,7 @@ fi HAVE_RSVG=no if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then if test "${with_rsvg}" != "no"; then - RSVG_REQUIRED=2.11.0 + RSVG_REQUIRED=2.14.0 RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED" EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE]) @@ -3471,23 +3471,20 @@ fi AC_SUBST(LIBJPEG) HAVE_LCMS2=no -LIBLCMS2= +LCMS2_CFLAGS= +LCMS2_LIBS= if test "${with_lcms2}" != "no"; then - OLIBS=$LIBS - AC_SEARCH_LIBS([cmsCreateTransform], [lcms2], [HAVE_LCMS2=yes]) - LIBS=$OLIBS - case $ac_cv_search_cmsCreateTransform in - -*) LIBLCMS2=$ac_cv_search_cmsCreateTransform ;; - esac + 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).]) ### mingw32 doesn't use -llcms2, since it loads the library dynamically. if test "${opsys}" = "mingw32"; then - LIBLCMS2= + LCMS2_LIBS= fi fi -AC_SUBST(LIBLCMS2) +AC_SUBST(LCMS2_CFLAGS) +AC_SUBST(LCMS2_LIBS) HAVE_ZLIB=no LIBZ= @@ -4049,7 +4046,8 @@ AC_CACHE_CHECK([for library containing tputs], [emacs_cv_tputs_lib], emacs_cv_tputs_lib='none required' else # curses precedes termcap because of AIX (Bug#9736#35) and OpenIndiana. - for tputs_library in '' tinfo ncurses terminfo curses termcap; do + tputs_libraries='tinfo ncurses terminfo curses termcap tinfow ncursesw' + for tputs_library in '' $tputs_libraries; do OLIBS=$LIBS if test -z "$tputs_library"; then emacs_cv_tputs_lib='none required' @@ -4145,6 +4143,10 @@ AC_SUBST(LIBS_TERMCAP) AC_SUBST(TERMCAP_OBJ) # GNU/Linux-specific timer functions. +# Bug#34618. +if test "$opsys" = "cygwin"; then + emacs_cv_have_timerfd=no +fi AC_CACHE_CHECK([for timerfd interface], [emacs_cv_have_timerfd], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include @@ -4965,7 +4967,7 @@ fi version=$PACKAGE_VERSION -copyright="Copyright (C) 2018 Free Software Foundation, Inc." +copyright="Copyright (C) 2019 Free Software Foundation, Inc." AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"], [Short copyright string for this version of Emacs.]) AC_SUBST(copyright) @@ -5298,7 +5300,7 @@ AC_SUBST(WINDOW_SYSTEM_OBJ) AH_TOP([/* GNU Emacs site configuration template file. -Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2018 +Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index ab9da47513fb..99faff1623c3 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -83,7 +83,7 @@ 2014-12-08 Eric S. Raymond - * maintaining.texi: Suopport fo Arch has been moved to obosolete, + * maintaining.texi: Support for Arch has been moved to obsolete, remove references that imply otherwise. 2014-11-29 Paul Eggert @@ -10919,7 +10919,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index 1da2f1550f9f..fa451b1f927f 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi index 00b9e560ac0c..9c8a280efb30 100644 --- a/doc/emacs/abbrevs.texi +++ b/doc/emacs/abbrevs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Abbrevs diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index 20c8d4e610ba..0e4a982da406 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1994-1997, 1999-2018 Free Software Foundation, Inc. +@c Copyright (C) 1994-1997, 1999-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @node Acknowledgments @@ -829,8 +829,8 @@ command with its arguments. Richard Mlynarik wrote @file{cl-indent.el}, a package for indenting Common Lisp code; @file{ebuff-menu.el}, an electric browser for buffer listings; @file{ehelp.el}, bindings for browsing help screens; -and @file{rfc822.el}, a parser for E-mail addresses in the RFC-822 format, -used in mail messages and news articles. +and @file{rfc822.el}, a parser for E-mail addresses in the format +used in mail messages and news articles (Internet RFC 822 and its successors). @item Gerd Möllmann was the Emacs maintainer from the beginning of Emacs 21 diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi index b91516315adc..9eac08c2643d 100644 --- a/doc/emacs/anti.texi +++ b/doc/emacs/anti.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 2005-2018 Free Software Foundation, Inc. +@c Copyright (C) 2005-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Antinews diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi index 45fca1f508dc..cd7c1ff895ea 100644 --- a/doc/emacs/arevert-xtra.texi +++ b/doc/emacs/arevert-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index f911c673bff0..d0bd46c35fc9 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Basic @@ -113,13 +113,13 @@ just like digits. Case is ignored. @cindex curved quotes, inserting A few common Unicode characters can be inserted via a command starting with @kbd{C-x 8}. For example, @kbd{C-x 8 [} inserts @t{‘} -which is Unicode code-point @code{U+2018} LEFT SINGLE QUOTATION MARK, +which is Unicode code-point U+2018 @sc{left single quotation mark}, sometimes called a left single ``curved quote'' or ``curly quote''. Similarly, @kbd{C-x 8 ]}, @kbd{C-x 8 @{} and @kbd{C-x 8 @}} insert the curved quotes @t{’}, @t{“} and @t{”}, respectively. Also, a working Alt key acts like @kbd{C-x 8}; e.g., @kbd{A-[} acts like @kbd{C-x 8 [} -and inserts `. To see which characters have @kbd{C-x 8} shorthands, -type @kbd{C-x 8 C-h}. +and inserts @t{‘}. To see which characters have @kbd{C-x 8} +shorthands, type @kbd{C-x 8 C-h}. Alternatively, you can use the command @kbd{C-x 8 @key{RET}} (@code{insert-char}). This prompts for the Unicode name or code-point @@ -146,9 +146,9 @@ the buffer. how many copies of the character to insert (@pxref{Arguments}). In addition, in some contexts, if you type a quotation using grave -accent and apostrophe @t{`like this'}, it is converted to a form +accent and apostrophe @kbd{`like this'}, it is converted to a form @t{‘like this’} using single quotation marks, even without @kbd{C-x 8} -commands. Similarly, typing a quotation @t{``like this''} using +commands. Similarly, typing a quotation @kbd{``like this''} using double grave accent and apostrophe converts it to a form @t{“like this”} using double quotation marks. @xref{Quotation Marks}. @@ -816,9 +816,9 @@ more convenient, and they are documented in that command's documentation string. We use the term @dfn{prefix argument} to emphasize that you type -such arguments before the command, and to distinguish them from -minibuffer arguments (@pxref{Minibuffer}), which are entered after -invoking the command. +such arguments @emph{before} the command, and to distinguish them from +minibuffer arguments (@pxref{Minibuffer}), which are entered +@emph{after} invoking the command. On graphical displays, @kbd{C-0}, @kbd{C-1}, etc.@ act the same as @kbd{M-0}, @kbd{M-1}, etc. diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index dd7a653186cf..27fcb7369a97 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Buffers diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 7e250bf42509..246a04c28246 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Building @@ -151,6 +151,20 @@ with the mouse (@pxref{Mouse References}), to visit the @dfn{locus} of the error message in a separate window. The locus is the specific position in a file where that error occurred. +@cindex compilation mode faces +@vindex compilation-error +@vindex compilation-warning + The appearance of the @file{*compilation*} buffer can be controlled +by customizing the faces which are used to highlight parts of the +@file{*compilation*} buffer, e.g., @code{compilation-error} or +@code{compilation-warning}, for error and warning messages +respectively. Note that since those faces inherit from the +@code{error} and @code{warning} faces, it is also possible to +customize the parent face directly instead. + + Use @w{@kbd{M-x customize-group RET compilation}} to see the entire +list of customization variables and faces. + @findex compile-goto-error @vindex compilation-auto-jump-to-first-error If you change the variable @@ -912,6 +926,7 @@ height and width values during the debugging session. @cindex GDB User Interface layout @vindex gdb-many-windows +@vindex gdb-show-main If the variable @code{gdb-many-windows} is @code{nil} (the default), @kbd{M-x gdb} normally displays only the GUD interaction buffer. However, if the variable @code{gdb-show-main} is also non-@code{nil}, @@ -1011,6 +1026,15 @@ allows you to go backwards, which can be useful for running through code that has already executed, in order to examine its execution in more detail. +@vindex gdb-mi-decode-strings + If the file names of the source files are shown with octal escapes, +set the variable @code{gdb-mi-decode-strings} to the appropriate +coding-system, most probably @code{utf-8}. (This is @code{nil} by +default because GDB may emit octal escapes in situations where +decoding is undesirable, and also because the program being debugged +might use an encoding different from the one used to encode non-ASCII +file names on your system.) + @node Breakpoints Buffer @subsubsection Breakpoints Buffer @@ -1150,6 +1174,11 @@ also updates the Locals buffer (described in the next section). @end iftex +@vindex gdb-stack-buffer-addresses + If you want the frame address to be shown each stack frame, +customize the variable @code{gdb-stack-buffer-addresses} to a +non-@code{nil} value. + @node Other GDB Buffers @subsubsection Other GDB Buffers @@ -1470,6 +1499,12 @@ library lets Emacs properly set up the hyperlinks in the @file{*Help*} buffer). To disable this feature, change the variable @code{help-enable-auto-load} to @code{nil}. +@vindex help-enable-completion-auto-load +Automatic loading also occurs when completing names for +@code{describe-variable} and @code{describe-function}, based on the +prefix being completed. To disable this feature, change the variable +@code{help-enable-completion-auto-load} to @code{nil}. + @vindex load-dangerous-libraries @cindex Lisp files byte-compiled by XEmacs By default, Emacs refuses to load compiled Lisp files which were diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi index 80e9b8518174..7fa20deac04c 100644 --- a/doc/emacs/cal-xtra.texi +++ b/doc/emacs/cal-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -*- coding: utf-8 -*- -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi index 7021146e6985..138a24fd4595 100644 --- a/doc/emacs/calendar.texi +++ b/doc/emacs/calendar.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -*- coding: utf-8 -*- -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Calendar/Diary diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 733919a374a1..9b60c2c3e33b 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Emacs Invocation @@ -39,7 +39,7 @@ corresponding long form. The long forms with @samp{--} are easier to remember, but longer to type. However, you don't have to spell out the whole option name; any -unambiguous abbreviation is enough. When a long option takes an +unambiguous abbreviation is enough. When a long option requires an argument, you can use either a space or an equal sign to separate the option name and the argument. Thus, for the option @samp{--display}, you can write either @samp{--display sugar-bombs:0.0} or @@ -305,6 +305,8 @@ not disable loading @file{site-start.el}. @item --no-site-file @opindex --no-site-file +@itemx -nsl +@opindex -nsl @cindex @file{site-start.el} file, not loading Do not load @file{site-start.el} (@pxref{Init File}). The @samp{-Q} option does this too, but other options like @samp{-q} do not. @@ -323,14 +325,20 @@ Do not display a startup screen. You can also achieve this effect by setting the variable @code{inhibit-startup-screen} to non-@code{nil} in your initialization file (@pxref{Entering Emacs}). +@item --no-x-resources +@opindex --no-x-resources +@cindex X resources, not loading +Do not load X resources. You can also achieve this effect by setting +the variable @code{inhibit-x-resources} to @code{t} in your +initialization file (@pxref{Resources}). + @item -Q @opindex -Q @itemx --quick @opindex --quick -Start Emacs with minimum customizations. This is similar to using @samp{-q}, -@samp{--no-site-file}, @samp{--no-site-lisp}, and @samp{--no-splash} -together. This also stops Emacs from processing X resources by -setting @code{inhibit-x-resources} to @code{t} (@pxref{Resources}). +Start Emacs with minimum customizations. This is similar to using +@samp{-q}, @samp{--no-site-file}, @samp{--no-site-lisp}, +@samp{--no-x-resources}, and @samp{--no-splash} together.. @item -daemon @opindex -daemon @@ -339,13 +347,15 @@ setting @code{inhibit-x-resources} to @code{t} (@pxref{Resources}). @itemx --bg-daemon[=@var{name}] @itemx --fg-daemon[=@var{name}] Start Emacs as a daemon: after Emacs starts up, it starts the Emacs -server without opening any frames. -(Optionally, you can specify an explicit @var{name} for the server.) -You can then use the @command{emacsclient} command to connect to Emacs -for editing. @xref{Emacs Server}, for information about using Emacs -as a daemon. A ``background'' daemon disconnects from the terminal -and runs in the background (@samp{--daemon} is an alias for -@samp{--bg-daemon}). +server without opening any frames. You can then use the +@command{emacsclient} command to connect to Emacs for editing. +(Optionally, you can specify an explicit @var{name} for the server; if +you do, you will need to specify the same @var{name} when you invoke +@command{emacsclient}, via its @option{--socket-name} option, see +@ref{emacsclient Options}.) @xref{Emacs Server}, for information +about using Emacs as a daemon. A ``background'' daemon disconnects +from the terminal and runs in the background (@samp{--daemon} is an +alias for @samp{--bg-daemon}). @item --no-desktop @opindex --no-desktop @@ -373,6 +383,8 @@ Enable expensive correctness checks when dealing with dynamically loadable modules. This is intended for module authors that wish to verify that their module conforms to the module API requirements. The option makes Emacs abort if a module-related assertion triggers. +@xref{Writing Dynamic Modules,, Writing Dynamically-Loaded Modules, +elisp, The GNU Emacs Lisp Reference Manual}. @end table @node Command Example @@ -1019,7 +1031,7 @@ specifies a window 164 columns wide, enough for two ordinary width windows side by side, and 55 lines tall. The default frame width is 80 characters and the default height is -40 lines. You can omit either the width or the height or both. If +36 lines. You can omit either the width or the height or both. If you start the geometry with an integer, Emacs interprets it as the width. If you start with an @samp{x} followed by an integer, Emacs interprets it as the height. Thus, @samp{81} specifies just the diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi index a992dedc929e..4773d7675bdb 100644 --- a/doc/emacs/commands.texi +++ b/doc/emacs/commands.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index b93009ad216e..3fd655048b40 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Customization @@ -32,6 +32,8 @@ Reference Manual}. By changing them, you can redefine keys. * Init File:: How to write common customizations in the initialization file. +* Authentication:: Keeping persistent authentication information. + @end menu @node Easy Customization @@ -1327,7 +1329,7 @@ On MS-DOS, the name of this file should be @file{_dir-locals.el}, due to limitations of the DOS filesystems. If the filesystem is limited to 8+3 file names, the name of the file will be truncated by the OS to @file{_dir-loc.el}. -}in a directory. Whenever Emacs visits any file in that directory or +} in a directory. Whenever Emacs visits any file in that directory or any of its subdirectories, it will apply the directory-local variables specified in @file{.dir-locals.el}, as though they had been defined as file-local variables for that file (@pxref{File Variables}). Emacs @@ -1373,6 +1375,28 @@ be applied in the current directory, not in any subdirectories. Finally, it specifies a different @file{ChangeLog} file name for any file in the @file{src/imported} subdirectory. +If the @file{.dir-locals.el} file contains multiple different values +for a variable using different mode names or directories, the values +will be applied in an order such that the values for more specific +modes take priority over more generic modes. Values specified under a +directory have even more priority. For example: + +@example +((nil . ((fill-column . 40))) + (c-mode . ((fill-column . 50))) + (prog-mode . ((fill-column . 60))) + ("narrow-files" . ((nil . ((fill-column . 20)))))) +@end example + +Files that use @code{c-mode} also match @code{prog-mode} because the +former inherits from the latter. The value used for +@code{fill-column} in C files will however be @code{50} because the +mode name is more specific than @code{prog-mode}. Files using other +modes inheriting from @code{prog-mode} will use @code{60}. Any file +under the directory @file{narrow-files} will use the value @code{20} +even if they use @code{c-mode} because directory entries have priority +over mode entries. + You can specify the variables @code{mode}, @code{eval}, and @code{unibyte} in your @file{.dir-locals.el}, and they have the same meanings as they would have in file local variables. @code{coding} @@ -2609,3 +2633,40 @@ instance: @noindent Type @kbd{C-q}, followed by the key you want to bind, to insert @var{char}. + +@node Authentication +@section Keeping Persistent Authentication Information + + Some Emacs packages, which connect to other services, require +authentication (@pxref{Passwords}), e.g., see @ref{Top, Gnus,, gnus, The +Gnus Manual}, or @ref{Top, Tramp,, tramp, The Tramp Manual}. Because +it might be annoying to provide the same user name and password again +and again, Emacs offers to keep this information persistent via the +@file{auth-source} library. + +@cindex @file{~/.authinfo} file +@cindex @file{~/.authinfo.gpg} file +@cindex ~/.netrc file + By default, the authentication information is taken from the file +@file{~/.authinfo} or @file{~/.authinfo.gpg} or @file{~/.netrc}. +These files have a syntax similar to netrc files as known from the +@command{ftp} program, like this: + +@example +machine @var{mymachine} login @var{myloginname} password @var{mypassword} port @var{myport} +@end example + + Similarly, the @file{auth-source} library supports multiple storage +backend, currently either the classic netrc backend, JSON files, the +Secret Service API, and pass, the standard unix password manager. + +@vindex auth-sources + All these alternatives can be customized via the user option +@code{auth-sources}, see @ref{Help for users, Emacs auth-source,, +auth, Emacs auth-source}. + +@vindex auth-source-save-behavior + When a password is entered interactively, which is not found via the +configured backend, some of the backends offer to save it +persistently. This can be changed by customizing the user option +@code{auth-source-save-behavior}. diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi index 4412e4757118..025da21478a0 100644 --- a/doc/emacs/dired-xtra.texi +++ b/doc/emacs/dired-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index fba9d31406e0..cf9665ac5b4e 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Dired @@ -768,9 +768,15 @@ suitable guess made using the variables @code{lpr-command} and @item Z Compress the specified files (@code{dired-do-compress}). If the file appears to be a compressed file already, uncompress it instead. Each -marked file is compressed into its own archive. This uses the +marked file is compressed into its own archive; this uses the @command{gzip} program if it is available, otherwise it uses -@command{compress}. +@command{compress}. On a directory name, this command produces a +compressed @file{.tar.gz} archive containing all of the directory's +files, by running the @command{tar} command with output piped to +@command{gzip}. To allow decompression of compressed directories, +typing @kbd{Z} on a @file{.tar.gz} or @file{.tgz} archive file unpacks +all the files in the archive into a directory whose name is the +archive name with the extension removed. @findex dired-do-compress-to @kindex c @r{(Dired)} diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 2f5ce80d607c..74bcc3283c2f 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @@ -199,12 +199,13 @@ screen lines between point and the top or bottom of the window (@pxref{Auto Scrolling}). You can also give @kbd{C-l} a prefix argument. A plain prefix -argument, @kbd{C-u C-l}, simply recenters point. A positive argument -@var{n} puts point @var{n} lines down from the top of the window. An -argument of zero puts point on the topmost line. A negative argument -@var{-n} puts point @var{n} lines from the bottom of the window. When -given an argument, @kbd{C-l} does not clear the screen or cycle -through different screen positions. +argument, @kbd{C-u C-l}, simply recenters the line showing point. A +positive argument @var{n} moves line showing point @var{n} lines down +from the top of the window. An argument of zero moves point's line to +the top of the window. A negative argument @minus{}@var{n} moves point's +line @var{n} lines from the bottom of the window. When given an +argument, @kbd{C-l} does not clear the screen or cycle through +different screen positions. @vindex recenter-redisplay If the variable @code{recenter-redisplay} has a non-@code{nil} @@ -835,10 +836,10 @@ for instance, programming language modes fontify syntactically relevant constructs like comments, strings, and function names. @findex font-lock-mode - Font Lock mode is enabled by default. To toggle it in the current -buffer, type @kbd{M-x font-lock-mode}. A positive numeric argument -unconditionally enables Font Lock mode, and a negative or zero -argument disables it. + Font Lock mode is enabled by default in major modes that support it. +To toggle it in the current buffer, type @kbd{M-x font-lock-mode}. A +positive numeric argument unconditionally enables Font Lock mode, and +a negative or zero argument disables it. @findex global-font-lock-mode @vindex global-font-lock-mode @@ -1109,7 +1110,8 @@ the arrows scrolls the display horizontally in the direction of the arrow. The fringes can also indicate other things, such as buffer -boundaries (@pxref{Displaying Boundaries}), and where a program you +boundaries (@pxref{Displaying Boundaries}), unused lines near the end +of the window (@pxref{indicate-empty-lines}), and where a program you are debugging is executing (@pxref{Debuggers}). @vindex overflow-newline-into-fringe @@ -1202,6 +1204,7 @@ extra spaces at the end of each line in the region. @vindex indicate-empty-lines @cindex unused lines @cindex fringes, and unused line indication +@anchor{indicate-empty-lines} On graphical displays, Emacs can indicate unused lines at the end of the window with a small image in the left fringe (@pxref{Fringes}). The image appears for screen lines that do not correspond to any @@ -1484,9 +1487,9 @@ a new line, while the tab character (@code{U+0009}) is displayed as a space that extends to the next tab stop column (normally every 8 columns). The number of spaces per tab is controlled by the buffer-local variable @code{tab-width}, which must have an integer -value between 1 and 1000, inclusive. Note that how the tab character -in the buffer is displayed has nothing to do with the definition of -@key{TAB} as a command. +value between 1 and 1000, inclusive. Note that the way the tab +character in the buffer is displayed has nothing to do with the +definition of @key{TAB} as a command. Other @acronym{ASCII} control characters, whose codes are below @code{U+0020} (octal 40, decimal 32), are displayed as a caret @@ -1556,11 +1559,11 @@ curved quotes. You can influence or inhibit this translation by customizing the user option @code{text-quoting-style} (@pxref{Keys in Documentation,,, elisp, The Emacs Lisp Reference Manual}). - If the curved quotes @samp{‘}, @samp{’}, @samp{“}, and @samp{”} are + If the curved quotes @t{‘}, @t{’}, @t{“}, and @t{”} are known to look just like @acronym{ASCII} characters, they are shown with the @code{homoglyph} face. Curved quotes that are known not to be displayable are shown as their @acronym{ASCII} approximations -@samp{`}, @samp{'}, and @samp{"} with the @code{homoglyph} face. +@t{`}, @t{'}, and @t{"} with the @code{homoglyph} face. @node Cursor Display @section Displaying the Cursor diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi index 3c46d72f0401..dcd8fae1b618 100644 --- a/doc/emacs/emacs-xtra.texi +++ b/doc/emacs/emacs-xtra.texi @@ -16,7 +16,7 @@ @copying This manual describes specialized features of Emacs. -Copyright @copyright{} 2004--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index f97a758f3247..5b16d5034f14 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -27,7 +27,7 @@ This is the @cite{GNU Emacs Manual}, @end ifnottex updated for Emacs version @value{EMACSVER}. -Copyright @copyright{} 1985--1987, 1993--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1985--1987, 1993--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1114,6 +1114,7 @@ Customization By changing them, you can redefine keys. * Init File:: How to write common customizations in the initialization file. +* Authentication:: Keeping persistent authentication information. Easy Customization Interface diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi index 1d817125b364..6c5e46b6de60 100644 --- a/doc/emacs/emerge-xtra.texi +++ b/doc/emacs/emerge-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi index 84b3e5d4cbf6..4362553a2230 100644 --- a/doc/emacs/entering.texi +++ b/doc/emacs/entering.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index e950767c3843..cd64fb109ea7 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Files @@ -926,10 +926,11 @@ way that, if the file was edited only slightly, you will be at approximately the same part of the text as before. But if you have made major changes, point may end up in a totally different location. - Reverting marks the buffer as not modified. It also clears the -buffer's undo history (@pxref{Undo}). Thus, the reversion cannot be -undone---if you change your mind yet again, you can't use the undo -commands to bring the reverted changes back. + Reverting marks the buffer as not modified. However, it adds the +reverted changes as a single modification to the buffer's undo history +(@pxref{Undo}). Thus, after reverting, you can type @kbd{C-/} or its +aliases to bring the reverted changes back, if you happen to change +your mind. Some kinds of buffers that are not associated with files, such as Dired buffers, can also be reverted. For them, reverting means @@ -1426,23 +1427,30 @@ manually, type @kbd{M-x diff-mode}. @cindex hunk, diff The changes specified in a patch are grouped into @dfn{hunks}, which are contiguous chunks of text that contain one or more changed lines. -Hunks can also include unchanged lines to provide context for the +Hunks usually also include unchanged lines to provide context for the changes. Each hunk is preceded by a @dfn{hunk header}, which -specifies the old and new line numbers at which the hunk occurs. Diff -mode highlights each hunk header, to distinguish it from the actual -contents of the hunk. +specifies the old and new line numbers where the hunk's changes occur. +Diff mode highlights each hunk header, to distinguish it from the +actual contents of the hunk. + + The first hunk in a patch is preceded by a file header, which shows +the names of the new and the old versions of the file, and their time +stamps. If a patch shows changes for more than one file, each file +has such a header before the first hunk of that file's changes. @vindex diff-update-on-the-fly You can edit a Diff mode buffer like any other buffer. (If it is -read-only, you need to make it writable first. @xref{Misc Buffer}.) -Whenever you change a hunk, Diff mode attempts to automatically -correct the line numbers in the hunk headers, to ensure that the patch -remains correct. To disable automatic line number correction, -change the variable @code{diff-update-on-the-fly} to @code{nil}. - - Diff mode treats each hunk as an error message, similar to -Compilation mode. Thus, you can use commands such as @kbd{C-x `} to -visit the corresponding source locations. @xref{Compilation Mode}. +read-only, you need to make it writable first; see @ref{Misc Buffer}.) +Whenever you edit a hunk, Diff mode attempts to automatically correct +the line numbers in the hunk headers, to ensure that the patch remains +correct, and could still be applied by @command{patch}. To disable +automatic line number correction, change the variable +@code{diff-update-on-the-fly} to @code{nil}. + + Diff mode arranges for hunks to be treated as compiler error +messages by @kbd{C-x `} and other commands that handle error messages +(@pxref{Compilation Mode}). Thus, you can use the compilation-mode +commands to visit the corresponding source locations. In addition, Diff mode provides the following commands to navigate, manipulate and apply parts of patches: @@ -1450,7 +1458,8 @@ manipulate and apply parts of patches: @table @kbd @item M-n @findex diff-hunk-next -Move to the next hunk-start (@code{diff-hunk-next}). +Move to the next hunk-start (@code{diff-hunk-next}). With prefix +argument @var{n}, move forward to the @var{n}th next hunk. @findex diff-auto-refine-mode @cindex mode, Diff Auto-Refine @@ -1468,19 +1477,22 @@ default, add this to your init file (@pxref{Hooks}): @item M-p @findex diff-hunk-prev -Move to the previous hunk-start (@code{diff-hunk-prev}). Like +Move to the previous hunk-start (@code{diff-hunk-prev}). With prefix +argument @var{n}, move back to the @var{n}th previous hunk. Like @kbd{M-n}, this has the side-effect of refining the hunk you move to, unless you disable Diff Auto-Refine mode. @item M-@} @findex diff-file-next Move to the next file-start, in a multi-file patch -(@code{diff-file-next}). +(@code{diff-file-next}). With prefix argument @var{n}, move forward +to the start of the @var{n}th next file. @item M-@{ @findex diff-file-prev Move to the previous file-start, in a multi-file patch -(@code{diff-file-prev}). +(@code{diff-file-prev}). With prefix argument @var{n}, move back to +the start of the @var{n}th previous file. @item M-k @findex diff-hunk-kill @@ -1495,7 +1507,10 @@ In a multi-file patch, kill the current file part. @findex diff-apply-hunk @cindex patches, applying Apply this hunk to its target file (@code{diff-apply-hunk}). With a -prefix argument of @kbd{C-u}, revert this hunk. +prefix argument of @kbd{C-u}, revert this hunk, i.e.@: apply the +reverse of the hunk, which changes the ``new'' version into the ``old'' +version. If @code{diff-jump-to-old-file} is non-@code{nil}, apply the +hunk to the ``old'' version of the file instead. @item C-c C-b @findex diff-refine-hunk @@ -1505,8 +1520,16 @@ of each changed line were actually changed. @item C-c C-c @findex diff-goto-source +@vindex diff-jump-to-old-file Go to the source file and line corresponding to this hunk -(@code{diff-goto-source}). +(@code{diff-goto-source}). By default, this jumps to the ``new'' +version of the file, the one shown first on the file header. +With a prefix argument, jump to the ``old'' version instead. If +@code{diff-jump-to-old-file} is non-@code{nil}, this command by +default jumps to the ``old'' file, and the meaning of the prefix +argument is reversed. If the prefix argument is a number greater than +8 (e.g., if you type @kbd{C-u C-u C-c C-c}), then this command also +sets @code{diff-jump-to-old-file} for the next invocation. @item C-c C-e @findex diff-ediff-patch @@ -1516,41 +1539,47 @@ Start an Ediff session with the patch (@code{diff-ediff-patch}). @item C-c C-n @findex diff-restrict-view Restrict the view to the current hunk (@code{diff-restrict-view}). -@xref{Narrowing}. With a prefix argument of @kbd{C-u}, restrict the +@xref{Narrowing}. With a prefix argument, restrict the view to the current file of a multiple-file patch. To widen again, use @kbd{C-x n w} (@code{widen}). @item C-c C-r @findex diff-reverse-direction Reverse the direction of comparison for the entire buffer -(@code{diff-reverse-direction}). +(@code{diff-reverse-direction}). With a prefix argument, reverse the +direction only inside the current region (@pxref{Mark}). Reversing +the direction means changing the hunks and the file-start headers to +produce a patch that would change the ``new'' version into the ``old'' +one. @item C-c C-s @findex diff-split-hunk -Split the hunk at point (@code{diff-split-hunk}). This is for -manually editing patches, and only works with the @dfn{unified diff -format} produced by the @option{-u} or @option{--unified} options to -the @command{diff} program. If you need to split a hunk in the -@dfn{context diff format} produced by the @option{-c} or -@option{--context} options to @command{diff}, first convert the buffer -to the unified diff format with @kbd{C-c C-u}. +Split the hunk at point (@code{diff-split-hunk}) into two separate +hunks. This inserts a hunk header and modifies the header of the +current hunk. This command is useful for manually editing patches, +and only works with the @dfn{unified diff format} produced by the +@option{-u} or @option{--unified} options to the @command{diff} +program. If you need to split a hunk in the @dfn{context diff format} +produced by the @option{-c} or @option{--context} options to +@command{diff}, first convert the buffer to the unified diff format +with @kbd{C-c C-u}. @item C-c C-d @findex diff-unified->context Convert the entire buffer to the @dfn{context diff format} (@code{diff-unified->context}). With a prefix argument, convert only -the text within the region. +the hunks within the region. @item C-c C-u @findex diff-context->unified Convert the entire buffer to unified diff format (@code{diff-context->unified}). With a prefix argument, convert unified format to context format. When the mark is active, convert -only the text within the region. +only the hunks within the region. @item C-c C-w @findex diff-ignore-whitespace-hunk -Re-diff the current hunk, disregarding changes in whitespace +Re-generate the current hunk, disregarding changes in whitespace (@code{diff-ignore-whitespace-hunk}). @item C-x 4 A @@ -1581,7 +1610,8 @@ that whitespace in both the patch and the patched source file(s). This command does not save the modifications that it makes, so you can decide whether to save the changes (the list of modified files is displayed in the echo area). With a prefix argument, it tries to -modify the original source files rather than the patched source files. +modify the original (``old'') source files rather than the patched +(``new'') source files. @node Copying and Naming @section Copying, Naming and Renaming Files @@ -1667,10 +1697,12 @@ Dired rather than @code{delete-file}. @xref{Dired Deletion}. @cindex trash @cindex recycle bin +@findex move-file-to-trash @kbd{M-x move-file-to-trash} moves a file into the system @dfn{Trash} (or @dfn{Recycle Bin}). This is a facility available on most operating systems; files that are moved into the Trash can be -brought back later if you change your mind. +brought back later if you change your mind. (The way to restore +trashed files is system-dependent.) @vindex delete-by-moving-to-trash By default, Emacs deletion commands do @emph{not} use the Trash. To diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi index 7bbaa0016bad..bb1b4c871379 100644 --- a/doc/emacs/fixit.texi +++ b/doc/emacs/fixit.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Fixit diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi index fa5a3e6eafbf..30f7c421d517 100644 --- a/doc/emacs/fortran-xtra.texi +++ b/doc/emacs/fortran-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 9f4c7821e983..05aabd0e15b8 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Frames @@ -934,6 +934,10 @@ the initial frame, by customizing the variable specify colors and fonts don't affect menus and the menu bar, since those are drawn by the toolkit and not directly by Emacs. + Frame appearance and behavior can also be customized through X +resources (@pxref{X Resources}); these override the parameters of the +initial frame specified in your init file. + Note that if you are using the desktop library to save and restore your sessions, the frames to be restored are recorded in the desktop file, together with their parameters. When these frames are restored, diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index 02939679fef1..ad16d72ddbf9 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Glossary diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi index 4a42a641a72a..fef4f71c6eed 100644 --- a/doc/emacs/gnu.texi +++ b/doc/emacs/gnu.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1985-1987, 1993, 1995, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993, 1995, 2001-2019 Free Software @c Foundation, Inc. @c @c Permission is granted to anyone to make or distribute verbatim copies diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index 94d27a276dc4..9ffea416827a 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Help diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index bf43909edf3a..a6aa75bbb425 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Indentation diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 4c47c8b04791..c554d2e28390 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @@ -124,7 +124,7 @@ point, regardless of the number of spaces that existed previously (even if there were none before). With a numeric argument @var{n}, it leaves @var{n} spaces before point if @var{n} is positive; if @var{n} is negative, it deletes newlines in addition to spaces and tabs, -leaving @var{-n} spaces before point. The command @code{cycle-spacing} +leaving @minus{}@var{n} spaces before point. The command @code{cycle-spacing} acts like a more flexible version of @code{just-one-space}. It does different things if you call it repeatedly in succession. The first call acts like @code{just-one-space}, the next removes @@ -605,16 +605,19 @@ This command does not alter the kill ring. @kindex M-mouse-1 @item M-mouse-1 Set one endpoint for the @dfn{secondary selection} -(@code{mouse-start-secondary}). +(@code{mouse-start-secondary}); use @kbd{M-mouse-3} to set the other +end and complete the selection. This command cancels any existing +secondary selection, when it starts a new one. @findex mouse-secondary-save-then-kill @kindex M-mouse-3 @item M-mouse-3 -Set the secondary selection, with one end at the position clicked and -the other at the position specified with @kbd{M-mouse-1} -(@code{mouse-secondary-save-then-kill}). This also puts the selected -text in the kill ring. A second @kbd{M-mouse-3} at the same place -kills the secondary selection just made. +Set the secondary selection (@code{mouse-secondary-save-then-kill}), +with one end at the position you click @kbd{M-mouse-3}, and the other +at the position specified previously with @kbd{M-mouse-1}. This also +puts the selected text in the kill ring. A second @kbd{M-mouse-3} at +the same place kills the text selected by the secondary selection just +made. @findex mouse-yank-secondary @kindex M-mouse-2 diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi index 0151c816a896..3710611c7633 100644 --- a/doc/emacs/kmacro.texi +++ b/doc/emacs/kmacro.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Keyboard Macros @@ -241,10 +241,17 @@ determined by the customizable variable @code{kmacro-ring-max}. @section The Keyboard Macro Counter Each keyboard macro has an associated counter, which is initialized -to 0 when you start defining the macro. This counter allows you to -insert a number into the buffer that depends on the number of times -the macro has been called. The counter is incremented each time its -value is inserted into the buffer. +to 0 when you start defining the macro. This @dfn{current counter} +allows you to insert a number into the buffer that depends on the +number of times the macro has been called. The counter is normally +incremented each time its value is inserted into the buffer. + +In addition to the current counter, keyboard macros also maintain the +@dfn{previous counter}, which records the value the current counter +had last time it was incremented or set. Note that incrementing the +current counter by zero, e.g., with @w{@kbd{C-u 0 C-x C-k C-i}}, also +records the value of the current counter as the previous counter +value. @table @kbd @item @key{F3} @@ -270,8 +277,8 @@ value of the keyboard macro's counter into the buffer, and increments the counter by 1. (If you are not defining a macro, @key{F3} begins a macro definition instead. @xref{Basic Keyboard Macro}.) You can use a numeric prefix argument to specify a different increment. If you -just specify a @kbd{C-u} prefix, that is the same as an increment of -zero: it inserts the current counter value without changing it. +just specify a @kbd{C-u} prefix, that inserts the previous counter +value, and doesn't change the current value. As an example, let us show how the keyboard macro counter can be used to build a numbered list. Consider the following key sequence: @@ -384,7 +391,7 @@ macro definition is executed. It is up to you to leave point and the text in a state such that the rest of the macro will do what you want. @end table - @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument, + @kbd{C-u C-x q}, which is @kbd{C-x q} with a prefix argument, performs a completely different function. It enters a recursive edit reading input from the keyboard, both when you type it during the definition of the macro, and when it is executed from the macro. During @@ -465,7 +472,7 @@ later with @code{load-file} (@pxref{Lisp Libraries}). If the file you save in is your init file @file{~/.emacs} (@pxref{Init File}) then the macro will be defined each time you run Emacs. - If you give @code{insert-kbd-macro} a numeric argument, it makes + If you give @code{insert-kbd-macro} a prefix argument, it makes additional Lisp code to record the keys (if any) that you have bound to @var{macroname}, so that the macro will be reassigned the same keys when you load the file. diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi index adf46ff19d7f..2b2be38cb379 100644 --- a/doc/emacs/m-x.texi +++ b/doc/emacs/m-x.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node M-x diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index 34b645dbc171..6d27e9782176 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2000-2018 Free Software Foundation, Inc. +@c Copyright (C) 2000-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mac OS / GNUstep @appendix Emacs and macOS / GNUstep diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index d7d7eddf6213..93dbce475952 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Maintaining @@ -1084,8 +1084,7 @@ started editing, and asks for confirmation for discarding the changes. If you agree, the fileset is reverted. If you don't want @kbd{C-x v u} to show a diff, set the variable @code{vc-revert-show-diff} to @code{nil} (you can still view the diff directly with @kbd{C-x v =}; -@pxref{Old Revisions}). Note that @kbd{C-x v u} cannot be reversed -with the usual undo commands (@pxref{Undo}), so use it with care. +@pxref{Old Revisions}). On locking-based version control systems, @kbd{C-x v u} leaves files unlocked; you must lock again to resume editing. You can also use diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 0ffa9f74ac67..bbeb4cb039ee 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mark @@ -17,11 +17,13 @@ one comes earlier in the text; each time you move point, the region changes. @cindex active region +@cindex activating the mark Setting the mark at a position in the text also @dfn{activates} it. When the mark is active, we say also that the region is active; Emacs indicates its extent by highlighting the text within it, using the @code{region} face (@pxref{Face Customization}). +@cindex deactivating the mark After certain non-motion commands, including any command that changes the text in the buffer, Emacs automatically @dfn{deactivates} the mark; this turns off the highlighting. You can also explicitly @@ -74,7 +76,7 @@ Set point and the mark around the text you drag across. @item mouse-3 Set the mark at point, then move point to where you click (@code{mouse-save-then-kill}). -@item @samp{Shifted cursor motion keys} +@item @r{Shifted cursor motion keys} Set the mark at point if the mark is inactive, then move point. @xref{Shift Selection}. @end table @@ -191,8 +193,8 @@ located before point, @kbd{M-@@} moves the mark backwards from its current position one word at a time. This command also accepts a numeric argument @var{n}, which tells it -to advance the mark by @var{n} words. A negative argument moves the -mark back by @var{n} words. +to advance the mark by @var{n} words. A negative argument +@minus{}@var{n} moves the mark back by @var{n} words. @kindex C-M-@@ @findex mark-sexp @@ -418,9 +420,9 @@ commands. The default behavior of the mark and region, in which setting the mark activates it and highlights the region, is called Transient Mark mode. This is a minor mode that is enabled by default. It can be -toggled with @kbd{M-x transient-mark-mode}, or with the @samp{Active -Region Highlighting} menu item in the @samp{Options} menu. Turning it -off switches Emacs to an alternative mode of operation: +toggled with @kbd{M-x transient-mark-mode}, or with the +@samp{Highlight Active Region} menu item in the @samp{Options} menu. +Turning it off switches Emacs to an alternative mode of operation: @itemize @bullet @item @@ -442,12 +444,13 @@ from point to the end of the buffer. Commands that act this way are identified in their own documentation. @end itemize +@cindex enabling Transient Mark mode temporarily While Transient Mark mode is off, you can activate it temporarily using @kbd{C-@key{SPC} C-@key{SPC}} or @kbd{C-u C-x C-x}. @table @kbd @item C-@key{SPC} C-@key{SPC} -@kindex C-SPC C-SPC@r{, disabling Transient Mark} +@kindex C-SPC C-SPC@r{, enabling Transient Mark mode temporarily} Set the mark at point (like plain @kbd{C-@key{SPC}}) and enable Transient Mark mode just once, until the mark is deactivated. (This is not really a separate command; you are using the @kbd{C-@key{SPC}} diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index e180d1d185d5..d17ef2dad631 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Minibuffer diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 27cd317fe3b6..75cca7219006 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex @@ -1646,7 +1646,9 @@ each one a unique @dfn{server name}, using the variable @code{server-name}. For example, @kbd{M-x set-variable @key{RET} server-name @key{RET} "foo" @key{RET}} sets the server name to @samp{foo}. The @code{emacsclient} program can specify a server by -name, using the @samp{-s} option (@pxref{emacsclient Options}). +name, using the @samp{-s} or the @samp{-f} option (@pxref{emacsclient +Options}), depending on whether or not the server uses a TCP socket +(@pxref{TCP Emacs server}). If you want to run multiple Emacs daemons (@pxref{Initial Options}), you can give each daemon its own server name like this: @@ -1711,18 +1713,20 @@ use @kbd{M-x server-generate-key} to get a random key. When you start a TCP Emacs server, Emacs creates a @dfn{server file} containing the TCP information to be used by @command{emacsclient} to connect to the server. The variable @code{server-auth-dir} specifies -the directory containing the server file; by default, this is +the default directory containing the server file; by default, this is @file{~/.emacs.d/server/}. In the absence of a local socket with file permissions, the permissions of this directory determine which users can have their @command{emacsclient} processes talk to the Emacs -server. +server. If @code{server-name} is an absolute file name, the server +file is created where specified by that file name. @vindex EMACS_SERVER_FILE@r{, environment variable} To tell @command{emacsclient} to connect to the server over TCP with a specific server file, use the @samp{-f} or @samp{--server-file} option, or set the @env{EMACS_SERVER_FILE} environment variable (@pxref{emacsclient Options}). If @code{server-auth-dir} is set to a -non-standard value, @command{emacsclient} needs an absolute file name +non-standard value, or if @code{server-name} is set to an absolute +file name, @command{emacsclient} needs an absolute file name to the server file, as the default @code{server-auth-dir} is hard-coded in @command{emacsclient} to be used as the directory for resolving relative filenames. @@ -1914,10 +1918,16 @@ evaluation performed is for side-effect rather than result. @item -s @var{server-name} @itemx --socket-name=@var{server-name} -Connect to the Emacs server named @var{server-name}. The server name -is given by the variable @code{server-name} on the Emacs server. If -this option is omitted, @command{emacsclient} connects to the first -server it finds. (This option is not supported on MS-Windows.) +Connect to the Emacs server named @var{server-name}. (This option is +not supported on MS-Windows.) The server name is given by the +variable @code{server-name} on the Emacs server. If this option is +omitted, @command{emacsclient} connects to the first server it finds. +If you set @code{server-name} of the Emacs server to an absolute file +name, give the same absolute file name as @var{server-name} to this +option to instruct @command{emacsclient} to connect to that server. +You need to use this option if you started Emacs as daemon +(@pxref{Initial Options}) and specified the name for the server +started by the daemon. @item -t @itemx --tty @@ -2413,10 +2423,13 @@ automatically back to binary. into hex. This is useful if you visit a file normally and then discover it is a binary file. - Ordinary text characters overwrite in Hexl mode. This is to reduce + Inserting text always overwrites in Hexl mode. This is to reduce the risk of accidentally spoiling the alignment of data in the file. -There are special commands for insertion. Here is a list of the -commands of Hexl mode: +Ordinary text characters insert themselves (i.e., overwrite with +themselves). There are commands for insertion of special characters +by their code. Most cursor motion keys, as well as @kbd{C-x C-s}, are +bound in Hexl mode to commands that produce the same effect. Here is +a list of other important commands special to Hexl mode: @c I don't think individual index entries for these commands are useful--RMS. @table @kbd @@ -2429,6 +2442,12 @@ Insert a byte with a code typed in octal. @item C-M-x Insert a byte with a code typed in hex. +@item C-M-a +Move to the beginning of a 512-byte page. + +@item C-M-e +Move to the end of a 512-byte page. + @item C-x [ Move to the beginning of a 1k-byte page. diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi index 2bbc17b26dbb..e01dfa2677b5 100644 --- a/doc/emacs/modes.texi +++ b/doc/emacs/modes.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Modes @@ -207,7 +207,7 @@ amount of work you can lose in case of a crash. @xref{Auto Save}. @item Electric Quote mode automatically converts quotation marks. For -example, it requotes text typed @t{`like this'} to text @t{‘like +example, it requotes text typed @kbd{`like this'} to text @t{‘like this’}. You can control what kind of text it operates in, and you can disable it entirely in individual buffers. @xref{Quotation Marks}. diff --git a/doc/emacs/msdos-xtra.texi b/doc/emacs/msdos-xtra.texi index 64ce8414fc0e..e0d3bcd40938 100644 --- a/doc/emacs/msdos-xtra.texi +++ b/doc/emacs/msdos-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index 679bdd3e83bf..fb876340b411 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Microsoft Windows diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index 6c0c5b239895..4ed13b8787cb 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1997, 1999-2018 Free Software Foundation, Inc. +@c Copyright (C) 1997, 1999-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node International @chapter International Character Set Support @@ -497,6 +497,10 @@ one of them selects that alternative. The keys @kbd{C-f}, @kbd{C-b}, do the highlighting in the buffer showing the possible characters, rather than in the echo area. + To enter characters according to the @dfn{pīnyīn} transliteration +method instead, use the @code{chinese-sisheng} input method. This is +a composition based method, where e.g. @kbd{pi1} results in @samp{pī}. + In Japanese input methods, first you input a whole word using phonetic spelling; then, after the word is in the buffer, Emacs converts it into one or more characters using a large dictionary. One diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index bc6afb7966a3..99e04740d3c8 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Packages diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi index 9ebc78ec6280..704cff16502a 100644 --- a/doc/emacs/picture-xtra.texi +++ b/doc/emacs/picture-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 46711aaf3051..4c42b1078de5 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Programs @@ -173,6 +173,7 @@ features that use them will also give you trouble. This includes the indentation commands (@pxref{Program Indent}) and Font Lock mode (@pxref{Font Lock}). +@cindex \( in strings The most likely problem case is when you want an opening delimiter at the start of a line inside a string. To avoid trouble, put an escape character (@samp{\}, in C and Emacs Lisp, @samp{/} in some @@ -1003,7 +1004,7 @@ delimiters to enclose the text in the region. If you supply a prefix argument to @kbd{M-;} when a region is active, that specifies the number of comment delimiters to add or delete. A positive argument @var{n} adds @var{n} delimiters, while a -negative argument @var{-n} removes @var{n} delimiters. +negative argument @minus{}@var{n} removes @var{n} delimiters. If the region is not active, and there is no existing comment on the current line, @kbd{M-;} adds a new comment to the current line. If @@ -1034,10 +1035,11 @@ lines. When a region is active (@pxref{Mark}), @kbd{C-x C-;} either comments or uncomments the lines in the region. If the region is not active, this command comments or uncomments the line point is on. With a positive prefix argument @var{n}, it operates on @var{n} lines -starting with the current one; with a negative @var{n}, it affects -@var{n} preceding lines. After invoking this command with a negative -argument, successive invocations with a positive argument will operate -on preceding lines as if the argument were negated. +starting with the current one; with a negative argument +@minus{}@var{n}, it affects @var{n} preceding lines. After invoking +this command with a negative argument, successive invocations with a +positive argument will operate on preceding lines as if the argument +were negated. @findex comment-kill @kindex C-u M-; @@ -1332,8 +1334,11 @@ count as blocks. @findex hs-show-block @findex hs-show-region @findex hs-hide-level +@findex hs-toggle-hiding +@findex hs-mouse-toggle-hiding @kindex C-c @@ C-h @kindex C-c @@ C-s +@kindex C-c @@ C-c @kindex C-c @@ C-M-h @kindex C-c @@ C-M-s @kindex C-c @@ C-r @@ -1346,7 +1351,7 @@ Hide the current block (@code{hs-hide-block}). @item C-c @@ C-s Show the current block (@code{hs-show-block}). @item C-c @@ C-c -@itemx C-x @@ C-e +@itemx C-c @@ C-e Either hide or show the current block (@code{hs-toggle-hiding}). @item S-mouse-2 Toggle hiding for the block you click on (@code{hs-mouse-toggle-hiding}). diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index 7d16d5391280..b47e5d30b2d4 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Registers @@ -152,7 +152,7 @@ during the collection process, you can use the following setting. @findex insert-register @kbd{C-x r i @var{r}} inserts in the buffer the text from register @var{r}. Normally it leaves point after the text and sets the mark -before, without activating it. With a numeric argument, it instead +before, without activating it. With a prefix argument, it instead puts point before the text and the mark after. @node Rectangle Registers @@ -168,7 +168,7 @@ in the buffer. @kindex C-x r r @item C-x r r @var{r} Copy the region-rectangle into register @var{r} -(@code{copy-rectangle-to-register}). With numeric argument, delete it as +(@code{copy-rectangle-to-register}). With prefix argument, delete it as well. @item C-x r i @var{r} Insert the rectangle stored in register @var{r} (if it contains a diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index c0ea12f6226b..94e1e63d44ed 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Rmail @@ -318,7 +318,7 @@ effect of a @kbd{d} command in most cases. It undeletes the current message if the current message is deleted. Otherwise it moves backward to previous messages until a deleted message is found, and undeletes that message. A numeric prefix argument serves as a repeat count, to -allow deletion of several messages in a single command. +allow undeletion of several messages in a single command. You can usually undo a @kbd{d} with a @kbd{u} because the @kbd{u} moves back to and undeletes the message that the @kbd{d} deleted. But diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi index 8f2be4b9a7e9..67da9daab87e 100644 --- a/doc/emacs/screen.texi +++ b/doc/emacs/screen.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Screen diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 053603e54fc1..0da037330d41 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Search @@ -99,31 +99,45 @@ text that matches the search string---using the @code{isearch} face that customize this highlighting. The current search string is also displayed in the echo area. - If you make a mistake typing the search string, type @key{DEL}. -Each @key{DEL} cancels the last character of the search string. -@xref{Error in Isearch}, for more about dealing with unsuccessful -search. +@cindex isearch input item +@cindex input item, isearch +@findex isearch-delete-char +@kindex DEL @r{(Incremental search)} + If you make a mistake typing the search string, type @key{DEL} +(@code{isearch-delete-char}). Each @key{DEL} cancels the last input +item entered during the search. Emacs records a new @dfn{input item} +whenever you type a command that changes the search string, the +position of point, the success or failure of the search, the direction +of the search, the position of the other end of the current search +result, or the ``wrappedness'' of the search. @xref{Error in +Isearch}, for more about dealing with unsuccessful search. @cindex exit incremental search @cindex incremental search, exiting +@findex isearch-exit +@kindex RET @r{(Incremental search)} When you are satisfied with the place you have reached, type -@key{RET}. This stops searching, leaving the cursor where the search -brought it. Also, any command not specially meaningful in searches -stops the searching and is then executed. Thus, typing @kbd{C-a} -exits the search and then moves to the beginning of the line; typing -one of the arrow keys exits the search and performs the respective -movement command; etc. @key{RET} is necessary only if the next -command you want to type is a printing character, @key{DEL}, -@key{RET}, or another character that is special within searches -(@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, @kbd{C-y}, @kbd{M-y}, -@kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some others described below). -You can fine-tune the commands that exit the search; see @ref{Not -Exiting Isearch}. +@key{RET} (@code{isearch-exit}). This stops searching, leaving the +cursor where the search brought it. Also, any command not specially +meaningful in searches stops the searching and is then executed. +Thus, typing @kbd{C-a} exits the search and then moves to the +beginning of the line; typing one of the arrow keys exits the search +and performs the respective movement command; etc. @key{RET} is +necessary only if the next command you want to type is a printing +character, @key{DEL}, @key{RET}, or another character that is special +within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, +@kbd{C-y}, @kbd{M-y}, @kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some others +described below). You can fine-tune the commands that exit the +search; see @ref{Not Exiting Isearch}. As a special exception, entering @key{RET} when the search string is empty launches nonincremental search (@pxref{Nonincremental Search}). (This can be customized; see @ref{Search Customizations}.) +@findex isearch-abort +@findex isearch-cancel +@kindex C-g C-g @r{(Incremental Search)} +@kindex ESC ESC ESC @r{(Incremental Search)} To abandon the search and return to the place where you started, type @kbd{@key{ESC} @key{ESC} @key{ESC}} (@code{isearch-cancel}) or @kbd{C-g C-g} (@code{isearch-abort}). @@ -146,13 +160,18 @@ matches that begin after it. @node Repeat Isearch @subsection Repeating Incremental Search +@kindex C-s @r{(Incremental Search)} +@kindex C-r @r{(Incremental Search)} +@findex isearch-repeat-forward +@findex isearch-repeat-backward Suppose you search forward for @samp{FOO} and find a match, but not the one you expected to find: the @samp{FOO} you were aiming for -occurs later in the buffer. In this event, type another @kbd{C-s} to -move to the next occurrence of the search string. You can repeat this -any number of times. If you overshoot, you can cancel some @kbd{C-s} -characters with @key{DEL}. Similarly, each @kbd{C-r} in a backward -incremental search repeats the backward search. +occurs later in the buffer. In this event, type another @kbd{C-s} +(@code{isearch-repeat-forward}) to move to the next occurrence of the +search string. You can repeat this any number of times. If you +overshoot, you can cancel some @kbd{C-s} commands with @key{DEL}. +Similarly, each @kbd{C-r} (@code{isearch-repeat-backward}) in a +backward incremental search repeats the backward search. @cindex lazy search highlighting If you pause for a little while during incremental search, Emacs @@ -192,12 +211,15 @@ going past the original starting point of the search, it changes to you have already seen. @cindex search ring +@findex isearch-ring-advance +@findex isearch-ring-retreat @kindex M-n @r{(Incremental search)} @kindex M-p @r{(Incremental search)} @vindex search-ring-max To reuse earlier search strings, use the @dfn{search ring}. The -commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a -search string to reuse. These commands leave the selected search ring +commands @kbd{M-p} (@code{isearch-ring-retreat}) and @kbd{M-n} +(@code{isearch-ring-advance}) move through the ring to pick a search +string to reuse. These commands leave the selected search ring element in the minibuffer, where you can edit it. Type @kbd{C-s}/@kbd{C-r} or @key{RET} to accept the string and start searching for it. The number of most recently used search strings @@ -206,14 +228,16 @@ saved in the search ring is specified by the variable @cindex incremental search, edit search string @cindex interactively edit search string +@findex isearch-edit-string @kindex M-e @r{(Incremental search)} @kindex mouse-1 @r{in the minibuffer (Incremental Search)} To edit the current search string in the minibuffer without -replacing it with items from the search ring, type @kbd{M-e} or click -@kbd{mouse-1} in the minibuffer. Type @key{RET}, @kbd{C-s} or -@kbd{C-r} to finish editing the string and search for it. Type -@kbd{C-f} or @kbd{@key{RIGHT}} to add to the search string characters -following point from the buffer from which you started the search. +replacing it with items from the search ring, type @kbd{M-e} +(@code{isearch-edit-string}) or click @kbd{mouse-1} in the minibuffer. +Type @key{RET}, @kbd{C-s} or @kbd{C-r} to finish editing the string +and search for it. Type @kbd{C-f} or @kbd{@key{RIGHT}} to add to the +search string characters following point from the buffer from which +you started the search. @node Isearch Yank @subsection Isearch Yanking @@ -283,14 +307,15 @@ string that failed to match is highlighted using the face @code{isearch-fail}. At this point, there are several things you can do. If your string -was mistyped, you can use @key{DEL} to erase some of it and correct -it, or you can type @kbd{M-e} and edit it. If you like the place you -have found, you can type @key{RET} to remain there. Or you can type -@kbd{C-g}, which removes from the search string the characters that -could not be found (the @samp{T} in @samp{FOOT}), leaving those that -were found (the @samp{FOO} in @samp{FOOT}). A second @kbd{C-g} at -that point cancels the search entirely, returning point to where it -was when the search started. +was mistyped, use @key{DEL} to cancel a previous input item +(@pxref{Basic Isearch}), @kbd{C-M-w} to erase one character at a time, +or @kbd{M-e} to edit it. If you like the place you have found, you +can type @key{RET} to remain there. Or you can type @kbd{C-g}, which +removes from the search string the characters that could not be found +(the @samp{T} in @samp{FOOT}), leaving those that were found (the +@samp{FOO} in @samp{FOOT}). A second @kbd{C-g} at that point cancels +the search entirely, returning point to where it was when the search +started. @cindex quitting (in search) @kindex C-g @r{(Incremental search)} @@ -348,17 +373,22 @@ following methods: @itemize @bullet @item -Type @kbd{C-q}, followed by a non-graphic character or a sequence of -octal digits. This adds a character to the search string, similar to -inserting into a buffer using @kbd{C-q} (@pxref{Inserting Text}). For -example, @kbd{C-q C-s} during incremental search adds the -@samp{control-S} character to the search string. +@findex isearch-quote-char +@kindex C-q @r{(Incremental Search)} +Type @kbd{C-q} (@code{isearch-quote-char}), followed by a non-graphic +character or a sequence of octal digits. This adds a character to the +search string, similar to inserting into a buffer using @kbd{C-q} +(@pxref{Inserting Text}). For example, @kbd{C-q C-s} during +incremental search adds the @samp{control-S} character to the search +string. @item -Type @kbd{C-x 8 @key{RET}}, followed by a Unicode name or code-point -in hex. This adds the specified character into the search string, -similar to the usual @code{insert-char} command (@pxref{Inserting -Text}). +@findex isearch-char-by-name +@kindex C-x 8 RET @r{(Incremental Search)} +Type @kbd{C-x 8 @key{RET}} (@code{isearch-char-by-name}), followed by +a Unicode name or code-point in hex. This adds the specified +character into the search string, similar to the usual +@code{insert-char} command (@pxref{Inserting Text}). @item @kindex C-^ @r{(Incremental Search)} @@ -391,12 +421,20 @@ current buffer afterwards. @code{isearch-occur}, which runs @code{occur} with the current search string. @xref{Other Repeating Search, occur}. +@findex isearch-query-replace +@findex isearch-query-replace-regexp @kindex M-% @r{(Incremental search)} - Typing @kbd{M-%} in incremental search invokes @code{query-replace} -or @code{query-replace-regexp} (depending on search mode) with the -current search string used as the string to replace. A negative -prefix argument means to replace backward. @xref{Query Replace}. - +@kindex C-M-% @r{(Incremental search)} + Typing @kbd{M-%} (@code{isearch-query-replace}) in incremental +search invokes @code{query-replace} or @code{query-replace-regexp} +(depending on search mode) with the current search string used as the +string to replace. A negative prefix argument means to replace +backward. @xref{Query Replace}. Typing @kbd{C-M-%} +(@code{isearch-query-replace-regexp}) invokes +@code{query-replace-regexp} with the current search string used as the +regexp to replace. + +@findex isearch-complete @kindex M-TAB @r{(Incremental search)} Typing @kbd{M-@key{TAB}} in incremental search invokes @code{isearch-complete}, which attempts to complete the search string @@ -590,15 +628,17 @@ Search backward for @var{words}, using a nonincremental word search. Search the Web for the text in region. @end table -@kindex M-s w @findex isearch-forward-word +@findex isearch-toggle-word +@kindex M-s w To begin a forward incremental word search, type @kbd{M-s w}. If incremental search is not already active, this runs the command @code{isearch-forward-word}. If incremental search is already active -(whether a forward or backward search), @kbd{M-s w} switches to a word -search while keeping the direction of the search and the current -search string unchanged. You can toggle word search back off by -typing @kbd{M-s w} again. +(whether a forward or backward search), @kbd{M-s w} runs the command +@code{isearch-toggle-word}, which switches to a word search while +keeping the direction of the search and the current search string +unchanged. You can toggle word search back off by typing @kbd{M-s w} +again. @findex word-search-forward @findex word-search-backward @@ -625,6 +665,8 @@ matching}) has no effect on them. @kindex M-s M-w @findex eww-search-words @vindex eww-search-prefix +@cindex Internet search +@cindex search Internet for keywords To search the Web for the text in region, type @kbd{M-s M-w}. This command performs an Internet search for the words in region using the search engine whose @acronym{URL} is specified by the variable @@ -786,7 +828,7 @@ Expressions,,, elisp, The Emacs Lisp Reference Manual}, for additional features used mainly in Lisp programs. Regular expressions have a syntax in which a few characters are -special constructs and the rest are @dfn{ordinary}. An ordinary +@dfn{special constructs} and the rest are @dfn{ordinary}. An ordinary character matches that same character and nothing else. The special characters are @samp{$^.*+?[\}. The character @samp{]} is special if it ends a character alternative (see below). The character @samp{-} @@ -1268,14 +1310,14 @@ 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 @sc{u+249c parenthesized latin small letter a} and @sc{u+2100 -account of} (which looks like a small @code{a} over @code{c}). +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}). 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 @sc{u+fb00 -latin small ligature ff}. Character sequences that are not identical, +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}. @@ -1423,8 +1465,7 @@ multiple digits, and the value of @samp{\@var{d}} is @code{nil} if the @samp{\#} here too stands for the number of already-completed replacements. - Repeating our example to exchange @samp{x} and @samp{y}, we can thus -do it also this way: + For example, we can exchange @samp{x} and @samp{y} this way: @example M-x replace-regexp @key{RET} \(x\)\|y @key{RET} @@ -1601,8 +1642,9 @@ replacement has already been made, @key{DEL} and @key{SPC} are equivalent in this situation; both move to the next occurrence. You can type @kbd{C-r} at this point (see below) to alter the replaced -text. You can also type @kbd{C-x u} to undo the replacement; this exits -the @code{query-replace}, so if you want to do further replacement you +text. You can also undo the replacement with the @code{undo} command +(e.g., type @kbd{C-x u}; @pxref{Undo}); this exits the +@code{query-replace}, so if you want to do further replacement you must use @kbd{C-x @key{ESC} @key{ESC} @key{RET}} to restart (@pxref{Repetition}). diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi index 0c5caf0ff982..f5d69abf2798 100644 --- a/doc/emacs/sending.texi +++ b/doc/emacs/sending.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Sending Mail diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index 96262a5eef39..900f743ea9ef 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Text @@ -428,10 +428,10 @@ using straight apostrophes @t{'like this'} or double-quotes @t{"like this"}. Another common way is the curved quote convention, which uses left and right single or double quotation marks `@t{like this}' or ``@t{like this}''@footnote{ -The curved single quote characters are U+2018 LEFT SINGLE QUOTATION -MARK and U+2018 RIGHT SINGLE QUOTATION MARK; the curved double quotes -are U+201C LEFT DOUBLE QUOTATION MARK and U+201D RIGHT DOUBLE -QUOTATION MARK. On text terminals which cannot display these +The curved single quote characters are U+2018 @sc{left single quotation +mark} and U+2019 @sc{right single quotation mark}; the curved double quotes +are U+201C @sc{left double quotation mark} and U+201D @sc{right double +quotation mark}. On text terminals which cannot display these characters, the Info reader might show them as the typewriter ASCII quote characters. }. In text files, typewriter quotes are simple and @@ -439,8 +439,8 @@ portable; curved quotes are less ambiguous and typically look nicer. @vindex electric-quote-chars Electric Quote mode makes it easier to type curved quotes. As you -type characters it optionally converts @t{`} to ‘, @t{'} to ', -@t{``} to ``, and @t{''} to ''. It's possible to change the +type characters it optionally converts @kbd{`} to @t{‘}, @kbd{'} to @t{’}, +@kbd{``} to @t{“}, and @kbd{''} to @t{”}. It's possible to change the default quotes listed above, by customizing the variable @code{electric-quote-chars}, a list of four characters, where the items correspond to the left single quote, the right single quote, the diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index bb05378f4c94..2fe548780584 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex @@ -1400,9 +1400,10 @@ to the FSF@. For the reasons behind this, see @url{https://www.gnu.org/licenses/why-assign.html}. Copyright assignment is a simple process. Residents of some countries -can do it entirely electronically. We can help you get started, and -answer any questions you may have (or point you to the people with the -answers), at the @email{emacs-devel@@gnu.org} mailing list. +can do it entirely electronically. We can help you get started, +including sending you the forms you should fill, and answer any +questions you may have (or point you to the people with the answers), +at the @email{emacs-devel@@gnu.org} mailing list. (Please note: general discussion about why some GNU projects ask for a copyright assignment is off-topic for emacs-devel. diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi index 17d6a3b55b96..ca919e847e48 100644 --- a/doc/emacs/vc-xtra.texi +++ b/doc/emacs/vc-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included in emacs-xtra.texi when producing the printed diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi index 35dd6d1235a5..1c17695c8dda 100644 --- a/doc/emacs/vc1-xtra.texi +++ b/doc/emacs/vc1-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in vc-xtra.texi (when producing the diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 7dbd680b9b28..c4c724e6bc2c 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Windows @@ -48,8 +48,8 @@ other windows at all. However, there are other commands such as @kbd{C-x 4 b} that select a different window and switch buffers in it. Also, all commands that display information in a window, including (for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b} -(@code{list-buffers}), work by switching buffers in a nonselected -window without affecting the selected window. +(@code{list-buffers}), usually work by displaying buffers in a +nonselected window without affecting the selected window. When multiple windows show the same buffer, they can have different regions, because they can have different values of point. However, @@ -255,6 +255,8 @@ Delete all windows in the selected frame except the selected window Delete the selected window and kill the buffer that was showing in it (@code{kill-buffer-and-window}). The last character in this key sequence is a zero. +@item M-x delete-windows-on @key{RET} @var{buffer} @key{RET} +Delete windows showing the specified @var{buffer}. @item C-x ^ Make selected window taller (@code{enlarge-window}). @item C-x @} @@ -290,6 +292,11 @@ selected window. whole frame. (This command cannot be used while the minibuffer window is active; attempting to do so signals an error.) + @kbd{M-x delete-windows-on} deletes windows that show a specific +buffer. It prompts for the buffer, defaulting to the current buffer. +With prefix argument of zero, @kbd{C-u 0}, this command deletes +windows only on the current display's frames. + @cindex resize window @cindex resizing windows @kindex C-x ^ @@ -340,11 +347,9 @@ heights of all the windows in the selected frame. in response to a user command. There are several different ways in which commands do this. - Many commands, like @kbd{C-x C-f} (@code{find-file}), display the -buffer by ``taking over'' the selected window, expecting that the -user's attention will be diverted to that buffer. These commands -usually work by calling @code{switch-to-buffer} internally -(@pxref{Select Buffer}). + Many commands, like @kbd{C-x C-f} (@code{find-file}), by default +display the buffer by ``taking over'' the selected window, expecting +that the user's attention will be diverted to that buffer. Some commands try to display intelligently, trying not to take over the selected window, e.g., by splitting off a new window and @@ -367,10 +372,9 @@ key (@pxref{Pop Up Window}). Commands with names ending in @code{-other-frame} behave like @code{display-buffer}, except that they (i) never display in the -selected window and (ii) prefer to create a new frame to display the -desired buffer instead of splitting a window---as though the variable -@code{pop-up-frames} is set to @code{t} (@pxref{Window Choice}). -Several of these commands are bound in the @kbd{C-x 5} prefix key. +selected window and (ii) prefer to either create a new frame or use a +window on some other frame to display the desired buffer. Several of +these commands are bound in the @kbd{C-x 5} prefix key. @menu * Window Choice:: How @code{display-buffer} works. @@ -383,33 +387,61 @@ Several of these commands are bound in the @kbd{C-x 5} prefix key. The @code{display-buffer} command (as well as commands that call it internally) chooses a window to display by following the steps given -below. @xref{Choosing Window,,Choosing a Window for Display, elisp, -The Emacs Lisp Reference Manual}, for details about how to alter this -sequence of steps. +below. @xref{Choosing Window,,Choosing a Window for Displaying a +Buffer, elisp, The Emacs Lisp Reference Manual}, for details about how +to alter this sequence of steps. @itemize -@vindex same-window-buffer-names -@vindex same-window-regexps @item -First, check if the buffer should be displayed in the selected window -regardless of other considerations. You can tell Emacs to do this by -adding the desired buffer's name to the list -@code{same-window-buffer-names}, or adding a matching regular -expression to the list @code{same-window-regexps}. By default, these -variables are @code{nil}, so this step is skipped. +If the buffer should be displayed in the selected window regardless of +other considerations, reuse the selected window. By default, this +step is skipped, but you can tell Emacs not to skip it by adding a +regular expression matching the buffer's name together with a +reference to the @code{display-buffer-same-window} action function +(@pxref{Buffer Display Action Functions,,Action Functions for Buffer +Display, elisp, The Emacs Lisp Reference Manual}) to the option +@code{display-buffer-alist} (@pxref{Choosing Window,,Choosing a Window +for Displaying a Buffer, elisp, The Emacs Lisp Reference Manual}). +For example, to display the buffer @file{*scratch*} preferably in the +selected window write: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '("\\*scratch\\*" (display-buffer-same-window))) +@end group +@end example + +By default, @code{display-buffer-alist} is @code{nil}. @item Otherwise, if the buffer is already displayed in an existing window, -reuse that window. Normally, only windows on the selected frame -are considered, but windows on other frames are also reusable if you -change @code{pop-up-frames} (see below) to @code{t}. +reuse that window. Normally, only windows on the selected frame are +considered, but windows on other frames are also reusable if you use +the corresponding @code{reusable-frames} action alist entry +(@pxref{Buffer Display Action Alists,,Action Alists for Buffer +Display, elisp, The Emacs Lisp Reference Manual}). See the +next step for an example of how to do that. -@vindex pop-up-frames @item Otherwise, optionally create a new frame and display the buffer there. -By default, this step is skipped. To enable it, change the variable -@code{pop-up-frames} to a non-@code{nil} value. The special value -@code{graphic-only} means to do this only on graphical displays. +By default, this step is skipped. To enable it, change the value of +the option @code{display-buffer-base-action} (@pxref{Choosing +Window,,Choosing a Window for Displaying a Buffer, elisp, The Emacs +Lisp Reference Manual}) as follows: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . 0))) +@end group +@end example + +This customization will also try to make the preceding step search for +a reusable window on all visible or iconified frames. @item Otherwise, try to create a new window by splitting a window on the @@ -429,9 +461,9 @@ window was not split before (to avoid excessive splitting). @item Otherwise, display the buffer in a window previously showing it. -Normally, only windows on the selected frame are considered, but if -@code{pop-up-frames} is non-@code{nil} the window may be also on another -frame. +Normally, only windows on the selected frame are considered, but with +a suitable @code{reusable-frames} action alist entry (see above) the +window may be also on another frame. @item Otherwise, display the buffer in an existing window on the selected @@ -442,41 +474,35 @@ If all the above methods fail for whatever reason, create a new frame and display the buffer there. @end itemize -A more advanced and flexible way to customize the behavior of -@code{display-buffer} is by using the option @code{display-buffer-alist} -mentioned in the next section. - @node Temporary Displays @subsection Displaying non-editable buffers. -@cindex pop-up windows @cindex temporary windows Some buffers are shown in windows for perusal rather than for editing. Help commands (@pxref{Help}) typically use a buffer called @file{*Help*} for that purpose, minibuffer completion (@pxref{Completion}) uses a -buffer called @file{*Completions*} instead. Such buffers are usually +buffer called @file{*Completions*}, etc. Such buffers are usually displayed only for a short period of time. Normally, Emacs chooses the window for such temporary displays via -@code{display-buffer} as described above. The @file{*Completions*} -buffer, on the other hand, is normally displayed in a window at the -bottom of the selected frame, regardless of the number of windows -already shown on that frame. +@code{display-buffer}, as described in the previous subsection. The +@file{*Completions*} buffer, on the other hand, is normally displayed +in a window at the bottom of the selected frame, regardless of the +number of windows already shown on that frame. If you prefer Emacs to display a temporary buffer in a different -fashion, we recommend customizing the variable -@code{display-buffer-alist} (@pxref{Choosing Window,,Choosing a Window -for Display, elisp, The Emacs Lisp Reference Manual}). For example, -to display @file{*Completions*} by splitting a window as described in -the previous section, use the following form in your initialization -file (@pxref{Init File}): +fashion, customize the variable @code{display-buffer-alist} +(@pxref{Choosing Window,,Choosing a Window for Displaying a Buffer, +elisp, The Emacs Lisp Reference Manual}) appropriately. For example, +to display @file{*Completions*} always below the selected window, use +the following form in your initialization file (@pxref{Init File}): @example @group (customize-set-variable 'display-buffer-alist - '(("\\*Completions\\*" display-buffer-pop-up-window))) + '(("\\*Completions\\*" display-buffer-below-selected))) @end group @end example @@ -484,10 +510,10 @@ file (@pxref{Init File}): The @file{*Completions*} buffer is also special in the sense that Emacs usually tries to make its window just as large as necessary to display all of its contents. To resize windows showing other -temporary displays like, for example, the @file{*Help*} buffer -accordingly, turn on the minor mode (@pxref{Minor Modes}) -@code{temp-buffer-resize-mode} (@pxref{Temporary Displays,,Temporary -Displays, elisp, The Emacs Lisp Reference Manual}). +temporary displays, like, for example, the @file{*Help*} buffer, turn +on the minor mode (@pxref{Minor Modes}) @code{temp-buffer-resize-mode} +(@pxref{Temporary Displays,,Temporary Displays, elisp, The Emacs Lisp +Reference Manual}). @vindex temp-buffer-max-height @vindex temp-buffer-max-width @@ -495,7 +521,7 @@ Displays, elisp, The Emacs Lisp Reference Manual}). can be controlled by customizing the options @code{temp-buffer-max-height} and @code{temp-buffer-max-width} (@pxref{Temporary Displays,,Temporary Displays, elisp, The Emacs Lisp -Reference Manual}) and cannot exceed the size of the containing frame. +Reference Manual}), and cannot exceed the size of the containing frame. @node Window Convenience @@ -527,7 +553,7 @@ buffer. @xref{Follow Mode}. between neighboring windows in a frame. @kbd{M-x windmove-right} selects the window immediately to the right of the currently selected one, and similarly for the left, up, and down -counterparts. @kbd{M-x windmove-default-keybindings} binds these +counterparts. @w{@kbd{M-x windmove-default-keybindings}} binds these commands to @kbd{S-right} etc.; doing so disables shift selection for those keys (@pxref{Shift Selection}). diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index db2c6ffafd28..d8b70ef90098 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node X Resources @@ -46,6 +46,11 @@ this file do not take effect immediately, because the X server stores its own list of resources; to update it, use the command @command{xrdb}---for instance, @samp{xrdb ~/.Xdefaults}. + Settings specified via X resources in general override the +equivalent settings in Emacs init files (@pxref{Init File}), in +particular for parameters of the initial frame (@pxref{Frame +Parameters}). + @cindex registry, setting resources (MS-Windows) (MS-Windows systems do not support X resource files; on such systems, Emacs looks for X resources in the Windows Registry, first under the diff --git a/doc/lispintro/ChangeLog.1 b/doc/lispintro/ChangeLog.1 index 9e15544630c4..2df76f4e029e 100644 --- a/doc/lispintro/ChangeLog.1 +++ b/doc/lispintro/ChangeLog.1 @@ -782,7 +782,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in index 71739fdb35fe..efe5a1e00469 100644 --- a/doc/lispintro/Makefile.in +++ b/doc/lispintro/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994-1999, 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-1999, 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/lispintro/README b/doc/lispintro/README index c39f6d2402a3..fd4ede1dfa02 100644 --- a/doc/lispintro/README +++ b/doc/lispintro/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps index cc1d5c7c4092..dff7130952eb 100644 --- a/doc/lispintro/cons-1.eps +++ b/doc/lispintro/cons-1.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:26:58 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps index 00d08e423d9d..ccba32056ab1 100644 --- a/doc/lispintro/cons-2.eps +++ b/doc/lispintro/cons-2.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:26:39 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps index 26f690a14353..3beaa5b640b6 100644 --- a/doc/lispintro/cons-2a.eps +++ b/doc/lispintro/cons-2a.eps @@ -4,7 +4,7 @@ %%CreationDate: Tue Mar 14 15:09:30 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps index d75620e28e4d..6bae8f74116a 100644 --- a/doc/lispintro/cons-3.eps +++ b/doc/lispintro/cons-3.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:25:41 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps index 154df88e5310..fd056b551964 100644 --- a/doc/lispintro/cons-4.eps +++ b/doc/lispintro/cons-4.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:25:06 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps index d5c08ac16350..d3f7581eab9b 100644 --- a/doc/lispintro/cons-5.eps +++ b/doc/lispintro/cons-5.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:27:28 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps index e3a7f0a7dd25..4569b21fde92 100644 --- a/doc/lispintro/drawers.eps +++ b/doc/lispintro/drawers.eps @@ -9,7 +9,7 @@ %%EndComments %%BeginProlog -% Copyright (C) 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index be3e938b2456..c4b19a4e50a5 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -113,7 +113,7 @@ Edition @value{edition-number}, @value{update-date} Distributed with Emacs version @value{EMACSVER}. @end ifnottex @sp 1 -Copyright @copyright{} 1990--1995, 1997, 2001--2018 Free Software +Copyright @copyright{} 1990--1995, 1997, 2001--2019 Free Software Foundation, Inc. @sp 1 @@ -4636,7 +4636,7 @@ languages, not just Lisp, and C, and it works with non-programming text as well. For example, @code{xref-find-definitions} will jump to the various nodes in the Texinfo source file of this document (provided that you've run the @command{etags} utility to record all -the nodes in the manuals that come with Emacs; @pxref{Create tags +the nodes in the manuals that come with Emacs; @pxref{Create Tags Table,,, emacs, The GNU Emacs Manual}). To use the @code{xref-find-definitions} command, type @kbd{M-.} @@ -14824,7 +14824,7 @@ According to its documentation as shown by @kbd{C-h f} (the @code{describe-function} command), the @code{find-file-noselect} function reads the named file into a buffer and returns the buffer. (Its most recent version includes an optional @var{wildcards} argument, -too, as well as another to read a file literally and an other you +too, as well as another to read a file literally and another to suppress warning messages. These optional arguments are irrelevant.) However, the @code{find-file-noselect} function does not select the diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps index 4b6d8275cb5c..a78a60cb42f1 100644 --- a/doc/lispintro/lambda-1.eps +++ b/doc/lispintro/lambda-1.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:31:53 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps index 473785c81afe..a7c2e7b830b3 100644 --- a/doc/lispintro/lambda-2.eps +++ b/doc/lispintro/lambda-2.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:33:09 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps index c1a251682f85..d73a9d691047 100644 --- a/doc/lispintro/lambda-3.eps +++ b/doc/lispintro/lambda-3.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:33:49 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1 index 42240ae28806..a271d2158cc2 100644 --- a/doc/lispref/ChangeLog.1 +++ b/doc/lispref/ChangeLog.1 @@ -13989,7 +13989,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1998-2018 Free Software Foundation, Inc. + Copyright (C) 1998-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in index 98ca90a96d43..74e3878a37e8 100644 --- a/doc/lispref/Makefile.in +++ b/doc/lispref/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1990-1996, 1998-2018 Free Software Foundation, Inc. +# Copyright (C) 1990-1996, 1998-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/lispref/README b/doc/lispref/README index cca433868b29..3e121bfd2bbc 100644 --- a/doc/lispref/README +++ b/doc/lispref/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. -*- outline -*- +Copyright (C) 2001-2019 Free Software Foundation, Inc. -*- outline -*- See the end of the file for license conditions. diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi index 087e69452038..558040ebf67e 100644 --- a/doc/lispref/abbrevs.texi +++ b/doc/lispref/abbrevs.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1994, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Abbrevs @@ -472,7 +472,7 @@ Set the property @var{prop} of abbrev table @var{table} to value @var{val}. @defun abbrev-table-get table prop Return the property @var{prop} of abbrev table @var{table}, or @code{nil} -if the abbrev has no such property. +if @var{table} has no such property. @end defun The following properties have special meaning: diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi index 556203b69f00..6066e2663873 100644 --- a/doc/lispref/anti.texi +++ b/doc/lispref/anti.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2002-2018 Free Software Foundation, Inc. +@c Copyright (C) 1999, 2002-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c This node must have no pointers. diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi index df39479bb612..c4c346628bf9 100644 --- a/doc/lispref/back.texi +++ b/doc/lispref/back.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c @c %**start of header diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi index 8ce8f6180d1e..6a5b6d1661d4 100644 --- a/doc/lispref/backups.texi +++ b/doc/lispref/backups.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1995, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Backups and Auto-Saving diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi index b030d2e63a84..6ad1fb1824a2 100644 --- a/doc/lispref/buffers.texi +++ b/doc/lispref/buffers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Buffers @@ -661,7 +661,8 @@ visiting a file or if the time has been explicitly cleared by too. For instance, in a Dired buffer listing a directory, it returns the last modification time of that directory, as recorded by Dired. -If the buffer is not visiting a file, this function returns @minus{}1. +If the buffer is visiting a file that doesn't exist, this function +returns @minus{}1. @end defun @defun set-visited-file-modtime &optional time @@ -939,6 +940,10 @@ This is a normal hook run whenever the buffer list changes. Functions (@pxref{Creating Buffers}), @code{rename-buffer} (@pxref{Buffer Names}), @code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see above) and @code{select-window} (@pxref{Selecting Windows}). + +Functions run by this hook should avoid calling @code{select-window} +with a nil @var{norecord} argument or @code{with-temp-buffer} since +either may lead to infinite recursion. @end defvar @node Creating Buffers diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 49c839a89714..ad31240beff1 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Command Loop @@ -136,6 +136,9 @@ start with a capital, e.g., @code{"use (system-name) instead."}); @code{t}; any other symbol, which should be an alternative function to use in Lisp code. +Generic functions (@pxref{Generic Functions}) cannot be turned into +commands by adding the @code{interactive} form to them. + @menu * Using Interactive:: General rules for @code{interactive}. * Interactive Codes:: The standard letter-codes for reading arguments @@ -1009,7 +1012,8 @@ If the last event came from a keyboard macro, the value is @code{macro}. sequence of text that has the @code{display} or @code{composition} property, or is invisible. Therefore, after a command finishes and returns to the command loop, if point is within such a sequence, the -command loop normally moves point to the edge of the sequence. +command loop normally moves point to the edge of the sequence, making this +sequence effectively intangible. A command can inhibit this feature by setting the variable @code{disable-point-adjustment}: @@ -1391,9 +1395,9 @@ The time at which the event occurred, as an integer number of milliseconds since a system-dependent initial time. @item @var{object} -Either @code{nil} if there is no string-type text property at the -click position, or a cons cell of the form (@var{string} -. @var{string-pos}) if there is one: +Either @code{nil}, which means the click occurred on buffer text, or a +cons cell of the form @w{(@var{string} . @var{string-pos})} if there +is a string from a text property or an overlay at the click position. @table @asis @item @var{string} @@ -1424,15 +1428,15 @@ clicks on margins, @var{col} is measured from the left edge of the margin area and @var{row} is measured from the top of the margin area. @item @var{image} -This is the image object on which the click occurred. It is either -@code{nil} if there is no image at the position clicked on, or it is -an image object as returned by @code{find-image} if click was in an image. +If there is an image at the click location, this is the image object +as returned by @code{find-image} (@pxref{Defining Images}); otherwise +this is @code{nil}. @item @var{dx}, @var{dy} -These are the pixel coordinates of the click, relative to -the top left corner of @var{object}, which is @code{(0 . 0)}. If -@var{object} is @code{nil}, the coordinates are relative to the top -left corner of the character glyph clicked on. +These are the pixel coordinates of the click, relative to the top left +corner of @var{object}, which is @code{(0 . 0)}. If @var{object} is +@code{nil}, which stands for a buffer, the coordinates are relative to +the top left corner of the character glyph clicked on. @item @var{width}, @var{height} These are the pixel width and height of @var{object} or, if this is @@ -2034,8 +2038,8 @@ position such events have. @defun posnp object This function returns non-@code{nil} if @var{object} is a mouse -position list, in either of the formats documented in @ref{Click -Events}); and @code{nil} otherwise. +position list, in the format documented in @ref{Click Events}); and +@code{nil} otherwise. @end defun @cindex mouse position list, accessing @@ -2063,8 +2067,8 @@ is undefined. @defun posn-x-y position Return the pixel-based x and y coordinates in @var{position}, as a -cons cell @code{(@var{x} . @var{y})}. These coordinates are relative -to the window given by @code{posn-window}. +cons cell @w{@code{(@var{x} . @var{y})}}. These coordinates are +relative to the window given by @code{posn-window}. This example shows how to convert the window-relative coordinates in the text area of a window into frame-relative coordinates: @@ -2082,11 +2086,11 @@ POSITION is assumed to lie in a window text area." @end defun @defun posn-col-row position -This function returns a cons cell @code{(@var{col} . @var{row})}, +This function returns a cons cell @w{@code{(@var{col} . @var{row})}}, containing the estimated column and row corresponding to buffer -position in @var{position}. The return value is given in units of the -frame's default character width and default line height (including -spacing), as computed from the @var{x} and @var{y} values +position described by @var{position}. The return value is given in +units of the frame's default character width and default line height +(including spacing), as computed from the @var{x} and @var{y} values corresponding to @var{position}. (So, if the actual characters have non-default sizes, the actual row and column may differ from these computed values.) @@ -2098,7 +2102,7 @@ Lines}), it is @emph{not} included in the @var{row} count. @defun posn-actual-col-row position Return the actual row and column in @var{position}, as a cons cell -@code{(@var{col} . @var{row})}. The values are the actual row and +@w{@code{(@var{col} . @var{row})}}. The values are the actual row and column numbers in the window given by @var{position}. @xref{Click Events}, for details. The function returns @code{nil} if @var{position} does not include actual position values; in that case @@ -2111,33 +2115,37 @@ character units, use @code{posn-col-row} instead. @end defun @defun posn-string position -Return the string object in @var{position}, either @code{nil}, or a -cons cell @code{(@var{string} . @var{string-pos})}. +Return the string object described by @var{position}, either +@code{nil} (which means @var{position} describes buffer text), or a +cons cell @w{@code{(@var{string} . @var{string-pos})}}. @end defun @defun posn-image position -Return the image object in @var{position}, either @code{nil}, or an -image @code{(image ...)}. +Return the image object in @var{position}, either @code{nil} (if +there's no image at @var{position}), or an image spec @w{@code{(image +@dots{})}}. @end defun @defun posn-object position -Return the image or string object in @var{position}, either -@code{nil}, an image @code{(image ...)}, or a cons cell -@code{(@var{string} . @var{string-pos})}. +Return the image or string object described by @var{position}, either +@code{nil} (which means @var{position} describes buffer text), an +image @w{@code{(image @dots{})}}, or a cons cell +@w{@code{(@var{string} . @var{string-pos})}}. @end defun @defun posn-object-x-y position Return the pixel-based x and y coordinates relative to the upper left -corner of the object in @var{position} as a cons cell @code{(@var{dx} -. @var{dy})}. If the @var{position} is on buffer text, return the -relative position of the buffer-text character closest to that -position. +corner of the object described by @var{position}, as a cons cell +@w{@code{(@var{dx} . @var{dy})}}. If the @var{position} describes +buffer text, return the relative coordinates of the buffer-text character +closest to that position. @end defun @defun posn-object-width-height position -Return the pixel width and height of the object in @var{position} as a -cons cell @code{(@var{width} . @var{height})}. If the @var{position} -is a buffer position, return the size of the character at that position. +Return the pixel width and height of the object described by +@var{position}, as a cons cell @code{(@var{width} . @var{height})}. +If the @var{position} describes a buffer position, return the size of +the character at that position. @end defun @cindex timestamp of a mouse event diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index 6d21ca3e6ab9..d9db55e22cdb 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1994, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Byte Compilation @chapter Byte Compilation diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 5be4b298b46d..9e27e1a751a8 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1,11 +1,12 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Control Structures @chapter Control Structures @cindex special forms for control structures +@cindex forms for control structures @cindex control structures A Lisp program consists of a set of @dfn{expressions}, or @@ -48,6 +49,7 @@ structure constructs (@pxref{Macros}). @section Sequencing @cindex sequencing @cindex sequential execution +@cindex forms for sequential execution Evaluating forms in the order they appear is the most common way control passes from one form to another. In some contexts, such as in a @@ -146,6 +148,7 @@ following @var{forms}, in textual order, returning the result of @node Conditionals @section Conditionals @cindex conditional evaluation +@cindex forms, conditional Conditional control structures choose among alternatives. Emacs Lisp has five conditional forms: @code{if}, which is much the same as in @@ -419,64 +422,68 @@ This is not completely equivalent because it can evaluate @var{arg1} or @node Pattern-Matching Conditional @section Pattern-Matching Conditional @cindex pcase -@cindex pattern matching +@cindex pattern matching, programming style Aside from the four basic conditional forms, Emacs Lisp also has a pattern-matching conditional form, the @code{pcase} macro, a hybrid of @code{cond} and @code{cl-case} (@pxref{Conditionals,,,cl,Common Lisp Extensions}) that overcomes their limitations and introduces -the @dfn{pattern matching} programming style. -First, the limitations: +the @dfn{pattern matching programming style}. +The limitations that @code{pcase} overcomes are: @itemize -@item The @code{cond} form chooses among alternatives -by evaluating the predicate @var{condition} of each -of its clauses (@pxref{Conditionals}). -The primary limitation is that variables let-bound in @var{condition} -are not available to the clause's @var{body-forms}. +@item +The @code{cond} form chooses among alternatives by evaluating the +predicate @var{condition} of each of its clauses +(@pxref{Conditionals}). The primary limitation is that variables +let-bound in @var{condition} are not available to the clause's +@var{body-forms}. Another annoyance (more an inconvenience than a limitation) is that when a series of @var{condition} predicates implement -equality tests, there is a lot of repeated code. -For that, why not use @code{cl-case}? +equality tests, there is a lot of repeated code. (@code{cl-case} +solves this inconvenience.) @item The @code{cl-case} macro chooses among alternatives by evaluating the equality of its first argument against a set of specific values. -The limitations are two-fold: + +Its limitations are two-fold: @enumerate -@item The equality tests use @code{eql}. -@item The values must be known and written in advance. +@item +The equality tests use @code{eql}. +@item +The values must be known and written in advance. @end enumerate @noindent These render @code{cl-case} unsuitable for strings or compound -data structures (e.g., lists or vectors). -For that, why not use @code{cond}? -(And here we end up in a circle.) +data structures (e.g., lists or vectors). (@code{cond} doesn't have +these limitations, but it has others, see above.) @end itemize @noindent Conceptually, the @code{pcase} macro borrows the first-arg focus of @code{cl-case} and the clause-processing flow of @code{cond}, replacing @var{condition} with a generalization of -the equality test called @dfn{matching}, +the equality test which is a variant of @dfn{pattern matching}, and adding facilities so that you can concisely express a clause's predicate, and arrange to share let-bindings between a clause's predicate and @var{body-forms}. The concise expression of a predicate is known as a @dfn{pattern}. -When the predicate, called on the value of the first arg, -returns non-@code{nil}, the pattern matches the value -(or sometimes ``the value matches the pattern''). +When the predicate, called on the value of the first arg, returns +non-@code{nil}, we say that ``the pattern matches the value'' (or +sometimes ``the value matches the pattern''). @menu -* The @code{pcase} macro: pcase Macro. Plus examples and caveats. +* The @code{pcase} macro: pcase Macro. Includes examples and caveats. * Extending @code{pcase}: Extending pcase. Define new kinds of patterns. -* Backquote-Style Patterns: Backquote Patterns. Structural matching. +* Backquote-Style Patterns: Backquote Patterns. Structural patterns matching. +* Destructuring with pcase Patterns:: Using pcase patterns to extract subfields. @end menu @node pcase Macro @@ -497,26 +504,30 @@ of the last of @var{body-forms} in the successful clause. Otherwise, @code{pcase} evaluates to @code{nil}. @end defmac -The rest of this subsection -describes different forms of core patterns, -presents some examples, -and concludes with important caveats on using the -let-binding facility provided by some pattern forms. -A core pattern can have the following forms: +@cindex pcase pattern +Each @var{pattern} has to be a @dfn{pcase pattern}, which can use +either one of the core patterns defined below, or one of the patterns +defined via @code{pcase-defmacro} (@pxref{Extending pcase}). + +The rest of this subsection describes different forms of core +patterns, presents some examples, and concludes with important caveats +on using the let-binding facility provided by some pattern forms. A +core pattern can have the following forms: @table @code @item _ Matches any @var{expval}. -This is known as @dfn{don't care} or @dfn{wildcard}. +This is also known as @dfn{don't care} or @dfn{wildcard}. @item '@var{val} -Matches if @var{expval} is @code{equal} to @var{val}. +Matches if @var{expval} equals @var{val}. The comparison is done as +if by @code{equal} (@pxref{Equality Predicates}). @item @var{keyword} @itemx @var{integer} @itemx @var{string} -Matches if @var{expval} is @code{equal} to the literal object. +Matches if @var{expval} equals the literal object. This is a special case of @code{'@var{val}}, above, possible because literal objects of these types are self-quoting. @@ -528,17 +539,17 @@ Matches any @var{expval}, and additionally let-binds @var{symbol} to If @var{symbol} is part of a sequencing pattern @var{seqpat} (e.g., by using @code{and}, below), the binding is also available to the portion of @var{seqpat} following the appearance of @var{symbol}. -This usage has some caveats (@pxref{pcase-symbol-caveats,,caveats}). +This usage has some caveats, see @ref{pcase-symbol-caveats,,caveats}. Two symbols to avoid are @code{t}, which behaves like @code{_} -(above) and is deprecated, and @code{nil}, which signals error. +(above) and is deprecated, and @code{nil}, which signals an error. Likewise, it makes no sense to bind keyword symbols (@pxref{Constant Variables}). @item (pred @var{function}) Matches if the predicate @var{function} returns non-@code{nil} when called on @var{expval}. -@var{function} can have one of the possible forms: +the predicate @var{function} can have one of the following forms: @table @asis @item function name (a symbol) @@ -565,20 +576,17 @@ the actual function call becomes: @w{@code{(= 42 @var{expval})}}. @item (app @var{function} @var{pattern}) Matches if @var{function} called on @var{expval} returns a value that matches @var{pattern}. -@var{function} can take one of the -forms described for @code{pred}, above. -Unlike @code{pred}, however, -@code{app} tests the result against @var{pattern}, -rather than against a boolean truth value. +@var{function} can take one of the forms described for @code{pred}, +above. Unlike @code{pred}, however, @code{app} tests the result +against @var{pattern}, rather than against a boolean truth value. @item (guard @var{boolean-expression}) Matches if @var{boolean-expression} evaluates to non-@code{nil}. @item (let @var{pattern} @var{expr}) -Evaluates @var{expr} to get @var{exprval} -and matches if @var{exprval} matches @var{pattern}. -(It is called @code{let} because -@var{pattern} can bind symbols to values using @var{symbol}.) +Evaluates @var{expr} to get @var{exprval} and matches if @var{exprval} +matches @var{pattern}. (It is called @code{let} because @var{pattern} +can bind symbols to values using @var{symbol}.) @end table @cindex sequencing pattern @@ -591,18 +599,16 @@ but instead of processing values, they process sub-patterns. @table @code @item (and @var{pattern1}@dots{}) -Attempts to match @var{pattern1}@dots{}, in order, -until one of them fails to match. -In that case, @code{and} likewise fails to match, -and the rest of the sub-patterns are not tested. -If all sub-patterns match, @code{and} matches. +Attempts to match @var{pattern1}@dots{}, in order, until one of them +fails to match. In that case, @code{and} likewise fails to match, and +the rest of the sub-patterns are not tested. If all sub-patterns +match, @code{and} matches. @item (or @var{pattern1} @var{pattern2}@dots{}) Attempts to match @var{pattern1}, @var{pattern2}, @dots{}, in order, -until one of them succeeds. -In that case, @code{or} likewise matches, -and the rest of the sub-patterns are not tested. -(Note that there must be at least two sub-patterns. +until one of them succeeds. In that case, @code{or} likewise matches, +and the rest of the sub-patterns are not tested. (Note that there +must be at least two sub-patterns. Simply @w{@code{(or @var{pattern1})}} signals error.) @c Issue: Is this correct and intended? @c Are there exceptions, qualifications? @@ -1037,12 +1043,11 @@ Both use a single backquote construct (@pxref{Backquote}). This subsection describes @dfn{backquote-style patterns}, a set of builtin patterns that eases structural matching. -For background, @xref{Pattern-Matching Conditional}. +For background, @pxref{Pattern-Matching Conditional}. -@dfn{Backquote-style patterns} are a powerful set of -@code{pcase} pattern extensions (created using @code{pcase-defmacro}) -that make it easy to match @var{expval} against -specifications of its @emph{structure}. +Backquote-style patterns are a powerful set of @code{pcase} pattern +extensions (created using @code{pcase-defmacro}) that make it easy to +match @var{expval} against specifications of its @emph{structure}. For example, to match @var{expval} that must be a list of two elements whose first element is a specific string and the second @@ -1168,10 +1173,110 @@ evaluation results: (evaluate '(sub 1 2) nil) @result{} error @end example +@node Destructuring with pcase Patterns +@subsection Destructuring with @code{pcase} Patterns +@cindex destructuring with pcase patterns + +Pcase patterns not only express a condition on the form of the objects +they can match, but they can also extract sub-fields of those objects. +For example we can extract 2 elements from a list that is the value of +the variable @code{my-list} with the following code: + +@example + (pcase my-list + (`(add ,x ,y) (message "Contains %S and %S" x y))) +@end example + +This will not only extract @code{x} and @code{y} but will additionally +test that @code{my-list} is a list containing exactly 3 elements and +whose first element is the symbol @code{add}. If any of those tests +fail, @code{pcase} will immediately return @code{nil} without calling +@code{message}. + +Extraction of multiple values stored in an object is known as +@dfn{destructuring}. Using @code{pcase} patterns allows to perform +@dfn{destructuring binding}, which is similar to a local binding +(@pxref{Local Variables}), but gives values to multiple elements of +a variable by extracting those values from an object of compatible +structure. + +The macros described in this section use @code{pcase} patterns to +perform destructuring binding. The condition of the object to be of +compatible structure means that the object must match the pattern, +because only then the object's subfields can be extracted. For +example: + +@example + (pcase-let ((`(add ,x ,y) my-list)) + (message "Contains %S and %S" x y)) +@end example + +@noindent +does the same as the previous example, except that it directly tries +to extract @code{x} and @code{y} from @code{my-list} without first +verifying if @code{my-list} is a list which has the right number of +elements and has @code{add} as its first element. The precise +behavior when the object does not actually match the pattern is +undefined, although the body will not be silently skipped: either an +error is signaled or the body is run with some of the variables +potentially bound to arbitrary values like @code{nil}. + +The pcase patterns that are useful for destructuring bindings are +generally those described in @ref{Backquote Patterns}, since they +express a specification of the structure of objects that will match. + +For an alternative facility for destructuring binding, see +@ref{seq-let}. + +@defmac pcase-let bindings body@dots{} +Perform destructuring binding of variables according to +@var{bindings}, and then evaluate @var{body}. + +@var{bindings} is a list of bindings of the form @w{@code{(@var{pattern} +@var{exp})}}, where @var{exp} is an expression to evaluate and +@var{pattern} is a @code{pcase} pattern. + +All @var{exp}s are evaluated first, after which they are matched +against their respective @var{pattern}, introducing new variable +bindings that can then be used inside @var{body}. The variable +bindings are produced by destructuring binding of elements of +@var{pattern} to the values of the corresponding elements of the +evaluated @var{exp}. +@end defmac + +@defmac pcase-let* bindings body@dots{} +Perform destructuring binding of variables according to +@var{bindings}, and then evaluate @var{body}. + +@var{bindings} is a list of bindings of the form @code{(@var{pattern} +@var{exp})}, where @var{exp} is an expression to evaluate and +@var{pattern} is a @code{pcase} pattern. The variable bindings are +produced by destructuring binding of elements of @var{pattern} to the +values of the corresponding elements of the evaluated @var{exp}. + +Unlike @code{pcase-let}, but similarly to @code{let*}, each @var{exp} +is matched against its corresponding @var{pattern} before processing +the next element of @var{bindings}, so the variable bindings +introduced in each one of the @var{bindings} are available in the +@var{exp}s of the @var{bindings} that follow it, additionally to +being available in @var{body}. +@end defmac + +@defmac pcase-dolist (pattern list) body@dots{} +Execute @var{body} once for each element of @var{list}, on each +iteration performing a destructuring binding of variables in +@var{pattern} to the values of the corresponding subfields of the +element of @var{list}. The bindings are performed as if by +@code{pcase-let}. When @var{pattern} is a simple variable, this ends +up being equivalent to @code{dolist} (@pxref{Iteration}). +@end defmac + + @node Iteration @section Iteration @cindex iteration @cindex recursion +@cindex forms, iteration Iteration means executing part of a program repetitively. For example, you might want to repeat some computation once for each element @@ -1347,7 +1452,7 @@ Run @var{body} with @var{var} bound to each value that @end defmac The Common Lisp loop facility also contains features for working with -iterators. See @xref{Loop Facility,,,cl,Common Lisp Extensions}. +iterators. @xref{Loop Facility,,,cl,Common Lisp Extensions}. The following piece of code demonstrates some important principles of working with iterators. @@ -1395,6 +1500,7 @@ exited. @node Catch and Throw @subsection Explicit Nonlocal Exits: @code{catch} and @code{throw} +@cindex forms for nonlocal exits Most control constructs affect only the flow of control within the construct itself. The function @code{throw} is the exception to this @@ -1766,6 +1872,7 @@ variables precisely as they were at the time of the error. @subsubsection Writing Code to Handle Errors @cindex error handler @cindex handling errors +@cindex forms for handling errors The usual effect of signaling an error is to terminate the command that is running and return immediately to the Emacs editor command loop. @@ -2134,6 +2241,7 @@ and their conditions. @node Cleanups @subsection Cleaning Up from Nonlocal Exits @cindex nonlocal exits, cleaning up +@cindex forms for cleanup The @code{unwind-protect} construct is essential whenever you temporarily put a data structure in an inconsistent state; it permits diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index 1cc7cb65b5f3..02eefe0f585b 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1997-2018 Free Software Foundation, Inc. +@c Copyright (C) 1997-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Customization @chapter Customization Settings @@ -950,10 +950,10 @@ possibilities: @itemize @bullet @item -A predicate---that is, a function of one argument that has no side -effects, and returns either @code{nil} or non-@code{nil} according to -the argument. Using a predicate in the list says that objects for which -the predicate returns non-@code{nil} are acceptable. +A predicate---that is, a function of one argument that returns either +@code{nil} or non-@code{nil} according to the argument. Using a +predicate in the list says that objects for which the predicate +returns non-@code{nil} are acceptable. @item A quoted constant---that is, @code{'@var{object}}. This sort of element diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index cbf8778ca8b9..575ec75d407d 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1994, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Debugging @@ -796,9 +796,10 @@ parenthesis or missing open parenthesis, but does not say where the missing parenthesis belongs. How, then, to find what to change? If the problem is not simply an imbalance of parentheses, a useful -technique is to try @kbd{C-M-e} at the beginning of each defun, and see -if it goes to the place where that defun appears to end. If it does -not, there is a problem in that defun. +technique is to try @kbd{C-M-e} (@code{end-of-defun}, @pxref{Moving by +Defuns,,,emacs, The GNU Emacs Manual}) at the beginning of each defun, +and see if it goes to the place where that defun appears to end. If +it does not, there is a problem in that defun. @cindex unbalanced parentheses @cindex parenthesis mismatch, debugging @@ -818,29 +819,32 @@ find the mismatch.) The first step is to find the defun that is unbalanced. If there is an excess open parenthesis, the way to do this is to go to the end of -the file and type @kbd{C-u C-M-u}. This will move you to the -beginning of the first defun that is unbalanced. +the file and type @kbd{C-u C-M-u} (@code{backward-up-list}, +@pxref{Moving by Parens,,,emacs, The GNU Emacs Manual}). This will +move you to the beginning of the first defun that is unbalanced. The next step is to determine precisely what is wrong. There is no way to be sure of this except by studying the program, but often the existing indentation is a clue to where the parentheses should have been. The easiest way to use this clue is to reindent with @kbd{C-M-q} -and see what moves. @strong{But don't do this yet!} Keep reading, -first. +(@code{indent-pp-sexp}, @pxref{Multi-line Indent,,,emacs, The GNU +Emacs Manual}) and see what moves. @strong{But don't do this yet!} +Keep reading, first. Before you do this, make sure the defun has enough close parentheses. Otherwise, @kbd{C-M-q} will get an error, or will reindent all the rest of the file until the end. So move to the end of the defun and insert a -close parenthesis there. Don't use @kbd{C-M-e} to move there, since -that too will fail to work until the defun is balanced. +close parenthesis there. Don't use @kbd{C-M-e} (@code{end-of-defun}) to +move there, since that too will fail to work until the defun is balanced. Now you can go to the beginning of the defun and type @kbd{C-M-q}. Usually all the lines from a certain point to the end of the function will shift to the right. There is probably a missing close parenthesis, or a superfluous open parenthesis, near that point. (However, don't assume this is true; study the code to make sure.) Once you have found -the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_}, since the old -indentation is probably appropriate to the intended parentheses. +the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_} (@code{undo}), +since the old indentation is probably appropriate to the intended +parentheses. After you think you have fixed the problem, use @kbd{C-M-q} again. If the old indentation actually fit the intended nesting of parentheses, @@ -852,21 +856,24 @@ anything. @cindex excess close parentheses To deal with an excess close parenthesis, first go to the beginning -of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first -unbalanced defun. +of the file, then type @kbd{C-u -1 C-M-u} (@code{backward-up-list} +with an argument of @minus{}1) to find the end of the first unbalanced +defun. Then find the actual matching close parenthesis by typing @kbd{C-M-f} +(@code{forward-sexp}, @pxref{Expressions,,,emacs, The GNU Emacs Manual}) at the beginning of that defun. This will leave you somewhere short of the place where the defun ought to end. It is possible that you will find a spurious close parenthesis in that vicinity. If you don't see a problem at that point, the next thing to do is to -type @kbd{C-M-q} at the beginning of the defun. A range of lines will -probably shift left; if so, the missing open parenthesis or spurious -close parenthesis is probably near the first of those lines. (However, -don't assume this is true; study the code to make sure.) Once you have -found the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_}, since the -old indentation is probably appropriate to the intended parentheses. +type @kbd{C-M-q} (@code{indent-pp-sexp}) at the beginning of the defun. +A range of lines will probably shift left; if so, the missing open +parenthesis or spurious close parenthesis is probably near the first of +those lines. (However, don't assume this is true; study the code to +make sure.) Once you have found the discrepancy, undo the @kbd{C-M-q} +with @kbd{C-_} (@code{undo}), since the old indentation is probably +appropriate to the intended parentheses. After you think you have fixed the problem, use @kbd{C-M-q} again. If the old indentation actually fits the intended nesting of parentheses, diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index deabd31d7760..55a0a2f92437 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Display @chapter Emacs Display @@ -25,7 +25,7 @@ that Emacs presents to the user. * Fringes:: Controlling window fringes. * Scroll Bars:: Controlling scroll bars. * Window Dividers:: Separating windows visually. -* Display Property:: Enabling special display features. +* Display Property:: Images, margins, text size, etc. * Images:: Displaying images in Emacs buffers. * Xwidgets:: Displaying native widgets in Emacs buffers. * Buttons:: Adding clickable buttons to Emacs buffers. @@ -2369,7 +2369,7 @@ Draw a box with lines of width 1, in color @var{color}. @item @code{(:line-width @var{width} :color @var{color} :style @var{style})} This way you can explicitly specify all aspects of the box. The value @var{width} specifies the width of the lines to draw; it defaults to -1. A negative width @var{-n} means to draw a line of width @var{n} +1. A negative width @minus{}@var{n} means to draw a line of width @var{n} whose top and bottom parts occupy the space of the underlying text, thus avoiding any increase in the character height. @@ -2476,6 +2476,11 @@ face name. In the vast majority of cases, this is not necessary; the usual procedure is to define a face with @code{defface}, and then use its name directly. +@cindex face (non-removability of) +Note that once you have defined a face (usually with @code{defface}), +you cannot later undefine this face safely, except by restarting +Emacs. + @defmac defface face spec doc [keyword value]@dots{} This macro declares @var{face} as a named face whose default face spec is given by @var{spec}. You should not quote the symbol @var{face}, @@ -3038,10 +3043,17 @@ value, which inherits from @var{face}'s global definition. This function returns a list of all defined face names. @end defun +@cindex face number +@cindex face property of face symbols @defun face-id face This function returns the @dfn{face number} of face @var{face}. This is a number that uniquely identifies a face at low levels within Emacs. It is seldom necessary to refer to a face by its face number. +However, functions that manipulate glyphs, such as +@code{make-glyph-code} and @code{glyph-face} (@pxref{Glyphs}) access +the face numbers internally. Note that the face number is stored as +the value of the @code{face} property of the face symbol, so we +recommend not to set that property of a face to any value of your own. @end defun @defun face-documentation face @@ -3909,6 +3921,9 @@ fringe, and likewise @var{right} for the right fringe. A value of @var{outside-margins} is non-@code{nil}, that specifies that fringes should appear outside of the display margins. +If @var{window} is not large enough to accommodate fringes of the +desired width, this leaves the fringes of @var{window} unchanged. + The values specified here may be later overridden by invoking @code{set-window-buffer} (@pxref{Buffers and Windows}) on @var{window} with its @var{keep-margins} argument @code{nil} or omitted. @@ -4330,6 +4345,9 @@ vertical scroll bar. The possible values are @code{bottom}, @code{t}, which means to use the frame's default, and @code{nil} for no horizontal scroll bar. +If @var{window} is not large enough to accommodate a scroll bar of the +desired dimension, this leaves the corresponding scroll bar unchanged. + The values specified here may be later overridden by invoking @code{set-window-buffer} (@pxref{Buffers and Windows}) on @var{window} with its @var{keep-margins} argument @code{nil} or omitted. @@ -4846,6 +4864,16 @@ and the buffer position where the @code{display} property was found, respectively. Both positions can be different when @code{object} is a string. +Note that @var{condition} will only be evaluated when redisplay +examines the text where this display spec is located, so this feature +is best suited for conditions that are relatively stable, i.e.@: +yield, for each particular buffer position, the same results on every +evaluation. If the results change for the same text location, e.g., +if the result depends on the position of point, then the conditional +specification might not do what you want, because redisplay examines +only those parts of buffer text where it has reasons to assume that +something changed since the last display cycle. + @node Display Margins @subsection Displaying in the Margins @cindex display margins @@ -4900,7 +4928,9 @@ means no right marginal area. Setting these variables does not immediately affect the window. These variables are checked when a new buffer is displayed in the window. Thus, you can make changes take effect by calling -@code{set-window-buffer}. +@code{set-window-buffer}. Do not use these variables to try to +determine the current width of the left or right margin. Instead, use +the function @code{window-margins}. You can also set the margin widths immediately. @@ -4909,6 +4939,9 @@ This function specifies the margin widths for window @var{window}, in character cell units. The argument @var{left} controls the left margin, and @var{right} controls the right margin (default @code{0}). +If @var{window} is not large enough to accommodate margins of the +desired width, this leaves the margins of @var{window} unchanged. + The values specified here may be later overridden by invoking @code{set-window-buffer} (@pxref{Buffers and Windows}) on @var{window} with its @var{keep-margins} argument @code{nil} or omitted. @@ -5029,7 +5062,10 @@ Every image descriptor must include this property. @item :file @var{file} This says to load the image from file @var{file}. If @var{file} is -not an absolute file name, it is expanded in @code{data-directory}. +not an absolute file name, it is expanded relative to the +@file{images} subdirectory of @code{data-directory}, and failing that, +relative to the directories listed by @code{x-bitmap-file-path} +(@pxref{Face Attributes}). @item :data @var{data} This specifies the raw image data. Each image descriptor must have @@ -5830,8 +5866,8 @@ This function returns the size of an image as a pair specification. @var{pixels} non-@code{nil} means return sizes measured in pixels, otherwise return sizes measured in the default character size of @var{frame} (@pxref{Frame Font}). @var{frame} is the frame on which -the image will be displayed. @var{frame} null or omitted means use the -selected frame (@pxref{Input Focus}). +the image will be displayed. @var{frame} @code{nil} or omitted means +use the selected frame (@pxref{Input Focus}). @end defun @defvar max-image-size @@ -7243,9 +7279,9 @@ Non-@acronym{ASCII}, non-printing characters @code{U+0080} to @samp{\230}). @item format-control -Characters of Unicode General Category [Cf], such as @samp{U+200E} -(Left-to-Right Mark), but excluding characters that have graphic -images, such as @samp{U+00AD} (Soft Hyphen). +Characters of Unicode General Category [Cf], such as U+200E +@sc{left-to-right mark}, but excluding characters that have graphic +images, such as U+00AD @sc{soft hyphen}. @item no-font Characters for which there is no suitable font, or which cannot be @@ -7628,12 +7664,12 @@ problem: @itemize @minus @item -Append the special character @code{U+200E}, LEFT-TO-RIGHT MARK, or +Append the special character U+200E @sc{left-to-right mark}, or @acronym{LRM}, to the end of each field that may have bidirectional content, or prepend it to the beginning of the following field. The function @code{bidi-string-mark-left-to-right}, described below, comes in handy for this purpose. (In a right-to-left paragraph, use -@code{U+200F}, RIGHT-TO-LEFT MARK, or @acronym{RLM}, instead.) This +U+200F @sc{right-to-left mark}, or @acronym{RLM}, instead.) This is one of the solutions recommended by the UBA. @item diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 5af48fe09633..e674280a83d4 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -1,6 +1,6 @@ @comment -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1992-1994, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1992-1994, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @@ -1309,7 +1309,6 @@ succeeds. @item &define @c @kindex &define @r{(Edebug)} - Indicates that the specification is for a defining form. Edebug's definition of a defining form is a form containing one or more code forms which are saved and executed later, after the execution of the diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 6c3182b0c702..a2b03da5abcb 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -99,7 +99,7 @@ This is the @cite{GNU Emacs Lisp Reference Manual} @end ifnottex corresponding to Emacs version @value{EMACSVER}. -Copyright @copyright{} 1990--1996, 1998--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1990--1996, 1998--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1043,9 +1043,7 @@ Windows * Cyclic Window Ordering:: Moving around the existing windows. * Buffers and Windows:: Each window displays the contents of a buffer. * Switching Buffers:: Higher-level functions for switching to a buffer. -* Choosing Window:: How to choose a window for displaying a buffer. -* Display Action Functions:: Subroutines for @code{display-buffer}. -* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Displaying Buffers:: Displaying a buffer in a suitable window. * Window History:: Each window remembers the buffers displayed in it. * Dedicated Windows:: How to avoid displaying another buffer in a specific window. @@ -1067,6 +1065,18 @@ Windows redisplay going past a certain point, or window configuration changes. +Displaying Buffers + +* Choosing Window:: How to choose a window for displaying a buffer. +* Buffer Display Action Functions:: Support functions for buffer display. +* Buffer Display Action Alists:: Alists for fine-tuning buffer display + action functions. +* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Precedence of Action Functions:: A tutorial explaining the precedence of + buffer display action functions. +* The Zen of Buffer Display:: How to avoid that buffers get lost in between + windows. + Side Windows * Displaying Buffers in Side Windows:: An action function for displaying @@ -1588,9 +1598,18 @@ GNU Emacs Internals * Memory Usage:: Info about total size of Lisp objects made so far. * C Dialect:: What C variant Emacs is written in. * Writing Emacs Primitives:: Writing C code for Emacs. +* Writing Dynamic Modules:: Writing loadable modules for Emacs. * Object Internals:: Data formats of buffers, windows, processes. * C Integer Types:: How C integer types are used inside Emacs. +Writing Dynamic Modules + +* Module Initialization:: +* Module Functions:: +* Module Values:: +* Module Misc:: +* Module Nonlocal:: + Object Internals * Buffer Internals:: Components of a buffer structure. diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi index a0e32c5631c3..c794028b5e67 100644 --- a/doc/lispref/errors.texi +++ b/doc/lispref/errors.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1993, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Errors diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index 373b12e79d59..73f5396dabea 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1994, 1998, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Evaluation @@ -86,6 +86,7 @@ also temporarily alter the environment by binding variables (@pxref{Local Variables}). @cindex side effect +@anchor{Definition of side effect} Evaluating a form may also make changes that persist; these changes are called @dfn{side effects}. An example of a form that produces a side effect is @code{(setq foo 1)}. @@ -127,6 +128,7 @@ with the other types, which are self-evaluating forms. @cindex vector evaluation @cindex literal evaluation @cindex self-evaluating form +@cindex form, self-evaluating A @dfn{self-evaluating form} is any form that is not a list or symbol. Self-evaluating forms evaluate to themselves: the result of @@ -179,6 +181,8 @@ program. Here is an example: @node Symbol Forms @subsection Symbol Forms @cindex symbol evaluation +@cindex symbol forms +@cindex forms, symbol When a symbol is evaluated, it is treated as a variable. The result is the variable's value, if it has one. If the symbol has no value as @@ -215,6 +219,7 @@ its value ordinarily cannot be changed. @xref{Constant Variables}. @node Classifying Lists @subsection Classification of List Forms @cindex list form evaluation +@cindex forms, list A form that is a nonempty list is either a function call, a macro call, or a special form, according to its first element. These three @@ -349,6 +354,7 @@ Here is how you could define @code{indirect-function} in Lisp: @subsection Evaluation of Function Forms @cindex function form evaluation @cindex function call +@cindex forms, function call If the first element of a list being evaluated is a Lisp function object, byte-code object or primitive function object, then that list is @@ -372,6 +378,7 @@ body form becomes the value of the function call. @node Macro Forms @subsection Lisp Macro Evaluation @cindex macro call evaluation +@cindex forms, macro call If the first element of a list being evaluated is a macro object, then the list is a @dfn{macro call}. When a macro call is evaluated, the @@ -418,6 +425,7 @@ expansion. @node Special Forms @subsection Special Forms @cindex special forms +@cindex forms, special @cindex evaluation of special forms A @dfn{special form} is a primitive function specially marked so that @@ -539,6 +547,7 @@ described in @ref{Autoload}. @node Quoting @section Quoting +@cindex forms, quote The special form @code{quote} returns its single argument, as written, without evaluating it. This provides a way to include constant symbols @@ -598,6 +607,7 @@ only part of a list, while computing and substituting other parts. @cindex backquote (list substitution) @cindex ` (list substitution) @findex ` +@cindex forms, backquote @dfn{Backquote constructs} allow you to quote a list, but selectively evaluate elements of that list. In the simplest case, it diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index c434336d5a60..ebe2fdd6a0c4 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Files @@ -16,7 +16,7 @@ described in @ref{Backups and Auto-Saving}. names. A file name is a string. Most of these functions expand file name arguments using the function @code{expand-file-name}, so that @file{~} is handled correctly, as are relative file names (including -@file{../}). @xref{File Name Expansion}. +@file{../} and the empty string). @xref{File Name Expansion}. In addition, certain @dfn{magic} file names are handled specially. For example, when a remote file name is specified, Emacs accesses the @@ -1759,12 +1759,12 @@ default file permissions (see @code{set-default-file-modes} below), if SELinux context are not copied over in either case. @end deffn -@deffn Command make-symbolic-link target newname &optional ok-if-already-exists +@deffn Command make-symbolic-link target linkname &optional ok-if-already-exists @pindex ln @kindex file-already-exists This command makes a symbolic link to @var{target}, named -@var{newname}. This is like the shell command @samp{ln -s -@var{target} @var{newname}}. The @var{target} argument +@var{linkname}. This is like the shell command @samp{ln -s +@var{target} @var{linkname}}. The @var{target} argument is treated only as a string; it need not name an existing file. If @var{ok-if-already-exists} is an integer, indicating interactive use, then leading @samp{~} is expanded and leading @samp{/:} is @@ -1774,7 +1774,7 @@ If @var{target} is a relative file name, the resulting symbolic link is interpreted relative to the directory containing the symbolic link. @xref{Relative File Names}. -If both @var{target} and @var{newname} have remote file name syntax, +If both @var{target} and @var{linkname} have remote file name syntax, and if both remote identifications are equal, the symbolic link points to the local file name part of @var{target}. @@ -2409,6 +2409,17 @@ This is for the sake of filesystems that have the concept of a superroot above the root directory @file{/}. On other filesystems, @file{/../} is interpreted exactly the same as @file{/}. +Expanding @file{.} or the empty string returns the default directory: + +@example +@group +(expand-file-name "." "/usr/spool/") + @result{} "/usr/spool" +(expand-file-name "" "/usr/spool/") + @result{} "/usr/spool" +@end group +@end example + Note that @code{expand-file-name} does @emph{not} expand environment variables; only @code{substitute-in-file-name} does that: @@ -2519,9 +2530,9 @@ with @samp{/:}. @defmac file-name-quote name This macro adds the quotation prefix @samp{/:} to the file @var{name}. For a local file @var{name}, it prefixes @var{name} with @samp{/:}. -If @var{name} is a remote file name, the local part of @var{name} is -quoted. If @var{name} is already a quoted file name, @var{name} is -returned unchanged. +If @var{name} is a remote file name, the local part of @var{name} +(@pxref{Magic File Names}) is quoted. If @var{name} is already a +quoted file name, @var{name} is returned unchanged. @example @group @@ -2700,8 +2711,8 @@ that remote host. If such a directory does not exist, or @code{temporary-file-directory} is returned. @end defun -In order to extract the local part of the path name from a temporary -file, @code{file-local-name} could be used. +In order to extract the local part of the file's name of a temporary +file, use @code{file-local-name} (@pxref{Magic File Names}). @node File Name Completion @subsection File Name Completion @@ -3382,11 +3393,24 @@ non-magic directory to serve as its current directory, and this function is a good way to come up with one. @end defun +@cindex local part of remote file name @defun file-local-name filename -This function returns the local part of file @var{filename}. For a -remote @var{filename}, it returns a file name which could be used -directly as argument of a remote process. If @var{filename} is local, -this function returns the file name. +This function returns the @dfn{local part} of @var{filename}. This is +the part of the file's name that identifies it on the remote host, and +is typically obtained by removing from the remote file name the parts +that specify the remote host and the method of accessing it. For +example: + +@smallexample +(file-local-name "/ssh:@var{user}@@@var{host}:/foo/bar") + @result{} "/foo/bar" +@end smallexample + +For a remote @var{filename}, this function returns a file name which +could be used directly as an argument of a remote process +(@pxref{Asynchronous Processes}, and @pxref{Synchronous Processes}), +and as the program to run on the remote host. If @var{filename} is +local, this function returns it unchanged. @end defun @defopt remote-file-name-inhibit-cache diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 1e008da2476d..b993f4932cd6 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Frames @@ -497,7 +497,7 @@ Height | | | Height | | | Height In practice not all of the areas shown in the drawing will or may be present. The meaning of these areas is described below. -@table @samp +@table @asis @item Outer Frame @cindex outer frame @cindex outer edges @@ -3198,11 +3198,11 @@ and should be preferred when specifying a non-@code{nil} @code{drag-with-mode-line} parameter. When a child frame is used for displaying a buffer via -@code{display-buffer-in-child-frame} (@pxref{Display Action Functions}), -the frame's @code{auto-hide-function} parameter (@pxref{Frame -Interaction Parameters}) can be set to a function, in order to -appropriately deal with the frame when the window displaying the buffer -shall be quit. +@code{display-buffer-in-child-frame} (@pxref{Buffer Display Action +Functions}), the frame's @code{auto-hide-function} parameter +(@pxref{Frame Interaction Parameters}) can be set to a function, in +order to appropriately deal with the frame when the window displaying +the buffer shall be quit. When a child frame is used during minibuffer interaction, for example, to display completions in a separate window, the @code{minibuffer-exit} diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 93059e8e3a6b..0077fad83758 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Functions @@ -38,11 +38,16 @@ define them. @cindex return value @cindex value of function @cindex argument +@cindex pure function In a general sense, a function is a rule for carrying out a computation given input values called @dfn{arguments}. The result of the computation is called the @dfn{value} or @dfn{return value} of the function. The computation can also have side effects, such as lasting -changes in the values of variables or the contents of data structures. +changes in the values of variables or the contents of data structures +(@pxref{Definition of side effect}). A @dfn{pure function} is a +function which, in addition to having no side effects, always returns +the same value for the same combination of arguments, regardless of +external factors such as machine type or system state. In most computer languages, every function has a name. But in Lisp, a function in the strictest sense has no name: it is an object which @@ -1082,15 +1087,18 @@ This macro returns an anonymous function with argument list @var{args}, documentation string @var{doc} (if any), interactive spec @var{interactive} (if any), and body forms given by @var{body}. -In effect, this macro makes @code{lambda} forms self-quoting: -evaluating a form whose @sc{car} is @code{lambda} yields the form -itself: +Under dynamic binding, this macro effectively makes @code{lambda} +forms self-quoting: evaluating a form whose @sc{car} is @code{lambda} +yields the form itself: @example (lambda (x) (* x x)) @result{} (lambda (x) (* x x)) @end example +Note that when evaluating under lexical binding the result is a +closure object (@pxref{Closures}). + The @code{lambda} form has one other effect: it tells the Emacs evaluator and byte-compiler that its argument is a function, by using @code{function} as a subroutine (see below). @@ -1345,6 +1353,13 @@ to invoke the other auxiliary or primary methods. This allows you to add more methods, distinguished by @var{string}, for the same specializers and qualifiers. @end table + +Functions defined using @code{cl-defmethod} cannot be made +interactive, i.e.@: commands (@pxref{Defining Commands}), by adding +the @code{interactive} form to them. If you need a polymorphic +command, we recommend defining a normal command that calls a +polymorphic function defined via @code{cl-defgeneric} and +@code{cl-defmethod}. @end defmac @cindex dispatch of methods for generic function @@ -1674,7 +1689,9 @@ Note: The interactive spec of @var{function} will apply to the combined function and should hence obey the calling convention of the combined function rather than that of @var{function}. In many cases, it makes no difference since they are identical, but it does matter for @code{:around}, -@code{:filter-args}, and @code{filter-return}, where @var{function}. +@code{:filter-args}, and @code{:filter-return}, where @var{function} +receives different arguments than the original function stored in +@var{place}. @end defmac @defmac remove-function place function @@ -2352,7 +2369,7 @@ safe. A form that creates temporary bindings (@code{condition-case}, @code{dolist}, @code{dotimes}, @code{lambda}, @code{let}, or @code{let*}), if all args are safe and the symbols to be bound are not -explicitly risky (see @pxref{File Local Variables}). +explicitly risky (@pxref{File Local Variables}). @item An assignment using @code{add-to-list}, @code{setq}, @code{push}, or @code{pop}, if all args are safe and the symbols to be assigned are diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi index f7d33eafa34f..d5c9948ca731 100644 --- a/doc/lispref/hash.texi +++ b/doc/lispref/hash.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Hash Tables @chapter Hash Tables diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi index 2688a2bff6ec..63a782c3263d 100644 --- a/doc/lispref/help.texi +++ b/doc/lispref/help.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Documentation diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index db4e413921fb..7c8748b5e48d 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1998, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1993, 1998, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Hooks diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 45c3b87c0ac5..6a7ea1c6913a 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1993, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node GNU Emacs Internals @@ -18,6 +18,7 @@ internal aspects of GNU Emacs that may be of interest to C programmers. * Memory Usage:: Info about total size of Lisp objects made so far. * C Dialect:: What C variant Emacs is written in. * Writing Emacs Primitives:: Writing C code for Emacs. +* Writing Dynamic Modules:: Writing loadable modules for Emacs. * Object Internals:: Data formats of buffers, windows, processes. * C Integer Types:: How C integer types are used inside Emacs. @end menu @@ -653,8 +654,8 @@ appearance.) @smallexample @group DEFUN ("or", For, Sor, 0, UNEVALLED, 0, - doc: /* Eval args until one of them yields non-nil, then return -that value. + doc: /* Eval args until one of them yields non-nil, +then return that value. The remaining args are not evalled at all. If all args return nil, return nil. @end group @@ -728,7 +729,7 @@ less than 8. This is an interactive specification, a string such as might be used as the argument of @code{interactive} in a Lisp function (@pxref{Using Interactive}). In the case -of @code{or}, it is 0 (a null pointer), indicating that @code{or} +of @code{or}, it is @code{0} (a null pointer), indicating that @code{or} cannot be called interactively. A value of @code{""} indicates a function that should receive no arguments when called interactively. If the value begins with a @samp{"(}, the string is evaluated as a @@ -736,11 +737,11 @@ Lisp form. For example: @example @group -DEFUN ("foo", Ffoo, Sfoo, 0, UNEVALLED, 0 +DEFUN ("foo", Ffoo, Sfoo, 0, 3, "(list (read-char-by-name \"Insert character: \")\ (prefix-numeric-value current-prefix-arg)\ - t))", - doc: /* @dots{} */) + t)", + doc: /* @dots{} */) @end group @end example @@ -770,8 +771,8 @@ this: @example @group DEFUN ("bar", Fbar, Sbar, 0, UNEVALLED, 0 - doc: /* @dots{} */ - attributes: @var{attr1} @var{attr2} @dots{}) + doc: /* @dots{} */ + attributes: @var{attr1} @var{attr2} @dots{}) @end group @end example @@ -807,15 +808,18 @@ arguments. If the primitive accepts a fixed maximum number of Lisp arguments, there must be one C argument for each Lisp argument, and each argument must be of type @code{Lisp_Object}. (Various macros and functions for creating values of type @code{Lisp_Object} are declared -in the file @file{lisp.h}.) If the primitive has no upper limit on -the number of Lisp arguments, it must have exactly two C arguments: -the first is the number of Lisp arguments, and the second is the -address of a block containing their values. These have types -@code{int} and @w{@code{Lisp_Object *}} respectively. Since -@code{Lisp_Object} can hold any Lisp object of any data type, you -can determine the actual data type only at run time; so if you want -a primitive to accept only a certain type of argument, you must check -the type explicitly using a suitable predicate (@pxref{Type Predicates}). +in the file @file{lisp.h}.) If the primitive is a special form, it +must accept a Lisp list containing its unevaluated Lisp arguments as a +single argument of type @code{Lisp_Object}. If the primitive has no +upper limit on the number of evaluated Lisp arguments, it must have +exactly two C arguments: the first is the number of Lisp arguments, +and the second is the address of a block containing their values. +These have types @code{ptrdiff_t} and @w{@code{Lisp_Object *}}, +respectively. Since @code{Lisp_Object} can hold any Lisp object of +any data type, you can determine the actual data type only at run +time; so if you want a primitive to accept only a certain type of +argument, you must check the type explicitly using a suitable +predicate (@pxref{Type Predicates}). @cindex type checking internals @cindex garbage collection protection @@ -824,10 +828,14 @@ the type explicitly using a suitable predicate (@pxref{Type Predicates}). @code{args} refers to objects controlled by Emacs's stack-marking garbage collector. Although the garbage collector does not reclaim objects reachable from C @code{Lisp_Object} stack variables, it may -move non-object components of an object, such as string contents; so -functions that access non-object components must take care to refetch -their addresses after performing Lisp evaluation. Lisp evaluation can -occur via calls to @code{eval_sub} or @code{Feval}, either directly or +move some of the components of an object, such as the contents of a +string or the text of a buffer. Therefore, functions that access +these components must take care to refetch their addresses after +performing Lisp evaluation. This means that instead of keeping C +pointers to string contents or buffer text, the code should keep the +buffer or string position, and recompute the C pointer from the +position after performing Lisp evaluation. Lisp evaluation can occur +via calls to @code{eval_sub} or @code{Feval}, either directly or indirectly. @cindex @code{maybe_quit}, use in Lisp primitives @@ -901,9 +909,9 @@ of macros and functions to manipulate Lisp objects. @smallexample @group DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, - Scoordinates_in_window_p, 2, 2, 0, - doc: /* Return non-nil if COORDINATES are in WINDOW. - ... + Scoordinates_in_window_p, 2, 2, 0, + doc: /* Return non-nil if COORDINATES are in WINDOW. + @dots{} @end group @group or `right-margin' is returned. */) @@ -916,16 +924,15 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, @end group @group - CHECK_LIVE_WINDOW (window); - w = XWINDOW (window); + w = decode_live_window (window); f = XFRAME (w->frame); CHECK_CONS (coordinates); lx = Fcar (coordinates); ly = Fcdr (coordinates); - CHECK_NUMBER_OR_FLOAT (lx); - CHECK_NUMBER_OR_FLOAT (ly); - x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH(f); - y = FRAME_PIXEL_Y_FROM_CANON_Y (f, ly) + FRAME_INTERNAL_BORDER_WIDTH(f); + CHECK_NUMBER (lx); + CHECK_NUMBER (ly); + x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH (f); + y = FRAME_PIXEL_Y_FROM_CANON_Y (f, ly) + FRAME_INTERNAL_BORDER_WIDTH (f); @end group @group @@ -935,14 +942,14 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, return Qnil; @end group - ... + @dots{} @group case ON_MODE_LINE: /* In mode line of window. */ return Qmode_line; @end group - ... + @dots{} @group case ON_SCROLL_BAR: /* On scroll-bar of window. */ @@ -952,7 +959,7 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, @group default: - abort (); + emacs_abort (); @} @} @end group @@ -975,10 +982,711 @@ number of arguments. They work by calling @code{Ffuncall}. @file{lisp.h} contains the definitions for some important macros and functions. - If you define a function which is side-effect free, update the code -in @file{byte-opt.el} that binds @code{side-effect-free-fns} and -@code{side-effect-and-error-free-fns} so that the compiler optimizer -knows about it. + If you define a function which is side-effect free or pure, give it +a non-@code{nil} @code{side-effect-free} or @code{pure} property, +respectively (@pxref{Standard Properties}). + +@node Writing Dynamic Modules +@section Writing Dynamically-Loaded Modules +@cindex writing emacs modules +@cindex dynamic modules, writing + +@cindex module @acronym{API} + This section describes the Emacs module @acronym{API} and how to use +it as part of writing extension modules for Emacs. The module +@acronym{API} is defined in the C programming language, therefore the +description and the examples in this section assume the module is +written in C@. For other programming languages, you will need to use +the appropriate bindings, interfaces and facilities for calling C code. +Emacs C code requires a C99 or later compiler (@pxref{C Dialect}), and +so the code examples in this section also follow that standard. + +Writing a module and integrating it into Emacs comprises the following +tasks: + +@itemize @bullet +@item +Writing initialization code for the module. + +@item +Writing one or more module functions. + +@item +Communicating values and objects between Emacs and your module +functions. + +@item +Handling of error conditions and nonlocal exits. +@end itemize + +@noindent +The following subsections describe these tasks and the @acronym{API} +itself in more detail. + +Once your module is written, compile it to produce a shared library, +according to the conventions of the underlying platform. Then place +the shared library in a directory mentioned in @code{load-path} +(@pxref{Library Search}), where Emacs will find it. + +If you wish to verify the conformance of a module to the Emacs dynamic +module @acronym{API}, invoke Emacs with the @kbd{--module-assertions} +option. @xref{Initial Options,,,emacs, The GNU Emacs Manual}. + +@menu +* Module Initialization:: +* Module Functions:: +* Module Values:: +* Module Misc:: +* Module Nonlocal:: +@end menu + +@node Module Initialization +@subsection Module Initialization Code +@cindex module initialization + + Begin your module by including the header file @file{emacs-module.h} +and defining the GPL compatibility symbol: + +@example +#include + +int plugin_is_GPL_compatible; +@end example + +The @file{emacs-module.h} file is installed into your system's include +tree as part of the Emacs installation. Alternatively, you can find +it in the Emacs source tree. + +@anchor{module initialization function} +Next, write an initialization function for the module. + +@deftypefn Function int emacs_module_init (struct emacs_runtime *@var{runtime}) +Emacs calls this function when it loads a module. If a module does +not export a function named @code{emacs_module_init}, trying to load +the module will signal an error. The initialization function should +return zero if the initialization succeeds, non-zero otherwise. In +the latter case, Emacs will signal an error, and the loading of the +module will fail. If the user presses @kbd{C-g} during the +initialization, Emacs ignores the return value of the initialization +function and quits (@pxref{Quitting}). (If needed, you can catch user +quitting inside the initialization function, @pxref{should_quit}.) + +The argument @var{runtime} is a pointer to a C @code{struct} that +includes 2 public fields: @code{size}, which provides the size of the +structure in bytes; and @code{get_environment}, which provides a +pointer to a function that allows the module initialization function +access to the Emacs environment object and its interfaces. + +The initialization function should perform whatever initialization is +required for the module. In addition, it can perform the following +tasks: + +@table @asis +@cindex compatibility, between modules and Emacs +@item Compatibility verification +A module can verify that the Emacs executable which loads the module +is compatible with the module, by comparing the @code{size} member of +the @var{runtime} structure with the value compiled into the module: + +@example +int +emacs_module_init (struct emacs_runtime *ert) +@{ + if (ert->size < sizeof (*ert)) + return 1; +@} +@end example + +@noindent +If the size of the runtime object passed to the module is smaller than +what it expects, it means the module was compiled for an Emacs version +newer (later) than the one which attempts to load it, i.e.@: the +module might be incompatible with the Emacs binary. + +In addition, a module can verify the compatibility of the module +@acronym{API} with what the module expects. The following sample code +assumes it is part of the @code{emacs_module_init} function shown +above: + +@example + emacs_env *env = ert->get_environment (ert); + if (env->size < sizeof (*env)) + return 2; +@end example + +@noindent +@cindex module runtime environment +This calls the @code{get_environment} function using the pointer +provided in the @code{runtime} structure to retrieve a pointer to the +@acronym{API}'s @dfn{environment}, a C @code{struct} which also has a +@code{size} field holding the size of the structure in bytes. + +Finally, you can write a module that will work with older versions of +Emacs, by comparing the size of the environment passed by Emacs with +known sizes, like this: + +@example + emacs_env *env = ert->get_environment (ert); + if (env->size >= sizeof (struct emacs_env_26)) + emacs_version = 26; /* Emacs 26 or later. */ + else if (env->size >= sizeof (struct emacs_env_25)) + emacs_version = 25; + else + return 2; /* Unknown or unsupported version. */ +@end example + +@noindent +This works because later Emacs versions always @emph{add} members to +the environment, never @emph{remove} any members, so the size can only +grow with new Emacs releases. Given the version of Emacs, the module +can use only the parts of the module @acronym{API} that existed in +that version, since those parts are identical in later versions. + +We recommend that modules always perform the compatibility +verification, unless they do their job entirely in the initialization +function, and don't access any Lisp objects or use any Emacs functions +accessible through the environment structure. + +@item Binding module functions to Lisp symbols +This gives the module functions names so that Lisp code could call it +by that name. We describe how to do this in @ref{Module Functions} +below. +@end table +@end deftypefn + +@node Module Functions +@subsection Writing Module Functions +@cindex writing module functions +@cindex module functions + + The main reason for writing an Emacs module is to make additional +functions available to Lisp programs that load the module. This +subsection describes how to write such @dfn{module functions}. + +A module function has the following general form and signature: + +@deftypefn Function emacs_value module_func (emacs_env *@var{env}, ptrdiff_t @var{nargs}, emacs_value *@var{args}, void *@var{data}) +The @var{env} argument provides a pointer to the @acronym{API} +environment, needed to access Emacs objects and functions. The +@var{nargs} argument is the required number of arguments, which can be +zero (see @code{make_function} below for more flexible specification +of the argument number), and @var{args} is a pointer to the array of +the function arguments. The argument @var{data} points to additional +data required by the function, which was arranged when +@code{make_function} (see below) was called to create an Emacs +function from @code{module_func}. + +Module functions use the type @code{emacs_value} to communicate Lisp +objects between Emacs and the module (@pxref{Module Values}). The +@acronym{API}, described below and in the following subsections, +provides facilities for conversion between basic C data types and the +corresponding @code{emacs_value} objects. + +A module function always returns a value. If the function returns +normally, the Lisp code which called it will see the Lisp object +corresponding to the @code{emacs_value} value the function returned. +However, if the user typed @kbd{C-g}, or if the module function or its +callees signaled an error or exited nonlocally (@pxref{Module +Nonlocal}), Emacs will ignore the returned value and quit or throw as +it does when Lisp code encounters the same situations. +@end deftypefn + +After writing your C code for a module function, you should make a +Lisp function object from it using the @code{make_function} function, +whose pointer is provided in the environment (recall that the pointer +to the environment is returned by @code{get_environment}). This is +normally done in the module initialization function (@pxref{module +initialization function}), after verifying the @acronym{API} +compatibility. + +@deftypefn Function emacs_value make_function (emacs_env *@var{env}, ptrdiff_t @var{min_arity}, ptrdiff_t @var{max_arity}, subr @var{func}, const char *@var{docstring}, void *@var{data}) +@vindex emacs_variadic_function +This returns an Emacs function created from the C function @var{func}, +whose signature is as described for @code{module_func} above (assumed +here to be @code{typedef}'ed as @code{subr}). The arguments +@var{min_arity} and @var{max_arity} specify the minimum and maximum +number of arguments that @var{func} can accept. The @var{max_arity} +argument can have the special value @code{emacs_variadic_function}, +which makes the function accept an unlimited number of arguments, like +the @code{&rest} keyword in Lisp (@pxref{Argument List}). + +The argument @var{data} is a way to arrange for arbitrary additional +data to be passed to @var{func} when it is called. Whatever pointer +is passed to @code{make_function} will be passed unaltered to +@var{func}. + +The argument @var{docstring} specifies the documentation string for +the function. It should be either an @acronym{ASCII} string, or a +UTF-8 encoded non-@acronym{ASCII} string, or a @code{NULL} pointer; in +the latter case the function will have no documentation. The +documentation string can end with a line that specifies the advertised +calling convention, see @ref{Function Documentation}. + +Since every module function must accept the pointer to the environment +as its first argument, the call to @code{make_function} could be made +from any module function, but you will normally want to do that from +the module initialization function, so that all the module functions +are known to Emacs once the module is loaded. +@end deftypefn + +Finally, you should bind the Lisp function to a symbol, so that Lisp +code could call your function by name. For that, use the module +@acronym{API} function @code{intern} (@pxref{intern}) whose pointer is +also provided in the environment that module functions can access. + +Combining the above steps, code that arranges for a C function +@code{module_func} to be callable as @code{module-func} from Lisp will +look like this, as part of the module initialization function: + +@example + emacs_env *env = ert->get_environment (ert); + emacs_value func = env->make_function (env, min_arity, max_arity, + module_func, docstring, data); + emacs_value symbol = env->intern (env, "module-func"); + emacs_value args[] = @{symbol, func@}; + env->funcall (env, env->intern (env, "defalias"), 2, args); +@end example + +@noindent +This makes the symbol @code{module-func} known to Emacs by calling +@code{env->intern}, then invokes @code{defalias} from Emacs to bind +the function to that symbol. Note that it is possible to use +@code{fset} instead of @code{defalias}; the differences are described +in @ref{Defining Functions, defalias}. + +Using the module @acronym{API}, it is possible to define more complex +function and data types: interactive functions, inline functions, +macros, etc. However, the resulting C code will be cumbersome and +hard to read. Therefore, we recommend that you limit the module code +which creates functions and data structures to the absolute minimum, +and leave the rest for a Lisp package that will accompany your module, +because doing these additional tasks in Lisp is much easier, and will +produce a much more readable code. For example, given a module +function @code{module-func} defined as above, one way of making an +interactive command @code{module-cmd} based on it is with the +following simple Lisp wrapper: + +@lisp +(defun module-cmd (&rest args) + "Documentation string for the command." + (interactive @var{spec}) + (apply 'module-func args)) +@end lisp + +The Lisp package which goes with your module could then load the +module using the @code{module-load} primitive (@pxref{Dynamic +Modules}) when the package is loaded into Emacs. + +@node Module Values +@subsection Conversion Between Lisp and Module Values +@cindex module values, conversion + +@cindex @code{emacs_value} data type + With very few exceptions, most modules need to exchange data with +Lisp programs that call them: accept arguments to module functions and +return values from module functions. For this purpose, the module +@acronym{API} provides the @code{emacs_value} type, which represents +Emacs Lisp objects communicated via the @acronym{API}; it is the +functional equivalent of the @code{Lisp_Object} type used in Emacs C +primitives (@pxref{Writing Emacs Primitives}). This section describes +the parts of the module @acronym{API} that allow to create +@code{emacs_value} objects corresponding to basic Lisp data types, and +how to access from C data in @code{emacs_value} objects that +correspond to Lisp objects. + +All of the functions described below are actually @emph{function +pointers} provided via the pointer to the environment which every +module function accepts. Therefore, module code should call these +functions through the environment pointer, like this: + +@example +emacs_env *env; /* the environment pointer */ +env->some_function (arguments@dots{}); +@end example + +@noindent +The @code{emacs_env} pointer will usually come from the first argument +to the module function, or from the call to @code{get_environment} if +you need the environment in the module initialization function. + +Most of the functions described below became available in Emacs 25, +the first Emacs release that supported dynamic modules. For the few +functions that became available in later Emacs releases, we mention +the first Emacs version that supported them. + +The following @acronym{API} functions extract values of various C data +types from @code{emacs_value} objects. They all raise the +@code{wrong-type-argument} error condition (@pxref{Type Predicates}) +if the argument @code{emacs_value} object is not of the type expected +by the function. @xref{Module Nonlocal}, for details of how signaling +errors works in Emacs modules, and how to catch error conditions +inside the module before they are reported to Emacs. The +@acronym{API} function @code{type_of} (@pxref{Module Misc, type_of}) +can be used to obtain the type of a @code{emacs_value} object. + +@deftypefn Function intmax_t extract_integer (emacs_env *@var{env}, emacs_value @var{arg}) +This function returns the value of a Lisp integer specified by +@var{arg}. The C data type of the return value, @code{intmax_t}, is +the widest integral data type supported by the C compiler, typically +@w{@code{long long}}. +@end deftypefn + +@deftypefn Function double extract_float (emacs_env *@var{env}, emacs_value @var{arg}) +This function returns the value of a Lisp float specified by +@var{arg}, as a C @code{double} value. +@end deftypefn + +@deftypefn Function bool copy_string_contents (emacs_env *@var{env}, emacs_value @var{arg}, char *@var{buf}, ptrdiff_t *@var{len}) +This function stores the UTF-8 encoded text of a Lisp string specified +by @var{arg} in the array of @code{char} pointed by @var{buf}, which +should have enough space to hold at least @code{*@var{len}} bytes, +including the terminating null byte. The argument @var{len} must not +be a @code{NULL} pointer, and, when the function is called, it should +point to a value that specifies the size of @var{buf} in bytes. + +If the buffer size specified by @code{*@var{len}} is large enough to +hold the string's text, the function stores in @code{*@var{len}} the +actual number of bytes copied to @var{buf}, including the terminating +null byte, and returns @code{true}. If the buffer is too small, the +function raises the @code{args-out-of-range} error condition, stores +the required number of bytes in @code{*@var{len}}, and returns +@code{false}. @xref{Module Nonlocal}, for how to handle pending error +conditions. + +The argument @var{buf} can be a @code{NULL} pointer, in which case the +function stores in @code{*@var{len}} the number of bytes required for +storing the contents of @var{arg}, and returns @code{true}. This is +how you can determine the size of @var{buf} needed to store a +particular string: first call @code{copy_string_contents} with +@code{NULL} as @var{buf}, then allocate enough memory to hold the +number of bytes stored by the function in @code{*@var{len}}, and call +the function again with non-@code{NULL} @var{buf} to actually perform +the text copying. +@end deftypefn + +@deftypefn Function emacs_value vec_get (emacs_env *@var{env}, emacs_value @var{vector}, ptrdiff_t @var{index}) +This function returns the element of @var{vector} at @var{index}. The +@var{index} of the first vector element is zero. The function raises +the @code{args-out-of-range} error condition if the value of +@var{index} is invalid. To extract C data from the value the function +returns, use the other extraction functions described here, as +appropriate for the Lisp data type stored in that element of the +vector. +@end deftypefn + +@deftypefn Function ptrdiff_t vec_size (emacs_env *@var{env}, emacs_value @var{vector}) +This function returns the number of elements in @var{vector}. +@end deftypefn + +@deftypefn Function void vec_set (emacs_env *@var{env}, emacs_value @var{vector}, ptrdiff_t @var{index}, emacs_value @var{value}) +This function stores @var{value} in the element of @var{vector} whose +index is @var{index}. It raises the @code{args-out-of-range} error +condition if the value of @var{index} is invalid. +@end deftypefn + +The following @acronym{API} functions create @code{emacs_value} +objects from basic C data types. They all return the created +@code{emacs_value} object. + +@deftypefn Function emacs_value make_integer (emacs_env *@var{env}, intmax_t @var{n}) +This function takes an integer argument @var{n} and returns the +corresponding @code{emacs_value} object. It raises the +@code{overflow-error} error condition if the value of @var{n} cannot +be represented as an Emacs integer, i.e.@: is not inside the limits +set by @code{most-negative-fixnum} and @code{most-positive-fixnum} +(@pxref{Integer Basics}). +@end deftypefn + +@deftypefn Function emacs_value make_float (emacs_env *@var{env}, double @var{d}) +This function takes a @code{double} argument @var{d} and returns the +corresponding Emacs floating-point value. +@end deftypefn + +@deftypefn Function emacs_value make_string (emacs_env *@var{env}, const char *@var{str}, ptrdiff_t @var{strlen}) +This function creates an Emacs string from C text string pointed by +@var{str} whose length in bytes, not including the terminating null +byte, is @var{strlen}. The original string in @var{str} can be either +an @acronym{ASCII} string or a UTF-8 encoded non-@acronym{ASCII} +string; it can include embedded null bytes, and doesn't have to end in +a terminating null byte at @code{@var{str}[@var{strlen}]}. The +function raises the @code{overflow-error} error condition if +@var{strlen} is negative or exceeds the maximum length of an Emacs +string. +@end deftypefn + +The @acronym{API} does not provide functions to manipulate Lisp data +structures, for example, create lists with @code{cons} and @code{list} +(@pxref{Building Lists}), extract list members with @code{car} and +@code{cdr} (@pxref{List Elements}), create vectors with @code{vector} +(@pxref{Vector Functions}), etc. For these, use @code{intern} and +@code{funcall}, described in the next subsection, to call the +corresponding Lisp functions. + +Normally, @code{emacs_value} objects have a rather short lifetime: it +ends when the @code{emacs_env} pointer used for their creation goes +out of scope. Occasionally, you may need to create @dfn{global +references}: @code{emacs_value} objects that live as long as you +wish. Use the following two functions to manage such objects. + +@deftypefn Function emacs_value make_global_ref (emacs_env *@var{env}, emacs_value @var{value}) +This function returns a global reference for @var{value}. +@end deftypefn + +@deftypefn Function void free_global_ref (emacs_env *@var{env}, emacs_value @var{global_value}) +This function frees the @var{global_value} previously created by +@code{make_global_ref}. The @var{global_value} is no longer valid +after the call. Your module code should pair each call to +@code{make_global_ref} with the corresponding @code{free_global_ref}. +@end deftypefn + +@cindex user pointer, using in module functions +An alternative to keeping around C data structures that need to be +passed to module functions later is to create @dfn{user pointer} +objects. A user pointer, or @code{user-ptr}, object is a Lisp object +that encapsulates a C pointer and can have an associated finalizer +function, which is called when the object is garbage-collected +(@pxref{Garbage Collection}). The module @acronym{API} provides +functions to create and access @code{user-ptr} objects. These +functions raise the @code{wrong-type-argument} error condition if they +are called on @code{emacs_value} that doesn't represent a +@code{user-ptr} object. + +@deftypefn Function emacs_value make_user_ptr (emacs_env *@var{env}, emacs_finalizer @var{fin}, void *@var{ptr}) +This function creates and returns a @code{user-ptr} object which wraps +the C pointer @var{ptr}. The finalizer function @var{fin} can be a +@code{NULL} pointer (meaning no finalizer), or it can be a function of +the following signature: + +@example +typedef void (*emacs_finalizer) (void *@var{ptr}); +@end example + +@noindent +If @var{fin} is not a @code{NULL} pointer, it will be called with the +@var{ptr} as the argument when the @code{user-ptr} object is +garbage-collected. Don't run any expensive code in a finalizer, +because GC must finish quickly to keep Emacs responsive. +@end deftypefn + +@deftypefn Function void *get_user_ptr (emacs_env *@var{env}, emacs_value val) +This function extracts the C pointer from the Lisp object represented +by @var{val}. +@end deftypefn + +@deftypefn Function void set_user_ptr (emacs_env *@var{env}, emacs_value @var{value}, void *@var{ptr}) +This function sets the C pointer embedded in the @code{user-ptr} +object represented by @var{value} to @var{ptr}. +@end deftypefn + +@deftypefn Function emacs_finalizer get_user_finalizer (emacs_env *@var{env}, emacs_value val) +This function returns the finalizer of the @code{user-ptr} object +represented by @var{val}, or @code{NULL} if it doesn't have a finalizer. +@end deftypefn + +@deftypefn Function void set_user_finalizer (emacs_env *@var{env}, emacs_value @var{val}, emacs_finalizer @var{fin}) +This function changes the finalizer of the @code{user-ptr} object +represented by @var{val} to be @var{fin}. If @var{fin} is a +@code{NULL} pointer, the @code{user-ptr} object will have no finalizer. +@end deftypefn + +@node Module Misc +@subsection Miscellaneous Convenience Functions for Modules + + This subsection describes a few convenience functions provided by +the module @acronym{API}. Like the functions described in previous +subsections, all of them are actually function pointers, and need to +be called via the @code{emacs_env} pointer. Description of functions +that were introduced after Emacs 25 calls out the first version where +they became available. + +@deftypefn Function bool eq (emacs_env *@var{env}, emacs_value @var{val1}, emacs_value @var{val2}) +This function returns @code{true} if the Lisp objects represented by +@var{val1} and @var{val2} are identical, @code{false} otherwise. This +is the same as the Lisp function @code{eq} (@pxref{Equality +Predicates}), but avoids the need to intern the objects represented by +the arguments. + +There are no @acronym{API} functions for other equality predicates, so +you will need to use @code{intern} and @code{funcall}, described +below, to perform more complex equality tests. +@end deftypefn + +@deftypefn Function bool is_not_nil (emacs_env *@var{env}, emacs_value @var{val}) +This function tests whether the Lisp object represented by @var{val} +is non-@code{nil}; it returns @code{true} or @code{false} accordingly. + +Note that you could implement an equivalent test by using +@code{intern} to get an @code{emacs_value} representing @code{nil}, +then use @code{eq}, described above, to test for equality. But using +this function is more convenient. +@end deftypefn + +@deftypefn Function emacs_value type_of (emacs_env *@var{env}, emacs_value @code{object}) +This function returns the type of @var{object} as a value that +represents a symbol: @code{string} for a string, @code{integer} for an +integer, @code{process} for a process, etc. @xref{Type Predicates}. +You can use @code{intern} and @code{eq} to compare against known type +symbols, if your code needs to depend on the object type. +@end deftypefn + +@anchor{intern} +@deftypefn Function emacs_value intern (emacs_env *@var{env}, const char *name) +This function returns an interned Emacs symbol whose name is +@var{name}, which should be an @acronym{ASCII} null-terminated string. +It creates a new symbol if one does not already exist. + +Together with @code{funcall}, described below, this function provides +a means for invoking any Lisp-callable Emacs function, provided that +its name is a pure @acronym{ASCII} string. For example, here's how to +intern a symbol whose name @code{name_str} is non-@acronym{ASCII}, by +calling the more powerful Emacs @code{intern} function +(@pxref{Creating Symbols}): + +@example +emacs_value fintern = env->intern (env, "intern"); +emacs_value sym_name = + env->make_string (env, name_str, strlen (name_str)); +emacs_value intern_args[] = @{ sym_name, env->intern (env, "nil") @}; +emacs_value symbol = env->funcall (env, fintern, 2, intern_args); +@end example + +@end deftypefn + +@deftypefn Function emacs_value funcall (emacs_env *@var{env}, emacs_value @var{func}, ptrdiff_t @var{nargs}, emacs_value *@var{args}) +This function calls the specified @var{func} passing it @var{nargs} +arguments from the array pointed to by @var{args}. The argument +@var{func} can be a function symbol (e.g., returned by @code{intern} +described above), a module function returned by @code{make_function} +(@pxref{Module Functions}), a subroutine written in C, etc. If +@var{nargs} is zero, @var{args} can be a @code{NULL} pointer. + +The function returns the value that @var{func} returned. +@end deftypefn + +If your module includes potentially long-running code, it is a good +idea to check from time to time in that code whether the user wants to +quit, e.g., by typing @kbd{C-g} (@pxref{Quitting}). The following +function, which is available since Emacs 26.1, is provided for that +purpose. + +@anchor{should_quit} +@deftypefn Function bool should_quit (emacs_env *@var{env}) +This function returns @code{true} if the user wants to quit. In that +case, we recommend that your module function aborts any on-going +processing and returns as soon as possible. +@end deftypefn + +@node Module Nonlocal +@subsection Nonlocal Exits in Modules +@cindex nonlocal exits, in modules + + Emacs Lisp supports nonlocal exits, whereby program control is +transfered from one point in a program to another remote point. +@xref{Nonlocal Exits}. Thus, Lisp functions called by your module +might exit nonlocally by calling @code{signal} or @code{throw}, and +your module functions must handle such nonlocal exits properly. Such +handling is needed because C programs will not automatically release +resources and perform other cleanups in these cases; your module code +must itself do it. The module @acronym{API} provides facilities for +that, described in this subsection. They are generally available +since Emacs 25; those of them that became available in later releases +explicitly call out the first Emacs version where they became part of +the @acronym{API}. + +When some Lisp code called by a module function signals an error or +throws, the nonlocal exit is trapped, and the pending exit and its +associated data are stored in the environment. Whenever a nonlocal +exit is pending in the environment, any module @acronym{API} function +called with a pointer to that environment will return immediately +without any processing (the functions @code{non_local_exit_check}, +@code{non_local_exit_get}, and @code{non_local_exit_clear} are +exceptions from this rule). If your module function then does nothing +and returns to Emacs, a pending nonlocal exit will cause Emacs to act +on it: signal an error or throw to the corresponding @code{catch}. + +So the simplest ``handling'' of nonlocal exits in module functions is +to do nothing special and let the rest of your code to run as if +nothing happened. However, this can cause two classes of problems: + +@itemize @minus +@item +Your module function might use uninitialized or undefined values, +since @acronym{API} functions return immediately without producing the +expected results. + +@item +Your module might leak resources, because it might not have the +opportunity to release them. +@end itemize + +Therefore, we recommend that your module functions check for nonlocal +exit conditions and recover from them, using the functions described +below. + +@deftypefn Function enum emacs_funcall_exit non_local_exit_check (emacs_env *@var{env}) +This function returns the kind of nonlocal exit condition stored in +@var{env}. The possible values are: + +@vindex emacs_funcall_exit@r{, enumeration} +@vtable @code +@item emacs_funcall_exit_return +The last @acronym{API} function exited normally. +@item emacs_funcall_exit_signal +The last @acronym{API} function signaled an error. +@item emacs_funcall_exit_throw +The last @acronym{API} function exited via @code{throw}. +@end vtable +@end deftypefn + +@deftypefn Function emacs_funcall_exit non_local_exit_get (emacs_env *@var{env}, emacs_value *@var{symbol}, emacs_value *@var{data}) +This function returns the kind of nonlocal exit condition stored in +@var{env}, like @code{non_local_exit_check} does, but it also returns +the full information about the nonlocal exit, if any. If the return +value is @code{emacs_funcall_exit_signal}, the function stores the +error symbol in @code{*@var{symbol}} and the error data in +@code{*@var{data}} (@pxref{Signaling Errors}). If the return value is +@code{emacs_funcall_exit_throw}, the function stores the @code{catch} +tag symbol in @code{*@var{symbol}} and the @code{throw} value in +@code{*@var{data}}. The function doesn't store anything in memory +pointed by these arguments when the return value is +@code{emacs_funcall_exit_return}. +@end deftypefn + +You should check nonlocal exit conditions where it matters: before you +allocated some resource or after you allocated a resource that might +need freeing, or where a failure means further processing is +impossible or infeasible. + +Once your module function detected that a nonlocal exit is pending, it +can either return to Emacs (after performing the necessary local +cleanup), or it can attempt to recover from the nonlocal exit. The +following @acronym{API} functions will help with these tasks. + +@deftypefn Function void non_local_exit_clear (emacs_env *@var{env}) +This function clears the pending nonlocal exit conditions and data +from @var{env}. After calling it, the module @acronym{API} functions +will work normally. Use this function if your module function can +recover from nonlocal exits of the Lisp functions it calls and +continue, and also before calling any of the following two functions +(or any other @acronym{API} functions, if you want them to perform +their intended processing when a nonlocal exit is pending). +@end deftypefn + +@deftypefn Function void non_local_exit_throw (emacs_env *@var{env}, emacs_value @var{tag}, emacs_value @var{value}) +This function throws to the Lisp @code{catch} symbol represented by +@var{tag}, passing it @var{value} as the value to return. Your module +function should in general return soon after calling this function. +One use of this function is when you want to re-throw a non-local exit +from one of the called @acronym{API} or Lisp functions. +@end deftypefn + +@deftypefn Function void non_local_exit_signal (emacs_env *@var{env}, emacs_value @var{error}, emacs_value @var{data}) +This function signals the error represented by @var{error} with the +specified error data @var{data}. The module function should return +soon after calling this function. This function could be useful, +e.g., for signaling errors from module functions to Emacs. +@end deftypefn + @node Object Internals @section Object Internals @@ -1043,7 +1751,7 @@ and form the set of subtypes of @code{Lisp_Misc}. Below there is a description of a few subtypes of @code{Lisp_Vectorlike}. Buffer object represents the text to display and edit. Window is the part -of display structure which shows the buffer or used as a container to +of display structure which shows the buffer or is used as a container to recursively place other windows on the same frame. (Do not confuse Emacs Lisp window object with the window as an entity managed by the user interface system like X; in Emacs terminology, the latter is called frame.) Finally, @@ -1070,7 +1778,8 @@ Here are some of the fields in @code{struct buffer_text}: @table @code @item beg -The address of the buffer contents. +The address of the buffer contents. The buffer contents is a linear C +array of @code{char}, with the gap somewhere in its midst. @item gpt @itemx gpt_byte @@ -1094,8 +1803,8 @@ buffer-modification event, and is never otherwise changed; @code{save_modiff} contains the value of @code{modiff} the last time the buffer was visited or saved; @code{chars_modiff} counts only modifications to the characters in the buffer, ignoring all other -kinds of changes; and @code{overlay_modiff} counts only modifications -to the overlays. +kinds of changes (such as text properties); and @code{overlay_modiff} +counts only modifications to the buffer's overlays. @item beg_unchanged @itemx end_unchanged @@ -1203,13 +1912,22 @@ position. @item name A Lisp string that names the buffer. It is guaranteed to be unique. -@xref{Buffer Names}. +@xref{Buffer Names}. This and the following fields have their names +in the C struct definition end in a @code{_} to indicate that they +should not be accessed directly, but via the @code{BVAR} macro, like +this: + +@example + Lisp_Object buf_name = BVAR (buffer, name); +@end example @item save_length The length of the file this buffer is visiting, when last read or -saved. This and other fields concerned with saving are not kept in -the @code{buffer_text} structure because indirect buffers are never -saved. +saved. It can have 2 special values: @minus{}1 means auto-saving was +turned off in this buffer, and @minus{}2 means don't turn off +auto-saving if buffer text shrinks a lot. This and other fields +concerned with saving are not kept in the @code{buffer_text} structure +because indirect buffers are never saved. @item directory The directory for expanding relative file names. This is the value of @@ -1333,75 +2051,104 @@ if that window no longer displays this buffer. @table @code @item frame -The frame that this window is on. +The frame that this window is on, as a Lisp object. -@item mini_p -Non-@code{nil} if this window is a minibuffer window. +@item mini +Non-zero if this window is a minibuffer window, a window showing the +minibuffer or the echo area. + +@item pseudo_window_p +@cindex pseudo window +Non-zero if this window is a @dfn{pseudo window}. A pseudo window is +either a window used to display the menu bar or the tool bar (when +Emacs uses toolkits that don't display their own menu bar and tool +bar) or a window showing a tooltip on a tooltip frame. Pseudo windows +are in general not accessible from Lisp code. @item parent -Internally, Emacs arranges windows in a tree; each group of siblings has -a parent window whose area includes all the siblings. This field points -to a window's parent. +Internally, Emacs arranges windows in a tree; each group of siblings +has a parent window whose area includes all the siblings. This field +points to the window's parent in that tree, as a Lisp object. For the +root window of the tree and a minibuffer window this is always +@code{nil}. Parent windows do not display buffers, and play little role in display -except to shape their child windows. Emacs Lisp programs usually have -no access to the parent windows; they operate on the windows at the +except to shape their child windows. Emacs Lisp programs cannot +directly manipulate parent windows; they operate on the windows at the leaves of the tree, which actually display buffers. -@c FIXME: These two slots and the 'buffer' slot below were replaced -@c with a single slot 'contents' on 2013-03-28. --xfq -@item hchild -@itemx vchild -These fields contain the window's leftmost child and its topmost child -respectively. @code{hchild} is used if the window is subdivided -horizontally by child windows, and @code{vchild} if it is subdivided -vertically. In a live window, only one of @code{hchild}, @code{vchild}, -and @code{buffer} (q.v.@:) is non-@code{nil}. +@item contents +For a leaf window and windows showing a tooltip, this is the buffer, +as a Lisp object, that the window is displaying. For an internal +(``parent'') window, this is its first child window. For a pseudo +window showing a menu or tool bar this is @code{nil}. It is also +@code{nil} for a window that has been deleted. @item next @itemx prev -The next sibling and previous sibling of this window. @code{next} is -@code{nil} if the window is the right-most or bottom-most in its group; -@code{prev} is @code{nil} if it is the left-most or top-most in its -group. +The next and previous sibling of this window as Lisp objects. +@code{next} is @code{nil} if the window is the right-most or +bottom-most in its group; @code{prev} is @code{nil} if it is the +left-most or top-most in its group. Whether the sibling is left/right +or up/down is determined by the @code{horizontal} field of the +sibling's parent: if it's non-zero, the siblings are arranged +horizontally. + +As a special case, @code{next} of a frame's root window points to the +frame's minibuffer window, provided this is not a minibuffer-only or +minibuffer-less frame. On such frames @code{prev} of the minibuffer +window points to that frame's root window. In any other case, the +root window's @code{next} and the minibuffer window's (if present) +@code{prev} fields are @code{nil}. @item left_col The left-hand edge of the window, measured in columns, relative to the -leftmost column in the frame (column 0). +leftmost column (column 0) of the window's native frame. @item top_line The top edge of the window, measured in lines, relative to the topmost -line in the frame (line 0). +line (line 0) of the window's native frame. + +@item pixel_left +@itemx pixel_top +The left-hand and top edges of this window, measured in pixels, +relative to the top-left corner (0, 0) of the window's native frame. @item total_cols @itemx total_lines -The width and height of the window, measured in columns and lines -respectively. The width includes the scroll bar and fringes, and/or -the separator line on the right of the window (if any). +The total width and height of the window, measured in columns and +lines respectively. The values include scroll bars and fringes, +dividers and/or the separator line on the right of the window (if +any). -@item buffer -The buffer that the window is displaying. +@item pixel_width; +@itemx pixel_height; +The total width and height of the window measured in pixels. @item start A marker pointing to the position in the buffer that is the first -character displayed in the window. +character (in the logical order, @pxref{Bidirectional Display}) +displayed in the window. @item pointm @cindex window point internals This is the value of point in the current buffer when this window is selected; when it is not selected, it retains its previous value. +@item old_pointm +The value of @code{pointm} at the last redisplay time. + @item force_start If this flag is non-@code{nil}, it says that the window has been -scrolled explicitly by the Lisp program. This affects what the next -redisplay does if point is off the screen: instead of scrolling the -window to show the text around point, it moves point to a location that -is on the screen. +scrolled explicitly by the Lisp program, and the value of the the +window's @code{start} was set for redisplay to honor. This affects +what the next redisplay does if point is off the screen: instead of +scrolling the window to show the text around point, it moves point to +a location that is on the screen. -@item frozen_window_start_p -This field is set temporarily to 1 to indicate to redisplay that -@code{start} of this window should not be changed, even if point -gets invisible. +@item optional_new_start +This is similar to @code{force_start}, but the next redisplay will +only obey it if point stays visible. @item start_at_line_beg Non-@code{nil} means current value of @code{start} was the beginning of a line @@ -1427,30 +2174,36 @@ The buffer's value of point, as of the last time a redisplay completed in this window. @item last_had_star -A non-@code{nil} value means the window's buffer was modified when the +A non-zero value means the window's buffer was modified when the window was last updated. -@item vertical_scroll_bar -This window's vertical scroll bar. +@item vertical_scroll_bar_type +@itemx horizontal_scroll_bar_type +The types of this window's vertical and horizontal scroll bars. + +@item scroll_bar_width +@itemx scroll_bar_height +The width of this window's vertical scroll bar and the height of this +window's horizontal scroll bar, in pixels. @item left_margin_cols @itemx right_margin_cols The widths of the left and right margins in this window. A value of -@code{nil} means no margin. +zero means no margin. @item left_fringe_width @itemx right_fringe_width -The widths of the left and right fringes in this window. A value of -@code{nil} or @code{t} means use the values of the frame. +The pixel widths of the left and right fringes in this window. A +value of @minus{}1 means use the values of the frame. @item fringes_outside_margins -A non-@code{nil} value means the fringes outside the display margins; +A non-zero value means the fringes outside the display margins; othersize they are between the margin and the text. @item window_end_pos This is computed as @code{z} minus the buffer position of the last glyph in the current matrix of the window. The value is only valid if -@code{window_end_valid} is not @code{nil}. +@code{window_end_valid} is non-zero. @item window_end_bytepos The byte position corresponding to @code{window_end_pos}. @@ -1460,16 +2213,17 @@ The window-relative vertical position of the line containing @code{window_end_pos}. @item window_end_valid -This field is set to a non-@code{nil} value if @code{window_end_pos} is truly -valid. This is @code{nil} if nontrivial redisplay is pre-empted, since in that -case the display that @code{window_end_pos} was computed for did not get -onto the screen. +This field is set to a non-zero value if @code{window_end_pos} and +@code{window_end_vpos} are truly valid. This is zero if nontrivial +redisplay is pre-empted, since in that case the display that +@code{window_end_pos} was computed for did not get onto the screen. @item cursor A structure describing where the cursor is in this window. -@item last_cursor -The value of @code{cursor} as of the last redisplay that finished. +@item last_cursor_vpos +The window-relative vertical position of the line showing the cursor +as of the last redisplay that finished. @item phys_cursor A structure describing where the cursor of this window physically is. @@ -1497,8 +2251,16 @@ the last redisplay. This is set to 1 during redisplay when this window must be updated. @item hscroll -This is the number of columns that the display in the window is scrolled -horizontally to the left. Normally, this is 0. +This is the number of columns that the display in the window is +scrolled horizontally to the left. Normally, this is 0. When only +the current line is hscrolled, this describes how much the current +line is scrolled. + +@item min_hscroll +Minimum value of @code{hscroll}, set by the user via +@code{set-window-hscroll} (@pxref{Horizontal Scrolling}). When only +the current line is hscrolled, this describes the horizontal scrolling +of lines other than the current one. @item vscroll Vertical scroll amount, in pixels. Normally, this is 0. @@ -1506,24 +2268,37 @@ Vertical scroll amount, in pixels. Normally, this is 0. @item dedicated Non-@code{nil} if this window is dedicated to its buffer. +@item combination_limit +This window's combination limit, meaningful only for a parent window. +If this is @code{t}, then it is not allowed to delete this window and +recombine its child windows with other siblings of this window. + +@item window_parameters +The alist of this window's parameters. + @item display_table The window's display table, or @code{nil} if none is specified for it. @item update_mode_line -Non-@code{nil} means this window's mode line needs to be updated. +Non-zero means this window's mode line needs to be updated. + +@item mode_line_height +@itemx header_line_height +The height in pixels of the mode line and the header line, or +@minus{}1 if not known. @item base_line_number -The line number of a certain position in the buffer, or @code{nil}. +The line number of a certain position in the buffer, or zero. This is used for displaying the line number of point in the mode line. @item base_line_pos The position in the buffer for which the line number is known, or -@code{nil} meaning none is known. If it is a buffer, don't display +zero meaning none is known. If it is @minus{}1, don't display the line number as long as the window shows that buffer. @item column_number_displayed -The column number currently displayed in this window's mode line, or @code{nil} -if column numbers are not being displayed. +The column number currently displayed in this window's mode line, or +@minus{}1 if column numbers are not being displayed. @item current_matrix @itemx desired_matrix @@ -1540,7 +2315,7 @@ Glyph matrices describing the current and desired display of this window. @table @code @item name -A string, the name of the process. +A Lisp string, the name of the process. @item command A list containing the command arguments that were used to start this @@ -1548,10 +2323,10 @@ process. For a network or serial process, it is @code{nil} if the process is running or @code{t} if the process is stopped. @item filter -A function used to accept output from the process. +A Lisp function used to accept output from the process. @item sentinel -A function called whenever the state of the process changes. +A Lisp function called whenever the state of the process changes. @item buffer The associated buffer of the process. @@ -1578,7 +2353,8 @@ does not ask for confirmation about killing the process. The raw process status, as returned by the @code{wait} system call. @item status -The process status, as @code{process-status} should return it. +The process status, as @code{process-status} should return it. This +is a Lisp symbol, a cons cell, or a list. @item tick @itemx update_tick @@ -1587,8 +2363,8 @@ needs to be reported, either by running the sentinel or by inserting a message in the process buffer. @item pty_flag -Non-@code{nil} if communication with the subprocess uses a pty; -@code{nil} if it uses a pipe. +Non-zero if communication with the subprocess uses a pty; zero if it +uses a pipe. @item infd The file descriptor for input from the process. diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi index f421f3b3efbc..2b5f79052581 100644 --- a/doc/lispref/intro.texi +++ b/doc/lispref/intro.texi @@ -1,6 +1,6 @@ @c -*-coding: utf-8-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1994, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Introduction diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index cc2e11e0b6d1..d839be0e932e 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1994, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Keymaps @chapter Keymaps @@ -2502,7 +2502,7 @@ can do it this way: Emacs usually shows a @dfn{menu bar} at the top of each frame. @xref{Menu Bars,,,emacs, The GNU Emacs Manual}. Menu bar items are -subcommands of the fake function key @code{menu-bar}, as defined +subcommands of the fake function key @key{MENU-BAR}, as defined in the active keymaps. To add an item to the menu bar, invent a fake function key of your @@ -2554,9 +2554,10 @@ bar item: @end example @noindent -Here, @code{edit} is the fake function key used by the global map for -the @samp{Edit} menu bar item. The main reason to suppress a global -menu bar item is to regain space for mode-specific items. +Here, @code{edit} is the symbol produced by a fake function key, it is +used by the global map for the @samp{Edit} menu bar item. The main +reason to suppress a global menu bar item is to regain space for +mode-specific items. @defvar menu-bar-final-items Normally the menu bar shows global items followed by items defined by the @@ -2601,7 +2602,7 @@ If the value is @code{grow-only}, the tool bar expands automatically, but does not contract automatically. The tool bar contents are controlled by a menu keymap attached to a -fake function key called @code{tool-bar} (much like the way the menu +fake function key called @key{TOOL-BAR} (much like the way the menu bar is controlled). So you define a tool bar item using @code{define-key}, like this: diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi index da2215906d19..1f12efe3559e 100644 --- a/doc/lispref/lay-flat.texi +++ b/doc/lispref/lay-flat.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c @comment %**start of header diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index ce62793550df..615f21581aa1 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Lists @@ -640,7 +640,7 @@ resulting list. Instead, the sequence becomes the final @sc{cdr}, like any other non-list final argument. @defun copy-tree tree &optional vecp -This function returns a copy of the tree @code{tree}. If @var{tree} is a +This function returns a copy of the tree @var{tree}. If @var{tree} is a cons cell, this makes a new cons cell with the same @sc{car} and @sc{cdr}, then recursively copies the @sc{car} and @sc{cdr} in the same way. diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 80b75729c130..fa6b301bb0f9 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Loading @@ -466,9 +466,11 @@ first call to the function automatically loads the proper library, in order to install the real definition and other associated code, then runs the real definition as if it had been loaded all along. Autoloading can also be triggered by looking up the documentation of -the function or macro (@pxref{Documentation Basics}). +the function or macro (@pxref{Documentation Basics}), and completion +of variable and function names (@pxref{Autoload by Prefix} below). @menu +* Autoload by Prefix:: Autoload by Prefix. * When to Autoload:: When to Use Autoload. @end menu @@ -703,6 +705,25 @@ symbol's new function value. If the value of the optional argument function, only a macro. @end defun +@node Autoload by Prefix +@subsection Autoload by Prefix +@cindex autoload by prefix + +@vindex definition-prefixes +@findex register-definition-prefixes +@vindex autoload-compute-prefixes +During completion for the commands @code{describe-variable} and +@code{describe-function}, Emacs will try to load files which may +contain definitions matching the prefix being completed. The variable +@code{definition-prefixes} holds a hashtable which maps a prefix to +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{update-file-autoloads} +(@pxref{Autoload}). Files which don't contain any definitions worth +loading (test files, for examples), should set +@code{autoload-compute-prefixes} to @code{nil} as a file-local +variable. + @node When to Autoload @subsection When to Use Autoload @cindex autoload, when to use @@ -1139,8 +1160,6 @@ Features}). @section Emacs Dynamic Modules @cindex dynamic modules -@c FIXME: This is intentionally incomplete, as the module integration -@c is not yet finished. To be refined later. A @dfn{dynamic Emacs module} is a shared library that provides additional functionality for use in Emacs Lisp programs, just like a package written in Emacs Lisp would. @@ -1162,30 +1181,43 @@ Every dynamic module should export a C-callable function named @code{load} or @code{require} which loads the module. It should also export a symbol named @code{plugin_is_GPL_compatible} to indicate that its code is released under the GPL or compatible license; Emacs will -refuse to load modules that don't export such a symbol. +signal an error if your program tries to load modules that don't +export such a symbol. If a module needs to call Emacs functions, it should do so through the -API defined and documented in the header file @file{emacs-module.h} -that is part of the Emacs distribution. +@acronym{API} (Application Programming Interface) defined and +documented in the header file @file{emacs-module.h} that is part of +the Emacs distribution. @xref{Writing Dynamic Modules}, for details +of using that API when writing your own modules. @cindex user-ptr object +@cindex user pointer object Modules can create @code{user-ptr} Lisp objects that embed pointers to C struct's defined by the module. This is useful for keeping around complex data structures created by a module, to be passed back to the module's functions. User-ptr objects can also have associated @dfn{finalizers} -- functions to be run when the object is GC'ed; this is useful for freeing any resources allocated for the underlying data -structure, such as memory, open file descriptors, etc. +structure, such as memory, open file descriptors, etc. @xref{Module +Values}. @defun user-ptrp object This function returns @code{t} if its argument is a @code{user-ptr} object. @end defun +@defun module-load file +Emacs calls this low-level primitive to load a module from the +specified @var{file} and perform the necessary initialization of the +module. This is the primitive which makes sure the module exports the +@code{plugin_is_GPL_compatible} symbol, calls the module's +@code{emacs_module_init} function, and signals an error if that +function returns an error indication, or if the use typed @kbd{C-g} +during the initialization. If the initialization succeeds, +@code{module-load} returns @code{t}. Note that @var{file} must +already have the proper file-name extension, as this function doesn't +try looking for files with known extensions, unlike @code{load}. +@end defun + Loadable modules in Emacs are enabled by using the @kbd{--with-modules} option at configure time. - -If you write your own dynamic modules, you may wish to verify their -conformance to the Emacs dynamic module API. Invoking Emacs with the -@kbd{--module-assertions} option will help you in this matter. -@xref{Initial Options,,,emacs, The GNU Emacs Manual}. diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi index dbd35b484848..a422ba9750d2 100644 --- a/doc/lispref/macros.texi +++ b/doc/lispref/macros.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1995, 1998, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Macros diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi index fc40f28ded80..bcf8f175e093 100644 --- a/doc/lispref/maps.texi +++ b/doc/lispref/maps.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1993, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Keymaps diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi index 349ec12aa81a..27fe1414f094 100644 --- a/doc/lispref/markers.texi +++ b/doc/lispref/markers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Markers diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 2951ef5aaecb..3a2a9d82e97c 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Minibuffers @@ -1102,11 +1102,11 @@ different function to completely override the normal behavior of in the minibuffer to do completion. @defvar minibuffer-completion-table -The value of this variable is the completion table used for completion -in the minibuffer. This is the global variable that contains what -@code{completing-read} passes to @code{try-completion}. It is used by -minibuffer completion commands such as -@code{minibuffer-complete-word}. +The value of this variable is the completion table (@pxref{Basic +Completion}) used for completion in the minibuffer. This is the +global variable that contains what @code{completing-read} passes to +@code{try-completion}. It is used by minibuffer completion commands +such as @code{minibuffer-complete-word}. @end defvar @defvar minibuffer-completion-predicate @@ -1327,7 +1327,8 @@ is a string, @code{read-command} interns it before returning it. If it is a list, @code{read-command} interns the first element of this list. If @var{default} is @code{nil}, that means no default has been specified; then if the user enters null input, the return value is -@code{(intern "")}, that is, a symbol whose name is an empty string. +@code{(intern "")}, that is, a symbol whose name is an empty string, +and whose printed representation is @code{##} (@pxref{Symbol Type}). @example (read-command "Command name? ") @@ -1764,7 +1765,8 @@ possible match, and ignore the match if the predicate returns @code{nil}. @item -A flag specifying the type of completion operation to perform. This +A flag specifying the type of completion operation to perform; see +@ref{Basic Completion}, for the details of those operations. This flag may be one of the following values. @table @code @@ -1835,17 +1837,26 @@ the same as for @code{display-sort-function}. @defun completion-table-dynamic function &optional switch-buffer This function is a convenient way to write a function that can act as -a programmed completion function. The argument @var{function} should be -a function that takes one argument, a string, and returns an alist of -possible completions of it. It is allowed to ignore the argument and -return a full list of all possible completions. You can think of -@code{completion-table-dynamic} as a transducer between that interface +a programmed completion function. The argument @var{function} should +be a function that takes one argument, a string, and returns a +completion table (@pxref{Basic Completion}) containing all the +possible completions. The table returned by @var{function} can also +include elements that don't match the string argument; they are +automatically filtered out by @code{completion-table-dynamic}. In +particular, @var{function} can ignore its argument and return a full +list of all possible completions. You can think of +@code{completion-table-dynamic} as a transducer between @var{function} and the interface for programmed completion functions. If the optional argument @var{switch-buffer} is non-@code{nil}, and completion is performed in the minibuffer, @var{function} will be called with current buffer set to the buffer from which the minibuffer was entered. + +The return value of @code{completion-table-dynamic} is a function that +can be used as the 2nd argument to @code{try-completion} and +@code{all-completions}. Note that this function will always return +empty metadata and trivial boundaries (@pxref{Programmed Completion}). @end defun @defun completion-table-with-cache function &optional ignore-case @@ -1870,9 +1881,10 @@ Emacs Manual}. This command uses the abnormal hook variable @defvar completion-at-point-functions The value of this abnormal hook should be a list of functions, which -are used to compute a completion table for completing the text at -point. It can be used by major modes to provide mode-specific -completion tables (@pxref{Major Mode Conventions}). +are used to compute a completion table (@pxref{Basic Completion}) for +completing the text at point. It can be used by major modes to +provide mode-specific completion tables (@pxref{Major Mode +Conventions}). When the command @code{completion-at-point} runs, it calls the functions in the list one by one, without any argument. Each function @@ -2236,6 +2248,7 @@ Here is an example of using this function: To read a password to pass to another program, you can use the function @code{read-passwd}. +@vindex read-hide-char @defun read-passwd prompt &optional confirm default This function reads a password, prompting with @var{prompt}. It does not echo the password as the user types it; instead, it echoes diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index d7e217c5287b..b6b9b58c71c2 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Modes @@ -363,7 +363,9 @@ it provides a command that does the same job in a way better suited to the text this mode is used for. For example, a major mode for editing a programming language might redefine @kbd{C-M-a} to move to the beginning of a function in a way that works better for -that language. +that language. The recommended way of tailoring @kbd{C-M-a} to the +needs of a major mode is to set @code{beginning-of-defun-function} +(@pxref{List Motion}) to invoke the function specific to the mode. It is also legitimate for a major mode to rebind a standard key sequence whose standard meaning is rarely useful in that mode. For @@ -1101,6 +1103,65 @@ that tags placed via @code{tabulated-list-put-tag} will not be removed from entries that haven't changed (normally all tags are removed). @end defun +@defun tabulated-list-delete-entry +This function deletes the entry at point. + +It returns a list @code{(@var{id} @var{cols})}, where @var{id} is the +ID of the deleted entry and @var{cols} is a vector of its column +descriptors. It moves point to the beginning of the current line. It +returns @code{nil} if there is no entry at point. + +Note that this function only changes the buffer contents; it does not +alter @code{tabulated-list-entries}. +@end defun + +@defun tabulated-list-get-id &optional pos +This @code{defsubst} returns the ID object from +@code{tabulated-list-entries} (if that is a list) or from the list +returned by @code{tabulated-list-entries} (if it is a function). If +omitted or @code{nil}, @var{pos} defaults to point. +@end defun + +@defun tabulated-list-get-entry &optional pos +This @code{defsubst} returns the entry object from +@code{tabulated-list-entries} (if that is a list) or from the list +returned by @code{tabulated-list-entries} (if it is a function). This +will be a vector for the ID at @var{pos}. If there is no entry at +@var{pos}, then the function returns @code{nil}. +@end defun + +@vindex tabulated-list-use-header-line +@defun tabulated-list-header-overlay-p &optional POS +This @code{defsubst} returns non-nil if there is a fake header at +@var{pos}. A fake header is used if +@code{tabulated-list-use-header-line} is @code{nil} to put the column +names at the beginning of the buffer. If omitted or @code{nil}, +@var{pos} defaults to @code{point-min}. +@end defun + +@vindex tabulated-list-padding +@defun tabulated-list-put-tag tag &optional advance +This function puts @var{tag} in the padding area of the current line. +The padding area can be empty space at the beginning of the line, the +width of which is governed by @code{tabulated-list-padding}. +@var{tag} should be a string, with a length less than or equal to +@code{tabulated-list-padding}. If @var{advance} is non-nil, this +function advances point by one line. +@end defun + +@defun tabulated-list-set-col col desc &optional change-entry-data +This function changes the tabulated list entry at point, setting +@var{col} to @var{desc}. @var{col} is the column number to change, or +the name of the column to change. @var{desc} is the new column +descriptor, which is inserted via @code{tabulated-list-print-col}. + +If @var{change-entry-data} is non-nil, this function modifies the +underlying data (usually the column descriptor in the list +@code{tabulated-list-entries}) by setting the column descriptor of the +vector to @code{desc}. +@end defun + + @node Generic Modes @subsection Generic Modes @cindex generic mode @@ -1158,6 +1219,7 @@ the conventions listed above: (modify-syntax-entry ?\\ ". " st) ;; Add 'p' so M-c on 'hello' leads to 'Hello', not 'hello'. (modify-syntax-entry ?' "w p" st) + @dots{} st) "Syntax table used while in `text-mode'.") @end group @@ -1167,6 +1229,7 @@ the conventions listed above: (defvar text-mode-map (let ((map (make-sparse-keymap))) (define-key map "\e\t" 'ispell-complete-word) + @dots{} map) "Keymap for `text-mode'. Many other modes, such as `mail-mode', `outline-mode' and @@ -1210,11 +1273,11 @@ illustrate how these modes are written. @smallexample @group ;; @r{Create mode-specific table variables.} -(defvar lisp-mode-abbrev-table nil) -(define-abbrev-table 'lisp-mode-abbrev-table ()) +(define-abbrev-table 'lisp-mode-abbrev-table () + "Abbrev table for Lisp mode.") (defvar lisp-mode-syntax-table - (let ((table (copy-syntax-table emacs-lisp-mode-syntax-table))) + (let ((table (make-syntax-table lisp--mode-syntax-table))) (modify-syntax-entry ?\[ "_ " table) (modify-syntax-entry ?\] "_ " table) (modify-syntax-entry ?# "' 14" table) @@ -1229,10 +1292,9 @@ each calls the following function to set various variables: @smallexample @group -(defun lisp-mode-variables (&optional syntax keywords-case-insensitive) +(defun lisp-mode-variables (&optional syntax keywords-case-insensitive elisp) (when syntax (set-syntax-table lisp-mode-syntax-table)) - (setq local-abbrev-table lisp-mode-abbrev-table) @dots{} @end group @end smallexample @@ -1243,8 +1305,7 @@ variable to handle Lisp comments: @smallexample @group - (make-local-variable 'comment-start) - (setq comment-start ";") + (setq-local comment-start ";") @dots{} @end group @end smallexample @@ -1258,6 +1319,7 @@ common. The following code sets up the common commands: @group (defvar lisp-mode-shared-map (let ((map (make-sparse-keymap))) + (set-keymap-parent map prog-mode-map) (define-key map "\e\C-q" 'indent-sexp) (define-key map "\177" 'backward-delete-char-untabify) map) @@ -1272,7 +1334,7 @@ And here is the code to set up the keymap for Lisp mode: @group (defvar lisp-mode-map (let ((map (make-sparse-keymap)) - (menu-map (make-sparse-keymap "Lisp"))) + (menu-map (make-sparse-keymap "Lisp"))) (set-keymap-parent map lisp-mode-shared-map) (define-key map "\e\C-x" 'lisp-eval-defun) (define-key map "\C-c\C-z" 'run-lisp) @@ -1296,17 +1358,13 @@ Blank lines separate paragraphs. Semicolons start comments. \\@{lisp-mode-map@} Note that `run-lisp' may be used either to start an inferior Lisp job -or to switch back to an existing one. +or to switch back to an existing one." @end group - @group -Entry to this mode calls the value of `lisp-mode-hook' -if that value is non-nil." (lisp-mode-variables nil t) - (set (make-local-variable 'find-tag-default-function) - 'lisp-find-tag-default) - (set (make-local-variable 'comment-start-skip) - "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *") + (setq-local find-tag-default-function 'lisp-find-tag-default) + (setq-local comment-start-skip + "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *") (setq imenu-case-fold-search t)) @end group @end smallexample @@ -1346,7 +1404,7 @@ The value of this variable is a list of all minor mode commands. @cindex conventions for writing minor modes There are conventions for writing minor modes just as there are for -major modes. These conventions are described below. The easiest way to +major modes (@pxref{Major Modes}). These conventions are described below. The easiest way to follow them is to use the macro @code{define-minor-mode}. @xref{Defining Minor Modes}. @@ -1457,10 +1515,10 @@ or like this, using @code{add-to-list} (@pxref{List Variables}): @end smallexample @end itemize - In addition, several major mode conventions apply to minor modes as -well: those regarding the names of global symbols, the use of a hook at -the end of the initialization function, and the use of keymaps and other -tables. + In addition, several major mode conventions (@pxref{Major Mode +Conventions}) apply to minor modes as well: those regarding the names +of global symbols, the use of a hook at the end of the initialization +function, and the use of keymaps and other tables. The minor mode should, if possible, support enabling and disabling via Custom (@pxref{Customization}). To do this, the mode variable should be @@ -2921,7 +2979,7 @@ Its value should have one of the forms described in this table. @strong{Warning:} Do not design an element of @code{font-lock-keywords} to match text which spans lines; this does not work reliably. -For details, see @xref{Multiline Font Lock}. +For details, @pxref{Multiline Font Lock}. You can use @var{case-fold} in @code{font-lock-defaults} to specify the value of @code{font-lock-keywords-case-fold-search} which says @@ -3145,7 +3203,12 @@ is disabled, @code{font-lock-face} has no effect on the display. It is ok for a mode to use @code{font-lock-face} for some text and also use the normal Font Lock machinery. But if the mode does not use the normal Font Lock machinery, it should not set the variable -@code{font-lock-defaults}. +@code{font-lock-defaults}. In this case the @code{face} property will +not be overriden, so using the @code{face} property could work too. +However, using @code{font-lock-face} is generally preferable as it +allows the user to control the fontification by toggling +@code{font-lock-mode}, and lets the code work regardless of whether +the mode uses Font Lock machinery or not. @node Faces for Font Lock @subsection Faces for Font Lock diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 4d75d6a1f14d..ca99cbfcde3d 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1998-1999, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1998-1999, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Non-ASCII Characters @chapter Non-@acronym{ASCII} Characters @@ -287,12 +287,11 @@ unibyte string, it is returned unchanged. Use this function for characters. @end defun -@c FIXME: Should '@var{character}' be '@var{byte}'? @defun byte-to-string byte @cindex byte to string This function returns a unibyte string containing a single byte of -character data, @var{character}. It signals an error if -@var{character} is not an integer between 0 and 255. +character data, @var{byte}. It signals an error if @var{byte} is not +an integer between 0 and 255. @end defun @defun multibyte-char-to-unibyte char @@ -551,8 +550,8 @@ characters whose @code{Numeric_Type} is @samp{Numeric}. The value of this property is a number. Examples of characters that have this property include fractions, subscripts, superscripts, Roman numerals, currency numerators, and encircled numbers. For example, the value of -this property for the character @code{U+2155} (@sc{vulgar fraction one -fifth}) is @code{0.2}. For characters that don't have any numeric +this property for the character U+2155 @sc{vulgar fraction one +fifth} is @code{0.2}. For characters that don't have any numeric value, and for unassigned codepoints, the value is @code{nil}, which means @acronym{NaN}. @@ -623,23 +622,24 @@ is @code{nil}, which means the character itself. @item special-uppercase Corresponds to Unicode language- and context-independent special upper-casing rules. The value of this property is a string (which may be empty). For -example mapping for @code{U+00DF} (@sc{latin small letter sharp s}) is +example mapping for U+00DF @sc{latin small letter sharp s} is @code{"SS"}. For characters with no special mapping, the value is @code{nil} which means @code{uppercase} property needs to be consulted instead. @item special-lowercase -Corresponds to Unicode language- and context-independent special lower-casing -rules. The value of this property is a string (which may be empty). For -example mapping for @code{U+0130} (@sc{latin capital letter i with dot above}) -the value is @code{"i\u0307"} (i.e. 2-character string consisting of @sc{latin -small letter i} followed by @sc{combining dot above}). For characters with no -special mapping, the value is @code{nil} which means @code{lowercase} property -needs to be consulted instead. +Corresponds to Unicode language- and context-independent special +lower-casing rules. The value of this property is a string (which may +be empty). For example mapping for U+0130 @sc{latin capital letter i +with dot above} the value is @code{"i\u0307"} (i.e. 2-character string +consisting of @sc{latin small letter i} followed by U+0307 +@sc{combining dot above}). For characters with no special mapping, +the value is @code{nil} which means @code{lowercase} property needs to +be consulted instead. @item special-titlecase Corresponds to Unicode unconditional special title-casing rules. The value of this property is a string (which may be empty). For example mapping for -@code{U+FB01} (@sc{latin small ligature fi}) the value is @code{"Fi"}. For +U+FB01 @sc{latin small ligature fi} the value is @code{"Fi"}. For characters with no special mapping, the value is @code{nil} which means @code{titlecase} property needs to be consulted instead. @end table @@ -1050,7 +1050,7 @@ is like @code{undecided}, but it prefers to choose @code{utf-8} when possible. In general, a coding system doesn't guarantee roundtrip identity: -decoding a byte sequence using coding system, then encoding the +decoding a byte sequence using a coding system, then encoding the resulting text in the same coding system, can produce a different byte sequence. But some coding systems do guarantee that the byte sequence will be the same as what you originally decoded. Here are a few @@ -1633,11 +1633,16 @@ coding system for a file based on its undecoded contents. Each function in this list should be written to look at text in the current buffer, but should not modify it in any way. The buffer will -contain undecoded text of parts of the file. Each function should -take one argument, @var{size}, which tells it how many characters to -look at, starting from point. If the function succeeds in determining -a coding system for the file, it should return that coding system. -Otherwise, it should return @code{nil}. +contain the text of parts of the file. Each function should take one +argument, @var{size}, which tells it how many characters to look at, +starting from point. If the function succeeds in determining a coding +system for the file, it should return that coding system. Otherwise, +it should return @code{nil}. + +The functions in this list could be called either when the file is +visited and Emacs wants to decode its contents, and/or when the file's +buffer is about to be saved and Emacs wants to determine how to encode +its contents. If a file has a @samp{coding:} tag, that takes precedence, so these functions won't be called. @@ -1908,7 +1913,10 @@ the command returns the decoded text as a multibyte string without inserting it. If decoded text is inserted in some buffer, this command returns the -length of the decoded text. +length of the decoded text. If that buffer is a unibyte buffer +(@pxref{Selecting a Representation}), the internal representation of +the decoded text (@pxref{Text Representations}) is inserted into the +buffer as individual bytes. This command puts a @code{charset} text property on the decoded text. The value of the property states the character set used to decode the @@ -1927,7 +1935,9 @@ contains 8-bit bytes in their multibyte form). If optional argument @var{buffer} specifies a buffer, the decoded text is inserted in that buffer after point (point does not move). In this -case, the return value is the length of the decoded text. +case, the return value is the length of the decoded text. If that +buffer is a unibyte buffer, the internal representation of the decoded +text is inserted into it as individual bytes. @cindex @code{charset}, text property This function puts a @code{charset} text property on the decoded text. diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi index c12ffe2cde79..e7beed0073df 100644 --- a/doc/lispref/numbers.texi +++ b/doc/lispref/numbers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Numbers diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index b8cae49027cc..69b6c859f65e 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Lisp Data Types diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index fd1cf638e78e..a04f03bd4630 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node System Interface @@ -96,24 +96,29 @@ if requested by environment variables such as @env{LANG}. It does some basic parsing of the command-line arguments. @vindex initial-window-system@r{, and startup} -@vindex window-system-initialization-alist +@findex window-system-initialization @item If not running in batch mode, it initializes the window system that the variable @code{initial-window-system} specifies (@pxref{Window -Systems, initial-window-system}). The initialization function for -each supported window system is specified by -@code{window-system-initialization-alist}. If the value -of @code{initial-window-system} is @var{windowsystem}, then the -appropriate initialization function is defined in the file -@file{term/@var{windowsystem}-win.el}. This file should have been -compiled into the Emacs executable when it was built. +Systems, initial-window-system}). The initialization function, +@code{window-system-initialization}, is a @dfn{generic function} +(@pxref{Generic Functions}) whose actual implementation is different +for each supported window system. If the value of +@code{initial-window-system} is @var{windowsystem}, then the +appropriate implementation of the initialization function is defined +in the file @file{term/@var{windowsystem}-win.el}. This file should +have been compiled into the Emacs executable when it was built. @item It runs the normal hook @code{before-init-hook}. @item -If appropriate, it creates a graphical frame. This is not done in -batch (noninteractive) or daemon mode. +If appropriate, it creates a graphical frame. As part of creating the +graphical frame, it initializes the window system specified by +@code{initial-frame-alist} and @code{default-frame-alist} +(@pxref{Initial Parameters}) for the graphical frame, by calling the +@code{window-system-initialization} function for that window system. +This is not done in batch (noninteractive) or daemon mode. @item It initializes the initial frame's faces, and sets up the menu bar @@ -1462,7 +1467,28 @@ integers (@pxref{Time of Day}). @defun date-to-time string This function parses the time-string @var{string} and returns the -corresponding time value. +corresponding time value. The argument @var{string} should represent +a date-time, and should be in one of the forms recognized by +@code{parse-time-string} (see below). This function assumes the GMT +timezone if @var{string} lacks an explicit timezone information. +@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 +element that cannot be determined from the input will be 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. @end defun @defun format-time-string format-string &optional time zone @@ -1766,7 +1792,7 @@ special object that stores the information about the next invocation times and the function to invoke. @defun timerp object -This predicate function returns non-@code{nil} of @code{object} is a +This predicate function returns non-@code{nil} if @code{object} is a timer. @end defun diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index c1c61a1b5c6e..8729f02bc824 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2010-2018 Free Software Foundation, Inc. +@c Copyright (C) 2010-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Packaging @chapter Preparing Lisp code for distribution @@ -307,41 +307,6 @@ How to accomplish this is beyond the scope of this manual. by default; type @kbd{M-x load-library @key{RET} package-x @key{RET}} to load it, or add @code{(require 'package-x)} to your init file. @xref{Lisp Libraries,, Lisp Libraries, emacs, The GNU Emacs Manual}. -Once loaded, you can make use of the following: - -@defopt package-archive-upload-base -The value of this variable is the base location of a package archive, -as a directory name. The commands in the @code{package-x} library -will use this base location. - -The directory name should be absolute. You may specify a remote name, -such as @file{/ssh:foo@@example.com:/var/www/packages/}, if the -package archive is on a different machine. @xref{Remote Files,, -Remote Files, emacs, The GNU Emacs Manual}. -@end defopt - -@deffn Command package-upload-file filename -This command prompts for @var{filename}, a file name, and uploads that -file to @code{package-archive-upload-base}. The file must be either a -simple package (a @file{.el} file) or a multi-file package (a -@file{.tar} file); otherwise, an error is raised. The package -attributes are automatically extracted, and the archive's contents -list is updated with this information. - -If @code{package-archive-upload-base} does not specify a valid -directory, the function prompts interactively for one. If the -directory does not exist, it is created. The directory need not have -any initial contents (i.e., you can use this command to populate an -initially empty archive). -@end deffn - -@deffn Command package-upload-buffer -This command is similar to @code{package-upload-file}, but instead of -prompting for a package file, it uploads the contents of the current -buffer. The current buffer must be visiting a simple package (a -@file{.el} file) or a multi-file package (a @file{.tar} file); -otherwise, an error is raised. -@end deffn @noindent After you create an archive, remember that it is not accessible in the diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index a09b6b6d0973..cd9587ba4bdb 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Positions @chapter Positions @@ -794,11 +794,15 @@ on a line that starts with a match for this regular expression, followed by a character with open-parenthesis syntax. @end defopt +@cindex \( in strings @defopt open-paren-in-column-0-is-defun-start If this variable's value is non-@code{nil}, an open parenthesis in column 0 is considered to be the start of a defun. If it is @code{nil}, an open parenthesis in column 0 has no special meaning. -The default is @code{t}. +The default is @code{t}. If a string literal happens to have a +parenthesis in column 0, escape it with a backslash to avoid a false +positive. @xref{Left Margin Paren,, Left Margin Convention, emacs, +The GNU Emacs Manual}. @end defopt @defvar beginning-of-defun-function @@ -840,8 +844,8 @@ The argument @var{character-set} is a string, like the inside of a terminate it, and @samp{\} quotes @samp{^}, @samp{-} or @samp{\}. Thus, @code{"a-zA-Z"} skips over all letters, stopping before the first nonletter, and @code{"^a-zA-Z"} skips nonletters stopping before -the first letter. See @xref{Regular Expressions}. Character classes -can also be used, e.g., @code{"[:alnum:]"}. See @pxref{Char Classes}. +the first letter (@pxref{Regular Expressions}). Character classes +can also be used, e.g., @code{"[:alnum:]"} (@pxref{Char Classes}). If @var{limit} is supplied (it must be a number or a marker), it specifies the maximum position in the buffer that point can be skipped diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 34426f339c6f..bd807cdceefb 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Processes @@ -451,7 +451,9 @@ present in @var{args}. To avoid confusion, it may be best to avoid absolute file names in @var{args}, but rather to specify all file names as relative to @code{default-directory}. The function @code{file-relative-name} is useful for constructing such relative -file names. +file names. Alternatively, you can use @code{file-local-name} +(@pxref{Magic File Names}) to obtain an absolute file name as seen +from the remote host's perspective. @end defun @defvar process-file-side-effects @@ -586,12 +588,11 @@ process}. After an asynchronous process is created, it runs in parallel with Emacs, and Emacs can communicate with it using the functions described in the following sections (@pxref{Input to Processes}, and @pxref{Output from Processes}). Note that process -communication is only partially asynchronous: Emacs sends data to the -process only when certain functions are called, and Emacs accepts data -from the process only while waiting for input or for a time delay. +communication is only partially asynchronous: Emacs sends and receives +data to and from a process only when those functions are called. -@cindex pty -@cindex pipe +@cindex pty, when to use for subprocess communications +@cindex pipe, when to use for subprocess communications An asynchronous process is controlled either via a @dfn{pty} (pseudo-terminal) or a @dfn{pipe}. The choice of pty or pipe is made when creating the process, by default based on the value of the @@ -601,11 +602,12 @@ Shell mode, because they allow for job control (@kbd{C-c}, @kbd{C-z}, etc.)@: between the process and its children, and because interactive programs treat ptys as terminal devices, whereas pipes don't support these features. However, for subprocesses used by Lisp programs for -internal purposes, it is often better to use a pipe, because pipes are -more efficient, and because they are immune to stray character -injections that ptys introduce for large (around 500 byte) messages. -Also, the total number of ptys is limited on many systems and it is -good not to waste them. +internal purposes (i.e., no user interaction with the subprocess is +required), where significant amounts of data need to be exchanged +between the subprocess and the Lisp program, it is often better to use +a pipe, because pipes are more efficient. Also, the total number of +ptys is limited on many systems, and it is good not to waste them +unnecessarily. @defun make-process &rest args This function is the basic low-level primitive for starting @@ -658,7 +660,9 @@ 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}. +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. @item :noquery @var{query-flag} Initialize the process query flag to @var{query-flag}. @@ -814,7 +818,12 @@ In the latter case, the local part of @code{default-directory} becomes the working directory of the process. This function does not try to invoke file name handlers for -@var{program} or for the rest of @var{args}. +@var{program} or for the rest of @var{args}. For that reason, if +@var{program} or any of @var{args} use the remote-file syntax +(@pxref{Magic File Names}), they must be converted either to file +names relative to @code{default-directory}, or to names that identify +the files locally on the remote host, by running them through +@code{file-local-name}. Depending on the implementation of the file handler, it might not be possible to apply @code{process-filter} or @code{process-sentinel} to @@ -863,7 +872,8 @@ around the call to these functions. Note that the value of this variable is ignored when @code{make-process} is called with a non-@code{nil} value of the @code{:stderr} parameter; in that case, Emacs will communicate with -the process using pipes. +the process using pipes. It is also ignored if ptys are unavailable +(MS-Windows). @smallexample @group @@ -1189,8 +1199,9 @@ the defaulting mechanism (@pxref{Default Coding Systems}). because the input buffer is full. When this happens, the send functions wait a short while, accepting output from subprocesses, and then try again. This gives the subprocess a chance to read more of its pending -input and make space in the buffer. It also allows filters, sentinels -and timers to run---so take account of that in writing your code. +input and make space in the buffer. It also allows filters (including +the one currently running), sentinels and timers to run---so take +account of that in writing your code. In these functions, the @var{process} argument can be a process or the name of a process, or a buffer or buffer name (which stands @@ -1405,9 +1416,10 @@ output, Emacs won't receive that output. Output from a subprocess can arrive only while Emacs is waiting: when reading terminal input (see the function @code{waiting-for-user-input-p}), -in @code{sit-for} and @code{sleep-for} (@pxref{Waiting}), and in -@code{accept-process-output} (@pxref{Accepting Output}). This -minimizes the problem of timing errors that usually plague parallel +in @code{sit-for} and @code{sleep-for} (@pxref{Waiting}), in +@code{accept-process-output} (@pxref{Accepting Output}), and in +functions which send data to processes (@pxref{Input to Processes}). +This minimizes the problem of timing errors that usually plague parallel programming. For example, you can safely create a process and only then specify its buffer or filter function; no output can arrive before you finish, if the code in between does not call any primitive @@ -1583,14 +1595,10 @@ outputs directly to the process buffer. By default, the error output from the process, if any, is also passed to the filter function, unless the destination for the standard error stream of the process was separated from the standard output -when the process was created (@pxref{Output from Processes}). - - The filter function can only be called when Emacs is waiting for -something, because process output arrives only at such times. Emacs -waits when reading terminal input (see the function -@code{waiting-for-user-input-p}), in @code{sit-for} and -@code{sleep-for} (@pxref{Waiting}), and in -@code{accept-process-output} (@pxref{Accepting Output}). +when the process was created. Emacs will only call the filter +function during certain function calls. @xref{Output from Processes}. +Note that if any of those functions are called by the filter, the +filter may be called recursively. A filter function must accept two arguments: the associated process and a string, which is output just received from it. The function is @@ -1648,7 +1656,12 @@ text arrives, you could insert a line like the following just before the To force point to the end of the new output, no matter where it was previously, eliminate the variable @code{moving} from the example and -call @code{goto-char} unconditionally. +call @code{goto-char} unconditionally. Note that this doesn't +necessarily move the window point. The default filter actually uses +@code{insert-before-markers} which moves all markers, including the +window point. This may move unrelated markers, so it's generally +better to move the window point explicitly, or set its insertion type +to @code{t} (@pxref{Window Point}). @ignore In earlier Emacs versions, every filter function that did regular @@ -1791,7 +1804,8 @@ until output arrives from a process. This function allows Emacs to read pending output from processes. The output is given to their filter functions. If @var{process} is non-@code{nil} then this function does not return until some output -has been received from @var{process}. +has been received from @var{process} or @var{process} has closed the +connection. The arguments @var{seconds} and @var{millisec} let you specify timeout periods. The former specifies a period measured in seconds and the @@ -1816,10 +1830,32 @@ speech synthesis. The function @code{accept-process-output} returns non-@code{nil} if it got output from @var{process}, or from any process if @var{process} is -@code{nil}. It returns @code{nil} if the timeout expired before output +@code{nil}; this can occur even after a process has exited if the +corresponding connection contains buffered data. The function returns +@code{nil} if the timeout expired or the connection was closed before output arrived. @end defun +If a connection from a process contains buffered data, +@code{accept-process-output} can return non-@code{nil} even after the +process has exited. Therefore, although the following loop: + +@example +;; This loop contains a bug. +(while (process-live-p process) + (accept-process-output process)) +@end example + +@noindent +will often read all output from @var{process}, it has a race condition +and can miss some output if @code{process-live-p} returns @code{nil} +while the connection still contains data. Better is to write the loop +like this: + +@example +(while (accept-process-output process)) +@end example + @node Processes and Threads @subsection Processes and Threads @cindex processes, threads diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi index 81a52341b129..3a89b6873514 100644 --- a/doc/lispref/records.texi +++ b/doc/lispref/records.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2017-2018 Free Software Foundation, Inc. +@c Copyright (C) 2017-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Records @chapter Records diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 6c1ebb22b53f..b182fae5955a 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Searching and Matching @@ -101,7 +101,7 @@ previous match. If all these successive searches succeed, the function call succeeds, moving point and returning its new value. Otherwise the function call fails, with results depending on the value of @var{noerror}, as described above. If @var{count} is a negative -number -@var{n}, the search is done @var{n} times in the opposite +number @minus{}@var{n}, the search is done @var{n} times in the opposite (backward) direction. @end deffn @@ -391,25 +391,18 @@ writing the starting and ending characters with a @samp{-} between them. Thus, @samp{[a-z]} matches any lower-case @acronym{ASCII} letter. Ranges may be intermixed freely with individual characters, as in @samp{[a-z$%.]}, which matches any lower case @acronym{ASCII} letter -or @samp{$}, @samp{%} or period. +or @samp{$}, @samp{%} or period. However, the ending character of one +range should not be the starting point of another one; for example, +@samp{[a-m-z]} should be avoided. -If @code{case-fold-search} is non-@code{nil}, @samp{[a-z]} also -matches upper-case letters. Note that a range like @samp{[a-z]} is -not affected by the locale's collation sequence, it always represents -a sequence in @acronym{ASCII} order. -@c This wasn't obvious to me, since, e.g., the grep manual "Character -@c Classes and Bracket Expressions" specifically notes the opposite -@c behavior. But by experiment Emacs seems unaffected by LC_COLLATE -@c in this regard. - -Note also that the usual regexp special characters are not special inside a +The usual regexp special characters are not special inside a character alternative. A completely different set of characters is special inside character alternatives: @samp{]}, @samp{-} and @samp{^}. To include a @samp{]} in a character alternative, you must make it the first character. For example, @samp{[]a]} matches @samp{]} or @samp{a}. To include a @samp{-}, write @samp{-} as the first or last character of -the character alternative, or put it after a range. Thus, @samp{[]-]} +the character alternative, or as the upper bound of a range. Thus, @samp{[]-]} matches both @samp{]} and @samp{-}. (As explained below, you cannot use @samp{\]} to include a @samp{]} inside a character alternative, since @samp{\} is not special there.) @@ -417,13 +410,34 @@ since @samp{\} is not special there.) To include @samp{^} in a character alternative, put it anywhere but at the beginning. -@c What if it starts with a multibyte and ends with a unibyte? -@c That doesn't seem to match anything...? -If a range starts with a unibyte character @var{c} and ends with a -multibyte character @var{c2}, the range is divided into two parts: one -spans the unibyte characters @samp{@var{c}..?\377}, the other the -multibyte characters @samp{@var{c1}..@var{c2}}, where @var{c1} is the -first character of the charset to which @var{c2} belongs. +The following aspects of ranges are specific to Emacs, in that POSIX +allows but does not require this behavior and programs other than +Emacs may behave differently: + +@enumerate +@item +If @code{case-fold-search} is non-@code{nil}, @samp{[a-z]} also +matches upper-case letters. + +@item +A range is not affected by the locale's collation sequence: it always +represents the set of characters with codepoints ranging between those +of its bounds, so that @samp{[a-z]} matches only ASCII letters, even +outside the C or POSIX locale. + +@item +As a special case, if either bound of a range is a raw 8-bit byte, the +other bound should be a unibyte character, and the range matches only +unibyte characters. + +@item +If the lower bound of a range is greater than its upper bound, the +range is empty and represents no characters. Thus, @samp{[b-a]} +always fails to match, and @samp{[^b-a]} matches any character, +including newline. However, the lower bound should be at most one +greater than the upper bound; for example, @samp{[c-a]} should be +avoided. +@end enumerate A character alternative can also specify named character classes (@pxref{Char Classes}). This is a POSIX feature. For example, @@ -431,6 +445,8 @@ A character alternative can also specify named character classes Using a character class is equivalent to mentioning each of the characters in that class; but the latter is not feasible in practice, since some classes include thousands of different characters. +A character class should not appear as the lower or upper bound +of a range. @item @samp{[^ @dots{} ]} @cindex @samp{^} in regexp @@ -997,9 +1013,9 @@ more efficient than that of a simplified version: ((eq paren 'symbols) '("\\_<\\(" . "\\)\\_>")) ((null paren) '("\\(?:" . "\\)")) (t '("\\(" . "\\)"))))) - (concat (car paren) + (concat (car parens) (mapconcat 'regexp-quote strings "\\|") - (cdr paren)))) + (cdr parens)))) @end example @end defun @@ -1075,7 +1091,7 @@ previous match. If all these successive searches succeed, the function call succeeds, moving point and returning its new value. Otherwise the function call fails, with results depending on the value of @var{noerror}, as described above. If @var{count} is a negative -number -@var{n}, the search is done @var{n} times in the opposite +number @minus{}@var{n}, the search is done @var{n} times in the opposite (backward) direction. In the following example, point is initially before the @samp{T}. diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 51d724cb1d8b..bf2c9c8a7d6c 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Sequences Arrays Vectors @@ -601,7 +601,7 @@ returned value is a list. @defun seq-mapn function &rest sequences This function returns the result of applying @var{function} to each element of @var{sequences}. The arity (@pxref{What Is a Function, -sub-arity}) of @var{function} must match the number of sequences. +subr-arity}) of @var{function} must match the number of sequences. Mapping stops at the end of the shortest sequence, and the returned value is a list. @@ -1049,15 +1049,18 @@ that @var{sequence} can be a list, vector or string. This is primarily useful for side-effects. @end defmac -@defmac seq-let arguments sequence body@dots{} +@anchor{seq-let} +@defmac seq-let var-sequence val-sequence body@dots{} @cindex sequence destructuring - This macro binds the variables defined in @var{arguments} to the -elements of @var{sequence}. @var{arguments} can themselves include -sequences, allowing for nested destructuring. + This macro binds the variables defined in @var{var-sequence} to the +values that are the corresponding elements of @var{val-sequence}. +This is known as @dfn{destructuring binding}. The elements of +@var{var-sequence} can themselves include sequences, allowing for +nested destructuring. -The @var{arguments} sequence can also include the @code{&rest} marker -followed by a variable name to be bound to the rest of -@code{sequence}. +The @var{var-sequence} sequence can also include the @code{&rest} +marker followed by a variable name to be bound to the rest of +@var{val-sequence}. @example @group @@ -1081,6 +1084,9 @@ followed by a variable name to be bound to the rest of @end group @result{} [3 4] @end example + +The @code{pcase} patterns provide an alternative facility for +destructuring binding, see @ref{Destructuring with pcase Patterns}. @end defmac @defun seq-random-elt sequence diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index ebd806601ef4..5aa49c2e9549 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1994, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Read and Print diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index f39119987995..8420527f8588 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Strings and Characters diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index 11e92f6217f6..5d71fb39a25c 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Symbols @@ -558,9 +558,12 @@ deleted from the local value of a hook variable when changing major modes. @xref{Setting Hooks}. @item pure +@cindex @code{pure} property If the value is non-@code{nil}, the named function is considered to be -side-effect free. Calls with constant arguments can be evaluated at -compile time. This may shift run time errors to compile time. +pure (@pxref{What Is a Function}). Calls with constant arguments can +be evaluated at compile time. This may shift run time errors to +compile time. Not to be confused with pure storage (@pxref{Pure +Storage}). @item risky-local-variable If the value is non-@code{nil}, the named variable is considered risky @@ -579,9 +582,13 @@ The value specifies a function for determining safe file-local values for the named variable. @xref{File Local Variables}. @item side-effect-free +@cindex @code{side-effect-free} property A non-@code{nil} value indicates that the named function is free of -side-effects, for determining function safety (@pxref{Function -Safety}) as well as for byte compiler optimizations. Do not set it. +side effects (@pxref{What Is a Function}), so the byte compiler may +ignore a call whose value is unused. If the property's value is +@code{error-free}, the byte compiler may even delete such unused +calls. In addition to byte compiler optimizations, this property is +also used for determining function safety (@pxref{Function Safety}). @item variable-documentation If non-@code{nil}, this specifies the named variable's documentation diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi index 71c97fdae8ce..9ad4a133509e 100644 --- a/doc/lispref/syntax.texi +++ b/doc/lispref/syntax.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Syntax Tables @@ -556,8 +556,8 @@ the current syntax table in the usual way. @defvar parse-sexp-lookup-properties If this is non-@code{nil}, the syntax scanning functions, like -@code{forward-sexp}, pay attention to syntax text properties. -Otherwise they use only the current syntax table. +@code{forward-sexp}, pay attention to @code{syntax-table} text +properties. Otherwise they use only the current syntax table. @end defvar @defvar syntax-propertize-function @@ -927,9 +927,9 @@ nicely. @defvar multibyte-syntax-as-symbol If this variable is non-@code{nil}, @code{scan-sexps} treats all -non-@acronym{ASCII} characters as symbol constituents regardless -of what the syntax table says about them. (However, text properties -can still override the syntax.) +non-@acronym{ASCII} characters as symbol constituents regardless of +what the syntax table says about them. (However, @code{syntax-table +}text properties can still override the syntax.) @end defvar @defopt parse-sexp-ignore-comments @@ -939,7 +939,6 @@ whitespace by the functions in this section and by @code{forward-sexp}, @code{scan-lists} and @code{scan-sexps}. @end defopt -@vindex parse-sexp-lookup-properties The behavior of @code{parse-partial-sexp} is also affected by @code{parse-sexp-lookup-properties} (@pxref{Syntax Properties}). @@ -1042,8 +1041,8 @@ This function returns the syntax code for the raw syntax descriptor @var{syntax-code} component, masks off the high 16 bits which record the syntax flags, and returns the resulting integer. -If @var{syntax} is @code{nil}, the return value is returns @code{nil}. -This is so that the expression +If @var{syntax} is @code{nil}, the return value is @code{nil}. This +is so that the expression @example (syntax-class (syntax-after pos)) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 477b8fce7196..f44659c622d1 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Text @chapter Text @@ -2245,9 +2245,11 @@ If it is impossible to move to column @var{column} because that is in the middle of a multicolumn character such as a tab, point moves to the end of that character. However, if @var{force} is non-@code{nil}, and @var{column} is in the middle of a tab, then @code{move-to-column} -converts the tab into spaces so that it can move precisely to column -@var{column}. Other multicolumn characters can cause anomalies despite -@var{force}, since there is no way to split them. +either converts the tab into spaces (when @code{indent-tabs-mode} is +@code{nil}), or inserts enough spaces before it (otherwise), so that +point can move precisely to column @var{column}. Other multicolumn +characters can cause anomalies despite @var{force}, since there is no +way to split them. The argument @var{force} also has an effect if the line isn't long enough to reach column @var{column}; if it is @code{t}, that means to @@ -2330,7 +2332,7 @@ Here is what it does: @itemize @item First, it checks whether Transient Mark mode is enabled and the region -is active. If so, it called @code{indent-region} to indent all the +is active. If so, it calls @code{indent-region} to indent all the text in the region (@pxref{Region Indent}). @item @@ -2570,11 +2572,11 @@ The quick brown fox jum @point{}ped. @end example @end deffn -@deffn Command indent-relative-maybe +@deffn Command indent-relative-first-indent-point @comment !!SourceFile indent.el This command indents the current line like the previous nonblank line, by calling @code{indent-relative} with @code{t} as the -@var{unindented-ok} argument. The return value is unpredictable. +@var{first-only} argument. The return value is unpredictable. If the previous nonblank line has no indent points beyond the current column, this command does nothing. @@ -3395,9 +3397,14 @@ property is obsolete; use the @code{cursor-intangible} property instead. @kindex cursor-intangible @r{(text property)} @findex cursor-intangible-mode When the minor mode @code{cursor-intangible-mode} is turned on, point -is moved away of any position that has a non-@code{nil} +is moved away from any position that has a non-@code{nil} @code{cursor-intangible} property, just before redisplay happens. +@vindex cursor-sensor-inhibit +When the variable @code{cursor-sensor-inhibit} is non-@code{nil}, the +@code{cursor-intangible} property and the +@code{cursor-sensor-functions} property (described below) are ignored. + @item field @kindex field @r{(text property)} Consecutive characters with the same @code{field} property constitute a @@ -3579,6 +3586,9 @@ depending on whether the cursor is entering the text that has this property or leaving it. The functions are called only when the minor mode @code{cursor-sensor-mode} is turned on. +When the variable @code{cursor-sensor-inhibit} is non-@code{nil}, the +@code{cursor-sensor-functions} property is ignored. + @item composition @kindex composition @r{(text property)} This text property is used to display a sequence of characters as a diff --git a/doc/lispref/threads.texi b/doc/lispref/threads.texi index ddeb2e923fce..7b14ab5a730b 100644 --- a/doc/lispref/threads.texi +++ b/doc/lispref/threads.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2012-2018 Free Software Foundation, Inc. +@c Copyright (C) 2012-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Threads @chapter Threads @@ -17,9 +17,9 @@ correct programs should not rely on cooperative threading. Currently, thread switching will occur upon explicit request via @code{thread-yield}, when waiting for keyboard input or for process -output (e.g., during @code{accept-process-output}), or during blocking -operations relating to threads, such as mutex locking or -@code{thread-join}. +output from asynchronous processes (e.g., during +@code{accept-process-output}), or during blocking operations relating +to threads, such as mutex locking or @code{thread-join}. Emacs Lisp provides primitives to create and control threads, and also to create and control mutexes and condition variables, useful for diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index 08cc10da14cc..d41fe825729a 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Tips @@ -679,10 +679,15 @@ starting double-quote is not part of the string! @cindex curly quotes @cindex curved quotes When a documentation string refers to a Lisp symbol, write it as it -would be printed (which usually means in lower case), surrounding -it with curved single quotes (@t{‘} and @t{’}). There are -two exceptions: write @code{t} and @code{nil} without surrounding -punctuation. For example: @samp{CODE can be ‘lambda’, nil, or t}. +would be printed (which usually means in lower case), surrounding it +with curved single quotes (@t{‘..’}). There are two exceptions: write +@code{t} and @code{nil} without surrounding punctuation. For example: + +@example + CODE can be ‘lambda’, nil, or t. +@end example + +@noindent @xref{Quotation Marks,,, emacs, The GNU Emacs Manual}, for how to enter curved single quotes. @@ -942,7 +947,7 @@ explains these conventions, starting with an example: @group ;;; foo.el --- Support for the Foo programming language -;; Copyright (C) 2010-2018 Your Name +;; Copyright (C) 2010-2019 Your Name @end group ;; Author: Your Name diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt index b5379df38d08..e3db8ff651b7 100644 --- a/doc/lispref/two-volume-cross-refs.txt +++ b/doc/lispref/two-volume-cross-refs.txt @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See end for copying conditions. Two Volume Cross References diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make index 07a6d2c1717b..63c97c239588 100644 --- a/doc/lispref/two-volume.make +++ b/doc/lispref/two-volume.make @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2018 Free Software Foundation, Inc. +# Copyright (C) 2007-2019 Free Software Foundation, Inc. # See end for copying conditions. # although it would be nice to use tex rather than pdftex to avoid diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 6560660120b7..1a1860df307e 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Variables @chapter Variables @@ -1847,6 +1847,11 @@ variables have @code{safe-local-variable} properties; these include For boolean-valued variables that are safe, use @code{booleanp} as the property value. + If you want to define @code{safe-local-variable} properties for +variables defined in C source code, add the names and the properties +of those variables to the list in the ``Safe local variables'' section +of @file{files.el}. + @cindex autoload cookie, and safe values of variable When defining a user option using @code{defcustom}, you can set its @code{safe-local-variable} property by adding the arguments @@ -2009,7 +2014,7 @@ all files in those directories. The list in @var{variables} can be of one of the two forms: @code{(@var{major-mode} . @var{alist})} or @code{(@var{directory} . @var{list})}. With the first form, if the file's buffer turns on a mode that is derived from @var{major-mode}, -then the all the variables in the associated @var{alist} are applied; +then all the variables in the associated @var{alist} are applied; @var{alist} should be of the form @code{(@var{name} . @var{value})}. A special value @code{nil} for @var{major-mode} means the settings are applicable to any mode. In @var{alist}, you can use a special diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 265067146dac..51d288ba8e8b 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Windows @@ -25,9 +25,7 @@ is displayed in windows. * Cyclic Window Ordering:: Moving around the existing windows. * Buffers and Windows:: Each window displays the contents of a buffer. * Switching Buffers:: Higher-level functions for switching to a buffer. -* Choosing Window:: How to choose a window for displaying a buffer. -* Display Action Functions:: Subroutines for @code{display-buffer}. -* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Displaying Buffers:: Displaying a buffer in a suitable window. * Window History:: Each window remembers the buffers displayed in it. * Dedicated Windows:: How to avoid displaying another buffer in a specific window. @@ -200,12 +198,13 @@ relationships between live windows. The root node of a window tree is called the @dfn{root window}. It can be either a live window (if the frame has just one window), or an internal window. - A minibuffer window (@pxref{Minibuffer Windows}) is not part of its -frame's window tree unless the frame is a minibuffer-only frame. -Nonetheless, most of the functions in this section accept the -minibuffer window as an argument. Also, the function -@code{window-tree} described at the end of this section lists the -minibuffer window alongside the actual window tree. + A minibuffer window (@pxref{Minibuffer Windows}) that is not alone +on its frame does not have a parent window, so it strictly speaking is +not part of its frame's window tree. Nonetheless, it is a sibling +window of the frame's root window, and thus can be reached via +@code{window-next-sibling}. Also, the function @code{window-tree} +described at the end of this section lists the minibuffer window +alongside the actual window tree. @defun frame-root-window &optional frame-or-window This function returns the root window for @var{frame-or-window}. The @@ -1308,8 +1307,10 @@ the selected window. If deleting the window would leave no more windows in the window tree (e.g., if it is the only live window in the frame) or all remaining -windows on @var{window}'s frame are side windows (@pxref{Side Windows}), -an error is signaled. +windows on @var{window}'s frame are side windows (@pxref{Side +Windows}), an error is signaled. If @var{window} is part of an atomic +window (@pxref{Atomic Windows}), this function tries to delete the +root of that atomic window instead. By default, the space taken up by @var{window} is given to one of its adjacent sibling windows, if any. However, if the variable @@ -1328,10 +1329,13 @@ Parameters}. @end deffn @deffn Command delete-other-windows &optional window -This function makes @var{window} fill its frame, deleting other windows -as necessary. If @var{window} is omitted or @code{nil}, it defaults to -the selected window. An error is signaled if @var{window} is a side -window (@pxref{Side Windows}). The return value is @code{nil}. +This function makes @var{window} fill its frame, deleting other +windows as necessary. If @var{window} is omitted or @code{nil}, it +defaults to the selected window. An error is signaled if @var{window} +is a side window (@pxref{Side Windows}). If @var{window} is part of +an atomic window (@pxref{Atomic Windows}), this function tries to make +the root of that atomic window fill its frame. The return +value is @code{nil}. The behavior of this function may be altered by the window parameters of @var{window}, so long as the variable @code{ignore-window-parameters} is @@ -1542,11 +1546,11 @@ direction as the existing window combination (otherwise, a new internal window is created anyway). @item window-size -This means that @code{display-buffer} makes a new parent window when it -splits a window and is passed a @code{window-height} or -@code{window-width} entry in the @var{alist} argument (@pxref{Display -Action Functions}). Otherwise, window splitting behaves as for a value -of @code{nil}. +This means that @code{display-buffer} makes a new parent window when +it splits a window and is passed a @code{window-height} or +@code{window-width} entry in the @var{alist} argument (@pxref{Buffer +Display Action Functions}). Otherwise, window splitting behaves as +for a value of @code{nil}. @item temp-buffer-resize In this case @code{with-temp-buffer-window} makes a new parent window @@ -1879,7 +1883,7 @@ most recently used one (@pxref{Cyclic Window Ordering}). @cindex ordering of windows, cyclic @cindex window ordering, cyclic - When you use the command @kbd{C-x o} (@code{other-window}) to select + When you use the command @w{@kbd{C-x o}} (@code{other-window}) to select some other window, it moves through live windows in a specific order. For any given configuration of windows, this order never varies. It is called the @dfn{cyclic ordering of windows}. @@ -1899,7 +1903,7 @@ if omitted or @code{nil}, it defaults to the selected window. The optional argument @var{minibuf} specifies whether minibuffer windows should be included in the cyclic ordering. Normally, when @var{minibuf} is @code{nil}, a minibuffer window is included only if it is currently -active; this matches the behavior of @kbd{C-x o}. (Note that a +active; this matches the behavior of @w{@kbd{C-x o}}. (Note that a minibuffer window is active as long as its minibuffer is in use; see @ref{Minibuffers}). @@ -1957,7 +1961,13 @@ The optional argument @var{all-frames} has the same meaning as in @code{next-window}. This function does not select a window that has a non-@code{nil} -@code{no-other-window} window parameter (@pxref{Window Parameters}). +@code{no-other-window} window parameter (@pxref{Window Parameters}), +provided that @code{ignore-window-parameters} is @code{nil}. + +If the @code{other-window} parameter of the selected window is a +function, and @code{ignore-window-parameters} is @code{nil}, that +function will be called with the arguments @var{count} and +@var{all-frames} instead of the normal operation of this function. @end deffn @defun walk-windows fun &optional minibuf all-frames @@ -2083,7 +2093,8 @@ variables in the specified buffer. However, if the optional argument @var{keep-margins} is non-@code{nil}, it leaves @var{window}'s display margins, fringes and scroll bar settings alone. -When writing an application, you should normally use the higher-level +When writing an application, you should normally use +@code{display-buffer} (@pxref{Choosing Window}) or the higher-level functions described in @ref{Switching Buffers}, instead of calling @code{set-window-buffer} directly. @@ -2168,7 +2179,6 @@ frame on its terminal, the buffer is replaced anyway. @node Switching Buffers @section Switching to a Buffer in a Window @cindex switching to a buffer -@cindex displaying a buffer This section describes high-level functions for switching to a specified buffer in some window. In general, ``switching to a buffer'' means to @@ -2327,32 +2337,70 @@ unless @var{norecord} is non-@code{nil}. @end deffn +@node Displaying Buffers +@section Displaying a Buffer in a Suitable Window +@cindex buffer display +@cindex displaying a buffer + +This section describes lower-level functions Emacs uses to find or +create a window for displaying a specified buffer. The common +workhorse of these functions is @code{display-buffer} which eventually +handles all incoming requests for buffer display (@pxref{Choosing +Window}). + + @code{display-buffer} delegates the task of finding a suitable +window to so-called action functions (@pxref{Buffer Display Action +Functions}). First, @code{display-buffer} compiles a so-called action +alist---a special association list that action functions can use to +fine-tune their behavior. Then it passes that alist on to each action +function it calls (@pxref{Buffer Display Action Alists}). + + The behavior of @code{display-buffer} is highly customizable. To +understand how customizations are used in practice, you may wish to +study examples illustrating the order of precedence which +@code{display-buffer} uses to call action functions (@pxref{Precedence +of Action Functions}). To avoid conflicts between Lisp programs +calling @code{display-buffer} and user customizations of its behavior, +it may make sense to follow a number of guidelines which are sketched +in the final part of this section (@pxref{The Zen of Buffer Display}). + +@menu +* Choosing Window:: How to choose a window for displaying a buffer. +* Buffer Display Action Functions:: Support functions for buffer display. +* Buffer Display Action Alists:: Alists for fine-tuning buffer display. +* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Precedence of Action Functions:: Examples to explain the precedence of + action functions. +* The Zen of Buffer Display:: How to avoid that buffers get lost in between + windows. +@end menu + + @node Choosing Window -@section Choosing a Window for Display +@subsection Choosing a Window for Displaying a Buffer - The command @code{display-buffer} flexibly chooses a window for +The command @code{display-buffer} flexibly chooses a window for display, and displays a specified buffer in that window. It can be called interactively, via the key binding @kbd{C-x 4 C-o}. It is also used as a subroutine by many functions and commands, including @code{switch-to-buffer} and @code{pop-to-buffer} (@pxref{Switching Buffers}). +@cindex buffer display display action @cindex display action -@cindex action function, for @code{display-buffer} -@cindex action alist, for @code{display-buffer} This command performs several complex steps to find a window to display in. These steps are described by means of @dfn{display -actions}, which have the form @code{(@var{function} . @var{alist})}. -Here, @var{function} is either a function or a list of functions, -which we refer to as @dfn{action functions}; @var{alist} is an -association list, which we refer to as an @dfn{action alist}. +actions}, which have the form @code{(@var{functions} . @var{alist})}. +Here, @var{functions} is either a single function or a list of +functions, referred to as ``action functions'' (@pxref{Buffer Display +Action Functions}); and @var{alist} is an association list, referred +to as ``action alist'' (@pxref{Buffer Display Action Alists}). +@xref{The Zen of Buffer Display}, for samples of display actions. An action function accepts two arguments: the buffer to display and an action alist. It attempts to display the buffer in some window, picking or creating a window according to its own criteria. If successful, it returns the window; otherwise, it returns @code{nil}. -@xref{Display Action Functions}, for a list of predefined action -functions. @code{display-buffer} works by combining display actions from several sources, and calling the action functions in turn, until one @@ -2363,12 +2411,14 @@ value. This command makes @var{buffer-or-name} appear in some window, without selecting the window or making the buffer current. The argument @var{buffer-or-name} must be a buffer or the name of an existing -buffer. The return value is the window chosen to display the buffer. +buffer. The return value is the window chosen to display the buffer, +or @code{nil} if no suitable window was found. The optional argument @var{action}, if non-@code{nil}, should normally be a display action (described above). @code{display-buffer} builds a list of action functions and an action alist, by consolidating display -actions from the following sources (in order): +actions from the following sources (in order of their precedence, +from highest to lowest): @itemize @item @@ -2388,40 +2438,65 @@ The constant @code{display-buffer-fallback-action}. @end itemize @noindent -Each action function is called in turn, passing the buffer as the -first argument and the combined action alist as the second argument, -until one of the functions returns non-@code{nil}. The caller can -pass @code{(allow-no-window . t)} as an element of the action alist to -indicate its readiness to handle the case of not displaying the -buffer in a window. +In practice this means that @code{display-buffer} builds a list of all +action functions specified by these display actions. The first +element of this list is the first action function specified by +@code{display-buffer-overriding-action}, if any. Its last element is +@code{display-buffer-pop-up-frame}---the last action function +specified by @code{display-buffer-fallback-action}. Duplicates are +not removed from this list---hence one and the same action function +may be called multiple times during one call of @code{display-buffer}. + +@code{display-buffer} calls the action functions specified by this +list in turn, passing the buffer as the first argument and the +combined action alist as the second argument, until one of the +functions returns non-@code{nil}. @xref{Precedence of Action +Functions}, for examples how display actions specified by different +sources are processed by @code{display-buffer}. + +Note that the second argument is always the list of @emph{all} action +alist entries specified by the sources named above. Hence, the first +element of that list is the first action alist entry specified by +@code{display-buffer-overriding-action}, if any. Its last element is +the last alist entry of @code{display-buffer-base-action}, if any (the +action alist of @code{display-buffer-fallback-action} is empty). + +Note also, that the combined action alist may contain duplicate +entries and entries for the same key with different values. As a +rule, action functions always use the first association of a key they +find. Hence, the association an action function uses is not +necessarily the association provided by the display action that +specified that action function, The argument @var{action} can also have a non-@code{nil}, non-list value. This has the special meaning that the buffer should be displayed in a window other than the selected one, even if the selected window is already displaying it. If called interactively -with a prefix argument, @var{action} is @code{t}. +with a prefix argument, @var{action} is @code{t}. Lisp programs +should always supply a list value. The optional argument @var{frame}, if non-@code{nil}, specifies which frames to check when deciding whether the buffer is already displayed. -It is equivalent to adding an element @code{(reusable-frames -. @var{frame})} to the action alist of @var{action}. @xref{Display -Action Functions}. +It is equivalent to adding an element @w{@code{(reusable-frames +. @var{frame})}} to the action alist of @var{action} (@pxref{Buffer +Display Action Alists}). The @var{frame} argument is provided for +compatibility reasons, Lisp programs should not use it. @end deffn @defvar display-buffer-overriding-action The value of this variable should be a display action, which is treated with the highest priority by @code{display-buffer}. The -default value is empty, i.e., @code{(nil . nil)}. +default value is an empty display action, i.e., @w{@code{(nil . nil)}}. @end defvar @defopt display-buffer-alist The value of this option is an alist mapping conditions to display actions. Each condition may be either a regular expression matching a buffer name or a function that takes two arguments: a buffer name and -the @var{action} argument passed to @code{display-buffer}. If the name -of the buffer passed to @code{display-buffer} either matches a regular -expression in this alist or the function specified by a condition -returns non-@code{nil}, then @code{display-buffer} uses the +the @var{action} argument passed to @code{display-buffer}. If either +the name of the buffer passed to @code{display-buffer} matches a +regular expression in this alist, or the function specified by a +condition returns non-@code{nil}, then @code{display-buffer} uses the corresponding display action to display the buffer. @end defopt @@ -2437,13 +2512,19 @@ This display action specifies the fallback behavior for @end defvr -@node Display Action Functions -@section Action Functions for @code{display-buffer} +@node Buffer Display Action Functions +@subsection Action Functions for Buffer Display +@cindex buffer display action function +@cindex action function, for buffer display + +An @dfn{action function} is a function @code{display-buffer} calls for +choosing a window to display a buffer. Action functions take two +arguments: @var{buffer}, the buffer to display, and @var{alist}, an +action alist (@pxref{Buffer Display Action Alists}). They are +supposed to return a window displaying @var{buffer} if they succeed +and @code{nil} if they fail. -The following basic action functions are defined in Emacs. Each of -these functions takes two arguments: @var{buffer}, the buffer to -display, and @var{alist}, an action alist. Each action function -returns the window if it succeeds, and @code{nil} if it fails. + The following basic action functions are defined in Emacs. @defun display-buffer-same-window buffer alist This function tries to display @var{buffer} in the selected window. @@ -2453,57 +2534,124 @@ to another buffer (@pxref{Dedicated Windows}). It also fails if @end defun @defun display-buffer-reuse-window buffer alist -This function tries to display @var{buffer} by finding a window -that is already displaying it. +This function tries to display @var{buffer} by finding a window that +is already displaying it. If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, -the selected window is not eligible for reuse. If @var{alist} -contains a @code{reusable-frames} entry, its value determines which -frames to search for a reusable window: +the selected window is not eligible for reuse. The set of frames to +search for a window already displaying @var{buffer} can be specified +with the help of the @code{reusable-frames} action alist entry. If +@var{alist} contains no @code{reusable-frames} entry, this function +searches just the selected frame. + +If this function chooses a window on another frame, it makes that +frame visible and, unless @var{alist} contains an +@code{inhibit-switch-frame} entry, raises that frame if necessary. +@end defun + +@defun display-buffer-reuse-mode-window buffer alist +This function tries to display @var{buffer} by finding a window +that is displaying a buffer in a given mode. + +If @var{alist} contains a @code{mode} entry, its value specifes a +major mode (a symbol) or a list of major modes. If @var{alist} +contains no @code{mode} entry, the current major mode of @var{buffer} +is used instead. A window is a candidate if it displays a buffer +whose mode derives from one of the modes specified thusly. + +The behavior is also controlled by @var{alist} entries for +@code{inhibit-same-window}, @code{reusable-frames} and +@code{inhibit-switch-frame}, like @code{display-buffer-reuse-window} +does. +@end defun + +@defun display-buffer-pop-up-window buffer alist +This function tries to display @var{buffer} by splitting the largest +or least recently-used window (usually located on the selected frame). +It actually performs the split by calling the function specified by +@code{split-window-preferred-function} (@pxref{Choosing Window +Options}). + +The size of the new window can be adjusted by supplying +@code{window-height} and @code{window-width} entries in @var{alist}. +If @var{alist} contains a @code{preserve-size} entry, Emacs will also +try to preserve the size of the new window during future resize +operations (@pxref{Preserving Window Sizes}). + +This function fails if no window can be split. More often than not, +this happens because no window is large enough to allow splitting. +Setting @code{split-height-threshold} or @code{split-width-threshold} +to lower values may help in this regard. Splitting also fails when +the selected frame has an @code{unsplittable} frame parameter; +@pxref{Buffer Parameters}. +@end defun + +@defun display-buffer-in-previous-window buffer alist +This function tries to display @var{buffer} in a window where it was +displayed previously. + +If @var{alist} contains a non-@code{nil} @code{inhibit-same-window} +entry, the selected window is not eligible for use. A dedicated +window is usable only if it already shows @var{buffer}. If +@var{alist} contains a @code{previous-window} entry, the window +specified by that entry is usable even if it never showed @var{buffer} +before. + +If @var{alist} contains a @code{reusable-frames} entry (@pxref{Buffer +Display Action Alists}), its value determines which frames to search +for a suitable window. If @var{alist} contains no +@code{reusable-frames} entry, this function searches just the selected +frame if @code{display-buffer-reuse-frames} and @code{pop-up-frames} +are both @code{nil}; it searches all frames on the current terminal if +either of those variables is non-@code{nil}. + +If more than one window qualifies as usable according to these rules, +this function makes a choice in the following order of preference: @itemize @bullet @item -@code{nil} means consider windows on the selected frame. -(Actually, the last non-minibuffer frame.) -@item -@code{t} means consider windows on all frames. -@item -@code{visible} means consider windows on all visible frames. +The window specified by any @code{previous-window} @var{alist} entry, +provided it is not the selected window. + @item -0 means consider windows on all visible or iconified frames. +A window that showed @var{buffer} before, provided it is not the +selected window. + @item -A frame means consider windows on that frame only. +The selected window if it is either specified by a +@code{previous-window} @var{alist} entry or showed @var{buffer} +before. @end itemize +@end defun -Note that these meanings differ slightly from those of the -@var{all-frames} argument to @code{next-window} (@pxref{Cyclic Window -Ordering}). - -If @var{alist} contains no @code{reusable-frames} entry, this function -normally searches just the selected frame; however, if the variable -@code{pop-up-frames} is non-@code{nil}, it searches all frames on the -current terminal. @xref{Choosing Window Options}. - -If this function chooses a window on another frame, it makes that frame -visible and, unless @var{alist} contains an @code{inhibit-switch-frame} -entry (@pxref{Choosing Window Options}), raises that frame if necessary. +@defun display-buffer-use-some-window buffer alist +This function tries to display @var{buffer} by choosing an existing +window and displaying the buffer in that window. It can fail if all +windows are dedicated to other buffers (@pxref{Dedicated Windows}). @end defun -@defun display-buffer-reuse-mode-window buffer alist -This function tries to display @var{buffer} by finding a window -that is displaying a buffer in a given mode. +@defun display-buffer-below-selected buffer alist +This function tries to display @var{buffer} in a window below the +selected window. If there is a window below the selected one and that +window already displays @var{buffer}, it reuses that window. -If @var{alist} contains a @code{mode} entry, its value is a major mode -(a symbol) or a list of major modes. If @var{alist} contains no -@code{mode} entry, the current major mode of @var{buffer} is used. A -window is a candidate if it displays a buffer that derives from one of -the given modes. +If there is no such window, this function tries to create a new window +by splitting the selected one, and displays @var{buffer} there. It will +also try to adjust that window's size provided @var{alist} contains a +suitable @code{window-height} or @code{window-width} entry, see above. -The behavior is also controlled by entries for -@code{inhibit-same-window}, @code{reusable-frames} and -@code{inhibit-switch-frame} as is done in the function -@code{display-buffer-reuse-window}. +If splitting the selected window fails and there is a non-dedicated +window below the selected one showing some other buffer, this function +tries to use that window for showing @var{buffer}. +@end defun + +@defun display-buffer-at-bottom buffer alist +This function tries to display @var{buffer} in a window at the bottom +of the selected frame. +This either tries to split the window at the bottom of the frame or +the frame's root window, or to reuse an existing window at the bottom +of the selected frame. @end defun @defun display-buffer-pop-up-frame buffer alist @@ -2511,37 +2659,37 @@ This function creates a new frame, and displays the buffer in that frame's window. It actually performs the frame creation by calling the function specified in @code{pop-up-frame-function} (@pxref{Choosing Window Options}). If @var{alist} contains a -@code{pop-up-frame-parameters} entry, the associated value -is added to the newly created frame's parameters. +@code{pop-up-frame-parameters} entry, the associated value is added to +the newly created frame's parameters. @end defun @defun display-buffer-in-child-frame buffer alist This function tries to display @var{buffer} in a child frame -(@pxref{Child Frames}) of the selected frame, either reusing an existing -child frame or by making a new one. If @var{alist} has a non-@code{nil} -@code{child-frame-parameters} entry, the corresponding value is an alist -of frame parameters to give the new frame. A @code{parent-frame} -parameter specifying the selected frame is provided by default. If the -child frame should be or become the child of another frame, a -corresponding entry must be added to @var{alist}. +(@pxref{Child Frames}) of the selected frame, either reusing an +existing child frame or by making a new one. If @var{alist} has a +non-@code{nil} @code{child-frame-parameters} entry, the corresponding +value is an alist of frame parameters to give the new frame. A +@code{parent-frame} parameter specifying the selected frame is +provided by default. If the child frame should become the child of +another frame, a corresponding entry must be added to @var{alist}. The appearance of child frames is largely dependent on the parameters provided via @var{alist}. It is advisable to use at least ratios to specify the size (@pxref{Size Parameters}) and the position -(@pxref{Position Parameters}) of the child frame and to add the -@code{keep-ratio} in order to make sure that the child frame remains -visible. For other parameters that should be considered see @ref{Child -Frames}. +(@pxref{Position Parameters}) of the child frame, and to add a +@code{keep-ratio} parameter (@pxref{Frame Interaction Parameters}), in +order to make sure that the child frame remains visible. For other +parameters that should be considered see @ref{Child Frames}. @end defun @defun display-buffer-use-some-frame buffer alist -This function tries to display @var{buffer} by trying to find a -frame that meets a predicate (by default any frame other than the -current frame). +This function tries to display @var{buffer} by finding a frame that +meets a predicate (by default any frame other than the selected +frame). -If this function chooses a window on another frame, it makes that frame -visible and, unless @var{alist} contains an @code{inhibit-switch-frame} -entry (@pxref{Choosing Window Options}), raises that frame if necessary. +If this function chooses a window on another frame, it makes that +frame visible and, unless @var{alist} contains an +@code{inhibit-switch-frame} entry, raises that frame if necessary. If @var{alist} has a non-@code{nil} @code{frame-predicate} entry, its value is a function taking one argument (a frame), returning @@ -2549,237 +2697,307 @@ non-@code{nil} if the frame is a candidate; this function replaces the default predicate. If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, -the selected window is used; thus if the selected frame has a single -window, it is not used. +the selected window is not used; thus if the selected frame has a +single window, it is not used. @end defun -@defun display-buffer-pop-up-window buffer alist -This function tries to display @var{buffer} by splitting the largest -or least recently-used window (typically one on the selected frame). -It actually performs the split by calling the function specified in -@code{split-window-preferred-function} (@pxref{Choosing Window -Options}). - -The size of the new window can be adjusted by supplying -@code{window-height} and @code{window-width} entries in @var{alist}. To -adjust the window's height, use an entry whose @sc{car} is -@code{window-height} and whose @sc{cdr} is one of: +@defun display-buffer-no-window buffer alist +If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then +this function does not display @var{buffer} and returns the symbol +@code{fail}. This constitutes the only exception to the convention +that an action function returns either @code{nil} or a window showing +@var{buffer}. If @var{alist} has no such @code{allow-no-window} +entry, this function returns @code{nil}. + +If this function returns @code{fail}, @code{display-buffer} will skip +the execution of any further display actions and return @code{nil} +immediately. If this function returns @code{nil}, +@code{display-buffer} will continue with the next display action, if +any. -@itemize @bullet -@item -@code{nil} means to leave the height of the new window alone. +It is assumed that when a caller of @code{display-buffer} specifies a +non-@code{nil} @code{allow-no-window} entry, it is also able to handle +a @code{nil} return value. +@end defun -@item -A number specifies the desired height of the new window. An integer -specifies the number of lines of the window. A floating-point -number gives the fraction of the window's height with respect to the -height of the frame's root window. +Two other action functions are described in their proper +sections---@code{display-buffer-in-side-window} (@pxref{Displaying +Buffers in Side Windows}) and @code{display-buffer-in-atom-window} +(@pxref{Atomic Windows}). + + +@node Buffer Display Action Alists +@subsection Action Alists for Buffer Display +@cindex buffer display action alist +@cindex action alist for buffer display + +An @dfn{action alist} is an association list mapping predefined +symbols recognized by action functions to values these functions are +supposed to interpret accordingly. In each call, +@code{display-buffer} constructs a new, possibly empty action alist +and passes that entire list on to any action function it calls. + + By design, action functions are free in their interpretation of +action alist entries. In fact, some entries like +@code{allow-no-window} or @code{previous-window} have a meaning only +for one or a few action functions, and are ignored by the rest. Other +entries, like @code{inhibit-same-window} or @code{window-parameters}, +are supposed to be respected by most action functions, including those +provided by application programs and external packages. + + In the previous subsection we have described in detail how +individual action functions interpret the action alist entries they +care about. Here we give a reference list of all known action alist +entries according to their symbols, together with their values and +action functions (@pxref{Buffer Display Action Functions}) that +recognize them. Throughout this list, the terms ``buffer'' will refer +to the buffer @code{display-buffer} is supposed to display, and +``value'' refers to the entry's value. -@item -If the @sc{cdr} specifies a function, that function is called with one -argument: the new window. The function is supposed to adjust the -height of the window; its return value is ignored. Suitable functions -are @code{shrink-window-if-larger-than-buffer} and -@code{fit-window-to-buffer}, see @ref{Resizing Windows}. -@end itemize - -To adjust the window's width, use an entry whose @sc{car} is -@code{window-width} and whose @sc{cdr} is one of: +@table @code +@vindex inhibit-same-window@r{, a buffer display action alist entry} +@item inhibit-same-window +If the value is non-@code{nil}, this signals that the selected window +must not be used for displaying the buffer. All action functions that +(re-)use an existing window should respect this entry. + +@vindex previous-window@r{, a buffer display action alist entry} +@item previous-window +The value must specify a window that may have displayed the buffer +previously. @code{display-buffer-in-previous-window} will give +preference to such a window provided it is still live and not +dedicated to another buffer. + +@vindex mode@r{, a buffer display action alist entry} +@item mode +The value is either a major mode or a list of major modes. +@code{display-buffer-reuse-mode-window} may reuse a window whenever +the value specified by this entry matches the major mode of that +window's buffer. Other action functions ignore such entries. + +@vindex frame-predicate@r{, a buffer display action alist entry} +@item frame-predicate +The value must be a function taking one argument (a frame), supposed +to return non-@code{nil} if that frame is a candidate for displaying +the buffer. This entry is used by +@code{display-buffer-use-some-frame}. + +@vindex reusable-frames@r{, a buffer display action alist entry} +@item reusable-frames +The value specifies the set of frames to search for a window that can +be reused because it already displays the buffer. It can be set as +follows: @itemize @bullet @item -@code{nil} means to leave the width of the new window alone. - +@code{nil} means consider only windows on the selected frame. +(Actually, the last frame used that is not a minibuffer-only frame.) @item -A number specifies the desired width of the new window. An integer -specifies the number of columns of the window. A floating-point -number gives the fraction of the window's width with respect to the -width of the frame's root window. - +@code{t} means consider windows on all frames. +@item +@code{visible} means consider windows on all visible frames. @item -If the @sc{cdr} specifies a function, that function is called with one -argument: the new window. The function is supposed to adjust the width -of the window; its return value is ignored. +0 means consider windows on all visible or iconified frames. +@item +A frame means consider windows on that frame only. @end itemize -If @var{alist} contains a @code{preserve-size} entry, Emacs will try to -preserve the size of the new window during future resize operations -(@pxref{Preserving Window Sizes}). The @sc{cdr} of that entry must be a -cons cell whose @sc{car}, if non-@code{nil}, means to preserve the width -of the window and whose @sc{cdr}, if non-@code{nil}, means to preserve -the height of the window. +Note that the meaning of @code{nil} differs slightly from that of the +@var{all-frames} argument to @code{next-window} (@pxref{Cyclic Window +Ordering}). -This function can fail if no window splitting can be performed for some -reason (e.g., if the selected frame has an @code{unsplittable} frame -parameter; @pxref{Buffer Parameters}). -@end defun +A major client of this is @code{display-buffer-reuse-window}, but all +other action functions that try to reuse a window are affected as +well. @code{display-buffer-in-previous-window} consults it when +searching for a window that previosuly displayed the buffer on another +frame. -@defun display-buffer-below-selected buffer alist -This function tries to display @var{buffer} in a window below the -selected window. If there is a window below the selected one and that -window already displays @var{buffer}, it reuses that window. +@vindex inhibit-switch-frame@r{, a buffer display action alist entry} +@item inhibit-switch-frame +A non-@code{nil} value prevents another frame from being raised or +selected, if the window chosen by @code{display-buffer} is displayed +there. Primarily affected by this are +@code{display-buffer-use-some-frame} and +@code{display-buffer-reuse-window}. +@code{display-buffer-pop-up-frame} should be affected as well, but +there is no guarantee that the window manager will comply. -If there is no such window, this function tries to create a new window -by splitting the selected one and display @var{buffer} there. It will -also adjust that window's size provided @var{alist} contains a suitable -@code{window-height} or @code{window-width} entry, see above. +@vindex window-parameters@r{, a buffer display action alist entry} +@item window-parameters +The value specifies an alist of window parameters to give the chosen +window. All action functions that choose a window should process this +entry. -If splitting the selected window fails and there is a non-dedicated -window below the selected one showing some other buffer, it uses that -window for showing @var{buffer}. -@end defun +@vindex window-height@r{, a buffer display action alist entry} +@item window-height +The value specifies whether and how to adjust the height of the chosen +window and can be one of the following: -@defun display-buffer-in-previous-window buffer alist -This function tries to display @var{buffer} in a window previously -showing it. If @var{alist} has a non-@code{nil} -@code{inhibit-same-window} entry, the selected window is not eligible -for reuse. If @var{alist} contains a @code{reusable-frames} entry, its -value determines which frames to search for a suitable window as with -@code{display-buffer-reuse-window}. +@itemize @bullet +@item +@code{nil} means to leave the height of the chosen window alone. -If @var{alist} has a @code{previous-window} entry, the window -specified by that entry will override any other window found by the -methods above, even if that window never showed @var{buffer} before. -@end defun +@item +An integer number specifies the desired total height of the chosen +window in lines. -@defun display-buffer-at-bottom buffer alist -This function tries to display @var{buffer} in a window at the bottom -of the selected frame. +@item +A floating-point number specifies the fraction of the chosen window's +desired total height with respect to the total height of its frame's +root window. -This either splits the window at the bottom of the frame or the -frame's root window, or reuses an existing window at the bottom of the -selected frame. -@end defun +@item +If the value specifies a function, that function is called with one +argument---the chosen window. The function is supposed to adjust the +height of the window; its return value is ignored. Suitable functions +are @code{shrink-window-if-larger-than-buffer} and +@code{fit-window-to-buffer}, see @ref{Resizing Windows}. +@end itemize -@defun display-buffer-use-some-window buffer alist -This function tries to display @var{buffer} by choosing an existing -window and displaying the buffer in that window. It can fail if all -windows are dedicated to another buffer (@pxref{Dedicated Windows}). -@end defun +By convention, the height of the chosen window is adjusted only if the +window is part of a vertical combination (@pxref{Windows and Frames}) +to avoid changing the height of other, unrelated windows. Also, this +entry should be processed only under certain conditions which are +specified right below this list. -@defun display-buffer-no-window buffer alist -If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then -this function does not display @code{buffer}. This allows you to -override the default action and avoid displaying the buffer. It is -assumed that when the caller specifies a non-@code{nil} -@code{allow-no-window} value it can handle a @code{nil} value returned -from @code{display-buffer} in this case. -@end defun +@vindex window-width@r{, a buffer display action alist entry} +@item window-width +This entry is similar to the @code{window-height} entry described +before, but used to adjust the chosen window's width instead. The +value can be one of the following: -If the @var{alist} argument of any of these functions contains a -@code{window-parameters} entry, @code{display-buffer} assigns the -elements of the associated value as window parameters of the chosen -window. +@itemize @bullet +@item +@code{nil} means to leave the width of the chosen window alone. - To illustrate the use of action functions, consider the following -example. +@item +An integer specifies the desired total width of the chosen window in +columns. -@example -@group -(display-buffer - (get-buffer-create "*foo*") - '((display-buffer-reuse-window - display-buffer-pop-up-window - display-buffer-pop-up-frame) - (reusable-frames . 0) - (window-height . 10) (window-width . 40))) -@end group -@end example +@item +A floating-point number specifies the fraction of the chosen window's +desired total width with respect to the total width of the frame's +root window. -@noindent -Evaluating the form above will cause @code{display-buffer} to proceed as -follows: If a buffer called *foo* already appears on a visible or -iconified frame, it will reuse its window. Otherwise, it will try to -pop up a new window or, if that is impossible, a new frame and show the -buffer there. If all these steps fail, it will proceed using whatever -@code{display-buffer-base-action} and -@code{display-buffer-fallback-action} prescribe. - - Furthermore, @code{display-buffer} will try to adjust a reused window -(provided *foo* was put by @code{display-buffer} there before) or a -popped-up window as follows: If the window is part of a vertical -combination, it will set its height to ten lines. Note that if, instead -of the number 10, we specified the function -@code{fit-window-to-buffer}, @code{display-buffer} would come up with a -one-line window to fit the empty buffer. If the window is part of a -horizontal combination, it sets its width to 40 columns. Whether a new -window is vertically or horizontally combined depends on the shape of -the window split and the values of -@code{split-window-preferred-function}, @code{split-height-threshold} -and @code{split-width-threshold} (@pxref{Choosing Window Options}). - - Now suppose we combine this call with a preexisting setup for -@code{display-buffer-alist} as follows. +@item +If the value specifies a function, that function is called with one +argument---the chosen window. The function is supposed to adjust the +width of the window; its return value is ignored. +@end itemize -@example -@group -(let ((display-buffer-alist - (cons - '("\\*foo\\*" - (display-buffer-reuse-window display-buffer-below-selected) - (reusable-frames) - (window-height . 5)) - display-buffer-alist))) - (display-buffer - (get-buffer-create "*foo*") - '((display-buffer-reuse-window - display-buffer-pop-up-window - display-buffer-pop-up-frame) - (reusable-frames . 0) - (window-height . 10) (window-width . 40)))) -@end group -@end example +By convention, the width of the chosen window is adjusted only if the +window is part of a horizontal combination (@pxref{Windows and +Frames}) to avoid changing the width of other, unrelated windows. +Also, this entry should be processed under only certain conditions +which are specified right below this list. + +@vindex preserve-size@r{, a buffer display action alist entry} +@item preserve-size +If non-@code{nil} such an entry tells Emacs to preserve the size of +the window chosen (@pxref{Preserving Window Sizes}). The value should +be either @w{@code{(t . nil)}} to preserve the width of the window, +@w{@code{(nil . t)}} to preserve its height or @w{@code{(t . t)}} to +preserve both, its width and its height. This entry should be +processed only under certain conditions which are specified right +after this list. + +@vindex pop-up-frame-parameters@r{, a buffer display action alist entry} +@item pop-up-frame-parameters +The value specifies an alist of frame parameters to give a new frame, +if one is created. @code{display-buffer-pop-up-frame} is its one and +only addressee. + +@vindex parent-frame@r{, a buffer display action alist entry} +@item parent-frame +The value specifies the parent frame to be used when the buffer is +displayed on a child frame. This entry is used only by +@code{display-buffer-in-child-frame}. + +@vindex child-frame-parameters@r{, a buffer display action alist entry} +@item child-frame-parameters +The value specifies an alist of frame parameters to use when the buffer +is displayed on a child frame. This entry is used only by +@code{display-buffer-in-child-frame}. + +@vindex side@r{, a buffer display action alist entry} +@item side +The value denotes the side of the frame or window where a new window +displaying the buffer shall be created. This entry is used by +@code{display-buffer-in-side-window} to indicate the side of the frame +where a new side window shall be placed (@pxref{Displaying Buffers in +Side Windows}). It is also used by +@code{display-buffer-in-atom-window} to indicate the side of an +existing window where the new window shall be located (@pxref{Atomic +Windows}). -@noindent -This form will have @code{display-buffer} first try reusing a window -that shows *foo* on the selected frame. If there's no such window, it -will try to split the selected window or, if that is impossible, use the -window below the selected window. +@vindex slot@r{, a buffer display action alist entry} +@item slot +If non-@code{nil}, the value specifies the slot of the side window +supposed to display the buffer. This entry is used only by +@code{display-buffer-in-side-window}. + +@vindex window@r{, a buffer display action alist entry} +@item window +The value specifies a window that is in some way related to the window +chosen by @code{display-buffer}. This entry is currently used by +@code{display-buffer-in-atom-window} to indicate the window on whose +side the new window shall be created. + +@vindex allow-no-window@r{, a buffer display action alist entry} +@item allow-no-window +If the value is non-@code{nil}, @code{display-buffer} does not +necessarily have to display the buffer and the caller is prepared to +accept that. This entry is not intended for user customizations, +since there is no guarantee that an arbitrary caller of +@code{display-buffer} will be able to handle the case that no window +will display the buffer. @code{display-buffer-no-window} is the only +action function that cares about this entry. +@end table - If there's no window below the selected one, or the window below the -selected one is dedicated to its buffer, @code{display-buffer} will -proceed as described in the previous example. Note, however, that when -it tries to adjust the height of any reused or popped-up window, it will -in any case try to set its number of lines to 5 since that value -overrides the corresponding specification in the @var{action} argument -of @code{display-buffer}. +By convention, the entries @code{window-height}, @code{window-width} +and @code{preserve-size} are applied after the chosen window's buffer +has been set up and if and only if that window never showed another +buffer before. More precisely, the latter means that the window must +have been either created by the current @code{display-buffer} call or +the window was created earlier by @code{display-buffer} to show the +buffer and never was used to show another buffer until it was reused +by the current invocation of @code{display-buffer}. @node Choosing Window Options -@section Additional Options for Displaying Buffers +@subsection Additional Options for Displaying Buffers -The behavior of the standard display actions of @code{display-buffer} -(@pxref{Choosing Window}) can be modified by a variety of user -options. +The behavior of buffer display actions (@pxref{Choosing Window}) can +be further modified by the following user options. @defopt pop-up-windows If the value of this variable is non-@code{nil}, @code{display-buffer} is allowed to split an existing window to make a new window for displaying in. This is the default. -This variable is provided mainly for backward compatibility. It is +This variable is provided for backward compatibility only. It is obeyed by @code{display-buffer} via a special mechanism in -@code{display-buffer-fallback-action}, which only calls the action -function @code{display-buffer-pop-up-window} (@pxref{Display Action -Functions}) when the value is @code{nil}. It is not consulted by -@code{display-buffer-pop-up-window} itself, which the user may specify -directly in @code{display-buffer-alist} etc. +@code{display-buffer-fallback-action}, which calls the action function +@code{display-buffer-pop-up-window} (@pxref{Buffer Display Action +Functions}) when the value of this option is non-@code{nil}. It is +not consulted by @code{display-buffer-pop-up-window} itself, which the +user may specify directly in @code{display-buffer-alist} etc. @end defopt @defopt split-window-preferred-function This variable specifies a function for splitting a window, in order to make a new window for displaying a buffer. It is used by the @code{display-buffer-pop-up-window} action function to actually split -the window (@pxref{Display Action Functions}). +the window. -The default value is @code{split-window-sensibly}, which is documented -below. The value must be a function that takes one argument, a window, -and return either a new window (which will be used to display the -desired buffer) or @code{nil} (which means the splitting failed). +The value must be a function that takes one argument, a window, and +returns either a new window (which will be used to display the desired +buffer) or @code{nil} (which means the splitting failed). The default +value is @code{split-window-sensibly}, which is documented next. @end defopt @defun split-window-sensibly &optional window -This function tries to split @var{window}, and return the newly created +This function tries to split @var{window} and return the newly created window. If @var{window} cannot be split, it returns @code{nil}. If @var{window} is omitted or @code{nil}, it defaults to the selected window. @@ -2790,31 +3008,31 @@ placing the new window below, subject to the restriction imposed by @code{split-height-threshold} (see below), in addition to any other restrictions. If that fails, it tries to split by placing the new window to the right, subject to @code{split-width-threshold} (see -below). If that fails, and the window is the only window on its +below). If that also fails, and the window is the only window on its frame, this function again tries to split and place the new window below, disregarding @code{split-height-threshold}. If this fails as well, this function gives up and returns @code{nil}. @end defun @defopt split-height-threshold -This variable, used by @code{split-window-sensibly}, specifies whether -to split the window placing the new window below. If it is an +This variable specifies whether @code{split-window-sensibly} is +allowed to split the window placing the new window below. If it is an integer, that means to split only if the original window has at least that many lines. If it is @code{nil}, that means not to split this way. @end defopt @defopt split-width-threshold -This variable, used by @code{split-window-sensibly}, specifies whether -to split the window placing the new window to the right. If the value -is an integer, that means to split only if the original window has at -least that many columns. If the value is @code{nil}, that means not -to split this way. +This variable specifies whether @code{split-window-sensibly} is +allowed to split the window placing the new window to the right. If +the value is an integer, that means to split only if the original +window has at least that many columns. If the value is @code{nil}, +that means not to split this way. @end defopt @defopt even-window-sizes This variable, if non-@code{nil}, causes @code{display-buffer} to even -window sizes whenever it reuses an existing window and that window is +window sizes whenever it reuses an existing window, and that window is adjacent to the selected one. If its value is @code{width-only}, sizes are evened only if the reused @@ -2839,9 +3057,9 @@ search any visible or iconified frame, not just the selected frame. This variable is provided mainly for backward compatibility. It is obeyed by @code{display-buffer} via a special mechanism in @code{display-buffer-fallback-action}, which calls the action function -@code{display-buffer-pop-up-frame} (@pxref{Display Action Functions}) -if the value is non-@code{nil}. (This is done before attempting to -split a window.) This variable is not consulted by +@code{display-buffer-pop-up-frame} (@pxref{Buffer Display Action +Functions}) if the value is non-@code{nil}. (This is done before +attempting to split a window.) This variable is not consulted by @code{display-buffer-pop-up-frame} itself, which the user may specify directly in @code{display-buffer-alist} etc. @end defopt @@ -2849,8 +3067,7 @@ directly in @code{display-buffer-alist} etc. @defopt pop-up-frame-function This variable specifies a function for creating a new frame, in order to make a new window for displaying a buffer. It is used by the -@code{display-buffer-pop-up-frame} action function (@pxref{Display -Action Functions}). +@code{display-buffer-pop-up-frame} action function. The value should be a function that takes no arguments and returns a frame, or @code{nil} if no frame could be created. The default value @@ -2860,30 +3077,670 @@ is a function that creates a frame using the parameters specified by @defopt pop-up-frame-alist This variable holds an alist of frame parameters (@pxref{Frame -Parameters}), which is used by the default function in +Parameters}), which is used by the function specified by @code{pop-up-frame-function} to make a new frame. The default is @code{nil}. -@end defopt -@defopt same-window-buffer-names -A list of buffer names for buffers that should be displayed in the -selected window. If a buffer's name is in this list, -@code{display-buffer} handles the buffer by showing it in the selected -window. +This option is provided for backward compatibility only. Note, that +when @code{display-buffer-pop-up-frame} calls the function specified +by @code{pop-up-frame-function}, it prepends the value of all +@code{pop-up-frame-parameters} action alist entries to +@code{pop-up-frame-alist} so that the values specified by the action +alist entry effectively override any corresponding values of +@code{pop-up-frame-alist}. + +Hence, users should set up a @code{pop-up-frame-parameters} action +alist entry in @code{display-buffer-alist} instead of customizing +@code{pop-up-frame-alist}. Only this will guarantee that the value of +a parameter specified by the user overrides the value of that +parameter specified by the caller of @code{display-buffer}. @end defopt -@defopt same-window-regexps -A list of regular expressions that specify buffers that should be -displayed in the selected window. If the buffer's name matches any of -the regular expressions in this list, @code{display-buffer} handles the -buffer by showing it in the selected window. -@end defopt + Many efforts in the design of @code{display-buffer} have been given +to maintain compatibility with code that uses older options like +@code{pop-up-windows}, @code{pop-up-frames}, +@code{pop-up-frame-alist}, @code{same-window-buffer-names} and +@code{same-window-regexps}. Lisp Programs and users should refrain +from using these options. Above we already warned against customizing +@code{pop-up-frame-alist}. Here we describe how to convert the +remaining options to use display actions instead. + +@table @code +@item pop-up-windows +@vindex pop-up-windows@r{, replacement for} +This variable is @code{t} by default. Instead of customizing it to +@code{nil} and thus telling @code{display-buffer} what not to do, it's +much better to list in @code{display-buffer-base-action} the action +functions it should try instead as, for example: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-same-window + display-buffer-in-previous-window + display-buffer-use-some-window))) +@end group +@end example + +@item pop-up-frames +@vindex pop-up-frames@r{, replacement for} +Instead of customizing this variable to @code{t}, customize +@code{display-buffer-base-action}, for example, as follows: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . 0))) +@end group +@end example + +@item same-window-buffer-names +@itemx same-window-regexps +@vindex same-window-buffer-names@r{, replacement for} +@vindex same-window-regexps@r{, replacement for} +Instead of adding a buffer name or a regular expression to one of +these options use a @code{display-buffer-alist} entry for that buffer +specifying the action function @code{display-buffer-same-window}. + +@example +@group +(customize-set-variable + 'display-buffer-alist + (cons '("\\*foo\\*" (display-buffer-same-window)) + display-buffer-alist)) +@end group +@end example +@end table + + +@node Precedence of Action Functions +@subsection Precedence of Action Functions +@cindex precedence of buffer display action functions +@cindex execution order of buffer display action functions +@cindex buffer display action functions, precedence + +From the past subsections we already know that @code{display-buffer} +must be supplied with a number of display actions (@pxref{Choosing +Window}) in order to display a buffer. In a completely uncustomized +Emacs, these actions are specified by +@code{display-buffer-fallback-action} in the following order of +precedence: Reuse a window, pop up a new window on the same frame, use +a window previously showing the buffer, use some window and pop up a +new frame. (Note that the remaining actions named by +@code{display-buffer-fallback-action} are void in an uncustomized +Emacs). + +Consider the following form: + +@example +(display-buffer (get-buffer-create "*foo*")) +@end example + +@noindent +Evaluating this form in the buffer @file{*scratch*} of an uncustomized +Emacs session will usually fail to reuse a window that shows +@file{*foo*} already, but succeed in popping up a new window. +Evaluating the same form again will now not cause any visible +changes---@code{display-buffer} reused the window already showing +@file{*foo*} because that action was applicable and had the highest +precedence among all applicable actions. + + Popping up a new window will fail if there is not enough space on +the selected frame. In an uncustomized Emacs it typically fails when +there are already two windows on a frame. For example, if you now +type @w{@kbd{C-x 1}} followed by @w{@kbd{C-x 2}} and evaluate the form +once more, @file{*foo*} should show up in the lower +window---@code{display-buffer} just used ``some'' window. If, before +typing @w{@kbd{C-x 2}} you had typed @w{@kbd{C-x o}}, @file{*foo*} +would have been shown in the upper window because ``some'' window +stands for the ``least recently used'' window and the selected window +has been least recently used if and only if it is alone on its frame. + + Let's assume you did not type @w{@kbd{C-x o}} and @file{*foo*} is +shown in the lower window. Type @w{@kbd{C-x o}} to get there followed +by @w{@kbd{C-x left}} and evaluate the form again. This should +display @file{*foo*} in the same, lower window because that window had +already shown @file{*foo*} previously and was therefore chosen instead +of some other window. + + So far we have only observed the default behavior in an uncustomized +Emacs session. To see how this behavior can be customized, let's +consider the option @code{display-buffer-base-action}. It provides a +very coarse customization which conceptually affects the display of +@emph{any} buffer. It can be used to supplement the actions supplied +by @code{display-buffer-fallback-action} by reordering them or by +adding actions that are not present there but fit more closely the +user's editing practice. However, it can also be used to change the +default behavior in a more profound way. + + Let's consider a user who, as a rule, prefers to display buffers on +another frame. Such a user might provide the following customization: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . 0))) +@end group +@end example + +@noindent +This setting will cause @code{display-buffer} to first try to find a +window showing the buffer on a visible or iconified frame and, if no +such frame exists, pop up a new frame. You can observe this behavior +on a graphical system by typing @w{@kbd{C-x 1}} in the window showing +@file{*scratch*} and evaluating our canonical @code{display-buffer} +form. This will usually create (and give focus to) a new frame whose +root window shows @file{*foo*}. Iconify that frame and evaluate the +canonical form again: @code{display-buffer} will reuse the window on +the new frame (usually raising the frame and giving it focus too). + + Only if creating a new frame fails, @code{display-buffer} will +apply the actions supplied by @code{display-buffer-fallback-action} +which means to again try reusing a window, popping up a new window and +so on. A trivial way to make frame creation fail is supplied by the +following form: + +@example +@group +(let ((pop-up-frame-function 'ignore)) + (display-buffer (get-buffer-create "*foo*"))) +@end group +@end example + +@noindent +We will forget about that form immediately after observing that it +fails to create a new frame and uses a fallback action instead. + + Note that @code{display-buffer-reuse-window} appears redundant in +the customization of @code{display-buffer-base-action} because it is +already part of @code{display-buffer-fallback-action} and should be +tried there anyway. However, that would fail because due to the +precedence of @code{display-buffer-base-action} over +@code{display-buffer-fallback-action}, at that time +@code{display-buffer-pop-up-frame} would have already won the race. +In fact, this: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '(display-buffer-pop-up-frame (reusable-frames . 0))) +@end group +@end example + +@noindent +would cause @code{display-buffer} to @emph{always} pop up a new frame +which is probably not what our user wants. + + So far, we have only shown how @emph{users} can customize the +default behavior of @code{display-buffer}. Let us now see how +@emph{applications} can change the course of @code{display-buffer}. +The canonical way to do that is to use the @var{action} argument of +@code{display-buffer} or a function that calls it, like, for example, +@code{pop-to-buffer} (@pxref{Switching Buffers}). + + Suppose an application wants to display @file{*foo*} preferably +below the selected window (to immediately attract the attention of the +user to the new window) or, if that fails, in a window at the bottom +of the frame. It could do that with a call like this: + +@example +@group +(display-buffer + (get-buffer-create "*foo*") + '((display-buffer-below-selected display-buffer-at-bottom))) +@end group +@end example + +@noindent +In order to see how this new, modified form works, delete any frame +showing @file{*foo*}, type @w{@kbd{C-x 1}} followed by @w{@kbd{C-x 2}} in the +window showing @file{*scratch*}, and subsequently evaluate that form. +@code{display-buffer} should split the upper window, and show +@file{*foo*} in the new window. Alternatively, if after @w{@kbd{C-x 2}} +you had typed @w{@kbd{C-x o}}, @code{display-buffer} would have split the +window at the bottom instead. + + Suppose now that, before evaluating the new form, you have made the +selected window as small as possible, for example, by evaluating the +form @code{(fit-window-to-buffer)} in that window. In that case, +@code{display-buffer} would have failed to split the selected window +and would have split the frame's root window instead, effectively +displaying @file{*foo*} at the bottom of the frame. + + In either case, evaluating the new form a second time should reuse +the window already showing @file{*foo*} since both functions supplied +by the @var{action} argument try to reuse such a window first. + + By setting the @var{action} argument, an application effectively +overrules any customization of @code{display-buffer-base-action}. Our +user can now either accept the choice of the application, or redouble +by customizing the option @code{display-buffer-alist} as follows: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame)))) +@end group +@end example + +@noindent +Trying this with the new, modified form above in a configuration that +does not show @file{*foo*} anywhere, will display @file{*foo*} on a +separate frame, completely ignoring the @var{action} argument of +@code{display-buffer}. + + Note that we didn't care to specify a @code{reusable-frames} action +alist entry in our specification of @code{display-buffer-alist}. +@code{display-buffer} always takes the first one it finds---in our +case the one specified by @code{display-buffer-base-action}. If we +wanted to use a different specification, for example, to exclude +iconified frames showing @file{*foo*} from the list of reusable ones, +we would have to specify that separately, however: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . visible)))) +@end group +@end example + +@noindent +If you try this, you will notice that repeated attempts to display +@file{*foo*} will succeed to reuse a frame only if that frame is +visible. + + The above example would allow the conclusion that users customize +@code{display-buffer-alist} for the sole purpose to overrule the +@var{action} argument chosen by applications. Such a conclusion would +be incorrect. @code{display-buffer-alist} is the standard option for +users to direct the course of display of specific buffers in a +preferred way regardless of whether the display is also guided by an +@var{action} argument. + + We can, however, reasonably conclude that customizing +@code{display-buffer-alist} differs from customizing +@code{display-buffer-base-action} in two major aspects: it is stronger +because it overrides the @var{action} argument of +@code{display-buffer}, and it allows to explicitly specify the +affected buffers. In fact, displaying other buffers is not affected +in any way by a customization for @file{*foo*}. For example, + +@example +(display-buffer (get-buffer-create "*bar*")) +@end example + +@noindent +continues being governed by the settings of +@code{display-buffer-base-action} and +@code{display-buffer-fallback-action} only. + + We could stop with our examples here but Lisp programs still have +an ace up their sleeves which they can use to overrule any +customization of @code{display-buffer-alist}. It's the variable +@code{display-buffer-overriding-action} which they can bind around +@code{display-buffer} calls as follows: + +@example +@group +(let ((display-buffer-overriding-action + '((display-buffer-same-window)))) + (display-buffer + (get-buffer-create "*foo*") + '((display-buffer-below-selected display-buffer-at-bottom)))) +@end group +@end example + +@noindent +Evaluating this form will usually display @file{*foo*} in the selected +window regardless of the @var{action} argument and any user +customizations. (Usually, an application will not bother to also +provide an @var{action} argument. Here it just serves to illustrate +the fact that it gets overridden.) + +It might be illustrative to look at the list of action functions +@code{display-buffer} would have tried to display @file{*foo*} with +the customizations we provided here. The list (including comments +explaining who added this and the subsequent elements) is: + +@example +@group +(display-buffer-same-window ;; `display-buffer-overriding-action' + display-buffer-reuse-window ;; `display-buffer-alist' + display-buffer-pop-up-frame + display-buffer-below-selected ;; ACTION argument + display-buffer-at-bottom + display-buffer-reuse-window ;; `display-buffer-base-action' + display-buffer-pop-up-frame + display-buffer--maybe-same-window ;; `display-buffer-fallback-action' + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-in-previous-window + display-buffer-use-some-window + display-buffer-pop-up-frame) +@end group +@end example + +@noindent +Note that among the internal functions listed here, +@code{display-buffer--maybe-same-window} is effectively ignored while +@code{display-buffer--maybe-pop-up-frame-or-window} actually runs +@code{display-buffer-pop-up-window}. + +The action alist passed in each function call is: + +@example +@group +((reusable-frames . visible) + (reusable-frames . 0)) +@end group +@end example + +@noindent +which shows that we have used the second specification of +@code{display-buffer-alist} above, overriding the specification +supplied by @code{display-buffer-base-action}. Suppose our user had +written that as + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame) + (inhibit-same-window . t) + (reusable-frames . visible)))) +@end group +@end example + +@noindent +In this case the @code{inhibit-same-window} alist entry will +successfully invalidate the @code{display-buffer-same-window} +specification from @code{display-buffer-overriding-action} and +@code{display-buffer} will show @file{*foo*} on another frame. To +make @code{display-buffer-overriding-action} more robust in this +regard, the application would have to specify an appropriate +@code{inhibit-same-window} entry too, for example, as follows: + +@example +@group +(let ((display-buffer-overriding-action + '(display-buffer-same-window (inhibit-same-window . nil)))) + (display-buffer (get-buffer-create "*foo*"))) +@end group +@end example + +@noindent +This last example shows that while the precedence order of action +functions is fixed, as described in @ref{Choosing Window}, an action +alist entry specified by a display action ranked lower in that order +can affect the execution of a higher ranked display action. + + +@node The Zen of Buffer Display +@subsection The Zen of Buffer Display +@cindex guidelines for buffer display +@cindex writing buffer display actions +@cindex buffer display conventions + +In its most simplistic form, a frame accommodates always one single +window that can be used for displaying a buffer. As a consequence, it +is always the latest call of @code{display-buffer} that will have +succeeded in placing its buffer there. + + Since working with such a frame is not very practical, Emacs by +default allows for more complex frame layouts controlled by the +default values of the frame size and the @code{split-height-threshold} +and @code{split-width-threshold} options. Displaying a buffer not yet +shown on a frame then either splits the single window on that frame or +(re-)uses one of its two windows. + + The default behavior is abandoned as soon as the user customizes +one of these thresholds or manually changes the frame's layout. The +default behavior is also abandoned when calling @code{display-buffer} +with a non-@code{nil} @var{action} argument or the user customizes one +of the options mentioned in the previous subsections. Mastering +@code{display-buffer} soon may become a frustrating experience due to +the plethora of applicable display actions and the resulting frame +layouts. + + However, refraining from using buffer display functions and falling +back on a split & delete windows metaphor is not a good idea either. +Buffer display functions give Lisp programs and users a framework to +reconcile their different needs; no comparable framework exists for +splitting and deleting windows. Buffer display functions also allow +to at least partially restore the layout of a frame when removing a +buffer from it later (@pxref{Quitting Windows}). + + Below we will give a number of guidelines to redeem the frustration +mentioned above and thus to avoid literally losing buffers in-between +the windows of a frame. + +@table @asis +@item Write display actions without stress +Writing display actions can be a pain because one has to lump together +action functions and action alists in one huge list. (Historical +reasons prevented us from having @code{display-buffer} support +separate arguments for these.) It might help to memorize some basic +forms like the ones listed below: + +@example +'(nil (inhibit-same-window . t)) +@end example + +@noindent +specifies an action alist entry only and no action function. Its sole +purpose is to inhibit a @code{display-buffer-same-window} function +specified elsewhere from showing the buffer in the same window, see +also the last example of the preceding subsection. + +@example +'(display-buffer-below-selected) +@end example + +@noindent +on the other hand, specifies one action function and an empty action +alist. To combine the effects of the above two specifications one +would write the form + +@example +'(display-buffer-below-selected (inhibit-same-window . t)) +@end example + +@noindent +to add another action function one would write + +@example +@group +'((display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t)) +@end group +@end example + +@noindent +and to add another alist entry one would write + +@example +@group +'((display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer)) +@end group +@end example + +@noindent +That last form can be used as @var{action} argument of +@code{display-buffer} in the following way: + +@example +@group +(display-buffer + (get-buffer-create "*foo*") + '((display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer))) +@end group +@end example + +@noindent +In a customization of @code{display-buffer-alist} it would be used as +follows: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer)))) +@end group +@end example + +@noindent +To add a customization for a second buffer one would then write: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer)) + ("\\*bar\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . visible)))) +@end group +@end example + +@item Treat each other with respect +@code{display-buffer-alist} and @code{display-buffer-base-action} are +user options---Lisp programs must never set or rebind them. +@code{display-buffer-overriding-action}, on the other hand, is +reserved for applications---who seldom use that option and if they use +it, then with utmost care. + + Older implementations of @code{display-buffer} frequently caused +users and applications to fight over the settings of user options like +@code{pop-up-frames} and @code{pop-up-windows} (@pxref{Choosing Window +Options}). This was one major reason for redesigning +@code{display-buffer}---to provide a clear framework specifying what +users and applications should be allowed to do. + + Lisp programs must be prepared that user customizations may +cause buffers to get displayed in an unexpected way. They should +never assume in their subsequent behavior, that the buffer has been +shown precisely the way they asked for in the @var{action} argument of +@code{display-buffer}. + + Users should not pose too many and too severe restrictions on how +arbitrary buffers get displayed. Otherwise, they will risk to lose +the characteristics of showing a buffer for a certain purpose. +Suppose a Lisp program has been written to compare different versions +of a buffer in two windows side-by-side. If the customization of +@code{display-buffer-alist} prescribes that any such buffer should be +always shown in or below the selected window, the program will have a +hard time to set up the desired window configuration via +@code{display-buffer}. + + To specify a preference for showing an arbitrary buffer, users +should customize @code{display-buffer-base-action}. An example of how +users who prefer working with multiple frames would do that was given +in the previous subsection. @code{display-buffer-alist} should be +reserved for displaying specific buffers in a specific way. + +@item Consider reusing a window that already shows the buffer +Generally, it's always a good idea for users and Lisp +programmers to be prepared for the case that a window already shows +the buffer in question and to reuse that window. In the preceding +subsection we have shown that failing to do so properly may cause +@code{display-buffer} to continuously pop up a new frame although a +frame showing that buffer existed already. In a few cases only, it +might be undesirable to reuse a window, for example, when a different +portion of the buffer should be shown in that window. + + Hence, @code{display-buffer-reuse-window} is one action function +that should be used as often as possible, both in @var{action} +arguments and customizations. An @code{inhibit-same-window} entry in +the @var{action} argument usually takes care of the most common case +where reusing a window showing the buffer should be avoided---that +where the window in question is the selected one. + +@item Attract focus to the window chosen +This is a no-brainer for people working with multiple frames---the +frame showing the buffer will automatically raise and get focus unless +an @code{inhibit-switch-frame} entry forbids it. For single frame +users this task can be considerably more difficult. In particular, +@code{display-buffer-pop-up-window} and +@code{display-buffer-use-some-window} can become obtrusive in this +regard. They split or use a seemingly arbitrary (often the largest or +least recently used) window, distracting the user's attention. + +Some Lisp programs therefore try to choose a window at the bottom of +the frame, for example, in order to display the buffer in vicinity of +the minibuffer window where the user is expected to answer a question +related to the new window. For non-input related actions +@code{display-buffer-below-selected} might be preferable because the +selected window usually already has the user's attention. + +@item Handle subsequent invocations of @code{display-buffer} +@code{display-buffer} is not overly well suited for displaying several +buffers in sequence and making sure that all these buffers are shown +orderly in the resulting window configuration. Again, the standard +action functions @code{display-buffer-pop-up-window} and +@code{display-buffer-use-some-window} are not very suited for this +purpose due to their somewhat chaotic nature in more complex +configurations. + + To produce a window configuration displaying multiple buffers (or +different views of one and the same buffer) in one and the same +display cycle, Lisp programmers will unavoidably have to write +their own action functions. A few tricks listed below might help in +this regard. + +@itemize @bullet +@item +Making windows atomic (@pxref{Atomic Windows}) avoids breaking an +existing window composition when popping up a new window. +The new window will pop up outside the composition instead. + +@item +Temporarily dedicating windows to their buffers (@pxref{Dedicated +Windows}) avoids using a window for displaying a different +buffer. A non-dedicated window will be used instead. + +@item +Calling @code{window-preserve-size} (@pxref{Preserving Window Sizes}) +will try to keep the size of the argument window unchanged when +popping up a new window. You have to make sure that another window in +the same combination can be shrunk instead, though. + +@item +Side windows (@pxref{Side Windows}) can be used for displaying +specific buffers always in a window at the same position of a frame. +This permits grouping buffers that do not compete for being shown at +the same time on a frame and showing any such buffer in the same window +without disrupting the display of other buffers. + +@item +Child frames (@pxref{Child Frames}) can be used to display a buffer +within the screen estate of the selected frame without disrupting that +frame's window configuration and without the overhead associated with +full-fledged frames as inflicted by @code{display-buffer-pop-up-frame}. +@end itemize +@end table -@defun same-window-p buffer-name -This function returns @code{t} if displaying a buffer -named @var{buffer-name} with @code{display-buffer} would -put it in the selected window. -@end defun @node Window History @section Window History @@ -2922,7 +3779,7 @@ should be a list of the same form as that returned by @code{window-prev-buffers}. @end defun -In addition, each buffer maintains a list of @dfn{next buffers}, which +In addition, each window maintains a list of @dfn{next buffers}, which is a list of buffers re-shown by @code{switch-to-prev-buffer} (see below). This list is mainly used by @code{switch-to-prev-buffer} and @code{switch-to-next-buffer} for choosing buffers to switch to. @@ -3084,21 +3941,50 @@ described next to deal with the window and its buffer. This function handles @var{window} and its buffer after quitting. The optional argument @var{window} must be a live window and defaults to the selected one. The function's behavior is determined by the four -elements of the @code{quit-restore} window parameter (@pxref{Window -Parameters}), which is set to @code{nil} afterwards. - -The window is deleted entirely if: 1) the first element of the -@code{quit-restore} parameter is one of 'window or 'frame, 2) the -window has no history of previously-displayed buffers, and 3) the -displayed buffer matches the one in the fourth element of the -@code{quit-restore} parameter. If @var{window} is the -only window on its frame and there are other frames on the frame's -terminal, the value of the optional argument @var{bury-or-kill} -determines how to proceed with the window. If @var{bury-or-kill} -equals @code{kill}, the frame is deleted unconditionally. Otherwise, -the fate of the frame is determined by calling -@code{frame-auto-hide-function} (see below) with that frame as sole -argument. +elements of the list specified by @var{window}'s @code{quit-restore} +parameter (@pxref{Window Parameters}). + +The first element of the @code{quit-restore} parameter is one of the +symbols @code{window}, meaning that the window has been specially +created by @code{display-buffer}; @code{frame}, a separate frame has +been created; @code{same}, the window has only ever displayed this +buffer; or @code{other}, the window showed another buffer before. +@code{frame} and @code{window} affect how the window is quit, while +@code{same} and @code{other} affect the redisplay of buffers +previously shown in @var{window}. + +The parameter's second element is either one of the symbols +@code{window} or @code{frame}, or a list whose elements are the buffer +shown in @var{window} before, that buffer's window start and window +point positions, and @var{window}'s height at that time. If that +buffer is still live when @var{window} is quit, then this function may +reuse @var{window} to display it. + +The third element is the window selected at the time the parameter was +created. If this function deletes @var{window}, it subsequently tries +to reselect the window named by that element. + +The fourth element is the buffer whose display caused the creation of +this parameter. This function may delete @var{window} if and only if +it still shows that buffer. + +This function will try to delete @var{window} if and only if (1) the +first element of its @code{quit-restore} parameter is either +@code{window} or @code{frame}, (2) the window has no history of +previously-displayed buffers and (3) the fourth element of the +@code{quit-restore} parameter specifies the buffer currently displayed +in @var{window}. If @var{window} is part of an atomic window +(@pxref{Atomic Windows}), it will try to delete the root of that +atomic window instead. In either case, it tries to avoid signaling an +error when @var{window} cannot be deleted. + +If @var{window} shall be deleted, is the only window on its frame and +there are other frames on that frame's terminal, the value of the +optional argument @var{bury-or-kill} determines how to proceed with +the window. If @var{bury-or-kill} equals @code{kill}, the frame is +deleted unconditionally. Otherwise, the fate of the frame is +determined by calling @code{frame-auto-hide-function} (see below) with +that frame as sole argument. If the third element of the @code{quit-restore} parameter is a list of buffer, window start (@pxref{Window Start and End}), and point @@ -3109,7 +3995,8 @@ try to restore the original height of @var{window}. Otherwise, if @var{window} was previously used for displaying other buffers (@pxref{Window History}), the most recent buffer in that -history will be displayed. +history will be displayed. In either case, if @var{window} is not +deleted, its @code{quit-restore} parameter is reset to @code{nil}. The optional argument @var{bury-or-kill} specifies how to deal with @var{window}'s buffer. The following values are handled: @@ -3202,12 +4089,13 @@ main window is either a ``normal'' live window or specifies the area containing all the normal windows. In their most simple form of use, side windows allow to display -specific buffers always in the same area of a frame. Hence they can be -regarded as a generalization of the concept provided by -@code{display-buffer-at-bottom} (@pxref{Display Action Functions}) to -the remaining sides of a frame. With suitable customizations, however, -side windows can be also used to provide frame layouts similar to those -found in so-called integrated development environments (IDEs). +specific buffers always in the same area of a frame. Hence they can +be regarded as a generalization of the concept provided by +@code{display-buffer-at-bottom} (@pxref{Buffer Display Action +Functions}) to the remaining sides of a frame. With suitable +customizations, however, side windows can be also used to provide +frame layouts similar to those found in so-called integrated +development environments (IDEs). @menu * Displaying Buffers in Side Windows:: An action function for displaying @@ -3221,9 +4109,9 @@ found in so-called integrated development environments (IDEs). @node Displaying Buffers in Side Windows @subsection Displaying Buffers in Side Windows -The following action function for @code{display-buffer} (@pxref{Display -Action Functions}) creates or reuses a side window for displaying the -specified buffer. +The following action function for @code{display-buffer} (@pxref{Buffer +Display Action Functions}) creates or reuses a side window for +displaying the specified buffer. @defun display-buffer-in-side-window buffer alist This function displays @var{buffer} in a side window of the selected @@ -3263,11 +4151,11 @@ explicitly provided via a @code{window-parameters} entry in @var{alist}. @end defun By default, side windows cannot be split via @code{split-window} -(@pxref{Splitting Windows}). Also, a side window is not reused or split -by any buffer display action (@pxref{Display Action Functions}) unless -it is explicitly specified as target of that action. Note also that -@code{delete-other-windows} cannot make a side window the only window on -its frame (@pxref{Deleting Windows}). +(@pxref{Splitting Windows}). Also, a side window is not reused or +split by any buffer display action (@pxref{Buffer Display Action +Functions}) unless it is explicitly specified as target of that +action. Note also that @code{delete-other-windows} cannot make a side +window the only window on its frame (@pxref{Deleting Windows}). Once set up, side windows also change the behavior of the commands @code{switch-to-prev-buffer} and @code{switch-to-next-buffer} @@ -3453,9 +4341,9 @@ retain their respective sizes when maximizing the frame, the variable @xref{Resizing Windows}. The last form also makes sure that none of the created side windows -are accessible via @kbd{C-x o} by installing the @code{no-other-window} +are accessible via @w{@kbd{C-x o}} by installing the @code{no-other-window} parameter for each of these windows. In addition, it makes sure that -side windows are not deleted via @kbd{C-x 1} by installing the +side windows are not deleted via @w{@kbd{C-x 1}} by installing the @code{no-delete-other-windows} parameter for each of these windows. Since @code{dired} buffers have no fixed names, we use a special @@ -3547,7 +4435,7 @@ does is to set the @code{window-atom} parameter of each descendant of To create a new atomic window from an existing live window or to add a new window to an existing atomic window, the following buffer display -action function (@pxref{Display Action Functions}) can be used: +action function (@pxref{Buffer Display Action Functions}) can be used: @defun display-buffer-in-atom-window buffer alist This function tries to display @var{buffer} in a new window that will be @@ -3589,6 +4477,11 @@ parameter assigned by @code{display-buffer-in-atom-window}. Further parameters have to be set by the application explicitly via a @code{window-parameters} entry in @var{alist}. + Atomic windows automatically cease to exist when one of their +constituents gets deleted. To dissolve an atomic window manually, +reset the @code{window-atom} parameter of its constituents---the root +of the atomic window and all its descendants. + The following code snippet, when applied to a single-window frame, first splits the selected window and makes the selected and the new window constituents of an atomic window with their parent as root. It @@ -3774,13 +4667,14 @@ This function sets the display-start position of @var{window} to @var{position} in @var{window}'s buffer. It returns @var{position}. The display routines insist that the position of point be visible when a -buffer is displayed. Normally, they change the display-start position -(that is, scroll the window) whenever necessary to make point visible. -However, if you specify the start position with this function using -@code{nil} for @var{noforce}, it means you want display to start at -@var{position} even if that would put the location of point off the -screen. If this does place point off screen, the display routines move -point to the left margin on the middle line in the window. +buffer is displayed. Normally, they select the display-start position +according to their internal logic (and scroll the window if necessary) +to make point visible. However, if you specify the start position +with this function using @code{nil} for @var{noforce}, it means you +want display to start at @var{position} even if that would put the +location of point off the screen. If this does place point off +screen, the display routines attempt to move point to the left margin +on the middle line in the window. For example, if point @w{is 1} and you set the start of the window @w{to 37}, the start of the next line, point will be above the top @@ -3827,6 +4721,13 @@ it is still 1 when redisplay occurs. Here is an example: @end group @end example +If the attempt to make point visible (i.e., in a fully-visible screen +line) fails, the display routines will disregard the requested +window-start position and compute a new one anyway. Thus, for +reliable results Lisp programs that call this function should always +move point to be inside the window whose display starts at +@var{position}. + If @var{noforce} is non-@code{nil}, and @var{position} would place point off screen at the next redisplay, then redisplay computes a new window-start position that works well with point, and thus @var{position} is not used. @@ -4089,7 +4990,8 @@ fashion. @defopt scroll-up-aggressively Likewise, for scrolling up. The value, @var{f}, specifies how far point should be placed from the bottom of the window; thus, as with -@code{scroll-up-aggressively}, a larger value scrolls more aggressively. +@code{scroll-down-aggressively}, a larger value scrolls more +aggressively. @end defopt @defopt scroll-step @@ -4200,18 +5102,20 @@ point at the middle, top, and bottom of the window. @cindex vertical scroll position @dfn{Vertical fractional scrolling} means shifting text in a window -up or down by a specified multiple or fraction of a line. Each window -has a @dfn{vertical scroll position}, which is a number, never less than -zero. It specifies how far to raise the contents of the window. -Raising the window contents generally makes all or part of some lines -disappear off the top, and all or part of some other lines appear at the -bottom. The usual value is zero. +up or down by a specified multiple or fraction of a line. Emacs uses +it, for example, on images and screen lines which are taller than the +window. Each window has a @dfn{vertical scroll position}, which is a +number, never less than zero. It specifies how far to raise the +contents of the window when displaying them. Raising the window +contents generally makes all or part of some lines disappear off the +top, and all or part of some other lines appear at the bottom. The +usual value is zero. The vertical scroll position is measured in units of the normal line height, which is the height of the default font. Thus, if the value is -.5, that means the window contents are scrolled up half the normal line -height. If it is 3.3, that means the window contents are scrolled up -somewhat over three times the normal line height. +.5, that means the window contents will be scrolled up half the normal +line height. If it is 3.3, that means the window contents are scrolled +up somewhat over three times the normal line height. What fraction of a line the vertical scrolling covers, or how many lines, depends on what the lines contain. A value of .5 could scroll a @@ -4931,8 +5835,8 @@ and heights, if possible. Frames are not resized by this function. @section Window Parameters @cindex window parameters -This section describes how window parameters can be used to associate -additional information with windows. +This section describes the window parameters that can be used to +associate additional information with windows. @defun window-parameter window parameter This function returns @var{window}'s value for @var{parameter}. The @@ -5065,44 +5969,21 @@ parameter is installed and updated by the function @vindex quit-restore@r{, a window parameter} This parameter is installed by the buffer display functions (@pxref{Choosing Window}) and consulted by @code{quit-restore-window} -(@pxref{Quitting Windows}). It contains four elements: - -The first element is one of the symbols @code{window}, meaning that -the window has been specially created by @code{display-buffer}; -@code{frame}, a separate frame has been created; @code{same}, the -window has only ever displayed this buffer; or @code{other}, the -window showed another buffer before. @code{frame} and @code{window} -affect how the window is quit, while @code{same} and @code{other} -affect the redisplay of buffers previously shown in this window. - -The second element is either one of the symbols @code{window} or -@code{frame}, or a list whose elements are the buffer shown in the -window before, that buffer's window start and window point positions, -and the window's height at that time. If that buffer is still live -when the window is quit, then the function @code{quit-restore-window} -reuses the window to display the buffer. - -The third element is the window selected at the time the parameter was -created. If @code{quit-restore-window} deletes the window passed to -it as argument, it then tries to reselect this window. +(@pxref{Quitting Windows}). It is a list of four elements, see the +description of @code{quit-restore-window} in @ref{Quitting Windows} +for details. -The fourth element is the buffer whose display caused the creation of -this parameter. @code{quit-restore-window} deletes the specified window -only if it still shows that buffer. - -See the description of @code{quit-restore-window} in @ref{Quitting -Windows} for details. - -@item window-side window-slot +@item window-side +@itemx window-slot @vindex window-side@r{, a window parameter} @vindex window-slot@r{, a window parameter} -These parameters are used for implementing side windows (@pxref{Side -Windows}). +These parameters are used internally for implementing side windows +(@pxref{Side Windows}). @item window-atom @vindex window-atom@r{, a window parameter} -This parameter is used for implementing atomic windows, see @ref{Atomic -Windows}. +This parameter is used internally for implementing atomic windows, see +@ref{Atomic Windows}. @item mode-line-format @vindex mode-line-format@r{, a window parameter} @@ -5124,11 +6005,12 @@ affected. @item min-margins @vindex min-margins@r{, a window parameter} -The value of this parameter is a cons cell whose @sc{car} and @sc{cdr}, -if non-@code{nil}, specify the minimum values (in columns) for the left -and right margin of this window. When present, Emacs will use these -values instead of the actual margin widths for determining whether a -window can be split or shrunk horizontally. +The value of this parameter is a cons cell whose @sc{car} and +@sc{cdr}, if non-@code{nil}, specify the minimum values (in columns) +for the left and right margin of this window (@pxref{Display Margins}. +When present, Emacs will use these values instead of the actual margin +widths for determining whether a window can be split or shrunk +horizontally. Emacs never auto-adjusts the margins of any window after splitting or resizing it. It is the sole responsibility of any application setting @@ -5194,26 +6076,24 @@ whether a specific window has changed size, compare the return values of @code{window-pixel-height} for that window (@pxref{Window Sizes}). These function are usually only called when at least one window was -added or has changed size since the last time this hook was run for the -associated frame. In some rare cases this hook also runs when a window -that was added intermittently has been deleted afterwards. In these -cases none of the windows on the frame will appear to have changed its -size. - -You may use @code{save-selected-window} in these functions -(@pxref{Selecting Windows}). However, do not use -@code{save-window-excursion} (@pxref{Window Configurations}); exiting -that macro counts as a size change, which would cause these functions to -be called again. +added or has changed size since the last time this hook was run for +the associated frame. In some rare cases this hook also runs when a +window that was added intermittently has been deleted afterwards. In +these cases none of the windows on the frame will appear to have +changed its size. @end defvar @defvar window-configuration-change-hook -A normal hook that is run every time the window configuration of a frame -changes. Window configuration changes include splitting and deleting -windows, and the display of a different buffer in a window. Resizing the -frame or individual windows do not count as configuration changes. Use -@code{window-size-change-functions}, see above, when you want to track -size changes that are not caused by the deletion or creation of windows. +A normal hook that is run every time the window configuration of a +frame changes. Window configuration changes include splitting and +deleting windows, and the display of a different buffer in a window. + +The hook can be also used for tracking changes of window sizes. It +is, however, not run when the size of a frame changes or automatic +resizing of a minibuffer window (@pxref{Minibuffer Windows}) changes +the size of another window. As a rule, adding a function to +@code{window-size-change-functions}, see above, is the recommended way +for reliably tracking size changes of any window. The buffer-local value of this hook is run once for each window on the affected frame, with the relevant window selected and its buffer diff --git a/doc/man/ChangeLog.1 b/doc/man/ChangeLog.1 index b72837fea75b..68e411232ab0 100644 --- a/doc/man/ChangeLog.1 +++ b/doc/man/ChangeLog.1 @@ -176,7 +176,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2007-2018 Free Software Foundation, Inc. + Copyright (C) 2007-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1 index c0245f8259f7..b0448d489814 100644 --- a/doc/man/ebrowse.1 +++ b/doc/man/ebrowse.1 @@ -82,7 +82,7 @@ should give you access to the complete manual. was written by Gerd Moellmann. . .SH COPYING -Copyright 2008-2018 Free Software Foundation, Inc. +Copyright 2008-2019 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in index e332fb45c7bc..11a3390b17ec 100644 --- a/doc/man/emacs.1.in +++ b/doc/man/emacs.1.in @@ -279,8 +279,8 @@ window's width, height, and position as specified. The geometry specification is in the standard X format; see .BR X (7) for more information. -The width and height are specified in characters; the default is -80 by 24. +The width and height are specified in characters; the default for GUI +frames is 80 by 36. See the Emacs manual, section "Options for Window Size and Position", for information on how window sizes interact with selecting or deselecting the tool bar and menu bar. @@ -653,7 +653,7 @@ For detailed credits and acknowledgments, see the GNU Emacs manual. . . .SH COPYING -Copyright 1995, 1999-2018 Free Software Foundation, Inc. +Copyright 1995, 1999-2019 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/man/etags.1 b/doc/man/etags.1 index 45d2541ec133..57120e78dda6 100644 --- a/doc/man/etags.1 +++ b/doc/man/etags.1 @@ -281,7 +281,7 @@ Stallman. .BR vi ( 1 ). .SH COPYING -Copyright 1992, 1999, 2001-2018 Free Software Foundation, Inc. +Copyright 1992, 1999, 2001-2019 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/misc/ChangeLog.1 b/doc/misc/ChangeLog.1 index 9ef3f0ea6f2a..9b25c90f7f6c 100644 --- a/doc/misc/ChangeLog.1 +++ b/doc/misc/ChangeLog.1 @@ -12116,7 +12116,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 11086b330374..d02f42bbeb93 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi index ca6214527cc6..1ac90cdc7f1b 100644 --- a/doc/misc/ada-mode.texi +++ b/doc/misc/ada-mode.texi @@ -4,7 +4,7 @@ @include docstyle.texi @copying -Copyright @copyright{} 1999--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index f1667c49f1a5..e467fc135f33 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi @@ -11,7 +11,7 @@ @copying This file describes the Emacs auth-source library. -Copyright @copyright{} 2008--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2008--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi index 7e2476c225d7..5eb45e283431 100644 --- a/doc/misc/autotype.texi +++ b/doc/misc/autotype.texi @@ -11,7 +11,7 @@ @c @cindex autotypist @copying -Copyright @copyright{} 1994--1995, 1999, 2001--2018 +Copyright @copyright{} 1994--1995, 1999, 2001--2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi index fc744eb64873..f138c47e4986 100644 --- a/doc/misc/bovine.texi +++ b/doc/misc/bovine.texi @@ -24,7 +24,7 @@ @c %**end of header @copying -Copyright @copyright{} 1999--2004, 2012--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2004, 2012--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index fdec65a9a7f2..8ef08a36d8a7 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -95,7 +95,7 @@ This file documents Calc, the GNU Emacs calculator, included with GNU Emacs @value{EMACSVER}. @end ifnotinfo -Copyright @copyright{} 1990--1991, 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1990--1991, 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1775,7 +1775,7 @@ evaluated first, then @samp{*}, then @samp{/}, then finally is equivalent to @example -2 + ((3*4*5) / (6*(7^8)) - 9 +2 + ((3*4*5) / (6*(7^8))) - 9 @end example @noindent @@ -2026,7 +2026,7 @@ You can also ``unstore'' a variable when you are through with it: @smallexample @group -2: 2 + 5 => 5 +2: 2 + 3 => 5 1: 2 a + 2 b => 2 a + 2 b . @@ -14661,7 +14661,7 @@ conventions of Yacas, a free computer algebra system. While the operators and functions in Yacas are similar to those of Calc, the names of built-in functions in Yacas are capitalized. The Calc formula @samp{sin(2 x)}, for example, is entered and displayed @samp{Sin(2 x)} -in Yacas mode, and `@samp{arcsin(x^2)} is @samp{ArcSin(x^2)} in Yacas +in Yacas mode, and @samp{arcsin(x^2)} is @samp{ArcSin(x^2)} in Yacas mode. Complex numbers are written are written @samp{3 + 4 I}. The standard special constants are written @code{Pi}, @code{E}, @code{I}, @code{GoldenRatio} and @code{Gamma}. @code{Infinity} @@ -35832,7 +35832,7 @@ keystrokes are not listed in this summary. @r{ @: _ @:number @: @:-@:number} @r{ @: e @:number @: @:@:1e number} @r{ @: # @:number @: @:@:current-radix@tfn{#}number} -@r{ @: P @:(in number) @: @:+/-@:} +@r{ @: p @:(in number) @: @:+/-@:} @r{ @: M @:(in number) @: @:mod@:} @r{ @: @@ ' " @: (in number)@: @:@:HMS form} @r{ @: h m s @: (in number)@: @:@:HMS form} diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index 5a229c1cd6f0..bdeff22693f8 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -148,7 +148,17 @@ CC Mode @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @comment Define an index for syntactic symbols. +@c Version for Texinfo <= 4.x +@ifclear txicommandconditionals +@ifnottex @c In texi2dvi, the @defindex would create an empty cc-mode.ss + @c For Info, unlike tex, @syncodeindex needs a matching @defindex. @defindex ss +@end ifnottex +@end ifclear +@c Version for Texinfo >= 5.x +@ifset txicommandconditionals +@defindex ss +@end ifset @comment Combine key, syntactic symbol and concept indices into one. @syncodeindex ss cp @@ -157,7 +167,7 @@ CC Mode @copying This manual is for CC Mode in Emacs. -Copyright @copyright{} 1995--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1050,7 +1060,7 @@ there's a piece of normal text without having to think much about it. and so on. You can configure the exact way comments get filled and broken, and -where Emacs does auto-filling (see @pxref{Custom Filling and +where Emacs does auto-filling (@pxref{Custom Filling and Breaking}). Typically, the style system (@pxref{Styles}) will have set this up for you, so you probably won't have to bother. @@ -1468,7 +1478,7 @@ normal, with no @kbd{C-u} prefix). @end itemize You can configure the precise circumstances in which newlines get -inserted (see @pxref{Custom Auto-newlines}). Typically, the style +inserted (@pxref{Custom Auto-newlines}). Typically, the style system (@pxref{Styles}) will have set this up for you, so you probably won't have to bother. @@ -2282,6 +2292,8 @@ method, ``Top-level commands or the customization interface''. If you make conflicting settings in several of these ways, the way that takes precedence is the one that appears latest in this list: +@c Version of list for Texinfo <= 4.x +@ifclear txicommandconditionals @itemize @w{} @item @table @asis @@ -2292,6 +2304,18 @@ that takes precedence is the one that appears latest in this list: @itemx File Local Variable setting @end table @end itemize +@end ifclear +@c Version of list for Texinfo >= 5.x +@ifset txicommandconditionals +@itemize @w{} +@item Style +@item File Style@footnote{In earlier versions of @ccmode{}, a File Style setting took precedence over any other setting apart from a File Local Variable setting.} +@item Top-level command or ``customization interface'' +@item Hook +@item File Local Variable setting +@end itemize +@end ifset + Here is a summary of the different ways of writing your configuration settings: @@ -2548,7 +2572,7 @@ Basics}). @item The style variable @code{c-offsets-alist} (@pxref{c-offsets-alist}) is an association list with an element for each syntactic symbol. It's -handled a little differently from the other style variables. It's +handled a little differently from the other style variables. Its default global binding is the empty list @code{nil}, rather than @code{set-from-style}. Before the style system is initialized, you can add individual elements to @code{c-offsets-alist} by calling @@ -5286,7 +5310,7 @@ The simplest and most used kind of ``offset'' setting in @defopt c-basic-offset @vindex basic-offset @r{(c-)} This style variable holds the basic offset between indentation levels. -It's factory default is 4, but all the built-in styles set it +Its factory default is 4, but all the built-in styles set it themselves, to some value between 2 (for @code{gnu} style) and 8 (for @code{bsd}, @code{linux}, and @code{python} styles). @end defopt @@ -6707,7 +6731,7 @@ custom line-up function associated with it. @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! To configure macros which you invoke without a terminating @samp{;}, -see @xref{Macros with ;}. +@pxref{Macros with ;}. Here are the remaining odds and ends regarding indentation: diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 553b935b1ef0..6ce0b72aa5f2 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -7,7 +7,7 @@ @copying This file documents the GNU Emacs Common Lisp emulation package. -Copyright @copyright{} 1993, 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1993, 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index 5b14382d8b89..7c7612f579c5 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -10,7 +10,7 @@ @syncodeindex fn cp @copying -Copyright @copyright{} 2007--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1015,7 +1015,7 @@ but different to The value for a byte D-Bus type can be any integer in the range 0 through 255. If a character is used as argument, modifiers -represented outside this range are stripped of. For example, +represented outside this range are stripped off. For example, @code{:byte ?x} is equal to @code{:byte ?\M-x}, but it is not equal to @code{:byte ?\C-x} or @code{:byte ?\M-\C-x}. @@ -1928,7 +1928,7 @@ This executes @var{forms} exactly like a @code{progn}, except that errors can be made visible when @code{dbus-debug} is set to @code{t}. @end defspec -Incoming D-Bus messages are handled as Emacs events, see @pxref{Misc +Incoming D-Bus messages are handled as Emacs events, @pxref{Misc Events, , , elisp}. They are retrieved only, when Emacs runs in interactive mode. The generated event has this form: @@ -1952,7 +1952,7 @@ of the D-Bus object emitting the message. @var{interface} and @var{member} denote the message which has been sent. @var{handler} is the callback function which has been registered for -this message (see @pxref{Signals}). When a @code{dbus-event} event +this message (@pxref{Signals}). When a @code{dbus-event} event arrives, @var{handler} is called with @var{args} as arguments. In order to inspect the @code{dbus-event} data, you could extend the diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index 60915e299627..05a8919b4e66 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi @@ -20,7 +20,7 @@ @comment %**end of header (This is for running Texinfo on a region.) @copying -Copyright @copyright{} 1994--1995, 1999, 2001--2018 +Copyright @copyright{} 1994--1995, 1999, 2001--2019 Free Software Foundation, Inc. @quotation @@ -127,7 +127,7 @@ original @file{dired-x.el}). @node Features @section Features -@cindex Features +@cindex Dired-x features Some features provided by Dired Extra: @@ -159,7 +159,7 @@ respectively (@pxref{Find File At Point}). @node Technical Details @section Technical Details -@cindex Modified functions +@cindex modified functions @cindex @file{dired-aux.el} When @file{dired-x.el} is loaded, some standard Dired functions from @@ -214,7 +214,7 @@ when you first type @kbd{C-x d}). @node Optional Installation Dired Jump @section Optional Installation Dired Jump -@cindex Autoloading @code{dired-jump} and @code{dired-jump-other-window} +@cindex autoloading @code{dired-jump} and @code{dired-jump-other-window} In order to have @code{dired-jump} and @code{dired-jump-other-window} (@pxref{Miscellaneous Commands}) work @emph{before} @code{dired} and @@ -235,7 +235,7 @@ for these functions. In your @file{.emacs} file put @node Optional Installation File At Point @section Optional Installation File At Point -@cindex Binding @code{dired-x-find-file} +@cindex binding @code{dired-x-find-file} If you choose to have @file{dired-x.el} bind @code{dired-x-find-file} over @code{find-file} (@pxref{Find File At Point}), then you will need to set @code{dired-x-hands-off-my-keys}. To do this, either set it @@ -254,8 +254,8 @@ or call @code{dired-x-bind-find-file} after changing the value. @node Omitting Files in Dired @chapter Omitting Files in Dired -@cindex Omitting Files in Dired -@cindex Uninteresting files +@cindex omitting Files in Dired +@cindex uninteresting files @dfn{Omitting} a file means removing it from the directory listing. Omitting is useful for keeping Dired buffers free of ``uninteresting'' files (for instance, auto-save, auxiliary, backup, and revision control files) so that @@ -310,20 +310,15 @@ inside @code{dired-load-hook} (@pxref{Installation}) and then evaluate @node Omitting Variables @section Omitting Variables -@cindex Customizing file omitting +@cindex customizing file omitting The following variables can be used to customize omitting. -@table @code - -@vindex dired-omit-mode -@item dired-omit-mode - -Default: @code{nil} - -@cindex How to make omitting the default in Dired +@cindex how to make omitting the default in Dired +@defvar dired-omit-mode If non-@code{nil}, ``uninteresting'' files are not listed. -Uninteresting files are those whose files whose names match regexp -@code{dired-omit-files}, plus those ending with extensions in +The default is @code{nil}. +Uninteresting files are files whose names match regexp +@code{dired-omit-files}, plus files whose names end with extension in @code{dired-omit-extensions}. @kbd{C-x M-o} (@code{dired-omit-mode}) toggles its value, which is buffer-local. Put @@ -347,56 +342,49 @@ a directory local setting @noindent to a @file{.dir-locals.el} file in that directory. You can use the command @code{add-dir-local-variable} to do this. +@end defvar -@vindex dired-omit-files -@item dired-omit-files - -Default: @code{"^#\\|\\.$"} - -Files whose names match this buffer-local regexp will not be displayed. -This only has effect when @code{dired-omit-mode}'s value is @code{t}. +@defvar dired-omit-files +This buffer-local variable's value is a regexp, a string. Files whose +names match this regexp will not be displayed. This only has effect +when @code{dired-omit-mode}'s value is @code{t}. The default value omits the special directories @file{.} and @file{..} and autosave files (plus other files ending in @file{.}) (@pxref{Omitting Examples}). - -@vindex dired-omit-extensions -@item dired-omit-extensions - -Default: The elements of @code{completion-ignored-extensions}, -@code{dired-latex-unclean-extensions}, @code{dired-bibtex-unclean-extensions} -and @code{dired-texinfo-unclean-extensions}. - -If non-@code{nil}, a list of extensions (strings) to omit from Dired listings. -Its format is the same as that of @code{completion-ignored-extensions}. - -@vindex dired-omit-case-fold -@item dired-omit-case-fold - +@end defvar + +@defvar dired-omit-extensions +If non-@code{nil}, this variable's value is a list of extensions +(strings) to omit from Dired listings. Its format is the same as that +of @code{completion-ignored-extensions}. The default value is the +elements of @code{completion-ignored-extensions}, +@code{dired-latex-unclean-extensions}, +@code{dired-bibtex-unclean-extensions} and +@code{dired-texinfo-unclean-extensions}. +@end defvar + +@defvar dired-omit-case-fold Default: @code{filesystem} - +This variable controls whether file-name matching is case-insensitive. By default, when @code{dired-omit-case-fold} is set to @code{filesystem}, @code{dired-omit-mode} will match filenames and extensions case-sensitively on Dired buffers visiting case-sensitive filesystems, and case-insensitively on case-insensitive filesystems. Set it to @code{nil} to be always case-sensitive, and to @code{t} to be always case-insensitive. - -@vindex dired-omit-localp -@item dired-omit-localp - -Default: @code{no-dir} - -The @var{localp} argument @code{dired-omit-expunge} passes to -@code{dired-get-filename}. If it is @code{no-dir}, omitting is much faster, -but you can only match against the non-directory part of the file name. Set it -to @code{nil} if you need to match the whole file name or @code{t} to match the -file name relative to the buffer's top-level directory. - -@item dired-omit-marker-char -@vindex dired-omit-marker-char -@cindex Omitting additional files -Default: @kbd{C-o} - +@end defvar + +@defvar dired-omit-localp +This variable determines the @var{localp} argument +@code{dired-omit-expunge} passes to @code{dired-get-filename}. If it +is @code{no-dir}, teh default, omitting is much faster, but you can +only match against the non-directory part of the file name. Set it to +@code{nil} if you need to match the whole file name or @code{t} to +match the file name relative to the buffer's top-level directory. +@end defvar + +@cindex omitting additional files +@defvar dired-omit-marker-char Temporary marker used by Dired to implement omitting. Should never be used as marker by the user or other packages. There is one exception to this rule: by adding @@ -412,8 +400,8 @@ to your @file{~/.emacs}, you can bind the @kbd{C-o} key to insert a @kbd{C-o} marker, thus causing these files to be omitted in addition to the usually omitted files. Unfortunately the files you omitted manually this way will show up again after reverting the buffer, unlike the others. - -@end table +The default value is @kbd{C-o}. +@end defvar @node Omitting Examples @section Examples of Omitting Various File Types @@ -422,7 +410,7 @@ will show up again after reverting the buffer, unlike the others. @item @cindex RCS files, how to omit them in Dired -@cindex Omitting RCS files in Dired +@cindex omitting RCS files in Dired If you wish to avoid seeing RCS files and the @file{RCS} directory, then put @example @@ -438,8 +426,8 @@ in the @code{dired-load-hook} (@pxref{Installation}). This assumes @code{^} in the regexp. @item -@cindex Tib files, how to omit them in Dired -@cindex Omitting tib files in Dired +@cindex tib files, how to omit them in Dired +@cindex omitting tib files in Dired If you use @code{tib}, the bibliography program for use with @TeX{} and @LaTeX{}, and you want to omit the @file{INDEX} and the @file{*-t.tex} files, then put @@ -453,8 +441,8 @@ want to omit the @file{INDEX} and the @file{*-t.tex} files, then put in the @code{dired-load-hook} (@pxref{Installation}). @item -@cindex Dot files, how to omit them in Dired -@cindex Omitting dot files in Dired +@cindex dot files, how to omit them in Dired +@cindex omitting dot files in Dired If you do not wish to see @samp{dot} files (files starting with a @file{.}), then put @@ -480,8 +468,8 @@ in your @code{dired-mode-hook}. @node Local Variables @chapter Local Variables for Dired Directories +@cindex local Variables for Dired Directories -@cindex Local Variables for Dired Directories @vindex dired-local-variables-file @vindex dired-enable-local-variables @noindent @@ -530,28 +518,24 @@ Files,emacs,The GNU Emacs Manual}. @noindent The following variables affect Dired Local Variables -@table @code -@vindex dired-local-variables-file -@item dired-local-variables-file -Default: @code{".dired"} - -If non-@code{nil}, file name for local variables for Dired. If Dired finds a -file with that name in the current directory, it will temporarily insert it -into the Dired buffer and run @code{hack-local-variables}. +@defvar dired-local-variables-file +If non-@code{nil}, this variable specifies the file name for local +variables for Dired. If Dired finds a file with that name in the +current directory, it will temporarily insert it into the Dired buffer +and run @code{hack-local-variables}. The default is @file{.dired}. +@end defvar -@vindex dired-enable-local-variables -@item dired-enable-local-variables -Default: @code{t} - -Controls the use of local-variables lists in Dired. This variable +@defvar dired-enable-local-variables +This variable controls the use of local-variables lists in Dired. It temporarily overrides the value of @code{enable-local-variables} when -the Dired Local Variables are hacked. It takes the same values as that -variable. A value of @code{nil} means to ignore any Dired Local Variables. -@end table +the Dired Local Variables are hacked. It takes the same values as +that variable. A value of @code{nil} means to ignore any Dired Local +Variables. The default is @code{t}. +@end defvar @node Shell Command Guessing @chapter Shell Command Guessing -@cindex Guessing shell commands for files. +@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 @@ -568,19 +552,22 @@ file, e.g., @samp{xtex} and @samp{dvips} for a @file{.dvi} file, you can type Dired only tries to guess a command for a single file, never for a list of marked files. -@table @code -@item dired-guess-shell-alist-default -@vindex dired-guess-shell-alist-default -Predefined rules for shell commands. 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. - -@item dired-guess-shell-alist-user -@vindex dired-guess-shell-alist-user -If non-@code{nil}, a 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 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 @@ -613,54 +600,50 @@ to add rules for @samp{.foo} and @samp{.bar} file extensions, write @noindent This will override any predefined rules for the same extensions. +@end defvar -@item dired-guess-shell-case-fold-search -@vindex dired-guess-shell-case-fold-search -Default: @code{t} - -Non-@code{nil} means @code{dired-guess-shell-alist-default} and +@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 -@item dired-guess-shell-gnutar -@vindex dired-guess-shell-gnutar -@cindex Passing GNU Tar its @samp{z} switch. -Default: @code{nil} - -If non-@code{nil}, this is the name of the GNU Tar executable (e.g., -@samp{tar} or @samp{gnutar}). GNU Tar's @samp{z} switch is used for -compressed tar files. -If you don't have GNU tar, set this to @code{nil}: a pipe using @samp{zcat} is -then used. - -@item dired-guess-shell-gzip-quiet -@vindex dired-guess-shell-gzip-quiet @cindex @code{gzip} -Default: @code{t} +@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 -A non-@code{nil} value means that @samp{-q} is passed to @code{gzip} -overriding a verbose option in the @env{GZIP} environment variable. - -@item dired-guess-shell-znew-switches nil -@vindex dired-guess-shell-znew-switches @cindex @code{znew} -Default: @code{nil} - -A string of switches passed to @code{znew}. An example is -@samp{-K} which will make @code{znew} keep a @file{.Z} file when it is -smaller than the @file{.gz} file. - -@item dired-shell-command-history nil -@vindex dired-shell-command-history - -History list for commands that read dired-shell commands. -@end table +@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 -@cindex Virtual Dired -@cindex Perusing @code{ls} listings -@cindex @code{ls} listings, how to peruse them in Dired +@cindex virtual Dired +@cindex perusing @code{ls} listings +@cindex @command{ls} listings, how to peruse them in Dired Using @dfn{Virtual Dired} means putting a buffer with Dired-like contents in Dired mode. The files described by the buffer contents need not actually exist. This is useful if you want to peruse an @samp{ls -lR} @@ -702,8 +685,8 @@ local-variable files. @table @kbd @item F @kindex F -@cindex Visiting several files at once -@cindex Simultaneous visiting of several files +@cindex visiting several files at once +@cindex simultaneous visiting of several files @findex dired-do-find-marked-files (@code{dired-do-find-marked-files}) Find all marked files at once displaying them simultaneously. If optional @var{noselect} is non-@code{nil} then just @@ -791,41 +774,36 @@ and @file{*.dvi} files for deletion. @node Advanced Cleaning Variables @section Advanced Cleaning Variables -@noindent Variables used by the above cleaning commands (and in the default value for -variable @code{dired-omit-extensions}, @pxref{Omitting Variables}) - -@table @code -@item dired-patch-unclean-extensions -@vindex dired-patch-unclean-extensions -Default: @code{(".rej" ".orig")} - -List of extensions of dispensable files created by the @samp{patch} program. - -@item dired-tex-unclean-extensions -@vindex dired-tex-unclean-extensions -Default: @code{(".toc" ".log" ".aux")} - -List of extensions of dispensable files created by @TeX{}. - -@item dired-texinfo-unclean-extensions -@vindex dired-texinfo-unclean-extensions -Default: @code{(".cp" ".cps" ".fn" ".fns" ".ky" ".kys"} -@code{".pg" ".pgs" ".tp" ".tps" ".vr" ".vrs")} - -List of extensions of dispensable files created by @samp{texinfo}. - -@item dired-latex-unclean-extensions -@vindex dired-latex-unclean-extensions -Default: @code{(".idx" ".lof" ".lot" ".glo")} - -List of extensions of dispensable files created by @LaTeX{}. - -@item dired-bibtex-unclean-extensions -@vindex dired-bibtex-unclean-extensions -Default: @code{(".blg" ".bbl")} - -List of extensions of dispensable files created by Bib@TeX{}. -@end table +Variables used by the above cleaning commands (and in the default value for +variable @code{dired-omit-extensions}, @pxref{Omitting Variables}): + +@defvar dired-patch-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by the @samp{patch} program. The default is @w{@code{(".rej" +".orig")}}. +@end defvar + +@defvar dired-tex-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by @TeX{}. The default is @w{@code{(".toc" ".log" ".aux")}}. +@end defvar + +@defvar dired-texinfo-unclean-extensions +This variable holds the list of extensions of dispensable files +created by @samp{texinfo}. The default is @w{@code{(".cp" ".cps" ".fn" +".fns" ".ky" ".kys"} @code{".pg" ".pgs" ".tp" ".tps" ".vr" ".vrs")}} +@end defvar + +@defvar dired-latex-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by @LaTeX{}. The default is @w{@code{(".idx" ".lof" ".lot" +".glo")}}. +@end defvar + +@defvar dired-bibtex-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by Bib@TeX{}. The default is @w{@code{(".blg" ".bbl")}}. +@end defvar @node Special Marking Function @section Special Marking Function @@ -834,10 +812,11 @@ List of extensions of dispensable files created by Bib@TeX{}. @item M-( @kindex M-( @findex dired-mark-sexp -@cindex Lisp expression, marking files with in Dired -@cindex Mark file by Lisp expression -(@code{dired-mark-sexp}) Mark files for which @var{predicate} returns -non-@code{nil}. With a prefix argument, unflag those files instead. +@cindex lisp expression, marking files with in Dired +@cindex mark file by Lisp expression +Mark files for which @var{predicate} returns non-@code{nil} +(@code{dired-mark-sexp}). With a prefix argument, unflag those files +instead. The @var{predicate} is a Lisp expression that can refer to the following symbols: @@ -886,8 +865,8 @@ to mark all @file{.el} files without a corresponding @file{.elc} file. @node Multiple Dired Directories @chapter Multiple Dired Directories and Non-Dired Commands -@cindex Multiple Dired directories -@cindex Working directory +@cindex multiple Dired directories +@cindex working directory An Emacs buffer can have but one working directory, stored in the buffer-local variable @code{default-directory}. A Dired buffer may have several subdirectories inserted, but it still has only one working @@ -905,8 +884,8 @@ Dired buffers, is like @code{shell-command}, but it runs with @node Find File At Point @chapter Find File At Point -@cindex Visiting a file mentioned in a buffer -@cindex Finding a file at point +@cindex visiting a file mentioned in a buffer +@cindex finding a file at point @file{dired-x} provides a method of visiting or editing a file mentioned in the buffer you are viewing (e.g., a mail buffer, a news article, a @@ -968,7 +947,7 @@ should not bind @code{dired-x-find-file-other-window} over @code{find-file-other-window}. If you change this variable after @file{dired-x.el} is loaded then do @kbd{M-x dired-x-bind-find-file}. The default value of this variable is @code{t}; by default, the binding is not -done. See @xref{Optional Installation File At Point}. +done. @xref{Optional Installation File At Point}. @item dired-x-bind-find-file @findex dired-x-bind-find-file @@ -976,7 +955,7 @@ A function, which can be called interactively or in your @file{~/.emacs} file, that uses the value of @code{dired-x-hands-off-my-keys} to determine if @code{dired-x-find-file} should be bound over @code{find-file} and @code{dired-x-find-file-other-window} bound over -@code{find-file-other-window}. See @xref{Optional Installation File At Point}. +@code{find-file-other-window}. @xref{Optional Installation File At Point}. @end table @node Miscellaneous Commands @@ -1014,7 +993,7 @@ inserted subdirectories. @item dired-jump @findex dired-jump @kindex C-x C-j -@cindex Jumping to Dired listing containing file. +@cindex jumping to Dired listing containing file. Bound to @kbd{C-x C-j}. Jump back to Dired: If in a file, edit the current directory and move to file's line. If in Dired already, pop up a level and go to old directory's line. In case the proper Dired file line cannot be @@ -1034,7 +1013,7 @@ bound to @kbd{C-x C-j} and @code{dired-jump-other-window} will not be bound to @kbd{C-x 4 C-j}. @item dired-vm -@cindex Reading mail. +@cindex reading mail. @kindex V @findex dired-vm Bound to @kbd{V} if @code{dired-bind-vm} is @code{t}. Run VM on this @@ -1054,14 +1033,14 @@ If the variable @code{dired-bind-vm} is @code{t}, @code{dired-vm} will be bound to @kbd{V}. Otherwise, @code{dired-bind-rmail} will be bound. @item dired-rmail -@cindex Reading mail. +@cindex reading mail. @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. +@cindex running info. @findex dired-info Bound to @kbd{I}. Run Info on this file (assumed to be a file in Info format). @@ -1071,7 +1050,7 @@ 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. +@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} @@ -1082,7 +1061,7 @@ 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. +@cindex relative symbolic links. @kindex Y @findex dired-do-relsymlink Bound to @kbd{Y}. Relative symlink all marked (or next ARG) files into a @@ -1111,7 +1090,7 @@ info. @node Bugs @chapter Bugs -@cindex Bugs +@cindex bugs @noindent If you encounter a bug in this package, or wish to suggest an diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi index b6f2c1865fda..0d4a44ee7cec 100644 --- a/doc/misc/ebrowse.texi +++ b/doc/misc/ebrowse.texi @@ -11,7 +11,7 @@ @copying This file documents Ebrowse, a C++ class browser for GNU Emacs. -Copyright @copyright{} 2000--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2000--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index 7feb5166fc8a..4edb53d9533a 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi @@ -6,7 +6,7 @@ @copying This file describes EDE, the Emacs Development Environment. -Copyright @copyright{} 1998--2001, 2004--2005, 2008--2018 +Copyright @copyright{} 1998--2001, 2004--2005, 2008--2019 Free Software Foundation, Inc. @quotation @@ -1038,7 +1038,7 @@ details on using @eieio{} to extending classes, and writing methods. If you intend to extend @ede{}, it is most likely that a new target type is needed in one of the existing project types. The rest of this chapter -will discuss extending the @code{ede-project} class, and it's targets. +will discuss extending the @code{ede-project} class, and its targets. See @file{project-am.el} for basic details on adding targets to it. For the @code{ede-project} type, the core target class is called @@ -1477,7 +1477,7 @@ Get the inode of the directory project @var{PROJ} is in. @end deffn @deffn Method ede-project-root :AFTER this -If a project knows it's root, return it here. +If a project knows its root, return it here. Allows for one-project-object-for-a-tree type systems. @end deffn @@ -1486,7 +1486,7 @@ Find a subproject of @var{PROJ} that corresponds to @var{DIR}. @end deffn @deffn Method ede-project-root-directory :AFTER this &optional file -If a project knows it's root, return it here. +If a project knows its root, return it here. Allows for one-project-object-for-a-tree type systems. Optional @var{FILE} is the file to test. It is ignored in preference of the anchor file for the project. @@ -2516,7 +2516,7 @@ In sources for @var{THIS}, change version numbers to @var{VERSION}. @end deffn @deffn Method project-delete-target :AFTER ot -Delete the current target @var{OT} from it's parent project. +Delete the current target @var{OT} from its parent project. @end deffn @deffn Method ede-target-sourcecode :AFTER this @@ -2715,7 +2715,7 @@ Converts all symbols into the objects to be used. @end deffn @deffn Method project-delete-target :AFTER this -Delete the current target @var{THIS} from it's parent project. +Delete the current target @var{THIS} from its parent project. @end deffn @deffn Method ede-proj-makefile-target-name :AFTER this @@ -4013,7 +4013,7 @@ Type: @code{list} The commands used to execute this compiler. The object which uses this compiler will place these commands after -it's rule definition. +its rule definition. @item :autoconf Type: @code{list} @* @@ -4125,7 +4125,7 @@ Type: @code{list} The commands used to execute this compiler. The object which uses this compiler will place these commands after -it's rule definition. +its rule definition. @item :objectextention Type: @code{string} @@ -4265,7 +4265,7 @@ Type: @code{list} The commands used to execute this compiler. The object which uses this compiler will place these commands after -it's rule definition. +its rule definition. @item :objectextention Type: @code{string} diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi index 746c4c829d26..443aae3dbd57 100644 --- a/doc/misc/ediff.texi +++ b/doc/misc/ediff.texi @@ -26,7 +26,7 @@ This file documents Ediff, a comprehensive visual interface to Unix diff and patch utilities. -Copyright @copyright{} 1995--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -210,11 +210,11 @@ ancestors. Ediff selects only the files that are under version control. @item ediff-windows-wordwise @findex ediff-windows-wordwise -Compare windows word-by-word. +Compare text visible in 2 windows word-by-word. @item ediff-windows-linewise @findex ediff-windows-linewise -Compare windows line-by-line. +Compare text visible in 2 windows line-by-line. @item ediff-regions-wordwise @findex ediff-regions-wordwise @@ -373,13 +373,12 @@ The commands @code{ediff-windows-wordwise}, @code{ediff-windows-linewise}, @code{ediff-regions-wordwise} and @code{ediff-regions-linewise} do comparison on parts of existing Emacs buffers. The commands @code{ediff-windows-wordwise} and -@code{ediff-regions-wordwise} are intended for relatively small segments -of buffers (e.g., up to 100 lines, depending on the speed of your machine), +@code{ediff-regions-wordwise} could be slow on very large buffers, as they perform comparison on the basis of words rather than lines. -(Word-wise comparison of large chunks of text can be slow.) +(Word-wise comparison of large chunks of text is relatively expensive.) -To compare large regions, use @code{ediff-regions-linewise}. This -command displays differences much like @code{ediff-files} and +To compare very large regions, use @code{ediff-regions-linewise}. +This command displays differences much like @code{ediff-files} and @code{ediff-buffers}. The functions @code{ediff-patch-file} and @code{ediff-patch-buffer} apply a diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi index 754e3c82b236..74224e963148 100644 --- a/doc/misc/edt.texi +++ b/doc/misc/edt.texi @@ -6,7 +6,7 @@ @copying This file documents the EDT emulation package for Emacs. -Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2018 +Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi index e18bb739f848..cdd01e47f003 100644 --- a/doc/misc/efaq-w32.texi +++ b/doc/misc/efaq-w32.texi @@ -15,7 +15,7 @@ Answers to Frequently asked Questions about using Emacs on Microsoft Windows. @include emacsver.texi @copying -Copyright @copyright{} 2008, 2010-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2008, 2010-2019 Free Software Foundation, Inc. @quotation This list of frequently asked questions about GNU Emacs on MS Windows @@ -1820,7 +1820,8 @@ If you want a quick solution without installing extra tools, a poor substitute that works for simple text searches is to specify the built in Windows command @command{findstr} as the command to run at the @kbd{M-x grep} prompt. Normally you will want to use the @option{/n} -argument to @command{findstr}. +argument to @command{findstr}, to have it print the line numbers for +each hit. @menu * Recursive grep:: @@ -1860,7 +1861,8 @@ path to the findutils @command{find} command. An alternative if you have a recent version of grep is to customize @code{grep-find-command} to use @samp{grep -r} instead of both find and grep. Another alternative if you don't need the full capabilities -of grep is to use @samp{findstr /n /r}. +of grep is to use @samp{findstr /n /r}; add the @samp{/s} option if +you want a recursive search. @c ------------------------------------------------------------ @node Developing with Emacs diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index 8bdd40c71cf9..4c0d17f9a7b2 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -12,7 +12,7 @@ @c appreciate a notice if you do). @copying -Copyright @copyright{} 2001--2018 Free Software Foundation, Inc.@* +Copyright @copyright{} 2001--2019 Free Software Foundation, Inc.@* Copyright @copyright{} 1994, 1995, 1996, 1997, 1998, 1999, 2000 Reuven M. Lerner@* Copyright @copyright{} 1992, 1993 Steven Byrnes@* @@ -3506,7 +3506,7 @@ see @ref{Packages that do not come with Emacs}. The easiest way to add more features to your Emacs is to use the command @kbd{M-x list-packages}. This contacts the -@uref{https:///elpa.gnu.org, GNU ELPA} (``Emacs Lisp Package Archive'') +@uref{https://elpa.gnu.org, GNU ELPA} (``Emacs Lisp Package Archive'') server and fetches the list of additional packages that it offers. These are GNU packages that are available for use with Emacs, but are distributed separately from Emacs itself, for reasons of space, etc. @@ -3515,8 +3515,8 @@ available, and then Emacs can automatically download and install the packages that you select. @xref{Packages,,, emacs, The GNU Emacs Manual}. There are other, non-GNU, Emacs Lisp package servers, including: -@uref{http://melpa.org/, MELPA}; and -@uref{https://marmalade-repo.org/, Marmalade}. To use additional +@uref{https://melpa.org, MELPA}; and +@uref{https://marmalade-repo.org, Marmalade}. To use additional package servers, customize the @code{package-archives} variable. Be aware that installing a package can run arbitrary code, so only add sources that you trust. @@ -3527,8 +3527,8 @@ GNU Emacs sources mailing list}, which is gatewayed to the connection between the two can be unreliable) is an official place where people can post or announce their extensions to Emacs. -The @uref{http://emacswiki.org, Emacs Wiki} contains pointers to some -additional extensions. @uref{http://wikemacs.org, WikEmacs} is an +The @uref{https://emacswiki.org, Emacs Wiki} contains pointers to some +additional extensions. @uref{https://wikemacs.org, WikEmacs} is an alternative wiki for Emacs. @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html, The Emacs diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index 689ff72b7234..f56b2b67a401 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi @@ -12,7 +12,7 @@ @copying This manual documents EIEIO, an object framework for Emacs Lisp. -Copyright @copyright{} 2007--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -88,11 +88,11 @@ framework for writing object-oriented applications in Emacs. use @eieio{} to create classes, methods for those classes, and instances of classes. -Here is a simple example of a class named @code{record}, containing +Here is a simple example of a class named @code{person}, containing three slots named @code{name}, @code{birthday}, and @code{phone}: @example -(defclass record () ; No superclasses +(defclass person () ; No superclasses ((name :initarg :name :initform "" :type string @@ -106,23 +106,23 @@ three slots named @code{name}, @code{birthday}, and @code{phone}: (phone :initarg :phone :initform "" :documentation "Phone number.")) - "A single record for tracking people I know.") + "A class for tracking people I know.") @end example Each class can have methods, which are defined like this: @example -(cl-defmethod call-record ((rec record) &optional scriptname) - "Dial the phone for the record REC. +(cl-defmethod call-person ((pers person) &optional scriptname) + "Dial the phone for the person PERS. Execute the program SCRIPTNAME to dial the phone." - (message "Dialing the phone for %s" (oref rec name)) + (message "Dialing the phone for %s" (oref pers name)) (shell-command (concat (or scriptname "dialphone.sh") " " - (oref rec phone)))) + (oref pers phone)))) @end example @noindent -In this example, the first argument to @code{call-record} is a list, +In this example, the first argument to @code{call-person} is a list, of the form (@var{varname} @var{classname}). @var{varname} is the name of the variable used for the first argument; @var{classname} is the name of the class that is expected as the first argument for this @@ -130,17 +130,17 @@ method. @eieio{} dispatches methods based on the type of the first argument. You can have multiple methods with the same name for different classes -of object. When the @code{call-record} method is called, the first +of object. When the @code{call-person} method is called, the first argument is examined to determine the class of that argument, and the method matching the input type is then executed. Once the behavior of a class is defined, you can create a new -object of type @code{record}. Objects are created by calling the +object of type @code{person}. Objects are created by calling the constructor. The constructor is a function with the same name as your class which returns a new instance of that class. Here is an example: @example -(setq rec (record :name "Eric" :birthday "June" :phone "555-5555")) +(setq pers (person :name "Eric" :birthday "June" :phone "555-5555")) @end example @noindent @@ -157,19 +157,19 @@ first argument should be an object of a class which has had this method defined for it. In this example it would look like this: @example -(call-record rec) +(call-person pers) @end example @noindent or @example -(call-record rec "my-call-script") +(call-person pers "my-call-script") @end example In these examples, @eieio{} automatically examines the class of -@code{rec}, and ensures that the method defined above is called. If -@code{rec} is some other class lacking a @code{call-record} method, or +@code{pers}, and ensures that the method defined above is called. If +@code{pers} is some other class lacking a @code{call-person} method, or some other data type, Emacs signals a @code{cl-no-applicable-method} error. @ref{Signals}. @@ -270,10 +270,18 @@ by a symbol with the name @var{class-name}. @eieio{} stores the structure of the class as a symbol property of @var{class-name} (@pxref{Symbol Components,,,elisp,GNU Emacs Lisp Reference Manual}). +When defining a class, @eieio{} overwrites any preexisting variable or +function bindings for the symbol @var{class-name}, which may lead to +undesired consequences. Before naming a new class, you should check +for name conflicts. To help avoid cross-package conflicts you should +choose a name with the same prefix you chose for the rest of your +package's functions and variables (@pxref{Coding +Conventions,,,elisp,GNU Emacs Lisp Reference Manual}). + The @var{class-name} symbol's variable documentation string is a modified version of the doc string found in @var{options-and-doc}. Each time a method is defined, the symbol's documentation string is -updated to include the methods documentation as well. +updated to include the method's documentation as well. The parent classes for @var{class-name} is @var{superclass-list}. Each element of @var{superclass-list} must be a class. These classes @@ -625,10 +633,10 @@ function of @code{:initform}. @node Making New Objects @chapter Making New Objects -Suppose we have a simple class is defined, such as: +Suppose we have defined a simple class, such as: @example -(defclass record () +(defclass my-class () ( ) "Doc String") @end example @@ -636,10 +644,10 @@ Suppose we have a simple class is defined, such as: It is now possible to create objects of that class type. Calling @code{defclass} has defined two new functions. One is the -constructor @var{record}, and the other is the predicate, -@var{record}-p. +constructor @var{my-class}, and the other is the predicate, +@var{my-class}-p. -@defun record object-name &rest slots +@defun my-class object-name &rest slots This creates and returns a new object. This object is not assigned to anything, and will be garbage collected if not saved. This object @@ -657,7 +665,7 @@ can do any valid Lispy thing you want with it, such as Example of creating an object from a class: @example -(record :value 3 :reference nil) +(my-class :value 3 :reference nil) @end example @end defun diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi index a690ccfccef7..aae583c641ca 100644 --- a/doc/misc/emacs-gnutls.texi +++ b/doc/misc/emacs-gnutls.texi @@ -9,7 +9,7 @@ @copying This file describes the Emacs GnuTLS integration. -Copyright @copyright{} 2012--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2012--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi index 2c607cc97c5d..373bdeb9013e 100644 --- a/doc/misc/emacs-mime.texi +++ b/doc/misc/emacs-mime.texi @@ -12,7 +12,7 @@ @copying This file documents the Emacs MIME interface functionality. -Copyright @copyright{} 1998--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1998--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -698,13 +698,15 @@ Translation}. A description of the part (@code{Content-Description}). @item creation-date -RFC822 date when the part was created (@code{Content-Disposition}). +Date when the part was created (@code{Content-Disposition}). +This uses the format of RFC 822 or its successors. @item modification-date -RFC822 date when the part was modified (@code{Content-Disposition}). +RFC 822 (or later) date when the part was modified +(@code{Content-Disposition}). @item read-date -RFC822 date when the part was read (@code{Content-Disposition}). +RFC 822 (or later) date when the part was read (@code{Content-Disposition}). @item recipients Who to encrypt/sign the part to. This field is used to override any @@ -754,7 +756,7 @@ be obtained. Values include @samp{ftp}, @samp{anon-ftp}, @samp{tftp}, @samp{localfile}, and @samp{mailserver}. (@code{Content-Type}.) @item expiration -The RFC822 date after which the file may no longer be fetched. +RFC 822 (or later) date after which the file may no longer be fetched. (@code{Content-Type}.) @item size @@ -1301,7 +1303,7 @@ on. High-level functionality is dealt with in the first chapter @menu * rfc2045:: Encoding @code{Content-Type} headers. * rfc2231:: Parsing @code{Content-Type} headers. -* ietf-drums:: Handling mail headers defined by RFC822bis. +* ietf-drums:: Handling mail headers defined by RFC 2822. * rfc2047:: En/decoding encoded words in headers. * time-date:: Functions for parsing dates and manipulating time. * qp:: Quoted-Printable en/decoding. @@ -1385,8 +1387,8 @@ Encode a parameter in headers likes @code{Content-Type} and @node ietf-drums @section ietf-drums -@dfn{drums} is an IETF working group that is working on the replacement -for RFC822. +@dfn{drums} was an IETF working group that worked on Internet RFC 2822, +the first successor to RFC 822 and a predecessor of the current email standard. The functions provided by this library include: @@ -1588,7 +1590,7 @@ The five data representations used are the following: @table @var @item date -An RFC822 (or similar) date string. For instance: @code{"Sat Sep 12 +An RFC 822 (or similar) date string. For instance: @code{"Sat Sep 12 12:21:54 1998 +0200"}. @item time @@ -1861,55 +1863,55 @@ Takes a @acronym{MIME} type as its argument and returns the matching viewer. The Emacs @acronym{MIME} library implements handling of various elements according to a (somewhat) large number of RFCs, drafts and standards documents. This chapter lists the relevant ones. They can all be -fetched from @uref{http://quimby.gnus.org/notes/}. +fetched from @uref{https://www.rfc-editor.org}. @table @dfn -@item RFC822 -@itemx STD11 -Standard for the Format of ARPA Internet Text Messages. +@item RFC 5322 +Internet Message Format -@item RFC1036 -Standard for Interchange of USENET Messages +@item RFC 5536 +Netnews Article Format -@item RFC2045 +@item RFC 2045 Format of Internet Message Bodies -@item RFC2046 +@item RFC 2046 Media Types -@item RFC2047 +@item RFC 2047 Message Header Extensions for Non-@acronym{ASCII} Text -@item RFC2048 -Registration Procedures +@item RFC 6838 +Media Type Specifications and Registration Procedures + +@item RFC 4289 +Registration Procedures (obsoleting RFC 2048) -@item RFC2049 +@item RFC 2049 Conformance Criteria and Examples -@item RFC2231 +@item RFC 2231 @acronym{MIME} Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations -@item RFC1843 +@item RFC 1843 HZ---A Data Format for Exchanging Files of Arbitrarily Mixed Chinese and @acronym{ASCII} characters -@item draft-ietf-drums-msg-fmt-05.txt -Draft for the successor of RFC822 - -@item RFC2112 +@item RFC 2387 The @acronym{MIME} Multipart/Related Content-type -@item RFC1892 -The Multipart/Report Content Type for the Reporting of Mail System +@item RFC 6522 +@itemx STD 73 +The Multipart/Report Media Type for the Reporting of Mail System Administrative Messages -@item RFC2183 +@item RFC 2183 Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field -@item RFC2646 -Documentation of the text/plain format parameter for flowed text. +@item RFC 3676 +The Text/Plain Format and DelSp Parameters @end table diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi index d5dfe70760e2..330ce7092f9a 100644 --- a/doc/misc/epa.texi +++ b/doc/misc/epa.texi @@ -10,7 +10,7 @@ @copying This file describes EasyPG Assistant @value{VERSION}. -Copyright @copyright{} 2007--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 55556c528109..e1d2217806ae 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -10,7 +10,7 @@ @copying This manual is for ERC as distributed with Emacs @value{EMACSVER}. -Copyright @copyright{} 2005--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2005--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi index 6942e8532933..d70eca81f9cf 100644 --- a/doc/misc/ert.texi +++ b/doc/misc/ert.texi @@ -15,7 +15,7 @@ @end direntry @copying -Copyright @copyright{} 2008, 2010--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2008, 2010--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index ea1d070c2aaa..712780e33529 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -10,7 +10,7 @@ @copying This manual is for Eshell, the Emacs shell. -Copyright @copyright{} 1999--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -213,8 +213,8 @@ available in the Emacs Lisp library. It does this by transforming the input line into a callable Lisp form.@footnote{To see the Lisp form that will be invoked, type: @samp{eshell-parse-command "echo hello"}} The command can be either an Elisp function or an external command. -Eshell looks first for an @ref{Aliases, alias} with the same name as the -command, then a @ref{Built-ins, built-in command} or a function with the +Eshell looks first for an alias (@pxref{Aliases}) with the same name as the +command, then a built-in (@pxref{Built-ins}) or a function with the same name; if there is no match, it then tries to execute it as an external command. @@ -253,7 +253,7 @@ eshell/ls is a compiled Lisp function in `em-ls.el' @end example If you want to discard a given built-in command, you could declare an -alias, @ref{Aliases}. Example: +alias (@pxref{Aliases}). Example: @example ~ $ which sudo @@ -280,8 +280,7 @@ with no arguments, prints the current paths in this variable. @item alias @cmindex alias -Define an alias (@pxref{Aliases}). This does not add it to the aliases -file. +Define an alias (@pxref{Aliases}). This adds it to the aliases file. @item clear @cmindex clear @@ -419,7 +418,7 @@ Lisp functions, based on successful completion). @end table -@ref{Aliases} for the built-in variables @samp{$*}, @samp{$1}, +@xref{Aliases}, for the built-in variables @samp{$*}, @samp{$1}, @samp{$2}, @dots{}, in alias definitions. @node Variables @@ -630,8 +629,8 @@ to @code{"hello"}. Eshell's globbing syntax is very similar to that of Zsh. Users coming from Bash can still use Bash-style globbing, as there are no incompatibilities. Most globbing is pattern-based expansion, but there -is also predicate-based expansion. See -@ref{Filename Generation, , , zsh, The Z Shell Manual} +is also predicate-based expansion. @xref{Filename Generation, , , +zsh, The Z Shell Manual}, for full syntax. To customize the syntax and behavior of globbing in Eshell see the Customize@footnote{@xref{Easy Customization, , , emacs, The GNU Emacs Manual}.} diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi index e41be8684edd..568f94ba7c1a 100644 --- a/doc/misc/eudc.texi +++ b/doc/misc/eudc.texi @@ -14,7 +14,7 @@ This file documents EUDC version 1.40.0. EUDC is the Emacs Unified Directory Client, a common interface to directory servers and contact information. -Copyright @copyright{} 1998, 2000--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1998, 2000--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -606,7 +606,7 @@ function that will be passed the corresponding attribute values for display. @end defvar -This variable has protocol-local definitions (see @pxref{Server/Protocol +This variable has protocol-local definitions (@pxref{Server/Protocol Locals}). For instance, it is defined as follows for LDAP: @lisp @@ -714,7 +714,7 @@ name and the remaining words are all considered as surname constituents. @var{format}s are in fact not limited to EUDC attribute names, you can use server or protocol specific names in them. It may be safer if you do so, to set the variable @code{eudc-inline-query-format} in a protocol -or server local fashion (see @pxref{Server/Protocol Locals}). +or server local fashion (@pxref{Server/Protocol Locals}). For instance you could use the following to match up to three words against the @code{cn} attribute of LDAP servers: diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi index 43adc2eda0f1..d2c60b0abf7e 100644 --- a/doc/misc/eww.texi +++ b/doc/misc/eww.texi @@ -8,7 +8,7 @@ @copying This file documents the GNU Emacs Web Wowser (EWW) package. -Copyright @copyright{} 2014--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2014--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -118,7 +118,7 @@ variable-pitch fonts or not. This sets the @code{shr-use-fonts} variable. @findex eww-toggle-colors @findex shr-use-colors @kindex F - The @kbd{C} command (@code{eww-toggle-colors}) toggles whether to use + The @kbd{M-C} command (@code{eww-toggle-colors}) toggles whether to use HTML-specified colors or not. This sets the @code{shr-use-colors} variable. @findex eww-download diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi index eb82ef04ad17..2689b5d8cd98 100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi @@ -14,7 +14,7 @@ This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}), which is a universal on-the-fly syntax checker for GNU Emacs. -Copyright @copyright{} 2004--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi index 70463419e809..9423f9460918 100644 --- a/doc/misc/forms.texi +++ b/doc/misc/forms.texi @@ -19,7 +19,7 @@ @copying This file documents Forms mode, a form-editing major mode for GNU Emacs. -Copyright @copyright{} 1989, 1997, 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1989, 1997, 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -431,7 +431,7 @@ file. Example: If the control file does not set @code{forms-format-list} a default format is used. In this situation, Forms mode will deduce the number of fields from the data file providing this file exists and -@code{forms-number-of-records} has not been set in the control file. +@code{forms-number-of-fields} has not been set in the control file. The control file can optionally set the following additional Forms mode variables. Most of them have default values that are good for most diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi index 4590524348d0..95544628f795 100644 --- a/doc/misc/gnus-coding.texi +++ b/doc/misc/gnus-coding.texi @@ -8,7 +8,7 @@ @syncodeindex pg cp @copying -Copyright @copyright{} 2004--2005, 2007--2018 Free Software +Copyright @copyright{} 2004--2005, 2007--2019 Free Software Foundation, Inc. @quotation @@ -141,7 +141,7 @@ There are no Gnus dependencies in this file. There are no Gnus dependencies in this file. @item ietf-drums.el -Functions for parsing RFC822bis headers. +Functions for parsing RFC 2822 headers. @c As of 2005-10-21... There are no Gnus dependencies in this file. diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi index efef01f6978f..bc0357144dc5 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-2018 Free Software Foundation, Inc. +@c Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. @c @c @setfilename gnus-faq.info @c @settitle Frequently Asked Questions @@ -284,7 +284,7 @@ what's this? @subsubheading Answer You get the message described in the q/a pair above while -starting Gnus, right? It's an other symptom for the same +starting Gnus, right? It's another symptom for the same problem, so read the answer above. @node FAQ 2-3 @@ -707,7 +707,7 @@ retrieves via POP3? Yes, if the POP3 server supports the UIDL control (maybe almost servers do it nowadays). To do that, add a @code{:leave VALUE} pair to each -POP3 mail source. See @pxref{Mail Source Specifiers} for VALUE. +POP3 mail source. @xref{Mail Source Specifiers}, for details on VALUE. @node FAQ 4 - Reading messages @subsection Reading messages diff --git a/doc/misc/gnus-news.el b/doc/misc/gnus-news.el index 301ea9327954..c90269fffefb 100644 --- a/doc/misc/gnus-news.el +++ b/doc/misc/gnus-news.el @@ -1,5 +1,5 @@ ;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source -;; Copyright (C) 2004-2018 Free Software Foundation, Inc. +;; Copyright (C) 2004-2019 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Keywords: tools @@ -26,7 +26,7 @@ (defvar gnus-news-header-disclaimer "GNUS NEWS -- history of user-visible changes. -Copyright (C) 1999-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Gnus bug reports to bugs@gnus.org. diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi index 171f59a3ad06..9bf8d190416a 100644 --- a/doc/misc/gnus-news.texi +++ b/doc/misc/gnus-news.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c Permission is granted to anyone to make or distribute verbatim copies @c of this document as received, in any medium, provided that the diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index db0534e8a68a..9c3ec41462de 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -10,7 +10,7 @@ @syncodeindex pg cp @copying -Copyright @copyright{} 1995--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -2128,7 +2128,7 @@ considered big. The default value is 200. If the group has more (unread and/or ticked) articles than this, Gnus will query the user before entering the group. The user can then specify how many articles should be fetched from the server. If the user specifies a -negative number (@var{-n}), the @var{n} oldest articles will be +negative number (@minus{}@var{n}), the @var{n} oldest articles will be fetched. If it is positive, the @var{n} articles that have arrived most recently will be fetched. @@ -2917,9 +2917,9 @@ See also @code{gnus-total-expirable-newsgroups}. If the group parameter has an element that looks like @code{(expiry-wait . 10)}, this value will override any @code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function} -(@pxref{Expiring Mail}) when expiring expirable messages. The value -can either be a number of days (not necessarily an integer) or the -symbols @code{never} or @code{immediate}. +settings (@pxref{Expiring Mail}) when expiring expirable messages. +The value can be either a number of days (not necessarily an integer), +or one of the symbols @code{never} or @code{immediate}. @item expiry-target @cindex expiry-target @@ -3096,7 +3096,7 @@ You can also use regexp expansions in the rules: (sieve header :regex "list-id" "") @end example -See @pxref{Sieve Commands} for commands and variables that might be of +@xref{Sieve Commands}, for commands and variables that might be of interest in relation to the sieve parameter. The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve, @@ -9394,7 +9394,7 @@ function must return @code{mid}, @code{mail}, @code{invalid} or @item gnus-button-mid-or-mail-heuristic @findex gnus-button-mid-or-mail-heuristic Function that guesses whether its argument is a message ID or a mail -address. Returns @code{mid} if it's a message IDs, @code{mail} if +address. Returns @code{mid} if it's a message ID, @code{mail} if it's a mail address, @code{ask} if unsure and @code{invalid} if the string is invalid. @@ -9655,7 +9655,7 @@ Each article is divided into two parts---the head and the body. The body can be divided into a signature part and a text part. The variable that says what is to be considered a signature is @code{gnus-signature-separator}. This is normally the standard -@samp{^-- $} as mandated by son-of-RFC 1036. However, many people use +@samp{^-- $} as mandated by RFC 5536. However, many people use non-standard signature separators, so this variable can also be a list of regular expressions to be tested, one by one. (Searches are done from the end of the body towards the beginning.) One likely value is: @@ -12837,7 +12837,7 @@ In the case of a string value, if the @code{match} is a regular expression, or if it takes the form @code{(header @var{match} @var{regexp})}, a @samp{gnus-match-substitute-replacement} is proceed on the value to replace the positional parameters @samp{\@var{n}} by -the corresponding parenthetical matches (see @xref{Replacing Match,, +the corresponding parenthetical matches (@pxref{Replacing Match,, Replacing the Text that Matched, elisp, The Emacs Lisp Reference Manual}.) @@ -15826,40 +15826,46 @@ don't really mix very well. @vindex nnmail-expiry-wait The @code{nnmail-expiry-wait} variable supplies the default time an -expirable article has to live. Gnus starts counting days from when the -message @emph{arrived}, not from when it was sent. The default is seven -days. +expirable article has to live. The value of this variable can be +either a number of days (not necessarily an integer), or one of the +symbols @code{immediate} or @code{never}, meaning an article is +immediately or never expirable, respectively. -Gnus also supplies a function that lets you fine-tune how long articles -are to live, based on what group they are in. Let's say you want to -have one month expiry period in the @samp{mail.private} group, a one day -expiry period in the @samp{mail.junk} group, and a six day expiry period -everywhere else: +Gnus starts counting days from when the message @emph{arrived}, not +from when it was sent. The default is seven days. @vindex nnmail-expiry-wait-function +The @code{nnmail-expiry-wait-function} variable lets you fine-tune how +long articles are to live, based on what group they are in. When set +to a function, its returned value, if non-@code{nil}, overrides that +of @code{nnmail-expiry-wait}. Otherwise, the value of +@code{nnmail-expiry-wait} is used instead. + +For example, let's say you want to have a one month expiry period in +the @samp{mail.private} group, a one day expiry period in the +@samp{mail.junk} group, and a six day expiry period everywhere else. +This can be achieved as follows: + @lisp (setq nnmail-expiry-wait-function (lambda (group) - (cond ((string= group "mail.private") + (cond ((string= group "mail.private") 31) - ((string= group "mail.junk") + ((string= group "mail.junk") 1) - ((string= group "important") + ((string= group "important") 'never) - (t + (t 6)))) @end lisp The group names this function is fed are ``unadorned'' group names---no @samp{nnml:} prefixes and the like. -The @code{nnmail-expiry-wait} variable and -@code{nnmail-expiry-wait-function} function can either be a number (not -necessarily an integer) or one of the symbols @code{immediate} or -@code{never}. - -You can also use the @code{expiry-wait} group parameter to selectively -change the expiry period (@pxref{Group Parameters}). +As an alternative to the variables @code{nnmail-expiry-wait} or +@code{nnmail-expiry-wait-function}, you can also use the +@code{expiry-wait} group parameter to selectively change the expiry +period (@pxref{Group Parameters}). @vindex nnmail-expiry-target The normal action taken when expiring articles is to delete them. @@ -15956,8 +15962,9 @@ Mailers and list servers are notorious for doing all sorts of really, really stupid things with mail. ``Hey, RFC 822 doesn't explicitly prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the end of all lines passing through our server, so let's do that!!!!1!'' -Yes, but RFC 822 wasn't designed to be read by morons. Things that were -considered to be self-evident were not discussed. So. Here we are. +Yes, but RFC 822 and its successors weren't designed to be read by +morons. Things that were considered to be self-evident were not +discussed. So. Here we are. Case in point: The German version of Microsoft Exchange adds @samp{AW: } to the subjects of replies instead of @samp{Re: }. I could pretend to @@ -17339,7 +17346,7 @@ Announcement messages from LANL Gov Announce. @cindex forwarded messages @item rfc822-forward -A message forwarded according to RFC822. +A message forwarded according to RFC 822 or its successors. @item outlook The Outlook mail box. @@ -23440,11 +23447,11 @@ XEmacs. Here are examples: (png . (:relief -2)))) @end lisp -@pxref{Image Descriptors, ,Image Descriptors, elisp, The Emacs Lisp -Reference Manual} for the valid properties for various image types. -Currently, @code{pbm} is used for X-Face images and @code{png} is used -for Face images in Emacs. Only the @code{:face} property is effective -on the @code{xface} image type in XEmacs if it is built with the +@xref{Image Descriptors,,, elisp, The Emacs Lisp Reference Manual}, +for the valid properties for various image types. Currently, +@code{pbm} is used for X-Face images and @code{png} is used for Face +images in Emacs. Only the @code{:face} property is effective on the +@code{xface} image type in XEmacs if it is built with the @samp{libcompface} library. @end table @@ -23715,21 +23722,25 @@ The following variables offer control over how things are displayed. @item gnus-gravatar-size @vindex gnus-gravatar-size The size in pixels of gravatars. Gravatars are always square, so one -number for the size is enough. +number for the size is enough. If @code{nil}, this defaults to the +value of @code{gravatar-size}. @item gnus-gravatar-properties @vindex gnus-gravatar-properties -List of image properties applied to Gravatar images. +List of image properties applied to Gravatar images (@pxref{Image +Descriptors,,, elisp, The Emacs Lisp Reference Manual}). @item gnus-gravatar-too-ugly @vindex gnus-gravatar-too-ugly -Regexp that matches mail addresses or names of people of which avatars -should not be displayed, or @code{nil}. It default to the value of -@code{gnus-article-x-face-too-ugly} (@pxref{X-Face}). +Regexp that matches mail addresses or names of people whose avatars +should not be displayed, or @code{nil} to display all avatars. It +defaults to the value of @code{gnus-article-x-face-too-ugly} +(@pxref{X-Face}). @end table -If you want to see them in the From field, set: +If you want to see gravatars in the From field, set: + @lisp (setq gnus-treat-from-gravatar 'head) @end lisp @@ -24196,7 +24207,7 @@ You must read this section to understand how the Spam package works. Do not skip, speed-read, or glance through this section. Make sure you read the section on the @code{spam.el} sequence of -events. See @xref{Extending the Spam package}. +events. @xref{Extending the Spam package}. @cindex spam-initialize @vindex spam-use-stat @@ -26159,7 +26170,7 @@ Get the data under @code{key} for message @code{id}. If any extra entries are precious, their presence will make the registry keep the whole entry forever, even if there are no groups for the Message-ID and if the size limit of the registry is reached. By -default this is just @code{(marks)} so the custom registry marks are +default this is just @code{(mark)} so the custom registry marks are precious. @end defvar @@ -26674,18 +26685,20 @@ with, of course. @table @strong -@item RFC (2)822 +@item RFC 822 @cindex RFC 822 @cindex RFC 2822 -There are no known breaches of this standard. +@cindex RFC 5322 +There are no known breaches of this standard or its successors +(currently RFCs 2822 and 5322). @item RFC 1036 @cindex RFC 1036 -There are no known breaches of this standard, either. +There are no known breaches of this (now-obsolete) standard, either. -@item Son-of-RFC 1036 -@cindex Son-of-RFC 1036 -We do have some breaches to this one. +@item RFC 5536 +@cindex RFC 5536 +We do have some breaches of this standard, the successor of RFC 1036. @table @emph @@ -26700,10 +26713,9 @@ it wasn't for the @code{X-Newsreader} header. @item USEFOR @cindex USEFOR -USEFOR is an IETF working group writing a successor to RFC 1036, based -on Son-of-RFC 1036. They have produced a number of drafts proposing -various changes to the format of news articles. The Gnus towers will -look into implementing the changes when the draft is accepted as an RFC. +USEFOR was an IETF working group that produced Internet RFCs 5536 and 5537. +The Gnus towers will look into implementing the changes embodied by these +standards. @item MIME---RFC 2045--2049 etc @cindex @acronym{MIME} @@ -29482,7 +29494,8 @@ header = eol @end example @cindex BNF -(The version of BNF used here is the one used in RFC822.) +(The version of extended BNF used here is ABNF, the one used in Internet RFCs. +See RFC 5234.) If the return value is @code{nov}, the data buffer should contain @dfn{network overview database} lines. These are basically fields @@ -30280,7 +30293,7 @@ almost suspect that the author looked at the @acronym{NOV} specification and just shamelessly @emph{stole} the entire thing, and one would be right. @dfn{Header} is a severely overloaded term. ``Header'' is used in -RFC 1036 to talk about lines in the head of an article (e.g., +RFC 5536 to talk about lines in the head of an article (e.g., @code{From}). It is used by many people as a synonym for ``head''---``the header and the body''. (That should be avoided, in my opinion.) And Gnus uses a format internally that it calls ``header'', diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index c4cf7dac0a6a..f1da8785eb79 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -10,7 +10,7 @@ This manual documents Htmlfontify, a source code -> crosslinked + formatted + syntax colorized html transformer. -Copyright @copyright{} 2002-2003, 2013-2018 Free Software Foundation, +Copyright @copyright{} 2002-2003, 2013-2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index ca4d89c5f8f8..fd48bc05168a 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi @@ -23,7 +23,7 @@ Emacs, and interacting with an IDL shell run as a subprocess. This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE @value{VERSION}. -Copyright @copyright{} 1999--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi index 098b28ee524d..bb7e72326570 100644 --- a/doc/misc/ido.texi +++ b/doc/misc/ido.texi @@ -7,7 +7,7 @@ @copying This file documents the Ido package for GNU Emacs. -Copyright @copyright{} 2013-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2013-2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/info.texi b/doc/misc/info.texi index e277b13ba87a..e69779a03ca9 100644 --- a/doc/misc/info.texi +++ b/doc/misc/info.texi @@ -15,7 +15,7 @@ This file describes how to use Info, the menu-driven GNU documentation system. -Copyright @copyright{} 1989, 1992, 1996--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1989, 1992, 1996--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi index 8d620c720e68..c45ed11e498b 100644 --- a/doc/misc/mairix-el.texi +++ b/doc/misc/mairix-el.texi @@ -5,7 +5,7 @@ @include docstyle.texi @copying -Copyright @copyright{} 2008--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2008--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/message.texi b/doc/misc/message.texi index be1c806c824e..21a575900664 100644 --- a/doc/misc/message.texi +++ b/doc/misc/message.texi @@ -11,7 +11,7 @@ @copying This file documents Message, the Emacs message composition mode. -Copyright @copyright{} 1996--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1996--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi index b44e503996b9..52e22178b2dd 100644 --- a/doc/misc/mh-e.texi +++ b/doc/misc/mh-e.texi @@ -25,7 +25,7 @@ This is version @value{VERSION}@value{EDITION} of @cite{The MH-E Manual}, last updated @value{UPDATED}. -Copyright @copyright{} 1995, 2001--2003, 2005--2018 Free Software +Copyright @copyright{} 1995, 2001--2003, 2005--2019 Free Software Foundation, Inc. @c This dual license has been agreed upon by the FSF. @@ -6294,24 +6294,24 @@ Emacs navigational keys (like the arrow keys, or @kbd{C-n}) to move the cursor over the desired folder and then use the shortcuts for the menu items listed in the table below. -@table @samp +@table @asis @findex mh-speed-view -@item Visit Folder (@key{RET}) +@item @samp{Visit Folder} (@key{RET}) Visits the selected folder just as if you had used @kbd{F v} (@code{mh-speed-view}). @c ------------------------- @findex mh-speed-expand-folder -@item Expand Nested Folders (@kbd{+}) +@item @samp{Expand Nested Folders} (@kbd{+}) Expands the selected folder in the speedbar, exposing the children folders inside it (@code{mh-speed-expand-folder}). @c ------------------------- @findex mh-speed-contract-folder -@item Contract Nested Folders (@kbd{-}) +@item @samp{Contract Nested Folders} (@kbd{-}) Contracts or collapses the selected folder in the speedbar, hiding the children folders inside it (@code{mh-speed-contract-folder}). @c ------------------------- @findex mh-speed-refresh -@item Refresh Speedbar (@kbd{r}) +@item @samp{Refresh Speedbar} (@kbd{r}) Regenerates the list of folders in the speedbar. Run this command if you've added or deleted a folder, or want to update the unseen message count before the next automatic update (@code{mh-speed-refresh}). diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi index ac29ced8fb75..5db3f43b2b92 100644 --- a/doc/misc/newsticker.texi +++ b/doc/misc/newsticker.texi @@ -15,7 +15,7 @@ This manual documents Newsticker, a feed reader for Emacs. It corresponds to Emacs version @value{EMACSVER}. @noindent -Copyright @copyright{} 2004--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi index 32b873e8919b..2b2c241a6e4f 100644 --- a/doc/misc/nxml-mode.texi +++ b/doc/misc/nxml-mode.texi @@ -9,7 +9,7 @@ This manual documents nXML mode, an Emacs major mode for editing XML with RELAX NG support. -Copyright @copyright{} 2007--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -250,7 +250,7 @@ xml:lang xmlns If you input @kbd{xmlns}, the result will be: @example -}} characters. This can sometimes be quite +nesting of the @samp{>} characters. This can sometimes be quite confusing when many levels of citations are included since it may be difficult or impossible to figure out who actually participated in the -thread, and multiple nesting of @samp{@code{>}} characters can sometimes +thread, and multiple nesting of @samp{>} characters can sometimes make the message very difficult for the eye to scan. @cindex non-nested citations @@ -851,7 +851,8 @@ scanned. Info key-value pairs are created for each header found. Also, such useful information as the author's name and email address are extracted. If the variable @code{sc-mail-warn-if-non-rfc822-p} is non-@code{nil}, then Supercite will warn you if it finds a mail header -that does not conform to RFC822. This is rare and indicates a problem +that does not conform to RFC 822 (or later). +This is rare and indicates a problem either with your MUA or the original author's MUA, or some MTA (mail transport agent) along the way. diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi index 8484a7bfe232..3fe104af1f50 100644 --- a/doc/misc/sem-user.texi +++ b/doc/misc/sem-user.texi @@ -1,5 +1,5 @@ @c This is part of the Semantic manual. -@c Copyright (C) 1999-2005, 2007, 2009-2018 Free Software Foundation, +@c Copyright (C) 1999-2005, 2007, 2009-2019 Free Software Foundation, @c Inc. @c See file semantic.texi for copying conditions. diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi index 8d4920ce7271..34afcba495c7 100644 --- a/doc/misc/semantic.texi +++ b/doc/misc/semantic.texi @@ -25,7 +25,7 @@ @copying This manual documents the Semantic library and utilities. -Copyright @copyright{} 1999--2005, 2007, 2009--2018 Free Software +Copyright @copyright{} 1999--2005, 2007, 2009--2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi index aa4fe81ba52c..f98a3b164bf1 100644 --- a/doc/misc/ses.texi +++ b/doc/misc/ses.texi @@ -12,7 +12,7 @@ @copying This file documents @acronym{SES}: the Simple Emacs Spreadsheet. -Copyright @copyright{} 2002--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2002--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi index cad3cd864696..7f28994f1e3c 100644 --- a/doc/misc/sieve.texi +++ b/doc/misc/sieve.texi @@ -12,7 +12,7 @@ @copying This file documents the Emacs Sieve package, for server-side mail filtering. -Copyright @copyright{} 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi index c3387054bafe..365f55718e79 100644 --- a/doc/misc/smtpmail.texi +++ b/doc/misc/smtpmail.texi @@ -4,7 +4,7 @@ @include docstyle.texi @syncodeindex vr fn @copying -Copyright @copyright{} 2003--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2003--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi index d67c4e61456f..503f9cd64657 100644 --- a/doc/misc/speedbar.texi +++ b/doc/misc/speedbar.texi @@ -5,7 +5,7 @@ @syncodeindex fn cp @copying -Copyright @copyright{} 1999--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/srecode.texi b/doc/misc/srecode.texi index 7d8416e9013c..9df11b4b9f94 100644 --- a/doc/misc/srecode.texi +++ b/doc/misc/srecode.texi @@ -16,7 +16,7 @@ @c %**end of header @copying -Copyright @copyright{} 2007--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 1987c50ba264..f2be62ce47b8 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -5,10 +5,8 @@ % \def\texinfoversion{2017-12-26.21} % -% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, -% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 -% Free Software Foundation, Inc. +% Copyright 1985-1986, 1988, 1990-2017, 2019 Free Software Foundation, +% Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi index 1e4ea856fc77..18e5a8fa3b10 100644 --- a/doc/misc/todo-mode.texi +++ b/doc/misc/todo-mode.texi @@ -9,7 +9,7 @@ @c %**end of header @copying -Copyright @copyright{} 2013-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2013-2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 6e0268370793..633f2d16b6b6 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -23,7 +23,7 @@ @end macro @copying -Copyright @copyright{} 1999--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -2594,6 +2594,8 @@ proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}: @kbd{C-x C-f @value{prefix}ssh@value{postfixhop}bird@@bastion|ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}} @end example +Each involved method must be an inline method (@pxref{Inline methods}). + Proxies can take patterns @code{%h} or @code{%u}. @value{tramp} adds the ad-hoc definitions on the fly to @@ -3408,7 +3410,9 @@ Due to the remote shell saving tilde expansions triggered by @value{tramp} can suppress this behavior with the user option @code{tramp-histfile-override}. When set to @code{t}, environment variable @env{HISTFILE} is unset, and environment variables -@env{HISTFILESIZE} @env{HISTSIZE} are set to 0. +@env{HISTFILESIZE} and @env{HISTSIZE} are set to 0. Don't use this +with @command{bash} 5.0.0. There is a bug in @command{bash} which +lets @command{bash} die. Alternatively, @code{tramp-histfile-override} could be a string. Environment variable @env{HISTFILE} is set to this file name then. Be diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index c6473f5b7343..aecbbe261c8f 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -2,7 +2,7 @@ @c texi/trampver.texi. Generated from trampver.texi.in by configure. @c This is part of the Emacs manual. -@c Copyright (C) 2003-2018 Free Software Foundation, Inc. +@c Copyright (C) 2003-2019 Free Software Foundation, Inc. @c See file doclicense.texi for copying conditions. @c In the Tramp GIT, the version number is auto-frobbed from diff --git a/doc/misc/url.texi b/doc/misc/url.texi index 04bbc48dd2ae..b190c58c0239 100644 --- a/doc/misc/url.texi +++ b/doc/misc/url.texi @@ -21,7 +21,7 @@ @copying This is the manual for the @code{url} Emacs Lisp library. -Copyright @copyright{} 1993--1999, 2002, 2004--2018 Free Software +Copyright @copyright{} 1993--1999, 2002, 2004--2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/vhdl-mode.texi b/doc/misc/vhdl-mode.texi index c0efdbf75f40..8af658682cdc 100644 --- a/doc/misc/vhdl-mode.texi +++ b/doc/misc/vhdl-mode.texi @@ -10,7 +10,7 @@ @copying This file documents VHDL Mode, an Emacs mode for editing VHDL code. -Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2018 Free Software +Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi index 92aea388af37..47a3f349a16f 100644 --- a/doc/misc/vip.texi +++ b/doc/misc/vip.texi @@ -4,7 +4,7 @@ @include docstyle.texi @copying -Copyright @copyright{} 1987, 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1987, 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi index e67734bc01cb..922c91b39229 100644 --- a/doc/misc/viper.texi +++ b/doc/misc/viper.texi @@ -8,7 +8,7 @@ @include docstyle.texi @copying -Copyright @copyright{} 1995--1997, 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 1995--1997, 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi index bf21ac338995..6d94768644fd 100644 --- a/doc/misc/widget.texi +++ b/doc/misc/widget.texi @@ -9,7 +9,7 @@ @c %**end of header @copying -Copyright @copyright{} 2000--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2000--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi index 12bb09c7b256..b404c2a82dc1 100644 --- a/doc/misc/wisent.texi +++ b/doc/misc/wisent.texi @@ -24,7 +24,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2018 +Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2019 Free Software Foundation, Inc. @c Since we are both GNU manuals, we do not need to ack each other here. diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi index f8ddbd2aff6e..9c04a1450217 100644 --- a/doc/misc/woman.texi +++ b/doc/misc/woman.texi @@ -15,7 +15,7 @@ This file documents WoMan: A program to browse Unix manual pages ``W.O. (without) man''. -Copyright @copyright{} 2001--2018 Free Software Foundation, Inc. +Copyright @copyright{} 2001--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/etc/AUTHORS b/etc/AUTHORS index a0cd4a7f58b6..7e18fa9ff02d 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -9,7 +9,7 @@ Aaron Ecay: changed ob-R.el ob-core.el org-src.el ox-latex.el nsterm.m ob-awk.el ob-exp.el ob-python.el ob-tangle.el org-bibtex.el org-id.el org.el org.texi package.el paren.el -Aaron Jensen: changed frameset.el Info.plist.in nsterm.m +Aaron Jensen: changed frameset.el nsterm.m Info.plist.in mouse.el Aaron Larson: co-wrote bibtex.el @@ -93,10 +93,10 @@ Alakazam Petrofsky: changed hanoi.el Alan Mackenzie: wrote cc-awk.el 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 bytecomp.el subr.el edebug.el modes.texi - syntax.texi display.texi font-lock.el isearch.el programs.texi - follow.el help.el ispell.el lread.c control.texi cus-start.el doc.c - eval.c frames.texi help-fns.el lisp.el and 133 other files +and changed cc-mode.texi bytecomp.el subr.el display.texi edebug.el + follow.el modes.texi syntax.texi font-lock.el isearch.el programs.texi + help.el ispell.el lread.c windows.texi control.texi cus-start.el doc.c + eval.c frames.texi help-fns.el and 134 other files Alan Modra: changed unexelf.c @@ -108,9 +108,9 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el Alan Third: wrote dabbrev-tests.el and changed nsterm.m nsfns.m nsterm.h nsmenu.m frame.el macfont.m - nsimage.m ns-win.el conf_post.h frame.c frame.h frames.texi keyboard.c - macfont.h macos.texi picture.el rect.el Info.plist.in battery.el - callproc.c configure.ac and 11 other files + nsimage.m ns-win.el xdisp.c Info.plist.in conf_post.h frame.c frame.h + frames.texi keyboard.c macfont.h macos.texi picture.el rect.el + battery.el callproc.c and 12 other files Alastair Burt: changed gnus-art.el smiley.el @@ -128,7 +128,7 @@ Alexander Gramiak: changed faces.el display-line-numbers.el xt-mouse.el CTAGS.good ETAGS.good_1 ETAGS.good_2 ETAGS.good_3 ETAGS.good_4 ETAGS.good_5 ETAGS.good_6 Makefile TAGTEST.EL cl-lib-tests.el cl-macs-tests.el cus-start.el custom.texi display.texi erc-list.el - ert-tests.el ert.el etags.c and 15 other files + ert-tests.el ert.el etags.c and 18 other files Alexander Haeckel: changed getset.el @@ -162,7 +162,8 @@ Alexandre Veyrenc: changed fr-refcard.tex Alexandru Harsanyi: wrote soap-client.el soap-inspect.el and changed emacs3.py vc-hooks.el vc.el xml.el -Alex Branham: changed bibtex.el dired-x.el dired.el eww.el +Alex Branham: changed bibtex.el dired-x.el dired.el em-rebind.el eww.el + imenu.el indent.el modes.texi programs.texi text.texi Alex Coventry: changed files.el @@ -203,8 +204,8 @@ Ali Bahrami: changed configure configure.ac sol2-10.h Alin C. Soare: changed lisp-mode.el hexl.el -Allen Li: changed abbrev.el comint.el dired-x.el misc.texi - progmodes/compile.el subr.el +Allen Li: changed abbrev.el bookmark.el comint.el dired-x.el misc.texi + nsm.el progmodes/compile.el subr.el Allen S. Rout: changed org-capture.el @@ -268,7 +269,7 @@ Andreas Rottmann: changed emacsclient.1 emacsclient.c misc.texi server.el Andreas Schwab: changed configure.ac lisp.h process.c xdisp.c alloc.c coding.c Makefile.in files.el fileio.c keyboard.c lread.c xterm.c fns.c editfns.c emacs.c src/Makefile.in print.c eval.c font.c xfns.c sysdep.c - and 639 other files + and 640 other files 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 @@ -365,8 +366,8 @@ Antonin Houska: changed newcomment.el Arash Esbati: changed reftex-vars.el reftex.el reftex-auc.el reftex-ref.el -Ari Roponen: changed atimer.c doc.c hash.texi mule.texi package.el - startup.el subr.el svg.el time-date.el woman.el +Ari Roponen: changed xterm.c atimer.c doc.c hash.texi image.c mule.texi + package.el startup.el subr.el svg.el time-date.el woman.el Arisawa Akihiro: changed characters.el coding.c epa-file.el japan-util.el language/tibetan.el message.el mm-decode.el mm-view.el ps-print.el @@ -439,9 +440,11 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el sendmail.el ses.el simple.el verilog-mode.el vi.el vip.el viper-cmd.el xscheme.el -Basil L. Contovounesios: changed simple.el message.el css-mode-tests.el - css-mode.el customize.texi gnus-art.el json-tests.el json.el man.el - shr-color.el text.texi +Basil L. Contovounesios: changed simple.el message.el customize.texi + gnus.texi internals.texi sequences.texi bibtex.el css-mode-tests.el + css-mode.el display.texi electric.el eval.texi functions.texi + gnus-art.el gnus-cus.el gnus-gravatar.el gravatar.el ibuffer.el + image-tests.el image.el indent.el and 16 other files Bastian Beischer: changed include.el mru-bookmark.el refs.el semantic/complete.el senator.el @@ -469,8 +472,9 @@ Benjamin Andresen: wrote ob-screen.el Benjamin Drieu: wrote pong.el and changed org-clock.el org.el -Benjamin Riefenstahl: changed w32select.c emacs.c inc/ms-w32.h lisp.h - mac-win.el macterm.c mule-cmds.el runemacs.c tcl.el w32.c w32.h +Benjamin Riefenstahl: changed w32select.c emacs.c image-mode.el image.el + inc/ms-w32.h lisp.h mac-win.el macterm.c mule-cmds.el runemacs.c tcl.el + w32.c w32.h Benjamin Rutt: co-wrote gnus-dired.el and changed vc.el gnus-msg.el message.el diff-mode.el ffap.el nnimap.el @@ -574,6 +578,8 @@ Brad Howes: changed gnus-demon.el Brandon Craig Rhodes: changed flyspell.el +Braun Gábor: changed cua-base.el + Brendan Kehoe: changed hpux9.h Brent Goodrick: changed abbrev.el @@ -668,10 +674,10 @@ Changwoo Ryu: changed files.el Chao-Hong Liu: changed TUTORIAL.cn TUTORIAL.zh -Charles A. Roelli: changed nsterm.m display.texi nsfns.m nsterm.h - org-clock.el DEBUG INSTALL add-log.el anti.texi buffers.texi comint.el - data.c diff-mode.el eldoc.el files.el fill.el find-func.el flymake.el - frame.el internals.texi macfont.m and 13 other files +Charles A. Roelli: changed nsterm.m display.texi isearch.el nsfns.m + nsterm.h org-clock.el search.texi simple.el DEBUG INSTALL add-log.el + anti.texi buffers.texi comint.el data.c diff-mode.el eldoc.el files.el + fill.el find-func.el flymake.el and 21 other files Charles Hannum: changed aix3-1.h aix3-2.h configure ibmrs6000.h keyboard.c netbsd.h pop.c sysdep.c systime.h systty.h xrdb.c @@ -701,7 +707,8 @@ and changed simple.el display.texi xdisp.c files.el frames.texi Chris Chase: co-wrote idlw-shell.el idlwave.el -Chris Feng: changed dispnew.c autoload.el frame.c process.c +Chris Feng: changed dispnew.c autoload.el frame.c keyboard-tests.el + keyboard.c process.c Chris Foote: changed progmodes/python.el @@ -778,7 +785,7 @@ Christophe Deleuze: changed icalendar.el Christoph Egger: changed configure.ac -Christophe Junke: changed org-agenda.el org.el +Christophe Junke: changed ido.el org-agenda.el org.el Christopher Allan Webber: changed gamegrid.el org-agenda.el tetris.el @@ -872,7 +879,8 @@ Dale Sedivec: changed sgml-mode.el wisent/python.el Damien Cassou: wrote auth-source-pass-tests.el and co-wrote auth-source-pass.el auth-source-tests.el and changed seq-tests.el seq.el simple-tests.el simple.el auth-source.el - auth.texi imenu-tests.el imenu.el info.el isearch.el sequences.texi + auth.texi imenu-tests.el imenu.el info.el isearch.el rmc.el + sequences.texi 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 @@ -928,12 +936,16 @@ and changed package-test.el package-x.el ange-ftp.el Daniel Jensen: changed apropos.el +Daniel Kahn Gillmor: changed mml-sec.el + Daniel Koning: changed artist.el commands.texi subr.el Daniel LaLiberte: wrote cust-print.el edebug.el isearch.el and co-wrote hideif.el and changed mlconvert.el eval-region.el +Daniel Lopez: changed progmodes/compile.el + Daniel Lublin: changed dns-mode.el Daniel McClanahan: changed lisp-mode.el @@ -981,6 +993,8 @@ Danny Siu: changed gnus-sum.el gnus-picon.el nndoc.el nnimap.el smiley.el Dan Rosenberg: changed movemail.c +Dario Gjorgjevski: changed recentf.el + Darren Hoo: changed db-find.el db.el gnus-art.el isearch.el man.el nsmenu.m startup.el @@ -1129,7 +1143,7 @@ and changed imenu.el pgg-def.el xterm.c David O'Toole: wrote ox-publish.el and co-wrote ob-lisp.el -David Pathakjee: changed minibuf.c +David Pathakjee: changed emacs-lisp/debug.el minibuf.c David Ponce: wrote bovine/grammar.el cedet.el comp.el java-tags.el mode-local.el recentf.el ruler-mode.el semantic/grammar.el @@ -1205,7 +1219,8 @@ Derek Upham: changed nxml-mode.el Detlev Zundel: wrote re-builder.el and changed buffer.c -Devon Sean McCullough: changed url-http.el comint.el ns-win.el +Devon Sean McCullough: changed url-http.el buff-menu.el comint.el + ns-win.el Dhruva Krishnamurthy: changed emacsclient.c fontset.c sound.c w32proc.c @@ -1290,7 +1305,7 @@ and co-wrote color.el and changed cus-edit.el dired.el faces.el files.el help-mode.el imenu.el info.el isearch.el ls-lisp.el menu-bar.el modes.texi mouse.el ange-ftp.el apropos.el bindings.el bookmark.el custom.el descr-text.el - dired.texi etags.el finder.el and 14 other files + dired.texi etags.el finder.el and 15 other files E. Choroba: changed simple.el @@ -1343,9 +1358,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] chartab-tests.el coding-tests.el doc-tests.el etags-tests.el rxvt.el tty-colors.el and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el - files.el fileio.c w32proc.c keyboard.c w32term.c files.texi text.texi - dispnew.c emacs.c frames.texi lisp.h dispextern.h process.c term.c - window.c and 1111 other files + files.el fileio.c keyboard.c w32proc.c files.texi w32term.c text.texi + dispnew.c emacs.c frames.texi lisp.h dispextern.h window.c process.c + term.c and 1126 other files Emanuele Giaquinta: changed configure.ac rxvt.el charset.c etags.c fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el @@ -1366,11 +1381,11 @@ and changed ada-stmt.el Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el tramp.el tramp.texi -Eric Abrahamsen: changed eieio-base.el nnimap.el registry.el - gnus-registry.el files.el files.texi windows.texi eieio-test-persist.el - eieio.el gnus-start.el nnir.el buffers.texi files-tests.el - gnus-bcklg.el gnus-group.el gnus-sum.el gnus.texi nnmairix.el org.el - org.texi ox-html.el ox-latex.el +Eric Abrahamsen: changed eieio-base.el registry.el nnimap.el + gnus-registry.el files.el files.texi gnus-sum.el nnir.el windows.texi + eieio-test-persist.el eieio.el gnus-start.el gnus.texi buffers.texi + checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el nnmairix.el + org.el org.texi and 4 other files Eric Bélanger: changed image.c @@ -1548,8 +1563,8 @@ Ferenc Wagner: changed nnweb.el Filipe Cabecinhas: changed nsterm.m -Filipp Gunbin: changed autorevert.el shell.el cc-menus.el dired-aux.el - info.el info.texi +Filipp Gunbin: changed autorevert.el shell.el auth-source-tests.el + auth-source.el cc-menus.el dired-aux.el info.el info.texi Flemming Hoejstrup Hansen: changed forms.el @@ -1655,6 +1670,8 @@ Gary Delp: wrote mailpost.el (public domain) Gary D. Foster: wrote crisp.el scroll-all.el and changed gnus-group.el gnus-topic.el +Gary Fredericks: changed window.el + Gary Howell: changed server.el Gary Oberbrunner: changed gud.el @@ -1668,11 +1685,11 @@ G Dinesh Dutt: changed etags.el Geert Kloosterman: changed which-func.el Gemini Lasswell: wrote edebug-tests.el kmacro-tests.el testcover-tests.el -and changed edebug.el cl-macs.el cl-generic.el ert-x.el +and changed edebug.el cl-macs.el cl-generic.el ert-x.el cl-print.el edebug-test-code.el edebug.texi eieio-compat.el generator.el subr.el - autorevert-tests.el filenotify-tests.el generator-tests.el kmacro.el - lread.c map-tests.el map.el pcase.el rst.el ses.el subr-tests.el - subr-x-tests.el and 4 other files + autorevert-tests.el cl-print-tests.el eieio.texi emacs-lisp/debug.el + eval-tests.el eval.c filenotify-tests.el generator-tests.el kmacro.el + lread.c map-tests.el and 10 other files Geoff Gole: changed align.el ibuffer.el whitespace.el @@ -1727,9 +1744,9 @@ Giuseppe Scrivano: changed browse-url.el buffer.c configure.ac sysdep.c Glenn Morris: wrote check-declare.el f90-tests.el vc-bzr-tests.el and changed configure.ac Makefile.in src/Makefile.in calendar.el diary-lib.el lisp/Makefile.in files.el rmail.el make-dist - progmodes/f90.el bytecomp.el simple.el authors.el emacs.texi - misc/Makefile.in admin.el startup.el lib-src/Makefile.in ack.texi - display.texi cal-menu.el and 1675 other files + progmodes/f90.el bytecomp.el simple.el authors.el admin.el emacs.texi + misc/Makefile.in startup.el lib-src/Makefile.in ack.texi display.texi + cal-menu.el and 1681 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -1775,7 +1792,7 @@ Grégory Mounié: changed man.el Gregory Neil Shapiro: changed mailabbrev.el -Gregor Zattler: changed emacs-lisp-intro.texi +Gregor Zattler: changed eshell.texi emacs-lisp-intro.texi Greg Stark: changed gnus-ems.el timezone.el @@ -1974,8 +1991,8 @@ Ivan Radanov Ivanov: changed quail/cyrillic.el Ivan Shmakov: changed eww.el shr.el desktop.el eww.texi faces.el files.el cus-dep.el descr-text.el diff-mode.el enriched.el erc-track.el - facemenu.el files.texi misearch.el nndoc.el simple.el tar-mode.el - tcl.el tex-mode.el url-cookie.el + facemenu.el files.texi iso-transl.el misearch.el nndoc.el simple.el + tar-mode.el tcl.el tex-mode.el url-cookie.el Ivan Vilata i Balaguer: changed org-clock.el org.texi @@ -2122,7 +2139,7 @@ Jay Belanger: changed calc.texi calc.el calc-ext.el calc-units.el Jay K. Adams: wrote jka-cmpr-hook.el jka-compr.el -Jay Kamat: changed erc-goodies.el +Jay Kamat: changed erc-goodies.el esh-opt.el Jay McCarthy: changed org-colview.el @@ -2134,6 +2151,7 @@ and changed idlw-rinfo.el idlw-toolbar.el comint.el idlwave.texi vc.el mouse.el Jean-Christophe Helary: changed ns-win.el strings.texi subr-x.el + ucs-normalize.el Jean Haidouk: changed latin-alt.el latin-post.el latin-pre.el @@ -2376,6 +2394,8 @@ John Paul Wallington: changed ibuffer.el ibuf-ext.el subr.el help-fns.el bytecomp.el cus-theme.el font-lock.el hexl.el ibuf-macs.el info.el minibuf.c re-builder.el simple.el startup.el and 135 other files +John Shahid: changed easy-mmode.el term.c termhooks.h terminal.c + John Sullivan: changed window.c John Tobey: changed gud.el @@ -2415,6 +2435,9 @@ Jonathan I. Kamens: changed pop.c movemail.c rmail.el configure.ac b2m.pl vc.el gnus-sum.el jka-compr.el rmailout.el rnewspost.el sendmail.el simple.el timezone.el vc-hooks.el +Jonathan Kyle Mitchell: changed em-dirs.el em-ls.el em-unix.el esh-cmd.el + esh-ext.el + Jonathan Leech-Pepin: wrote ox-texinfo.el Jonathan Marchand: changed cpp-root.el @@ -2438,6 +2461,8 @@ Joost Diepenmaat: changed org.el Joost Kremers: changed reftex-toc.el +Jordan Wilson: changed doc-view.el + Jorge A. Alfaro-Murillo: changed message.el Jorgen Schäfer: wrote erc-autoaway.el erc-goodies.el erc-spelling.el @@ -2488,7 +2513,7 @@ Juanma Barranquero: wrote emacs-lock.el frameset.el keymap-tests.el and changed subr.el desktop.el w32fns.c server.el emacsclient.c simple.el faces.el files.el bs.el help-fns.el w32term.c org.el xdisp.c keyboard.c w32.c buffer.c ido.el image.c window.c allout.el process.c - and 1134 other files + and 1140 other files Juan Pechiar: wrote ob-mscgen.el and changed ob-octave.el @@ -2531,9 +2556,9 @@ and changed tramp-gvfs.el tramp-sh.el comint.el em-unix.el esh-util.el Juri Linkov: wrote files-x.el misearch.el replace-tests.el and changed isearch.el info.el replace.el simple.el progmodes/grep.el - dired-aux.el dired.el progmodes/compile.el startup.el faces.el files.el + dired.el dired-aux.el progmodes/compile.el startup.el faces.el files.el menu-bar.el bindings.el display.texi descr-text.el desktop.el comint.el - image-mode.el ispell.el man.el cus-edit.el and 357 other files + image-mode.el ispell.el man.el cus-edit.el and 359 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h @@ -2590,9 +2615,10 @@ Karl Eichwalder: changed Makefile.in add-log.el bookmark.el dired-aux.el Karl Fogel: wrote bookmark.el mail-hist.el saveplace.el and co-wrote pcvs.el and changed simple.el files.el doc-view.el image-mode.el info.el - vc-svn.el CONTRIBUTE INSTALL autogen.sh isearch.el menu-bar.el - simple-test.el subr.el tex-mode.el thingatpt.el INSTALL.REPO comint.el - configure configure.ac editfns.c electric-tests.el and 17 other files + vc-svn.el CONTRIBUTE INSTALL autogen.sh internals.texi isearch.el + menu-bar.el simple-test.el subr.el tex-mode.el thingatpt.el + INSTALL.REPO comint.el configure configure.ac editfns.c + and 18 other files Karl Heuer: changed keyboard.c lisp.h xdisp.c buffer.c xfns.c xterm.c alloc.c files.el frame.c configure.ac window.c data.c minibuf.c @@ -2622,9 +2648,9 @@ Károly Lőrentey: changed xfns.c bindings.el keyboard.c menu-bar.el Katsuhiro Hermit Endo: changed gnus-group.el gnus-spec.el 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-util.el gnus-group.el gnus-msg.el shr.el - mml.el rfc2047.el gnus-start.el gnus.el nntp.el gnus-agent.el nnrss.el +and changed gnus-art.el message.el gnus-sum.el mm-decode.el gnus.texi + mm-util.el mm-view.el gnus-util.el gnus-group.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 160 other files Kaushal Modi: changed files.el isearch.el apropos.el calc-yank.el @@ -2783,6 +2809,8 @@ Koichi Arakawa: changed w32proc.c Konrad Hinsen: wrote org-eshell.el and changed ob-python.el +Konstantin Kharlamov: changed prepare-commit-msg + Konstantin Kliakhandler: changed org-agenda.el Konstantin Novitsky: changed progmodes/python.el @@ -2858,7 +2886,7 @@ and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus-score.el rfc2047.el time-date.el and changed gnus.texi process.c gnus-ems.el subr.el gnutls.c gnus-cite.el pop3.el smtpmail.el display.texi files.el url-http.el gnus-xmas.el - simple.el auth-source.el image.c proto-stream.el gnutls.el dired.el + simple.el auth-source.el image.c gnutls.el proto-stream.el dired.el image.el text.texi nnrss.el and 318 other files Lars Rasmusson: changed ebrowse.c @@ -2901,8 +2929,8 @@ Leo Liu: wrote calc-tests.el pcmpl-x.el and changed octave.el ido.el rcirc.el files.el subr.el lisp-mode.el eldoc.el simple.el flymake.el smie.el abbrev.el progmodes/python.el cfengine.el cl-extra.el cl-macs.el emacs-lisp/cl-lib.el fns.c - progmodes/compile.el register.el rng-valid.el window.el - and 164 other files + progmodes/compile.el register.el rng-valid.el thingatpt.el + and 166 other files Leonard H. Tower Jr.: changed rnews.el rnewspost.el emacsbug.el rmailout.el sendmail.el @@ -3040,9 +3068,9 @@ and changed erc.el erc-dcc.el erc-speak.el Makefile erc-bbdb.el Mark A. Hershberger: changed xml.el nnrss.el mm-url.el cperl-mode.el isearch.el vc-bzr.el NXML-NEWS cc-mode.texi compilation.txt ede.texi - eieio.texi esh-mode.el flymake.el gnus-group.el misc/Makefile.in - nxml-mode.texi progmodes/compile.el progmodes/python.el programs.texi - schema and 6 other files + eieio.texi esh-mode.el flymake.el gnus-group.el menu-bar.el + misc/Makefile.in nxml-mode.texi progmodes/compile.el + progmodes/python.el programs.texi and 8 other files Mark Davies: changed amdx86-64.h configure configure.ac hp800.h lib-src/Makefile.in netbsd.h ralloc.c sh3el.h sort.el @@ -3113,7 +3141,7 @@ Markus Triska: wrote linum.el and changed bytecomp.el byte-opt.el doctor.el image-mode.el processes.texi calc-math.el emacs.c expand.el flymake.el flymake.texi flyspell.el handwrite.el internals.texi proced.el prolog.el ps-mode.el - speedbar.el subr.el tumme.el widget.texi xterm.c + speedbar.el subr.el text.texi tumme.el widget.texi and 3 other files Mark W. Eichin: changed keyboard.c xterm.c @@ -3146,7 +3174,7 @@ Martin Pohlack: changed iimage.el pc-select.el Martin Rudalics: changed window.el window.c windows.texi frame.c frames.texi w32fns.c xdisp.c xterm.c w32term.c frame.el xfns.c help.el buffer.c display.texi cus-start.el dispnew.c frame.h mouse.el nsfns.m - window.h gtkutil.c and 201 other files + window.h gtkutil.c and 203 other files Martin Stjernholm: wrote cc-bytecomp.el and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el @@ -3217,7 +3245,7 @@ Matthew Mundell: changed calendar.texi diary-lib.el files.texi objects.texi os.texi positions.texi searching.texi subr.el text.texi and 3 other files -Matthias Dahl: changed faces.el +Matthias Dahl: changed faces.el process.c process.h Matthias Förste: changed files.el @@ -3237,6 +3265,8 @@ Matt Hodges: changed textmodes/table.el faces.el iswitchb.el simple.el edebug.texi eldoc.el em-hist.el em-pred.el fixit.texi icon.el ido.el locate.el paragraphs.el pcomplete.el repeat.el and 3 other files +Mattias Engdegård: changed searching.texi subr.el + Matt Lundin: changed org-agenda.el org.el org-bibtex.el org-footnote.el ox-publish.el org-bbdb.el org-datetree.el org-gnus.el @@ -3249,6 +3279,11 @@ Matt Simmons: changed message.el Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el outline.el progmodes/compile.el rx.el simple.el startup.el +Mauro Aranda: changed autorevert.el cc-mode.texi control.texi dbus.texi + dired-x.texi eudc.texi files.texi functions.texi gnus-faq.texi + gnus.texi info.el modes.texi octave.el org.texi os.texi picture.el + pong.el positions.texi reftex.texi variables.texi + Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el Max Mikhanosha: changed org-agenda.el org-habit.el org.el @@ -3259,15 +3294,15 @@ Micah Anderson: changed spook.lines Michael Albinus: wrote autorevert-tests.el dbus-tests.el dbus.el filenotify-tests.el filenotify.el files-x-tests.el secrets.el - tramp-cmds.el tramp-compat.el tramp-ftp.el tramp-gvfs.el tramp-smb.el - tramp-tests.el url-tramp-tests.el url-tramp.el vc-tests.el xesam.el - zeroconf.el + shadowfile-tests.el tramp-cmds.el tramp-compat.el tramp-ftp.el + tramp-gvfs.el tramp-smb.el tramp-tests.el url-tramp-tests.el + url-tramp.el vc-tests.el xesam.el zeroconf.el and co-wrote tramp-cache.el tramp-sh.el tramp.el and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c file-notify-tests.el ange-ftp.el files.el dbus.texi files.texi autorevert.el tramp-fish.el kqueue.c tramp-gw.el tramp-imap.el os.texi configure.ac lisp.h gfilenotify.c inotify.c keyboard.c - and 217 other files + and 224 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h unexec.c @@ -3300,8 +3335,8 @@ Michael Gschwind: wrote iso-cvt.el Michael Harnois: changed nnimap.el -Michael Heerdegen: changed subr-x.el control.texi dired.el easy-mmode.el - eldoc.el pcase.el shr.el subr-x-tests.el wdired.el +Michael Heerdegen: changed subr-x.el control.texi dired-aux.el dired.el + easy-mmode.el eldoc.el pcase.el shr.el subr-x-tests.el wdired.el Michael Hoffman: changed term.el xterm.el @@ -3387,6 +3422,8 @@ and changed gnus-score.el Michihito Shigemura: changed sh-script.el +Miciah Masters: changed rcirc.el rcirc.texi + Microelectronics and Computer Technology Corporation: changed emacsclient.c etags.c lisp.h movemail.c rmail.el rmailedit.el rmailkwd.el rmailmsc.el rmailout.el rmailsum.el scribe.el server.el @@ -3410,8 +3447,8 @@ Mike Haertel: changed 7300.h Mike Kazantsev: changed erc-dcc.el -Mike Kupfer: changed mh-e.el emacs-mime.texi gnus-mh.el gnus.texi - mh-acros.el mh-comp.el mh-compat.el mh-e.texi mh-mime.el mh-utils.el +Mike Kupfer: changed mh-comp.el mh-e.el emacs-mime.texi gnus-mh.el + gnus.texi mh-acros.el mh-compat.el mh-e.texi mh-mime.el mh-utils.el Mike Lamb: changed em-unix.el esh-util.el pcmpl-unix.el @@ -3512,6 +3549,8 @@ Neal Ziring: co-wrote vi.el (public domain) Neil Mager: wrote appt.el +Neil Roberts: changed custom.texi files.el + Neil W. Van Dyke: wrote webjump.el Nelson H. F. Beebe: changed configure.ac @@ -3529,6 +3568,8 @@ Niall Mansfield: changed etags.c Nic Ferrier: changed ert.el tramp.el +Nicholas Drozd: changed calc.texi + Nicholas Maniscalco: changed term.el Nick Alcock: changed control.texi customize.texi display.texi files.el @@ -3538,6 +3579,8 @@ Nick Alcock: changed control.texi customize.texi display.texi files.el Nick Dokos: changed org-table.el ox.el icalendar.el mh-search.el org-mobile.el org.el ox-ascii.el url-cache.el +Nick Drozd: changed eww.el eww.texi + Nick Helm: changed eldoc.el help.el help.texi whitespace-tests.el whitespace.el @@ -3569,11 +3612,11 @@ Nicolas Graner: changed message.el Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el thunk-tests.el thunk.el and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el -and changed sequences.texi README configure.ac sed2v2.inp authors.el - emacs.png README.W32 emacs23.png arc-mode.el cl-extra.el emacs.svg - manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el emacs.ico - fns.c make-tarball.txt obarray-tests.el obarray.el HISTORY - and 34 other files +and changed README configure.ac sed2v2.inp sequences.texi authors.el + README.W32 emacs.png emacs23.png HISTORY arc-mode.el cl-extra.el + emacs.svg manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el + emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el + and 35 other files Nicolas Richard: wrote cl-seq-tests.el cmds-tests.el replace-tests.el and changed ffap.el package.el byte-run.el help.el keyboard.c landmark.el @@ -3605,7 +3648,7 @@ Nils Ackermann: changed message.el nnmh.el reftex-vars.el Nitish Chandra: changed simple.el -N. Jackson: changed emacs.texi +N. Jackson: changed emacs.texi forms.texi Noah Friedman: wrote eldoc.el rlogin.el type-break.el and co-wrote erc-dcc.el @@ -3616,11 +3659,11 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el -Noam Postavsky: changed progmodes/python.el lisp-mode.el xdisp.c - cl-macs.el emacs-lisp/debug.el data.c ert.el lisp-mode-tests.el - simple.el help-fns.el subr.el term.el bytecomp.el elisp-mode.el eval.c - ffap.el modes.texi search.c sh-script.el cl-preloaded.el cl-print.el - and 223 other files +Noam Postavsky: changed lisp-mode.el progmodes/python.el + lisp-mode-tests.el xdisp.c cl-macs.el term.el emacs-lisp/debug.el + bytecomp.el data.c simple.el ert.el help-fns.el processes.texi subr.el + modes.texi cl-print.el elisp-mode.el eval.c ffap.el search.c + sh-script.el and 259 other files Nobuyoshi Nakada: co-wrote ruby-mode.el @@ -3721,10 +3764,10 @@ and changed imenu.el make-mode.el Paul Eggert: wrote rcs2log and co-wrote cal-dst.el -and changed lisp.h configure.ac alloc.c process.c fileio.c xdisp.c - editfns.c sysdep.c image.c keyboard.c emacs.c xterm.c data.c lread.c +and changed lisp.h configure.ac alloc.c process.c fileio.c editfns.c + xdisp.c sysdep.c image.c keyboard.c emacs.c xterm.c data.c lread.c fns.c callproc.c Makefile.in gnulib.mk eval.c buffer.c frame.c - and 1596 other files + and 1608 other files Paul Fisher: changed fns.c @@ -3883,6 +3926,8 @@ and changed package.el pcmpl-unix.el subr.el Philip Jackson: wrote find-cmd.el org-irc.el +Philip K: changed ispell.el + Philippe Schnoebelen: wrote gomoku.el mpuz.el Philippe Vaucher: changed callint.c composite.el debugging.texi @@ -3898,21 +3943,21 @@ Philipp Rumpf: changed electric.el Philipp Stephani: wrote checkdoc-tests.el ediff-diff-tests.el eval-tests.el ido-tests.el lread-tests.el mouse-tests.el xt-mouse-tests.el -and changed emacs-module.c eval.c bytecomp.el emacs-module-tests.el - files.el lread.c nsterm.m configure.ac editfns.c mod-test.c alloc.c - electric.el gtkutil.c lisp.h electric-tests.el emacs.c macfont.m - test/Makefile.in xt-mouse.el Makefile bytecomp-tests.el - and 95 other files +and changed emacs-module.c eval.c bytecomp.el nsterm.m + emacs-module-tests.el files.el lread.c configure.ac editfns.c + mod-test.c alloc.c electric.el gtkutil.c lisp.h electric-tests.el + emacs.c macfont.m test/Makefile.in xt-mouse.el Makefile + bytecomp-tests.el and 96 other files Phillip Lord: wrote ps-print-tests.el and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile - Makefile.in viper-cmd.el elisp-mode-tests.el keyboard.c ldefs-clean.el - loadup.el autoload.el automated/Makefile.in build-zips.sh cmds.c - dired.el eieio-tests.el fileio.c htmlfontify.el - make-test-deps.emacs-lisp reftex-tests.el and 168 other files + Makefile.in viper-cmd.el README.W32 elisp-mode-tests.el keyboard.c + ldefs-clean.el loadup.el autoload.el automated/Makefile.in + build-zips.sh cmds.c dired.el eieio-tests.el fileio.c htmlfontify.el + make-test-deps.emacs-lisp and 168 other files -Phil Sainty: changed derived.el easy-mmode.el lisp.el package.el - progmodes/grep.el simple.el subword.el term.el +Phil Sainty: changed term.el derived.el easy-mmode.el lisp.el package.el + progmodes/grep.el simple.el subword.el Phil Sung: changed wdired.el dired.texi follow.el progmodes/python.el @@ -3920,7 +3965,7 @@ Pierre Lorenzon: changed eieio-custom.el Pierre Poissinger: changed charset.c -Pierre Téchoueyres: changed eieio-test-persist.el tramp-cmds.el +Pierre Téchoueyres: changed eieio-test-persist.el epg.el tramp-cmds.el Pieter E.J. Pareit: wrote mixal-mode.el @@ -3959,6 +4004,8 @@ Rafael Sepúlveda: changed TUTORIAL.es Raffael Mancini: changed misc.el +Raimon Grau: changed replace.el thingatpt.el + Rainer Orth: changed gtkutil.c lisp/Makefile.in Rainer Schöpf: changed osf1.h unexalpha.c alloc.c alpha.h buffer.c @@ -4096,7 +4143,7 @@ Rick Frankel: changed ox-html.el ob-sql.el org.texi Rick Sladkey: wrote backquote.el and changed gud.el intervals.c intervals.h simple.el -Rob Browning: changed tls.el configure.ac +Rob Browning: changed tls.el configure.ac ibuffer-tests.el tramp-tests.el Rob Christie: changed nsmenu.m @@ -4125,10 +4172,11 @@ Roberto Rodríguez: changed ada-mode.texi glossary.texi widget.texi Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el -Robert Pluim: changed gtkutil.c misc.texi vc-git.el xfns.c xterm.c - bindings.el configure.ac desktop.el dired-x.texi epa.texi gnus-agent.el - gnus-demon.el gnus.texi ido.el image-mode.el minibuf.c minibuf.texi - org-agenda.el process.c progmodes/grep.el project.el and 8 other files +Robert Pluim: changed gtkutil.c configure.ac files.texi dired-x.texi + filelock.c ftfont.c misc.texi process.c vc-git.el xfns.c xterm.c + bindings.el building.texi desktop.el efaq.texi epa.texi font.c + ftcrfont.c gnus-agent.el gnus-demon.el gnus-icalendar.el + and 22 other files Robert Thorpe: changed cus-start.el indent.el @@ -4245,7 +4293,7 @@ Sam Kendall: changed etags.c etags.el Sam Steingold: wrote gulp.el midnight.el and changed progmodes/compile.el cl-indent.el simple.el vc-cvs.el vc.el - mouse.el files.el font-lock.el tex-mode.el vc-hg.el ange-ftp.el + mouse.el vc-hg.el files.el font-lock.el tex-mode.el ange-ftp.el sgml-mode.el window.el add-log.el bindings.el bookmark.el bug-reference.el calendar.el cperl-mode.el diary-lib.el dired.el and 152 other files @@ -4293,6 +4341,8 @@ Scott Bender: co-wrote ns-win.el Scott Byer: co-wrote nnfolder.el and changed gnus-sum.el +Scott Corley: changed scroll.c + Scott Draves: wrote tq.el Scott Evans: changed rect.el @@ -4354,6 +4404,8 @@ and changed ob-maxima.el ob-octave.el Sergey Poznyakoff: changed rmail.el mh-mime.el rmail.texi smtpmail.el +Sergey Vinokurov: changed emacs-module-tests.el emacs-module.c mod-test.c + Sergio Durigan Junior: changed eudcb-bbdb.el gdb-mi.el Sergio Martinez: changed nnimap.el @@ -4381,8 +4433,8 @@ and changed gnus-art.el message.el gnus-sum.el gnus-msg.el gnus.el and 93 other files Shigeru Fukaya: wrote bytecomp-tests.el -and changed apropos.el byte-opt.el bytecomp.el elint.el rx-new.el ses.el - subr.el texinfmt.el +and changed apropos.el bs.el byte-opt.el bytecomp.el elint.el rx-new.el + ses.el subr.el texinfmt.el Shinichirou Sugou: changed etags.c @@ -4407,7 +4459,8 @@ Simen Heggestøyl: wrote color-tests.el css-mode-tests.el dom-tests.el ring-tests.el rot13-tests.el sql-tests.el and changed css-mode.el json-tests.el json.el sgml-mode.el css-mode.css scss-mode.scss ring.el rot13.el scheme.el sql.el color.el files.el - js.el less-css-mode.el less-css-mode.less maintaining.texi + js.el less-css-mode.el less-css-mode.less maintaining.texi midnight.el + seq.el sequences.texi Simon Josefsson: wrote dig.el dns-mode.el flow-fill.el fringe.el imap.el mml-sec.el mml-smime.el password-cache.el rfc2104.el sieve-mode.el @@ -4459,6 +4512,9 @@ Stefan Bruda: co-wrote prolog.el Stefan Guath: changed find-dired.el +Stefan Kangas: changed bookmark.el buffer.c fileio.c package-x.el + package.texi windows.texi winner.el + Stefan Merten: co-wrote rst.el Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el bzrmerge.el @@ -4471,8 +4527,8 @@ Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el bzrmerge.el and co-wrote font-lock.el gitmerge.el pcvs.el and changed subr.el simple.el keyboard.c lisp.h bytecomp.el files.el vc.el cl-macs.el xdisp.c alloc.c eval.c sh-script.el - progmodes/compile.el keymap.c tex-mode.el newcomment.el window.c - buffer.c lisp-mode.el lread.c vc-hooks.el and 1280 other files + progmodes/compile.el keymap.c tex-mode.el newcomment.el buffer.c + window.c lisp-mode.el lread.c vc-hooks.el and 1283 other files Stefano Facchini: changed gtkutil.c @@ -4503,10 +4559,10 @@ Stephen A. Wood: changed fortran.el Stephen Berman: wrote todo-mode-tests.el and co-wrote todo-mode.el and changed todo-mode.texi diary-lib.el dired-tests.el doc-view.el - files.el minibuffer.el dired.el frames.texi hl-line.el info.el - menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes allout.el - artist.el compile.texi cus-start.el descr-text.el dframe.el - and 39 other files + files.el minibuffer.el wdired-tests.el dired.el frames.texi hl-line.el + info.el menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes + TUTORIAL allout.el artist.el compile.texi cus-start.el + and 43 other files Stephen C. Gilardi: changed configure.ac @@ -4527,8 +4583,8 @@ and changed time-stamp.el mh-e.el mh-comp.el mh-utils.el mh-customize.el Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el Stephen Leake: wrote elisp-mode-tests.el -and changed ada-mode.el ada-xref.el elisp-mode.el mode-local.el xref.el - CONTRIBUTE vc-mtn.el window.el ada-mode.texi ada-prj.el cedet-global.el +and changed ada-mode.el ada-xref.el elisp-mode.el mode-local.el window.el + xref.el CONTRIBUTE vc-mtn.el ada-mode.texi ada-prj.el cedet-global.el ede/generic.el ada-stmt.el cl-generic.el ede/locate.el files.texi project.el windows.texi INSTALL.REPO INSTALL.W64 align.el and 21 other files @@ -4702,7 +4758,7 @@ and co-wrote hideshow.el and changed ewoc.el vc.el info.el processes.texi zone.el lisp-mode.el scheme.el text.texi vc-rcs.el display.texi fileio.c files.el vc-git.el MORE.STUFF TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el - diff-mode.el dired.el and 163 other files + diff-mode.el dired.el and 169 other files Thierry Banel: co-wrote ob-C.el and changed calc-arith.el @@ -4801,13 +4857,15 @@ Tino Calancha: wrote buff-menu-tests.el ediff-ptch-tests.el em-ls-tests.el ffap-tests.el hi-lock-tests.el ls-lisp-tests.el register-tests.el rmc-tests.el and changed ibuffer.el dired-tests.el ibuf-ext.el dired.el dired-aux.el - simple.el ibuffer-tests.el ls-lisp.el diff-mode.el ibuf-macs.el - cl-seq.el dired-x.el dired.texi ediff-ptch.el em-ls.el files.el - replace.el buff-menu.el cl.texi ediff-init.el files-tests.el - and 82 other files + replace.el simple.el ibuffer-tests.el ls-lisp.el diff-mode.el + ibuf-macs.el replace-tests.el cl-seq.el dired-x.el dired.texi + ediff-ptch.el em-ls.el files.el buff-menu.el cl.texi ediff-init.el + and 83 other files Titus von der Malsburg: changed simple.el window.el +Tobias Bading: changed progmodes/compile.el + Tobias C. Rittweiler: changed font-lock.el searching.texi sendmail.el Tobias Ringström: changed etags.c @@ -4835,6 +4893,8 @@ Tom Hageman: changed etags.c Tom Houlder: wrote mantemp.el +Tom Levy: changed sequences.texi + Tommi Vainikainen: changed gnus-sum.el message.el mml-sec.el Tomohiko Morioka: co-wrote mm-bodies.el mm-decode.el mm-encode.el @@ -4890,6 +4950,8 @@ Trent W. Buck: changed rcirc.el remember.el rx.el Trevor Murphy: changed gnus.texi nnimap.el org.el +Trevor Spiteri: changed progmodes/grep.el + Trey Jackson: changed spam-stat.el Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el @@ -4932,9 +4994,9 @@ and changed org-gnus.el smime.el Ulrich Leodolter: changed w32proc.c Ulrich Müller: changed configure.ac lib-src/Makefile.in src/Makefile.in - version.el doctor.el emacs.1 files.el gamegrid.el gud.el server.el - ChgPane.c ChgSel.c HELLO INSTALL Makefile.in XMakeAssoc.c authors.el - bytecomp.el calc-units.el case-table.el configure and 39 other files + version.el calc-units.el doctor.el emacs.1 files.el gamegrid.el gud.el + server.el ChgPane.c ChgSel.c HELLO INSTALL Makefile.in XMakeAssoc.c + authors.el bytecomp.el case-table.el configure and 39 other files Ulrich Neumerkel: changed xterm.c @@ -4973,6 +5035,8 @@ Vibhav Pant: changed bytecomp.el byte-opt.el bytecode.c bytecomp-tests.el emacs-module.c erc-backend.el erc.el eshell.texi fns.c hangul.el image.c lisp.h lread.c print.c profiler.c xterm.c +Victor J. Orlikowski: changed erc-dcc.el + Victor Zandy: wrote zone.el Viktor Rosenfeld: changed ob-sql.el org.el @@ -4999,8 +5063,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 -Vitalie Spinu: changed comint.el message.el ob-R.el ob-core.el - ob-tangle.el subr.el +Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el + ob-core.el ob-tangle.el subr.el Vitaly Takmazov: changed emacs-x64.manifest emacs-x86.manifest @@ -5032,6 +5096,8 @@ Warren Lynn: changed tramp-sh.el Wei-Wei Guo: co-wrote rst.el +Wenjamin Petrenko: changed files-x.el + Werner Benger: changed keyboard.c Werner Lemberg: wrote sisheng.el vntelex.el @@ -5142,7 +5208,7 @@ Yair F: changed hebrew.el Yamamoto Mitsuharu: wrote uvs.el and changed macterm.c macfns.c mac-win.el mac.c macterm.h macmenu.c xterm.c macgui.h image.c xdisp.c keyboard.c macselect.c w32term.c - src/Makefile.in unexmacosx.c xfns.c configure.ac emacs.c macfont.m + macfont.m configure.ac src/Makefile.in unexmacosx.c xfns.c emacs.c darwin.h dispnew.c and 97 other files Yann Dirson: changed imenu.el @@ -5179,7 +5245,7 @@ Yu-ji Hosokawa: changed README.W32 Yukihiro Matsumoto: co-wrote ruby-mode.el -Yuri D'elia: changed message.el +Yuri D'elia: changed message.el package.el Yuri Karaban: changed pop3.el diff --git a/etc/CALC-NEWS b/etc/CALC-NEWS index 04baf41148e1..07167c956615 100644 --- a/etc/CALC-NEWS +++ b/etc/CALC-NEWS @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Calc is an advanced desk calculator for GNU Emacs. diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1 index 09a282491115..24b8b39ec1c5 100644 --- a/etc/ChangeLog.1 +++ b/etc/ChangeLog.1 @@ -6891,7 +6891,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/etc/DEBUG b/etc/DEBUG index 50417af57665..377cfcfc8f7b 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -1,6 +1,6 @@ Debugging GNU Emacs -Copyright (C) 1985, 2000-2018 Free Software Foundation, Inc. +Copyright (C) 1985, 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. ** Preliminaries diff --git a/etc/DISTRIB b/etc/DISTRIB index 854b1c8cc14a..4b8e4de2ca59 100644 --- a/etc/DISTRIB +++ b/etc/DISTRIB @@ -1,7 +1,7 @@ -*- text -*- GNU Emacs availability information -Copyright (C) 1986-1993, 1995, 1998, 2000-2018 Free Software Foundation, +Copyright (C) 1986-1993, 1995, 1998, 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 864efa44e71f..5331b9c911ec 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -1,6 +1,6 @@ ERC NEWS -*- outline -*- -Copyright (C) 2006-2018 Free Software Foundation, Inc. +Copyright (C) 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. * For changes after ERC 5.3, see the main Emacs NEWS file diff --git a/etc/ETAGS.EBNF b/etc/ETAGS.EBNF index 23bb9445edd1..db967091e5e1 100644 --- a/etc/ETAGS.EBNF +++ b/etc/ETAGS.EBNF @@ -94,7 +94,7 @@ those. ===================== end of discussion of tag names ===================== -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/ETAGS.README b/etc/ETAGS.README index 0be4d44a8997..82d4314f673f 100644 --- a/etc/ETAGS.README +++ b/etc/ETAGS.README @@ -28,7 +28,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2018 Free Software +Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2019 Free Software Foundation, Inc. This file is not considered part of GNU Emacs. diff --git a/etc/GNUS-NEWS b/etc/GNUS-NEWS index 2ca5a9d7e2da..a8b03857bd2c 100644 --- a/etc/GNUS-NEWS +++ b/etc/GNUS-NEWS @@ -1,6 +1,6 @@ GNUS NEWS -- history of user-visible changes. -Copyright (C) 1999-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Gnus bug reports to bugs@gnus.org. diff --git a/etc/HELLO b/etc/HELLO index 2c95e211369b..f424a2ab8aa4 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -75,7 +75,7 @@ Korean ($(CGQ1[(B) $(C>H3gGO<H3gGO=J4O1n(B -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -96,4 +96,5 @@ along with GNU Emacs. If not, see . ;;; tab-width: 32 ;;; bidi-display-reordering: t ;;; coding: iso-2022-7bit +;;; inhibit-compacting-font-caches: t ;;; End: diff --git a/etc/HISTORY b/etc/HISTORY index b239904253bd..6cda28d15a63 100644 --- a/etc/HISTORY +++ b/etc/HISTORY @@ -216,6 +216,10 @@ GNU Emacs 25.3 (2017-09-11) emacs-25.3 GNU Emacs 26.1 (2018-05-28) emacs-26.1 +GNU Emacs 26.2 (2019-04-12) emacs-26.2 + +GNU Emacs 26.3 (2019-08-28) emacs-26.3 + ---------------------------------------------------------------------- This file is part of GNU Emacs. diff --git a/etc/MACHINES b/etc/MACHINES index 0b736fb42742..2cb1bfd2644e 100644 --- a/etc/MACHINES +++ b/etc/MACHINES @@ -1,6 +1,6 @@ Emacs machines list -Copyright (C) 1989-1990, 1992-1993, 1998, 2001-2018 Free Software +Copyright (C) 1989-1990, 1992-1993, 1998, 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS index f59823a1c1aa..def0af158832 100644 --- a/etc/MH-E-NEWS +++ b/etc/MH-E-NEWS @@ -1,6 +1,6 @@ * COPYRIGHT -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. * Changes in MH-E 8.6 diff --git a/etc/NEWS b/etc/NEWS index 578b9b8d9564..61d5115cdc5f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1,10 +1,10 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2016-2018 Free Software Foundation, Inc. +Copyright (C) 2016-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -Please send Emacs bug reports to bug-gnu-emacs@gnu.org. -If possible, use M-x report-emacs-bug. +Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. +If possible, use 'M-x report-emacs-bug'. This file is about changes in Emacs version 26. @@ -13,61 +13,108 @@ See files NEWS.25, NEWS.24, ..., NEWS.18, and NEWS.1-17 for changes in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' -with a prefix argument or by typing C-u C-h C-n. +with a prefix argument or by typing 'C-u C-h C-n'. + + +* Installation Changes in Emacs 26.4 + + +* Startup Changes in Emacs 26.4 + + +* Changes in Emacs 26.4 + + +* Editing Changes in Emacs 26.4 + + +* Changes in Specialized Modes and Packages in Emacs 26.4 + + +* New Modes and Packages in Emacs 26.4 + + +* Incompatible Lisp Changes in Emacs 26.4 + + +* Lisp Changes in Emacs 26.4 + + +* Changes in Emacs 26.4 on Non-Free Operating Systems + + +* Changes in Emacs 26.3 + +** New option 'help-enable-completion-auto-load'. +This allows disabling the new feature introduced in Emacs 26.1 which +loads files during completion of 'C-h f' and 'C-h v' according to +'definition-prefixes'. + +** Emacs now supports the new Japanese Era name. +The newly assigned codepoint U+32FF was added to the Unicode Character +Database compiled into Emacs. * Installation Changes in Emacs 26.2 ---- ** Building Emacs with the '--with-xwidgets' option now requires WebKit2. To build Emacs with xwidgets support, you will need to install the webkit2gtk-4.0 package; version 2.12 or later is required. (This change was actually made in Emacs 26.1, but was not called out in its NEWS.) - -* Startup Changes in Emacs 26.2 +** Installing Emacs now installs the emacs-module.h file. +The emacs-module.h file is now installed in the system-wide include +directory as part of the Emacs installation. This allows to build +Emacs modules outside of the Emacs source tree. * Changes in Emacs 26.2 ---- ** Emacs is now compliant with the latest version 11.0 of the Unicode Standard. ---- ** New variable 'xft-ignore-color-fonts'. Default t means don't try to load color fonts when using Xft, as they often cause crashes. Set it to nil if you really need those fonts. - -* Editing Changes in Emacs 26.2 - * Changes in Specialized Modes and Packages in Emacs 26.2 +** Dired + +*** The 'Z' command on a directory name compresses all of its files. +It produces a compressed '.tar.gz' archive with all the files in the +directory and all of its subdirectories. For symmetry, 'Z' on a +'.tar.gz' or a '.tgz' archive extracts all the archived files into the +current directory; thus, typing 'Z' on a '.tar.gz' archive created by +a previous 'Z' command will extract the archived files into a +directory whose name is the archive name sans the '.tar.gz' extension. +(This change was actually made in Emacs 25.1 but was only +partially called out in its NEWS; 'tgz' handling was added in 26.1.) + ** Ibuffer ---- *** New toggle 'ibuffer-do-toggle-lock', bound to 'L'. ** Imenu ---- *** The value for 'imenu-auto-rescan-maxout' has been increased to 600000. ** Gnus ---- *** Mailutils movemail will now be used if found at runtime. -The default value of mail-source-movemail-program is now "movemail". +The default value of 'mail-source-movemail-program' is now "movemail". This ensures that the movemail program from GNU Mailutils will be used if found in 'exec-path', even if it was not found at build time. To -use a different program, customize mail-source-movemail-program to the +use a different program, customize 'mail-source-movemail-program' to the absolute file name of the desired executable. +** Shadowfile + +*** shadowfile.el has been rewritten to support Tramp file names. + ** Shell mode ---- *** Shell mode buffers now have 'scroll-conservatively' set to 101. This is so as to better emulate the scrolling behavior of a text terminal when new output is added to the screen buffer. To get back @@ -78,13 +125,11 @@ in its NEWS.) ** VC ---- *** VC support for Mercurial was improved. Emacs now avoids invoking 'hg' as much as possible, for faster operation. (This and the following changes were actually made in Emacs 26.1, but were not called out in its NEWS.) ---- **** New vc-hg options. The new option 'vc-hg-parse-hg-data-structures' controls whether vc-hg will try parsing the Mercurial data structures directly instead of @@ -96,58 +141,60 @@ The new option 'vc-hg-use-file-version-for-mode-line-version' controls whether the version shown on the mode line is that of the visited file or of the repository working copy. ---- -**** Display of Mercurial revisions in the mode-line has changed. +**** Display of Mercurial revisions in the mode line has changed. Previously, the mode line displayed the local number (1, 2, 3, ...) of the revision. Starting with Emacs 26.1, the default has changed, and it now shows the global revision number, in the form of its changeset hash value. To get back the previous behavior, customize the new option 'vc-hg-symbolic-revision-styles' to the value '("{rev}")'. ---- -** shadowfile.el has been rewritten to support Tramp file names. - - -* New Modes and Packages in Emacs 26.2 - * Incompatible Lisp Changes in Emacs 26.2 ---- ** shadowfile config files have changed their syntax. Existing files "~/.emacs.d/shadows" and "~/.emacs.d/shadow_todo" must be removed prior using the changed 'shadow-*' commands. -+++ ** 'thread-alive-p' has been renamed to 'thread-live-p'. The old name is an alias of the new name. Future Emacs version will obsolete it. +** 'while-no-input' does not return due to input from subprocesses. +Input that arrived from subprocesses while some code executed inside +the 'while-no-input' form injected an internal buffer-switch event +that counted as input and would cause 'while-no-input' to return, +perhaps prematurely. These buffer-switch events are now by default +ignored by 'while-no-input'; if you need to get the old behavior, +remove 'buffer-switch' from the list of events in +'while-no-input-ignore-events'. + * Lisp Changes in Emacs 26.2 -+++ ** The new function 'read-answer' accepts either long or short answers depending on the new customizable variable 'read-answer-short'. -+++ ** New function 'assoc-delete-all'. Like 'assq-delete-all', but uses 'equal' for comparison. ---- ** The function 'thing-at-point' behaves as before Emacs 26.1. The behavior of 'thing-at-point' when called with argument 'list' has changed in Emacs 26.1, in that it didn't consider text inside comments and strings as a potential list. This change is now reverted, and 'thing-at-point' behaves like it did before Emacs 26.1. -To cater to use cases where comments and strings are to be ignored +** To cater to use cases where comments and strings are to be ignored when looking for a list, the function 'list-at-point' now takes an optional argument to do so. * Changes in Emacs 26.2 on Non-Free Operating Systems +** macOS features can now be detected at run-time as well as at +build-time. See nextstep/INSTALL for details. +(This change was actually made in Emacs 26.1, but was undocumented and +not called out in its NEWS.) + * Installation Changes in Emacs 26.1 @@ -159,11 +206,11 @@ version 2.6.6 or later. ** The new option 'configure --with-mailutils' causes Emacs to rely on GNU Mailutils to retrieve email. It is recommended, and is the -default if GNU Mailutils is installed. When --with-mailutils is not +default if GNU Mailutils is installed. When '--with-mailutils' is not in effect, the Emacs build procedure by default continues to build and install a limited 'movemail' substitute that retrieves POP3 email only via insecure channels. To avoid this problem, use either ---with-mailutils or --without-pop when configuring; --without-pop +'--with-mailutils' or '--without-pop' when configuring; '--without-pop' is the default on platforms other than native MS-Windows. ** The new option 'configure --enable-gcc-warnings=warn-only' causes diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index 63ef9a385597..f215542a5290 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -1,10 +1,10 @@ GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 -Copyright (C) 1985-1986, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1985-1986, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs versions 1 through 17. +This file is about changes in Emacs versions 1 through 17. diff --git a/etc/NEWS.18 b/etc/NEWS.18 index 153c2f7a0a7b..8d30d549aea4 100644 --- a/etc/NEWS.18 +++ b/etc/NEWS.18 @@ -1,10 +1,10 @@ GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 -Copyright (C) 1988, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1988, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs version 18. +This file is about changes in Emacs version 18. diff --git a/etc/NEWS.19 b/etc/NEWS.19 index 12432eacf79f..617248e31ad2 100644 --- a/etc/NEWS.19 +++ b/etc/NEWS.19 @@ -1,10 +1,10 @@ GNU Emacs NEWS -- history of user-visible changes. 1992. -Copyright (C) 1993-1995, 2001, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1993-1995, 2001, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs versions 19. +This file is about changes in Emacs versions 19. diff --git a/etc/NEWS.20 b/etc/NEWS.20 index 31e640fa94e8..ff687015ccab 100644 --- a/etc/NEWS.20 +++ b/etc/NEWS.20 @@ -1,13 +1,13 @@ GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 -Copyright (C) 1999-2001, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2001, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. If possible, use M-x report-emacs-bug. -This file is about changes in emacs version 20. +This file is about changes in Emacs version 20. diff --git a/etc/NEWS.21 b/etc/NEWS.21 index ea4f4212ee00..d078fb111395 100644 --- a/etc/NEWS.21 +++ b/etc/NEWS.21 @@ -1,10 +1,10 @@ GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 -Copyright (C) 2000-2018 Free Software Foundation, Inc. +Copyright (C) 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs version 21. +This file is about changes in Emacs version 21. diff --git a/etc/NEWS.22 b/etc/NEWS.22 index 26054d2c397d..675b14432aac 100644 --- a/etc/NEWS.22 +++ b/etc/NEWS.22 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.23 b/etc/NEWS.23 index 181dad7bf4c4..bbc81d2889c0 100644 --- a/etc/NEWS.23 +++ b/etc/NEWS.23 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.24 b/etc/NEWS.24 index 9ace7ce541f9..049005306fd5 100644 --- a/etc/NEWS.24 +++ b/etc/NEWS.24 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2010-2018 Free Software Foundation, Inc. +Copyright (C) 2010-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. @@ -1117,6 +1117,8 @@ a non-nil `interactive-only' property. The value, if non-nil, is a regexp that specifies what to trim from the start and end of each substring. +** New function `delete-consecutive-dups'. + ** Completion *** The separator used by `completing-read-multiple' is now a regexp. diff --git a/etc/NEWS.25 b/etc/NEWS.25 index 4ae5eceebec9..d45f1ddabedc 100644 --- a/etc/NEWS.25 +++ b/etc/NEWS.25 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2014-2018 Free Software Foundation, Inc. +Copyright (C) 2014-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. @@ -452,6 +452,11 @@ specified message types for the respective specified targets. *** Nick completion is now case-insensitive again after inadvertently being made case-sensitive in Emacs 24.2. +** Rcirc + +*** Rcirc now supports automatic reconnection. +Set new user option 'rcirc-reconnect-delay' to non-zero to enable it. + ** MPC *** New commands, key binds, and menu items. diff --git a/etc/NEXTSTEP b/etc/NEXTSTEP index f4f2c2e1507e..e5555a95de20 100644 --- a/etc/NEXTSTEP +++ b/etc/NEXTSTEP @@ -1,4 +1,4 @@ -Copyright (C) 2008-2018 Free Software Foundation, Inc. +Copyright (C) 2008-2019 Free Software Foundation, Inc. See the end of the file for license conditions. This file contains information about GNU Emacs on "Nextstep" platforms. diff --git a/etc/NXML-NEWS b/etc/NXML-NEWS index 250ee1779411..8bae9b0ab04e 100644 --- a/etc/NXML-NEWS +++ b/etc/NXML-NEWS @@ -1,4 +1,4 @@ -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 013c7b13995d..249750171b53 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -3,7 +3,7 @@ ORG NEWS -- history of user-visible changes. -*- mode: org; coding: utf-8 -*- #+LINK: doc https://orgmode.org/worg/doc.html#%s #+LINK: git https://code.orgmode.org/bzg/org-mode/commit/%s -Copyright (C) 2012-2018 Free Software Foundation, Inc. +Copyright (C) 2012-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Org bug reports to mailto:emacs-orgmode@gnu.org. diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 7dfafe04deb1..b3f1d70858ad 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -1,6 +1,6 @@ Known Problems with GNU Emacs -Copyright (C) 1987-1989, 1993-1999, 2001-2018 Free Software Foundation, +Copyright (C) 1987-1989, 1993-1999, 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -1850,6 +1850,12 @@ term/xterm.el) for more details. ** GNU/Linux +*** GNU/Linux: profiler-report outputs nothing. + +A few versions of the Linux kernel have timer bugs that break CPU +profiling; see Bug#34235. To fix the problem, upgrade to one of the +kernel versions 4.14.97, 4.19.19, or 4.20.6, or later. + *** GNU/Linux: Process output is corrupted. There is a bug in Linux kernel 2.6.10 PTYs that can cause emacs to @@ -2616,6 +2622,13 @@ please call support for your X-server and see if you can get a fix. If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here. +* Runtime problems specific to macOS + +** macOS doesn't come with libxpm, so only XPM3 is supported. + +Libxpm is available for macOS as part of the XQuartz project. + + * Build-time problems ** Configuration diff --git a/etc/README b/etc/README index 9a85ce1145a3..ca6f38eec3c5 100644 --- a/etc/README +++ b/etc/README @@ -7,5 +7,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: emacs.icon Author: Sun Microsystems, Inc - Copyright (C) 1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/TERMS b/etc/TERMS index cea5932c7146..19b875769bd5 100644 --- a/etc/TERMS +++ b/etc/TERMS @@ -1,4 +1,4 @@ -Copyright (C) 1999, 2001-2018 Free Software Foundation, Inc. +Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. See the end of the file for copying permissions. This file describes what you must or might want to do to termcap entries diff --git a/etc/TODO b/etc/TODO index de579746ac73..ccb82cd296d1 100644 --- a/etc/TODO +++ b/etc/TODO @@ -1,6 +1,6 @@ Emacs TODO List -*-outline-*- -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/charsets/README b/etc/charsets/README index 6366cf77ff9a..0cf0368ff0b3 100644 --- a/etc/charsets/README +++ b/etc/charsets/README @@ -1,6 +1,6 @@ # README file for charset mapping files in this directory. -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2019 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) # Registration Number H13PRO009 diff --git a/etc/compilation.txt b/etc/compilation.txt index 00bd0ebfeca2..eccdfa737f0a 100644 --- a/etc/compilation.txt +++ b/etc/compilation.txt @@ -625,7 +625,7 @@ Compilation segmentation fault at Thu Jul 13 10:55:49 Compilation finished at Thu Jul 21 15:02:15 -Copyright (C) 2004-2018 Free Software Foundation, Inc. +Copyright (C) 2004-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/edt-user.el b/etc/edt-user.el index 535b066a85d6..5aede6bfd8e2 100644 --- a/etc/edt-user.el +++ b/etc/edt-user.el @@ -1,6 +1,6 @@ ;;; edt-user.el --- Sample user customizations for Emacs EDT emulation -;; Copyright (C) 1986, 1992-1993, 2000-2018 Free Software Foundation, +;; Copyright (C) 1986, 1992-1993, 2000-2019 Free Software Foundation, ;; Inc. ;; Author: Kevin Gallagher diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb index 8a4d6485bf6c..e5916b3784fb 100644 --- a/etc/emacs-buffer.gdb +++ b/etc/emacs-buffer.gdb @@ -1,6 +1,6 @@ # emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps -# Copyright (C) 2005-2018 Free Software Foundation, Inc. +# Copyright (C) 2005-2019 Free Software Foundation, Inc. # Author: Noah Friedman # Created: 2005-04-28 diff --git a/etc/emacs.appdata.xml b/etc/emacs.appdata.xml index f4ef0e7adb7c..6898de3a0c79 100644 --- a/etc/emacs.appdata.xml +++ b/etc/emacs.appdata.xml @@ -1,5 +1,5 @@ - + org.gnu.emacs GFDL-1.3+ diff --git a/etc/enriched.txt b/etc/enriched.txt index 251b133eb8c0..0a9c4be9fc7a 100644 --- a/etc/enriched.txt +++ b/etc/enriched.txt @@ -239,7 +239,7 @@ it. -Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/forms/forms-d2.el b/etc/forms/forms-d2.el index 57ace61bbd3a..eeca3c0d2b78 100644 --- a/etc/forms/forms-d2.el +++ b/etc/forms/forms-d2.el @@ -1,6 +1,6 @@ ;;; forms-d2.el --- demo forms-mode -;; Copyright (C) 1991, 1994-1997, 2001-2018 Free Software Foundation, +;; Copyright (C) 1991, 1994-1997, 2001-2019 Free Software Foundation, ;; Inc. ;; Author: Johan Vromans diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index cc6f71d6dea3..d9ea4f6372c8 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -24,7 +24,7 @@ was done by moi, yours truly, your humble servant, Lars Magne Ingebrigtsen. If you have a WWW browser, you can investigate to your heart's delight at . -;; Copyright (C) 1995, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/etc/grep.txt b/etc/grep.txt index 75187b9a86c3..d01f994c9864 100644 --- a/etc/grep.txt +++ b/etc/grep.txt @@ -97,7 +97,7 @@ grep -nH -e "xyzxyz" ../info/* -Copyright (C) 2005-2018 Free Software Foundation, Inc. +Copyright (C) 2005-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/images/README b/etc/images/README index 34e145ed9a64..5989a7740360 100644 --- a/etc/images/README +++ b/etc/images/README @@ -27,19 +27,19 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: mh-logo.xpm Author: Satyaki Das - Copyright (C) 2003-2018 Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. Files: gnus.pbm Author: Luis Fernandes - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2019 Free Software Foundation, Inc. Files: splash.png, splash.svg, splash.pbm, splash.xpm Author: Francesc Rocher - Copyright (C) 2008-2018 Free Software Foundation, Inc. + Copyright (C) 2008-2019 Free Software Foundation, Inc. Files: checked.xpm, unchecked.xpm Author: Chong Yidong - Copyright (C) 2010-2018 Free Software Foundation, Inc. + Copyright (C) 2010-2019 Free Software Foundation, Inc. * The following icons are from GTK+ 2.x. They are not part of Emacs, but diff --git a/etc/images/checked.xpm b/etc/images/checked.xpm index 8d34be27e26c..6ec8c5dee886 100644 --- a/etc/images/checked.xpm +++ b/etc/images/checked.xpm @@ -1,5 +1,5 @@ /* XPM */ -/* Copyright (C) 2010-2018 Free Software Foundation, Inc. +/* Copyright (C) 2010-2019 Free Software Foundation, Inc. * * Author: Chong Yidong * diff --git a/etc/images/custom/README b/etc/images/custom/README index e28576af356f..498f16805ec9 100644 --- a/etc/images/custom/README +++ b/etc/images/custom/README @@ -6,5 +6,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES Files: down.xpm down-pushed.xpm right.xpm right-pushed.xpm Author: Juri Linkov -Copyright (C) 2008-2018 Free Software Foundation, Inc. +Copyright (C) 2008-2019 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/images/ezimage/README b/etc/images/ezimage/README index d30b35c68f68..512cfb9e35bb 100644 --- a/etc/images/ezimage/README +++ b/etc/images/ezimage/README @@ -7,5 +7,5 @@ Files: bits.xpm bitsbang.xpm box-minus.xpm box-plus.xpm tag-gt.xpm tag-minus.xpm tag-plus.xpm tag-type.xpm tag-v.xpm tag.xpm unlock.xpm Author: Eric M. Ludlam -Copyright (C) 1999-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2019 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/images/gnus/README b/etc/images/gnus/README index a6a5274faf9e..b41a94403d56 100644 --- a/etc/images/gnus/README +++ b/etc/images/gnus/README @@ -7,7 +7,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES Files: important.xpm, unimportant.xpm Author: Simon Josefsson -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm describe-group.pbm describe-group.xpm exit-gnus.pbm exit-gnus.xpm @@ -21,11 +21,11 @@ Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm unsubscribe.pbm unsubscribe.xpm uu-decode.pbm uu-decode.xpm uu-post.pbm uu-post.xpm Author: Luis Fernandes -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. Files: gnus.png, gnus.svg Author: Francesc Rocher - Copyright (C) 2008-2018 Free Software Foundation, Inc. + Copyright (C) 2008-2019 Free Software Foundation, Inc. * The following icons are from GNOME 2.x. They are not part of Emacs, diff --git a/etc/images/gnus/gnus.svg b/etc/images/gnus/gnus.svg index 4c1e9e8d58d7..ed70274326d1 100644 --- a/etc/images/gnus/gnus.svg +++ b/etc/images/gnus/gnus.svg @@ -1,7 +1,7 @@ replacement) search-string (nth (if replaced 4 3) elt) - next-replacement (nth (if replaced 3 4) elt) + last-replacement (nth (if replaced 3 4) elt) search-string-replaced search-string - next-replacement-replaced next-replacement + next-replacement-replaced last-replacement last-was-act-and-show nil) (when (and (= stack-idx stack-len) @@ -2612,18 +2614,23 @@ It must return a string." (setq real-match-data (save-excursion (goto-char (match-beginning 0)) - (looking-at search-string) + ;; We must quote the string (Bug#37073) + (looking-at (regexp-quote search-string)) (match-data t (nth 2 elt))) noedit (replace-match-maybe-edit - next-replacement nocasify literal + last-replacement nocasify literal noedit real-match-data backward) replace-count (1- replace-count) real-match-data (save-excursion (goto-char (match-beginning 0)) - (looking-at next-replacement) + (if regexp-flag + (looking-at last-replacement) + (looking-at (regexp-quote last-replacement))) (match-data t (nth 2 elt)))) + (when regexp-flag + (setq next-replacement (nth 4 elt))) ;; Set replaced nil to keep in loop (when (eq def 'undo-all) (setq replaced nil diff --git a/lisp/reposition.el b/lisp/reposition.el index 146fa9a4a8c8..22f9986efb5f 100644 --- a/lisp/reposition.el +++ b/lisp/reposition.el @@ -1,6 +1,6 @@ ;;; reposition.el --- center a Lisp function or comment on the screen -;; Copyright (C) 1991, 1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1994, 2001-2019 Free Software Foundation, Inc. ;; Author: Michael D. Ernst ;; Created: Jan 1991 diff --git a/lisp/reveal.el b/lisp/reveal.el index 2831c0cc0105..d5dc3acf79a9 100644 --- a/lisp/reveal.el +++ b/lisp/reveal.el @@ -1,6 +1,6 @@ ;;; reveal.el --- Automatically reveal hidden text at point -*- lexical-binding: t -*- -;; Copyright (C) 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 2000-2019 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: outlines diff --git a/lisp/rfn-eshadow.el b/lisp/rfn-eshadow.el index cf7199666052..0a65e9a7384d 100644 --- a/lisp/rfn-eshadow.el +++ b/lisp/rfn-eshadow.el @@ -1,6 +1,6 @@ ;;; rfn-eshadow.el --- Highlight `shadowed' part of read-file-name input text ;; -;; Copyright (C) 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 2000-2019 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: convenience minibuffer diff --git a/lisp/rot13.el b/lisp/rot13.el index c1de71fa5f89..8f4044deac5e 100644 --- a/lisp/rot13.el +++ b/lisp/rot13.el @@ -1,6 +1,6 @@ ;;; rot13.el --- display a buffer in ROT13 -*- lexical-binding: t -*- -;; Copyright (C) 1988, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1988, 2001-2019 Free Software Foundation, Inc. ;; Author: Howard Gayle ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/rtree.el b/lisp/rtree.el index 71ee0a13b904..ff160f207b26 100644 --- a/lisp/rtree.el +++ b/lisp/rtree.el @@ -1,6 +1,6 @@ ;;; rtree.el --- functions for manipulating range trees -;; Copyright (C) 2010-2018 Free Software Foundation, Inc. +;; Copyright (C) 2010-2019 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el index 2e2a589ecf11..ddf62d913d4e 100644 --- a/lisp/ruler-mode.el +++ b/lisp/ruler-mode.el @@ -1,6 +1,6 @@ ;;; ruler-mode.el --- display a ruler in the header line -;; Copyright (C) 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 2001-2019 Free Software Foundation, Inc. ;; Author: David Ponce ;; Maintainer: David Ponce diff --git a/lisp/savehist.el b/lisp/savehist.el index fbb5f533902f..795a3cab7449 100644 --- a/lisp/savehist.el +++ b/lisp/savehist.el @@ -1,6 +1,6 @@ ;;; savehist.el --- Save minibuffer history -;; Copyright (C) 1997, 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2005-2019 Free Software Foundation, Inc. ;; Author: Hrvoje Niksic ;; Maintainer: emacs-devel@gnu.org @@ -172,13 +172,30 @@ minibuffer history.") (define-minor-mode savehist-mode "Toggle saving of minibuffer history (Savehist mode). With a prefix argument ARG, enable Savehist mode if ARG is -positive, and disable it otherwise. If called from Lisp, enable -the mode if ARG is omitted or nil. +positive, and disable it otherwise. If called from Lisp, +also enable the mode if ARG is omitted or nil. When Savehist mode is enabled, minibuffer history is saved -periodically and when exiting Emacs. When Savehist mode is -enabled for the first time in an Emacs session, it loads the -previous minibuffer history from `savehist-file'. +to `savehist-file' periodically and when exiting Emacs. When +Savehist mode is enabled for the first time in an Emacs session, +it loads the previous minibuffer histories from `savehist-file'. +The variable `savehist-autosave-interval' controls the +periodicity of saving minibuffer histories. + +If `savehist-save-minibuffer-history' is non-nil (the default), +all recorded minibuffer histories will be saved. You can arrange +for additional history variables to be saved and restored by +customizing `savehist-additional-variables', which by default is +an empty list. For example, to save the history of commands +invoked via \\[execute-extended-command], add `command-history' to the list in +`savehist-additional-variables'. + +Alternatively, you could customize `savehist-save-minibuffer-history' +to nil, and add to `savehist-additional-variables' only those +history variables you want to save. + +To ignore some history variables, add their symbols to the list +in `savehist-ignored-variables'. This mode should normally be turned on from your Emacs init file. Calling it at any other time replaces your current minibuffer diff --git a/lisp/saveplace.el b/lisp/saveplace.el index b6a71166ffda..56cfce39c8e5 100644 --- a/lisp/saveplace.el +++ b/lisp/saveplace.el @@ -1,6 +1,6 @@ ;;; saveplace.el --- automatically save place in files -;; Copyright (C) 1993-1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2019 Free Software Foundation, Inc. ;; Author: Karl Fogel ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/sb-image.el b/lisp/sb-image.el index f467948dc79c..f44f2ed4572d 100644 --- a/lisp/sb-image.el +++ b/lisp/sb-image.el @@ -1,6 +1,6 @@ ;;; sb-image --- Image management for speedbar -;; Copyright (C) 1999-2003, 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 1999-2003, 2005-2019 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: file, tags, tools diff --git a/lisp/scroll-all.el b/lisp/scroll-all.el index dea15d58d854..08e8bc699b84 100644 --- a/lisp/scroll-all.el +++ b/lisp/scroll-all.el @@ -1,6 +1,6 @@ ;;; scroll-all.el --- scroll all buffers together minor mode -;; Copyright (C) 1997, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2019 Free Software Foundation, Inc. ;; Author: Gary D. Foster ;; Keywords: convenience scroll lock diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el index dd4a8aab0e2f..e864b41c7d29 100644 --- a/lisp/scroll-bar.el +++ b/lisp/scroll-bar.el @@ -1,6 +1,6 @@ ;;; scroll-bar.el --- window system-independent scroll bar support -;; Copyright (C) 1993-1995, 1999-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 1999-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: hardware diff --git a/lisp/scroll-lock.el b/lisp/scroll-lock.el index 2ce0f4578bfb..f3ab069b3ecf 100644 --- a/lisp/scroll-lock.el +++ b/lisp/scroll-lock.el @@ -1,6 +1,6 @@ ;;; scroll-lock.el --- Scroll lock scrolling. -;; Copyright (C) 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 2005-2019 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/select.el b/lisp/select.el index 698be837547d..f590025d8b9d 100644 --- a/lisp/select.el +++ b/lisp/select.el @@ -1,6 +1,6 @@ ;;; select.el --- lisp portion of standard selection support -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/server.el b/lisp/server.el index 270eff55dcd9..42329e853bae 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1,6 +1,6 @@ ;;; server.el --- Lisp code for GNU Emacs running as server process -*- lexical-binding: t -*- -;; Copyright (C) 1986-1987, 1992, 1994-2018 Free Software Foundation, +;; Copyright (C) 1986-1987, 1992, 1994-2019 Free Software Foundation, ;; Inc. ;; Author: William Sommerfeld @@ -255,7 +255,14 @@ are done with it in the server.") (defcustom server-name "server" "The name of the Emacs server, if this Emacs process creates one. The command `server-start' makes use of this. It should not be -changed while a server is running." +changed while a server is running. +If this is a file name with no leading directories, Emacs will +create a socket file by that name under `server-socket-dir' +if `server-use-tcp' is nil, else under `server-auth-dir'. +If this is an absolute file name, it specifies where the socket +file will be created. To have emacsclient connect to the same +socket, use the \"-s\" switch for local non-TCP sockets, and +the \"-f\" switch otherwise." :group 'server :type 'string :version "23.1") @@ -1614,7 +1621,14 @@ be a cons cell (LINENUMBER . COLUMNNUMBER)." (frame-terminal)))) 'nomini 'visible (selected-window)))) (condition-case nil - (switch-to-buffer next-buffer) + ;; If the client specified a new buffer position, + ;; treat that as an explicit point-move command, and + ;; override switch-to-buffer-preserve-window-point. + (let ((switch-to-buffer-preserve-window-point + (if filepos + nil + switch-to-buffer-preserve-window-point))) + (switch-to-buffer next-buffer)) ;; After all the above, we might still have ended up with ;; a minibuffer/dedicated-window (if there's no other). (error (pop-to-buffer next-buffer))))))) diff --git a/lisp/ses.el b/lisp/ses.el index 9097bf5d8192..f3de00427b3c 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -1,6 +1,6 @@ ;;; ses.el -- Simple Emacs Spreadsheet -*- lexical-binding:t -*- -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; Author: Jonathan Yavner ;; Maintainer: Vincent Belaïche diff --git a/lisp/shadowfile.el b/lisp/shadowfile.el index 27d934d9fcec..729bcbb4f37e 100644 --- a/lisp/shadowfile.el +++ b/lisp/shadowfile.el @@ -1,6 +1,6 @@ ;;; shadowfile.el --- automatic file copying -;; Copyright (C) 1993-1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2019 Free Software Foundation, Inc. ;; Author: Boris Goldowsky ;; Keywords: comm files diff --git a/lisp/shell.el b/lisp/shell.el index 5c228a5eba9a..78227ca73512 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -1,6 +1,6 @@ ;;; shell.el --- specialized comint.el for running the shell -*- lexical-binding: t -*- -;; Copyright (C) 1988, 1993-1997, 2000-2018 Free Software Foundation, +;; Copyright (C) 1988, 1993-1997, 2000-2019 Free Software Foundation, ;; Inc. ;; Author: Olin Shivers @@ -483,7 +483,7 @@ Shell buffers. It implements `shell-completion-execonly' for ;; Don't use pcomplete's defaulting mechanism, rely on ;; shell-dynamic-complete-functions instead. (set (make-local-variable 'pcomplete-default-completion-function) #'ignore) - (setq comint-input-autoexpand shell-input-autoexpand) + (setq-local comint-input-autoexpand shell-input-autoexpand) ;; Not needed in shell-mode because it's inherited from comint-mode, but ;; placed here for read-shell-command. (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t)) diff --git a/lisp/simple.el b/lisp/simple.el index d5674aae9b43..b5c7052184be 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1,6 +1,6 @@ ;;; simple.el --- basic editing commands for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1993-2018 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 1993-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal @@ -1011,13 +1011,16 @@ instead of deleted." (filter-buffer-substring (region-beginning) (region-end) method))))) "Function to get the region's content. Called with one argument METHOD which can be: -- nil: return the content as a string. +- nil: return the content as a string (list of strings for + non-contiguous regions). - `delete-only': delete the region; the return value is undefined. -- `bounds': return the boundaries of the region as a list of cons - cells of the form (START . END). +- `bounds': return the boundaries of the region as a list of one + or more cons cells of the form (START . END). - anything else: delete the region and return its content - as a string, after filtering it with `filter-buffer-substring', which - is called with METHOD as its 3rd argument.") + as a string (or list of strings for non-contiguous regions), + after filtering it with `filter-buffer-substring', which + is called, for each contiguous sub-region, with METHOD as its + 3rd argument.") (defvar region-insert-function (lambda (lines) @@ -2117,7 +2120,11 @@ next element of the minibuffer history in the minibuffer." (prompt-end (minibuffer-prompt-end)) (old-column (unless (and (eolp) (> (point) prompt-end)) (if (= (line-number-at-pos) 1) - (max (- (current-column) (1- prompt-end)) 0) + (max (- (current-column) + (save-excursion + (goto-char (1- prompt-end)) + (current-column))) + 0) (current-column))))) (condition-case nil (with-no-warnings @@ -2136,7 +2143,10 @@ next element of the minibuffer history in the minibuffer." (goto-char (point-max)) (when old-column (if (= (line-number-at-pos) 1) - (move-to-column (+ old-column (1- (minibuffer-prompt-end)))) + (move-to-column (+ old-column + (save-excursion + (goto-char (1- (minibuffer-prompt-end))) + (current-column)))) (move-to-column old-column))))))) (defun previous-line-or-history-element (&optional arg) @@ -2151,7 +2161,11 @@ previous element of the minibuffer history in the minibuffer." (prompt-end (minibuffer-prompt-end)) (old-column (unless (and (eolp) (> (point) prompt-end)) (if (= (line-number-at-pos) 1) - (max (- (current-column) (1- prompt-end)) 0) + (max (- (current-column) + (save-excursion + (goto-char (1- prompt-end)) + (current-column))) + 0) (current-column))))) (condition-case nil (with-no-warnings @@ -2170,7 +2184,10 @@ previous element of the minibuffer history in the minibuffer." (goto-char (minibuffer-prompt-end)) (if old-column (if (= (line-number-at-pos) 1) - (move-to-column (+ old-column (1- (minibuffer-prompt-end)))) + (move-to-column (+ old-column + (save-excursion + (goto-char (1- (minibuffer-prompt-end))) + (current-column)))) (move-to-column old-column)) ;; Put the cursor at the end of the visual line instead of the ;; logical line, so the next `previous-line-or-history-element' @@ -3849,11 +3866,14 @@ interactively, this is t." (process-file shell-file-name nil t nil shell-command-switch command)))) (defun process-file (program &optional infile buffer display &rest args) - "Process files synchronously in a separate process. + "Process files synchronously in a separate process that runs PROGRAM. Similar to `call-process', but may invoke a file handler based on `default-directory'. The current working directory of the subprocess is `default-directory'. +If PROGRAM is a remote file name, it should be processed +by `file-local-name' before passing it to this function. + File names in INFILE and BUFFER are handled normally, but file names in ARGS should be relative to `default-directory', as they are passed to the process verbatim. (This is a difference to @@ -3898,12 +3918,15 @@ Similar to `start-process', but may invoke a file handler based on This handler ought to run PROGRAM, perhaps on the local host, perhaps on a remote host that corresponds to `default-directory'. -In the latter case, the local part of `default-directory' becomes -the working directory of the process. +In the latter case, the local part of `default-directory', the one +produced from it by `file-local-name', becomes the working directory +of the process on the remote host. PROGRAM and PROGRAM-ARGS might be file names. They are not -objects of file handler invocation. File handlers might not -support pty association, if PROGRAM is nil." +objects of file handler invocation, so they need to be obtained +by calling `file-local-name', in case they are remote file names. + +File handlers might not support pty association, if PROGRAM is nil." (let ((fh (find-file-name-handler default-directory 'start-file-process))) (if fh (apply fh 'start-file-process name buffer program program-args) (apply 'start-process name buffer program program-args)))) @@ -4229,7 +4252,7 @@ unless a hook has been set. Use `filter-buffer-substring' instead of `buffer-substring', `buffer-substring-no-properties', or `delete-and-extract-region' when you want to allow filtering to take place. For example, major or minor -modes can use `filter-buffer-substring-function' to extract characters +modes can use `filter-buffer-substring-function' to exclude text properties that are special to a buffer, and should not be copied into other buffers." (funcall filter-buffer-substring-function beg end delete)) @@ -4330,7 +4353,7 @@ retrieved via \\[yank] \\[yank-pop]." :version "23.2") (defcustom kill-do-not-save-duplicates nil - "Do not add a new string to `kill-ring' if it duplicates the last one. + "If non-nil, don't add a string to `kill-ring' if it duplicates the last one. The comparison is done using `equal-including-properties'." :type 'boolean :group 'killing @@ -5245,8 +5268,10 @@ BUFFER may be a buffer or a buffer name." nil) (defun append-to-buffer (buffer start end) - "Append to specified buffer the text of the region. -It is inserted into that buffer before its point. + "Append to specified BUFFER the text of the region. +The text is inserted into that buffer before its point. +BUFFER can be a buffer or the name of a buffer; this +function will create BUFFER if it doesn't already exist. When calling from a program, give three arguments: BUFFER (or buffer name), START and END. @@ -5268,8 +5293,10 @@ START and END specify the portion of the current buffer to be copied." (set-window-point window (point)))))))) (defun prepend-to-buffer (buffer start end) - "Prepend to specified buffer the text of the region. -It is inserted into that buffer after its point. + "Prepend to specified BUFFER the text of the region. +The text is inserted into that buffer after its point. +BUFFER can be a buffer or the name of a buffer; this +function will create BUFFER if it doesn't already exist. When calling from a program, give three arguments: BUFFER (or buffer name), START and END. @@ -5282,8 +5309,10 @@ START and END specify the portion of the current buffer to be copied." (insert-buffer-substring oldbuf start end))))) (defun copy-to-buffer (buffer start end) - "Copy to specified buffer the text of the region. -It is inserted into that buffer, replacing existing text there. + "Copy to specified BUFFER the text of the region. +The text is inserted into that buffer, replacing existing text there. +BUFFER can be a buffer or the name of a buffer; this +function will create BUFFER if it doesn't already exist. When calling from a program, give three arguments: BUFFER (or buffer name), START and END. @@ -5489,8 +5518,10 @@ also checks the value of `use-empty-active-region'." (progn (cl-assert (mark)) t))) (defun region-bounds () - "Return the boundaries of the region as a pair of positions. -Value is a list of cons cells of the form (START . END)." + "Return the boundaries of the region. +Value is a list of one or more cons cells of the form (START . END). +It will have more than one cons cell when the region is non-contiguous, +see `region-noncontiguous-p' and `extract-rectangle-bounds'." (funcall region-extract-function 'bounds)) (defun region-noncontiguous-p () @@ -5793,10 +5824,10 @@ Transient Mark mode if ARG is omitted or nil. Transient Mark mode is a global minor mode. When enabled, the region is highlighted with the `region' face whenever the mark -is active. The mark is \"deactivated\" by changing the buffer, -and after certain other operations that set the mark but whose -main purpose is something else--for example, incremental search, -\\[beginning-of-buffer], and \\[end-of-buffer]. +is active. The mark is \"deactivated\" after certain non-motion +commands, including those that change the text in the buffer, and +during shift or mouse selection by any unshifted cursor motion +command (see Info node `Shift Selection' for more details). You can also deactivate the mark by typing \\[keyboard-quit] or \\[keyboard-escape-quit]. @@ -7804,7 +7835,7 @@ appears to have customizations applying to the old default, "If the buffer starts with a mail header, move point to the header's end. Otherwise, moves to `point-min'. The end of the header is the start of the next line, if there is one, -else the end of the last line. This function obeys RFC822." +else the end of the last line. This function obeys RFC 822 (or later)." (goto-char (point-min)) (when (re-search-forward "^\\([:\n]\\|[^: \t\n]+[ \t\n]\\)" nil 'move) @@ -7930,7 +7961,7 @@ With a prefix argument, set VARIABLE to VALUE buffer-locally." (read-variable (format "Set variable (default %s): " default-var) default-var) (read-variable "Set variable: "))) - (minibuffer-help-form '(describe-variable var)) + (minibuffer-help-form `(describe-variable ',var)) (prop (get var 'variable-interactive)) (obsolete (car (get var 'byte-obsolete-variable))) (prompt (format "Set %s %s to value: " var @@ -8156,6 +8187,9 @@ CHOICE - the string to insert in the buffer, BUFFER - the buffer in which the choice should be inserted, BASE-POSITION - where to insert the completion. +Functions should also accept and ignore a potential fourth +argument, passed for backwards compatibility. + If a function in the list returns non-nil, that function is supposed to have inserted the CHOICE in the BUFFER, and possibly exited the minibuffer; no further functions will be called. diff --git a/lisp/skeleton.el b/lisp/skeleton.el index e3cebba91649..77a3a6ae6012 100644 --- a/lisp/skeleton.el +++ b/lisp/skeleton.el @@ -1,6 +1,6 @@ ;;; skeleton.el --- Lisp language extension for writing statement skeletons -;; Copyright (C) 1993-1996, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1996, 2001-2019 Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/sort.el b/lisp/sort.el index 3929f19dfbbb..6ea1c4406057 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -1,6 +1,6 @@ ;;; sort.el --- commands to sort text in an Emacs buffer -*- lexical-binding: t -*- -;; Copyright (C) 1986-1987, 1994-1995, 2001-2018 Free Software +;; Copyright (C) 1986-1987, 1994-1995, 2001-2019 Free Software ;; Foundation, Inc. ;; Author: Howie Kaye diff --git a/lisp/soundex.el b/lisp/soundex.el index 036ce5c4f4eb..1f1f9caec3df 100644 --- a/lisp/soundex.el +++ b/lisp/soundex.el @@ -1,6 +1,6 @@ ;;; soundex.el --- implement Soundex algorithm -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2019 Free Software Foundation, Inc. ;; Author: Christian Plaunt ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/speedbar.el b/lisp/speedbar.el index 7915a52df3ab..2e710e808d7f 100644 --- a/lisp/speedbar.el +++ b/lisp/speedbar.el @@ -1,6 +1,6 @@ ;;; speedbar --- quick access to files and tags in a frame -;; Copyright (C) 1996-2018 Free Software Foundation, Inc. +;; Copyright (C) 1996-2019 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: file, tags, tools @@ -700,7 +700,7 @@ singular expression. This variable will be turned into function `speedbar-add-supported-extension' to add a new extension at runtime, or use the configuration dialog to set it in your init file. If you add an extension to this list, and it does not appear, you may -need to also modify `completion-ignored-extension' which will also help +need to also modify `completion-ignored-extensions' which will also help file completion." :group 'speedbar :type '(repeat (regexp :tag "Extension Regexp")) diff --git a/lisp/startup.el b/lisp/startup.el index 63b831ee38d1..32051c232ca9 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1,6 +1,6 @@ ;;; startup.el --- process Emacs shell arguments -*- lexical-binding: t -*- -;; Copyright (C) 1985-1986, 1992, 1994-2018 Free Software Foundation, +;; Copyright (C) 1985-1986, 1992, 1994-2019 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/strokes.el b/lisp/strokes.el index 6ffcff73c2ff..c480efdfbfee 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el @@ -1,6 +1,6 @@ ;;; strokes.el --- control Emacs through mouse strokes -;; Copyright (C) 1997, 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2000-2019 Free Software Foundation, Inc. ;; Author: David Bakhash ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/subr.el b/lisp/subr.el index 7582b6cdb853..5a08cebf5560 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1,6 +1,6 @@ ;;; subr.el --- basic lisp subroutines for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2018 Free Software +;; Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2019 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -93,12 +93,13 @@ Info node `(elisp)Specification List' for details." `(put (quote ,symbol) 'edebug-form-spec (quote ,spec))) (defmacro lambda (&rest cdr) - "Return a lambda expression. -A call of the form (lambda ARGS DOCSTRING INTERACTIVE BODY) is -self-quoting; the result of evaluating the lambda expression is the -expression itself. The lambda expression may then be treated as a -function, i.e., stored as the function value of a symbol, passed to -`funcall' or `mapcar', etc. + "Return an anonymous function. +Under dynamic binding, a call of the form (lambda ARGS DOCSTRING +INTERACTIVE BODY) is self-quoting; the result of evaluating the +lambda expression is the expression itself. Under lexical +binding, the result is a closure. Regardless, the result is a +function, i.e., it may be stored as the function value of a +symbol, passed to `funcall' or `mapcar', etc. ARGS should take the same form as an argument list for a `defun'. DOCSTRING is an optional documentation string. @@ -751,9 +752,9 @@ Elements of ALIST that are not conses are ignored." alist) (defun alist-get (key alist &optional default remove testfn) - "Return the value associated with KEY in ALIST. + "Find the first element of ALIST whose `car' equals KEY and return its `cdr'. If KEY is not found in ALIST, return DEFAULT. -Use TESTFN to lookup in the alist if non-nil. Otherwise, use `assq'. +Equality with KEY is tested by TESTFN, defaulting to `eq'. This is a generalized variable suitable for use with `setf'. When using it to set a value, optional argument REMOVE non-nil @@ -3542,7 +3543,7 @@ is allowed once again. (Immediately, if `inhibit-quit' is nil.)" ;; Don't throw `throw-on-input' on those events by default. (setq while-no-input-ignore-events '(focus-in focus-out help-echo iconify-frame - make-frame-visible selection-request)) + make-frame-visible selection-request buffer-switch)) (defmacro while-no-input (&rest body) "Execute BODY only as long as there's no pending input. @@ -5222,15 +5223,15 @@ This is the simplest safe way to acquire and release a mutex." (defvar definition-prefixes (make-hash-table :test 'equal) "Hash table mapping prefixes to the files in which they're used. This can be used to automatically fetch not-yet-loaded definitions. -More specifically, if there is a value of the form (FILES...) for a string PREFIX -it means that the FILES define variables or functions with names that start -with PREFIX. +More specifically, if there is a value of the form (FILES...) for +a string PREFIX it means that the FILES define variables or functions +with names that start with PREFIX. Note that it does not imply that all definitions starting with PREFIX can be found in those files. E.g. if prefix is \"gnus-article-\" there might -still be definitions of the form \"gnus-article-toto-titi\" in other files, which would -presumably appear in this table under another prefix such as \"gnus-\" -or \"gnus-article-toto-\".") +still be definitions of the form \"gnus-article-toto-titi\" in other files, +which would presumably appear in this table under another prefix such as +\"gnus-\" or \"gnus-article-toto-\".") (defun register-definition-prefixes (file prefixes) "Register that FILE uses PREFIXES." diff --git a/lisp/svg.el b/lisp/svg.el index c0fa26ade037..1f717293358b 100644 --- a/lisp/svg.el +++ b/lisp/svg.el @@ -1,9 +1,10 @@ ;;; svg.el --- SVG image creation functions -*- lexical-binding: t -*- -;; Copyright (C) 2016-2018 Free Software Foundation, Inc. +;; Copyright (C) 2016-2019 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: image +;; Version: 0.5 ;; This file is part of GNU Emacs. @@ -30,7 +31,7 @@ (eval-when-compile (require 'subr-x)) (defun svg-create (width height &rest args) - "Create a new, empty SVG image with dimensions WIDTHxHEIGHT. + "Create a new, empty SVG image with dimensions WIDTH x HEIGHT. ARGS can be used to provide `stroke' and `stroke-width' parameters to any further elements added." (dom-node 'svg @@ -42,8 +43,8 @@ any further elements added." (defun svg-gradient (svg id type stops) "Add a gradient with ID to SVG. -TYPE is `linear' or `radial'. STOPS is a list of percentage/color -pairs." +TYPE is `linear' or `radial'. +STOPS is a list of percentage/color pairs." (svg--def svg (apply @@ -66,9 +67,9 @@ pairs." "Create a rectangle on SVG, starting at position X/Y, of WIDTH/HEIGHT. ARGS is a plist of modifiers. Possible values are -:stroke-width PIXELS. The line width. -:stroke-color COLOR. The line color. -:gradient ID. The gradient ID to use." +:stroke-width PIXELS The line width. +:stroke-color COLOR The line color. +:gradient ID The gradient ID to use." (svg--append svg (dom-node 'rect diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el index 8a816fd44415..bf668c385ad2 100644 --- a/lisp/t-mouse.el +++ b/lisp/t-mouse.el @@ -4,7 +4,7 @@ ;; Maintainer: emacs-devel@gnu.org ;; Keywords: mouse gpm linux -;; Copyright (C) 1994-1995, 1998, 2006-2018 Free Software Foundation, +;; Copyright (C) 1994-1995, 1998, 2006-2019 Free Software Foundation, ;; Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/tabify.el b/lisp/tabify.el index 57eafc6e472a..37cd8fb2fddc 100644 --- a/lisp/tabify.el +++ b/lisp/tabify.el @@ -1,6 +1,6 @@ ;;; tabify.el --- tab conversion commands for Emacs -;; Copyright (C) 1985, 1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1994, 2001-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/talk.el b/lisp/talk.el index f6aae287f2c5..0b7d5db01e14 100644 --- a/lisp/talk.el +++ b/lisp/talk.el @@ -1,6 +1,6 @@ ;;; talk.el --- allow several users to talk to each other through Emacs -;; Copyright (C) 1995, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: comm, frames diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 07d902c1bb06..a73fa917e4be 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -1,6 +1,6 @@ ;;; tar-mode.el --- simple editing of tar files from GNU Emacs -;; Copyright (C) 1990-1991, 1993-2018 Free Software Foundation, Inc. +;; Copyright (C) 1990-1991, 1993-2019 Free Software Foundation, Inc. ;; Author: Jamie Zawinski ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/tempo.el b/lisp/tempo.el index 5d4dea5325ac..28afbec0f49c 100644 --- a/lisp/tempo.el +++ b/lisp/tempo.el @@ -1,6 +1,6 @@ ;;; tempo.el --- Flexible template insertion -;; Copyright (C) 1994-1995, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 2001-2019 Free Software Foundation, Inc. ;; Author: David Kågedal ;; Created: 16 Feb 1994 diff --git a/lisp/term.el b/lisp/term.el index ae451e94bd64..5ace5e341d05 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -1,6 +1,6 @@ ;;; term.el --- general command interpreter in a window stuff -;; Copyright (C) 1988, 1990, 1992, 1994-1995, 2001-2018 Free Software +;; Copyright (C) 1988, 1990, 1992, 1994-1995, 2001-2019 Free Software ;; Foundation, Inc. ;; Author: Per Bothner @@ -33,6 +33,21 @@ ;;; Commentary: +;; This file defines a general command-interpreter-in-a-buffer package +;; (term mode). The idea is that you can build specific process-in-a-buffer +;; modes on top of term mode -- e.g., lisp, shell, scheme, T, soar, .... +;; This way, all these specific packages share a common base functionality, +;; and a common set of bindings, which makes them easier to use (and +;; saves code, implementation time, etc., etc.). + +;; If, instead of `term', you call `ansi-term', you get multiple term +;; buffers, after every new call ansi-term opens a new +;; "*ansi-term*" window, where is, as usual, a number... + +;; For hints on converting existing process modes (e.g., tex-mode, +;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode +;; instead of shell-mode, see the notes at the end of this file. + ;; Speed considerations and a few caveats ;; -------------------------------------- ;; @@ -85,13 +100,6 @@ ;; # By default nobody can't do anything ;; deny root * ;; -;; -;; ---------------------------------------- -;; -;; If, instead of 'term', you call 'ansi-term', you get multiple term -;; buffers, after every new call ansi-term opens a new *ansi-term* window, -;; where is, as usual, a number... -;; ;; ---------------------------------------- ;; ;; With the term-buffer-maximum-size you can finally decide how many @@ -100,7 +108,6 @@ ;; ;; ---------------------------------------- ;; -;; ;; ANSI colorization should work well, I've decided to limit the interpreter ;; to five outstanding commands (like ESC [ 01;04;32;41;07m. ;; You shouldn't need more, if you do, tell me and I'll increase it. It's @@ -115,38 +122,6 @@ ;; - Add hooks to allow raw-mode keys to be configurable ;; - Which keys are better ? \eOA or \e[A ? ;; -;; -;; Changes: -;; -;; V4.0 January 1997 -;; -;; - Huge reworking of the faces code: now we only have roughly 20-30 -;; faces for everything so we're even faster than the old md-term.el ! -;; - Finished removing all the J-Shell code. -;; -;; V3.0 January 1997 -;; -;; - Now all the supportable ANSI commands work well. -;; - Reworked a little the code: much less jsh-inspired stuff -;; -;; V2.3 November -;; -;; - Now all the faces are accessed through an array: much cleaner code. -;; -;; V2.2 November 4 1996 -;; -;; - Implemented ANSI output colorization ( a bit rough but enough for -;; color_ls ) -;; -;; - Implemented a maximum limit for the scroll buffer (stolen from -;; comint.el) -;; -;; v2.1 October 28 1996, first public release -;; -;; - Some new keybindings for term-char mode ( notably home/end/...) -;; - Directory, hostname and username tracking via ange-ftp -;; - Multi-term capability via the ansi-term call -;; ;; ---------------------------------------------------------------- ;; You should/could have something like this in your .emacs to take ;; full advantage of this package @@ -160,7 +135,6 @@ ;; (auto-fill-mode -1) ;; (setq tab-width 8 )))) ;; -;; ;; ---------------------------------------- ;; ;; If you want to use color ls the best setup is to have a different file @@ -171,7 +145,6 @@ ;; ;; ---------------------------------------- ;; -;; ;; # Configuration file for the color ls utility ;; # This file goes in the /etc directory, and must be world readable. ;; # You can copy this file to .dir_colors in your $HOME directory to @@ -228,17 +201,23 @@ ;; .xbm 01;35 ;; .xpm 01;35 ;; -;; ;; ---------------------------------------- ;; -;; Notice: for directory/host/user tracking you need to have something -;; like this in your shell startup script (this is for a POSIXish shell -;; like Bash but should be quite easy to port to other shells). +;; There are actually two methods for directory tracking, one +;; implemented in `term-command-hook' which sets the directory +;; according to an escape sequence of the form "\032/\n". +;; Some shells like bash will already send this escape sequence when +;; they detect they are running in Emacs. This can be configured or +;; disabled on the Emacs side by setting `term-command-hook' to +;; a different function. ;; -;; For troubleshooting in Bash, you can check the definition of the -;; custom functions with the "type" command. e.g. "type cd". If you -;; do not see the expected definition from the config below, then the -;; directory tracking will not work. +;; The second method is in `term-handle-ansi-terminal-messages' which +;; sets user, host, and directory according to escape sequences of the +;; form "\033AnSiTc \n" (replace the "c" with "u" and "h" +;; for user and host, respectively). If the user and host don't +;; match, it will set directory to a remote one, so it is important to +;; set user and host correctly first. See the example bash +;; configuration below. ;; ;; ---------------------------------------- ;; @@ -262,42 +241,24 @@ ;; ;; # The \033 stands for ESC. ;; # There is a space between "AnSiT?" and $whatever. +;; printf '\033AnSiTh %s\n' "$HOSTNAME" +;; printf '\033AnSiTu %s\n' "$USER" +;; printf '\033AnSiTc %s\n' "$PWD" ;; ;; cd() { command cd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; pushd() { command pushd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; popd() { command popd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; -;; printf '\033AnSiTc %s\n' "$PWD" -;; printf '\033AnSiTh %s\n' "$HOSTNAME" -;; printf '\033AnSiTu %s\n' "$USER" -;; ;; # Use custom dircolors in term buffers. ;; # eval $(dircolors $HOME/.emacs_dircolors) ;; esac ;; ;; # ... ;; -;; - -;;; Original Commentary: -;; --------------------- - -;; The changelog is at the end of this file. - -;; Please send me bug reports, bug fixes, and extensions, so that I can -;; merge them into the master source. -;; - Per Bothner (bothner@cygnus.com) - -;; This file defines a general command-interpreter-in-a-buffer package -;; (term mode). The idea is that you can build specific process-in-a-buffer -;; modes on top of term mode -- e.g., lisp, shell, scheme, T, soar, .... -;; This way, all these specific packages share a common base functionality, -;; and a common set of bindings, which makes them easier to use (and -;; saves code, implementation time, etc., etc.). - -;; For hints on converting existing process modes (e.g., tex-mode, -;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode -;; instead of shell-mode, see the notes at the end of this file. +;; For troubleshooting in Bash, you can check the definition of the +;; custom functions with the "type" command. e.g. "type cd". If you +;; do not see the expected definition from the config below, then the +;; directory tracking will not work. ;; Brief Command Documentation: @@ -305,21 +266,21 @@ ;; Term Mode Commands: (common to all derived modes, like cmushell & cmulisp ;; mode) ;; -;; m-p term-previous-input Cycle backwards in input history -;; m-n term-next-input Cycle forwards -;; m-r term-previous-matching-input Previous input matching a regexp -;; m-s comint-next-matching-input Next input that matches +;; M-p term-previous-input Cycle backwards in input history +;; M-n term-next-input Cycle forwards +;; M-r term-previous-matching-input Previous input matching a regexp +;; M-s comint-next-matching-input Next input that matches ;; return term-send-input -;; c-c c-a term-bol Beginning of line; skip prompt. -;; c-d term-delchar-or-maybe-eof Delete char unless at end of buff. -;; c-c c-u term-kill-input ^u -;; c-c c-w backward-kill-word ^w -;; c-c c-c term-interrupt-subjob ^c -;; c-c c-z term-stop-subjob ^z -;; c-c c-\ term-quit-subjob ^\ -;; c-c c-o term-kill-output Delete last batch of process output -;; c-c c-r term-show-output Show last batch of process output -;; c-c c-h term-dynamic-list-input-ring List input history +;; C-c C-a term-bol Beginning of line; skip prompt. +;; C-d term-delchar-or-maybe-eof Delete char unless at end of buff. +;; C-c C-u term-kill-input ^u +;; C-c C-w backward-kill-word ^w +;; C-c C-c term-interrupt-subjob ^c +;; C-c C-z term-stop-subjob ^z +;; C-c C-\ term-quit-subjob ^\ +;; C-c C-o term-kill-output Delete last batch of process output +;; C-c C-r term-show-output Show last batch of process output +;; C-c C-h term-dynamic-list-input-ring List input history ;; ;; Not bound by default in term-mode ;; term-send-invisible Read a line w/o echo, and send to proc @@ -329,8 +290,8 @@ ;; term-replace-by-expanded-filename Expand and complete filename at point; ;; replace with expanded/completed name. ;; term-kill-subjob No mercy. -;; term-show-maximum-output Show as much output as possible. -;; term-continue-subjob Send CONT signal to buffer's process +;; term-show-maximum-output Show as much output as possible. +;; term-continue-subjob Send CONT signal to buffer's process ;; group. Useful if you accidentally ;; suspend your process (with C-c C-z). @@ -2900,11 +2861,12 @@ See `term-prompt-regexp'." ;; next time. (when (= funny str-length) (let ((partial 0)) - (while (eq (char-charset (aref decoded-substring - (- count 1 partial))) - 'eight-bit) + (while (and (< partial count) + (eq (char-charset (aref decoded-substring + (- count 1 partial))) + 'eight-bit)) (cl-incf partial)) - (when (> partial 0) + (when (> count partial 0) (setq term-terminal-undecoded-bytes (substring decoded-substring (- partial))) (setq decoded-substring diff --git a/lisp/term/AT386.el b/lisp/term/AT386.el index cc6c5ca693c5..b0cb953c5e29 100644 --- a/lisp/term/AT386.el +++ b/lisp/term/AT386.el @@ -1,6 +1,6 @@ ;;; AT386.el --- terminal support package for IBM AT keyboards -;; Copyright (C) 1992, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2019 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Keywords: terminals diff --git a/lisp/term/README b/lisp/term/README index 4ab1a4300db8..a9b131c79547 100644 --- a/lisp/term/README +++ b/lisp/term/README @@ -1,4 +1,4 @@ -Copyright (C) 1993, 2001-2018 Free Software Foundation, Inc. +Copyright (C) 1993, 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el index 5df635a145dc..4399eaed1864 100644 --- a/lisp/term/common-win.el +++ b/lisp/term/common-win.el @@ -1,6 +1,6 @@ ;;; common-win.el --- common part of handling window systems -;; Copyright (C) 1993-1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: terminals diff --git a/lisp/term/internal.el b/lisp/term/internal.el index 2cf560694c6d..1e9cbf477dff 100644 --- a/lisp/term/internal.el +++ b/lisp/term/internal.el @@ -1,6 +1,6 @@ ;;; internal.el --- support for PC internal terminal -;; Copyright (C) 1993-1994, 1998-1999, 2001-2018 Free Software +;; Copyright (C) 1993-1994, 1998-1999, 2001-2019 Free Software ;; Foundation, Inc. ;; Author: Morten Welinder diff --git a/lisp/term/iris-ansi.el b/lisp/term/iris-ansi.el index eb882daa0a93..23c67682085b 100644 --- a/lisp/term/iris-ansi.el +++ b/lisp/term/iris-ansi.el @@ -1,6 +1,6 @@ ;;; iris-ansi.el --- configure Emacs for SGI xwsh and winterm apps -;; Copyright (C) 1997, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2019 Free Software Foundation, Inc. ;; Author: Dan Nicolaescu diff --git a/lisp/term/konsole.el b/lisp/term/konsole.el index 86a2150afc75..f2186ae67383 100644 --- a/lisp/term/konsole.el +++ b/lisp/term/konsole.el @@ -1,5 +1,5 @@ ;;; konsole.el --- terminal initialization for konsole -;; Copyright (C) 2017-2018 Free Software Foundation, Inc. +;; Copyright (C) 2017-2019 Free Software Foundation, Inc. (require 'term/xterm) diff --git a/lisp/term/news.el b/lisp/term/news.el index 7cbbde412dac..7ef80a532bb7 100644 --- a/lisp/term/news.el +++ b/lisp/term/news.el @@ -1,6 +1,6 @@ ;;; news.el --- keypad and function key bindings for the Sony NEWS keyboard -;; Copyright (C) 1989, 1993, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1993, 2001-2019 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index 76b1a4145604..40397fcfeddb 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -1,6 +1,6 @@ ;;; ns-win.el --- lisp side of interface with NeXT/Open/GNUstep/macOS window system -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2005-2019 Free Software Foundation, Inc. ;; Authors: Carl Edman ;; Christian Limpach diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el index 62734d9cfe4c..214c5a37f558 100644 --- a/lisp/term/pc-win.el +++ b/lisp/term/pc-win.el @@ -1,6 +1,6 @@ ;;; pc-win.el --- setup support for `PC windows' (whatever that is) -*- lexical-binding:t -*- -;; Copyright (C) 1994, 1996-1997, 1999, 2001-2018 Free Software +;; Copyright (C) 1994, 1996-1997, 1999, 2001-2019 Free Software ;; Foundation, Inc. ;; Author: Morten Welinder diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el index 870282ae1c30..8376e5ac0967 100644 --- a/lisp/term/rxvt.el +++ b/lisp/term/rxvt.el @@ -1,6 +1,6 @@ ;;; rxvt.el --- define function key sequences and standard colors for rxvt -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; Author: Eli Zaretskii ;; Keywords: terminals diff --git a/lisp/term/screen.el b/lisp/term/screen.el index dffcb0b18af8..bb74901db4f8 100644 --- a/lisp/term/screen.el +++ b/lisp/term/screen.el @@ -1,5 +1,5 @@ ;;; screen.el --- terminal initialization for screen and tmux -*- lexical-binding: t -*- -;; Copyright (C) 1995, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. (require 'term/xterm) diff --git a/lisp/term/sun.el b/lisp/term/sun.el index b3e70f3107b6..a1c018483d5a 100644 --- a/lisp/term/sun.el +++ b/lisp/term/sun.el @@ -1,6 +1,6 @@ ;;; sun.el --- keybinding for standard default sunterm keys -;; Copyright (C) 1987, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1987, 2001-2019 Free Software Foundation, Inc. ;; Author: Jeff Peck ;; Keywords: terminals diff --git a/lisp/term/tmux.el b/lisp/term/tmux.el index ca21d5e7ad58..c6c224455e10 100644 --- a/lisp/term/tmux.el +++ b/lisp/term/tmux.el @@ -1,5 +1,5 @@ ;;; tmux.el --- terminal initialization for tmux -*- lexical-binding: t -*- -;; Copyright (C) 2017-2018 Free Software Foundation, Inc. +;; Copyright (C) 2017-2019 Free Software Foundation, Inc. (require 'term/xterm) diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el index a776c830a25c..04b433e178cd 100644 --- a/lisp/term/tty-colors.el +++ b/lisp/term/tty-colors.el @@ -1,6 +1,6 @@ ;;; tty-colors.el --- color support for character terminals -;; Copyright (C) 1999-2018 Free Software Foundation, Inc. +;; Copyright (C) 1999-2019 Free Software Foundation, Inc. ;; Author: Eli Zaretskii ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el index 97687894ec66..20c5a53fc2dd 100644 --- a/lisp/term/tvi970.el +++ b/lisp/term/tvi970.el @@ -1,6 +1,6 @@ ;;; tvi970.el --- terminal support for the Televideo 970 -;; Copyright (C) 1992, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2019 Free Software Foundation, Inc. ;; Author: Jim Blandy ;; Keywords: terminals diff --git a/lisp/term/vt100.el b/lisp/term/vt100.el index d40c550aff4e..a296f7e52937 100644 --- a/lisp/term/vt100.el +++ b/lisp/term/vt100.el @@ -1,6 +1,6 @@ ;;; vt100.el --- define VT100 function key sequences in function-key-map -;; Copyright (C) 1989, 1993, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1993, 2001-2019 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index ed76490751eb..12c3e97e411a 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -1,6 +1,6 @@ ;;; w32-win.el --- parse switches controlling interface with W32 window system -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2019 Free Software Foundation, Inc. ;; Author: Kevin Gallo ;; Keywords: terminals @@ -170,6 +170,15 @@ the last file dropped is selected." ;; new layout/language selected by the user. (global-set-key [language-change] 'ignore) +;; Some Windows applications send the 'noname' (VK_NONAME) pseudo-key +;; to prevent Windows from sleeping. We want to ignore these key +;; events, to avoid annoying users by ringing the bell and announcing +;; that the key is not bound. +(global-set-key [noname] 'ignore) +(global-set-key [C-noname] 'ignore) +(global-set-key [M-noname] 'ignore) + + (defvar x-resource-name) diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el index 75d68f8f5893..fe75145c6a7a 100644 --- a/lisp/term/w32console.el +++ b/lisp/term/w32console.el @@ -1,6 +1,6 @@ ;;; w32console.el -- Setup w32 console keys and colors. -;; Copyright (C) 2007-2018 Free Software Foundation, Inc. +;; Copyright (C) 2007-2019 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/wyse50.el b/lisp/term/wyse50.el index 7e29828747b7..17f87eb980d6 100644 --- a/lisp/term/wyse50.el +++ b/lisp/term/wyse50.el @@ -1,6 +1,6 @@ ;;; wyse50.el --- terminal support code for Wyse 50 -;; Copyright (C) 1989, 1993-1994, 2001-2018 Free Software Foundation, +;; Copyright (C) 1989, 1993-1994, 2001-2019 Free Software Foundation, ;; Inc. ;; Author: Daniel Pfeiffer , diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index e3196ab84e3a..f159a71d9882 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -1,6 +1,6 @@ ;;; x-win.el --- parse relevant switches and set up for X -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2019 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals, i18n diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index 9209a76fcdc3..8cbf5dace0fc 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@ -1,6 +1,6 @@ ;;; xterm.el --- define function key sequences and standard colors for xterm -*- lexical-binding: t -*- -;; Copyright (C) 1995, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index af7bcc77cdf5..885a4ee67ec9 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -1,6 +1,6 @@ ;;; artist.el --- draw ascii graphics with your mouse -;; Copyright (C) 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 2000-2019 Free Software Foundation, Inc. ;; Author: Tomas Abrahamsson ;; Maintainer: Tomas Abrahamsson diff --git a/lisp/textmodes/bib-mode.el b/lisp/textmodes/bib-mode.el index 403d00fb3ab6..81dfb6c99c02 100644 --- a/lisp/textmodes/bib-mode.el +++ b/lisp/textmodes/bib-mode.el @@ -1,6 +1,6 @@ ;;; bib-mode.el --- major mode for editing bib files -;; Copyright (C) 1989, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1989, 2001-2019 Free Software Foundation, Inc. ;; Author: Henry Kautz ;; (according to authors.el) diff --git a/lisp/textmodes/bibtex-style.el b/lisp/textmodes/bibtex-style.el index 9515c39bf2de..badbb2ab882c 100644 --- a/lisp/textmodes/bibtex-style.el +++ b/lisp/textmodes/bibtex-style.el @@ -1,6 +1,6 @@ ;;; bibtex-style.el --- Major mode for BibTeX Style files -*- lexical-binding: t -*- -;; Copyright (C) 2005, 2007-2018 Free Software Foundation, Inc. +;; Copyright (C) 2005, 2007-2019 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: tex diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 6294b8026ce6..b9ff7a579888 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -1,6 +1,6 @@ ;;; bibtex.el --- BibTeX mode for GNU Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1992, 1994-1999, 2001-2018 Free Software Foundation, +;; Copyright (C) 1992, 1994-1999, 2001-2019 Free Software Foundation, ;; Inc. ;; Author: Stefan Schoef diff --git a/lisp/textmodes/conf-mode.el b/lisp/textmodes/conf-mode.el index 45fd040d10e7..ff0f56ebbb85 100644 --- a/lisp/textmodes/conf-mode.el +++ b/lisp/textmodes/conf-mode.el @@ -1,6 +1,6 @@ ;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files -;; Copyright (C) 2004-2018 Free Software Foundation, Inc. +;; Copyright (C) 2004-2019 Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Keywords: conf ini windows java diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 62dca463ae38..67a0c9f7a57e 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -1,6 +1,6 @@ ;;; css-mode.el --- Major mode to edit CSS files -*- lexical-binding: t -*- -;; Copyright (C) 2006-2018 Free Software Foundation, Inc. +;; Copyright (C) 2006-2019 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Maintainer: Simen Heggestøyl @@ -32,7 +32,6 @@ ;;; Code: -(require 'eww) (require 'cl-lib) (require 'color) (require 'seq) diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el index 7223d525fa2d..5344d6127fe3 100644 --- a/lisp/textmodes/dns-mode.el +++ b/lisp/textmodes/dns-mode.el @@ -1,6 +1,6 @@ ;;; dns-mode.el --- a mode for viewing/editing Domain Name System master files -;; Copyright (C) 2000-2001, 2004-2018 Free Software Foundation, Inc. +;; Copyright (C) 2000-2001, 2004-2019 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: DNS master zone file SOA comm diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el index b9d247132dc7..d4e2f788ee36 100644 --- a/lisp/textmodes/enriched.el +++ b/lisp/textmodes/enriched.el @@ -1,6 +1,6 @@ ;;; enriched.el --- read and save files in text/enriched format -;; Copyright (C) 1994-1996, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1994-1996, 2001-2019 Free Software Foundation, Inc. ;; Author: Boris Goldowsky ;; Keywords: wp, faces diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 8422f0e1dd2a..c5975bb721b6 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el @@ -1,6 +1,6 @@ ;;; fill.el --- fill commands for Emacs -;; Copyright (C) 1985-1986, 1992, 1994-1997, 1999, 2001-2018 Free +;; Copyright (C) 1985-1986, 1992, 1994-1997, 1999, 2001-2019 Free ;; Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 4d7a18969e65..042f432d6353 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -1,6 +1,6 @@ ;;; flyspell.el --- On-the-fly spell checker -*- lexical-binding:t -*- -;; Copyright (C) 1998, 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000-2019 Free Software Foundation, Inc. ;; Author: Manuel Serrano ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index e77bc7e1128a..237997d41d75 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -1,6 +1,6 @@ ;;; ispell.el --- interface to spell checkers -*- lexical-binding:t -*- -;; Copyright (C) 1994-1995, 1997-2018 Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 1997-2019 Free Software Foundation, Inc. ;; Author: Ken Stevens @@ -723,6 +723,7 @@ Otherwise returns the library directory name, if that is defined." ;; Make sure these variables are (re-)initialized to the default value (setq ispell-really-aspell nil ispell-really-hunspell nil + ispell-really-enchant nil ispell-encoding8-command nil) (goto-char (point-min)) @@ -1113,7 +1114,19 @@ dictionary from that list was found." null-device t nil - "-D") + "-D" + ;; Use -a to prevent Hunspell from + ;; trying to initialize its + ;; curses/termcap UI, which causes it + ;; to crash or fail to start in some + ;; MS-Windows ports. + "-a" + ;; Hunspell 1.7.0 (and later?) won't + ;; show LOADED DICTIONARY unless + ;; there's at least one file argument + ;; on the command line. So we feed + ;; it with the null device. + null-device) (buffer-string)) "[\n\r]+" t)) diff --git a/lisp/textmodes/less-css-mode.el b/lisp/textmodes/less-css-mode.el index 1f9b24d824cf..b4c7f28985d6 100644 --- a/lisp/textmodes/less-css-mode.el +++ b/lisp/textmodes/less-css-mode.el @@ -1,6 +1,6 @@ ;;; less-css-mode.el --- Major mode for editing Less CSS files -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2018 Free Software Foundation, Inc. +;; Copyright (C) 2011-2019 Free Software Foundation, Inc. ;; Author: Steve Purcell ;; Maintainer: Simen Heggestøyl diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index 99654a28c2f4..ff3d2420df40 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el @@ -1,6 +1,6 @@ ;;; makeinfo.el --- run makeinfo conveniently -;; Copyright (C) 1991, 1993, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1993, 2001-2019 Free Software Foundation, Inc. ;; Author: Robert J. Chassell ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/mhtml-mode.el b/lisp/textmodes/mhtml-mode.el index b99f788156c1..17298ccf5f72 100644 --- a/lisp/textmodes/mhtml-mode.el +++ b/lisp/textmodes/mhtml-mode.el @@ -1,6 +1,6 @@ ;;; mhtml-mode.el --- HTML editing mode that handles CSS and JS -*- lexical-binding:t -*- -;; Copyright (C) 2017-2018 Free Software Foundation, Inc. +;; Copyright (C) 2017-2019 Free Software Foundation, Inc. ;; Keywords: wp, hypermedia, comm, languages @@ -21,13 +21,10 @@ ;;; Code: -(eval-and-compile - (require 'flyspell) - (require 'sgml-mode)) +(eval-and-compile (require 'sgml-mode)) (require 'js) (require 'css-mode) (require 'prog-mode) -(require 'font-lock) (defcustom mhtml-tag-relative-indent t "How