emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 97e4851: Merge from origin/emacs-27


From: Glenn Morris
Subject: master 97e4851: Merge from origin/emacs-27
Date: Wed, 15 Apr 2020 10:55:13 -0400 (EDT)

branch: master
commit 97e48510ad4fec9ca5f576a750018a231523f7a6
Merge: afa542c a5f7c26
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    Merge from origin/emacs-27
    
    a5f7c26907 (origin/emacs-27) * admin/authors.el: Add an author alias.
    d87a4d1f4e Limit RLIMIT_NOFILE to FD_SETSIZE on macOS
    e5ca8e5e73 Fix Elisp manual entry on 'set-window-configuration'
    485f24223f ; Update ChangeLog.3
    8f200254fb ; Update etc/AUTHORS
    c7adc851ad * admin/authors.el: Add missing author aliases.
    4acdd7fe58 Fix edge case errors in filename-matching regexps
    5f36e21fe5 Clarify the doc string of 'yank'
    13301d4266 New function erc-track-switch-buffer-other-window
    38f7538d8f New function erc-switch-to-buffer-other-window
    
    # Conflicts:
    #   etc/NEWS
---
 ChangeLog.3                          | 1090 +++++++++++++++++++++++++++++++++-
 admin/authors.el                     |   13 +-
 doc/lispref/windows.texi             |   39 +-
 etc/AUTHORS                          |  108 ++--
 etc/NEWS.27                          |   10 +
 lisp/auth-source-pass.el             |    2 +-
 lisp/calendar/todo-mode.el           |   14 +-
 lisp/cedet/semantic/db-ebrowse.el    |    4 +-
 lisp/cedet/semantic/texi.el          |    2 +-
 lisp/cedet/srecode/map.el            |    2 +-
 lisp/dired.el                        |    2 +-
 lisp/emacs-lisp/autoload.el          |    2 +-
 lisp/emacs-lisp/shadow.el            |    3 +-
 lisp/erc/erc-track.el                |   32 +-
 lisp/erc/erc.el                      |   47 +-
 lisp/files.el                        |    6 +-
 lisp/finder.el                       |    2 +-
 lisp/generic-x.el                    |    8 +-
 lisp/gnus/gnus-agent.el              |    7 +-
 lisp/gnus/gnus-cache.el              |    2 +-
 lisp/gnus/gnus-score.el              |    2 +-
 lisp/gnus/gnus-util.el               |    2 +-
 lisp/gnus/gnus-uu.el                 |    2 +-
 lisp/gnus/nndraft.el                 |    2 +-
 lisp/gnus/nnmh.el                    |   10 +-
 lisp/gnus/nnspool.el                 |    2 +-
 lisp/gnus/spam-stat.el               |    4 +-
 lisp/help-fns.el                     |    2 +-
 lisp/help.el                         |    2 +-
 lisp/international/quail.el          |    2 +-
 lisp/international/titdic-cnv.el     |    2 +-
 lisp/mail/mspools.el                 |    4 +-
 lisp/mail/rmail.el                   |    5 +-
 lisp/net/ange-ftp.el                 |    3 +-
 lisp/net/tramp.el                    |    2 +-
 lisp/obsolete/gulp.el                |    2 +-
 lisp/obsolete/vc-arch.el             |    8 +-
 lisp/org/ob-core.el                  |    2 +-
 lisp/progmodes/ebnf2ps.el            |    4 +-
 lisp/progmodes/executable.el         |    2 +-
 lisp/simple.el                       |    9 +-
 lisp/startup.el                      |    4 +-
 lisp/textmodes/refer.el              |    2 +-
 lisp/url/url-about.el                |    2 +-
 lisp/vc/vc-rcs.el                    |    5 +-
 src/nsterm.m                         |   15 +
 test/lisp/net/tramp-archive-tests.el |    2 +-
 test/lisp/net/tramp-tests.el         |    2 +-
 48 files changed, 1327 insertions(+), 173 deletions(-)

diff --git a/ChangeLog.3 b/ChangeLog.3
index fc41c1f..c5bc7b3 100644
--- a/ChangeLog.3
+++ b/ChangeLog.3
@@ -1,3 +1,1091 @@
+2020-04-14  Mattias Engdegård  <address@hidden>
+
+       Fix edge case errors in filename-matching regexps
+
+       These changes fix actual or latent bugs in regexps that match
+       file names, such as PATTERN arguments to 'directory-files'.  See
+       https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00265.html
+
+       * admin/authors.el (authors-obsolete-files-regexps)
+       (authors-renamed-files-regexps):
+       * lisp/auth-source-pass.el (auth-source-pass-entries):
+       * lisp/calendar/todo-mode.el (todo-show, todo-find-filtered-items-file)
+       (todo-filter-items, todo-reset-nondiary-marker, todo-reset-done-string)
+       (todo-reset-comment-string, todo-reset-highlight-item):
+       * lisp/cedet/semantic/db-ebrowse.el (semanticdb-load-ebrowse-caches):
+       * lisp/cedet/semantic/texi.el (semantic-texi-associated-files):
+       * lisp/cedet/srecode/map.el (srecode-map-update-map):
+       * lisp/dired.el (dired-re-no-dot):
+       * lisp/emacs-lisp/autoload.el (update-directory-autoloads):
+       * lisp/emacs-lisp/shadow.el (load-path-shadows-find):
+       * lisp/files.el (auto-mode-alist, directory-files-no-dot-files-regexp):
+       * lisp/finder.el (finder-compile-keywords):
+       * lisp/generic-x.el (inetd-conf-generic-mode, named-boot-generic-mode)
+       (resolve-conf-generic-mode, etc-modules-conf-generic-mode):
+       * lisp/gnus/gnus-agent.el (gnus-agent-read-agentview)
+       (gnus-agent-regenerate-group, 
gnus-agent-update-files-total-fetched-for):
+       * lisp/gnus/gnus-cache.el (gnus-cache-articles-in-group):
+       * lisp/gnus/gnus-score.el (gnus-score-search-global-directories):
+       * lisp/gnus/gnus-util.el (gnus-delete-directory):
+       * lisp/gnus/gnus-uu.el (gnus-uu-dir-files):
+       * lisp/gnus/nndraft.el (nndraft-request-group):
+       * lisp/gnus/nnmh.el (nnmh-request-group, nnmh-request-create-group):
+       (nnmh-request-delete-group, nnmh-active-number, 
nnmh-update-gnus-unreads):
+       * lisp/gnus/nnspool.el (nnspool-request-group):
+       * lisp/gnus/spam-stat.el (spam-stat-process-directory)
+       (spam-stat-test-directory):
+       * lisp/help-fns.el (help-fns--first-release):
+       * lisp/help.el (view-emacs-news):
+       * lisp/international/quail.el (quail-update-leim-list-file):
+       * lisp/international/titdic-cnv.el (batch-titdic-convert):
+       * lisp/mail/mspools.el (mspools-set-vm-spool-files)
+       (mspools-get-spool-files):
+       * lisp/mail/rmail.el (rmail-secondary-file-regexp)
+       (rmail-speedbar-match-folder-regexp):
+       * lisp/net/ange-ftp.el (ange-ftp-delete-directory):
+       * lisp/net/tramp.el (tramp-use-absolute-autoload-file-names):
+       * lisp/obsolete/gulp.el (gulp-send-requests):
+       * lisp/obsolete/vc-arch.el (vc-arch-trim-revlib):
+       * lisp/org/ob-core.el (org-babel-remove-temporary-directory):
+       * lisp/progmodes/ebnf2ps.el (ebnf-file-suffix-regexp, 
ebnf-style-database):
+       * lisp/progmodes/executable.el (executable-command-find-posix-p):
+       * lisp/startup.el (command-line):
+       * lisp/textmodes/refer.el (refer-get-bib-files):
+       * lisp/url/url-about.el (url-probe-protocols):
+       * lisp/vc/vc-rcs.el (vc-rcs-register, vc-rcs-unregister):
+       * test/lisp/net/tramp-archive-tests.el
+       (tramp-archive-test19-directory-files-and-attributes):
+       * test/lisp/net/tramp-tests.el 
(tramp-test19-directory-files-and-attributes):
+       Replace ^ and $ with \` and \', respectively.
+       Use (rx (or (not ".") "...")), translated into "[^.]\\|\\.\\.\\.",
+       to match anything but "." and "..", instead of several incorrect
+       regexps.
+
+2020-04-14  Eli Zaretskii  <address@hidden>
+
+       Clarify the doc string of 'yank'
+
+       * lisp/simple.el (yank): Mention 'current-kill' in the doc string,
+       so that people could find all the gory details of what is "the most
+       recent kill" for this purpose.  (Bug#40375)
+
+2020-04-14  Amin Bandali  <address@hidden>
+
+       New function erc-track-switch-buffer-other-window
+
+       * lisp/erc/erc-track.el (erc-track-switch-buffer): Factor out the
+       implementation from here ...
+       (erc-track--switch-buffer): ... to here.
+       (erc-track-switch-buffer-other-window): New function, like
+       `erc-track-switch-buffer', but uses `switch-to-buffer-other-window'
+       instead, to open the buffer in another window.
+
+2020-04-14  Amin Bandali  <address@hidden>
+
+       New function erc-switch-to-buffer-other-window
+
+       * lisp/erc/erc.el (erc-switch-to-buffer): Factor out the buffer choice
+       implementation from here ...
+       (erc--switch-to-buffer): ... to here.
+       (erc-switch-to-buffer-other-window): New function, like
+       `erc-switch-to-buffer', but uses `switch-to-buffer-other-window'
+       instead, to open the buffer in another window.
+
+2020-04-13  Štěpán Němec  <address@hidden>
+
+       Clarify documentation on inhibit-modification-hooks intended usage
+
+       Cf. bug#40332 and the discussion at
+       https://lists.gnu.org/archive/html/emacs-devel/2020-03/msg00921.html
+
+       * doc/lispref/text.texi (Change Hooks):
+       * src/insdel.c (syms_of_insdel): Clarify the intended usage of
+       'inhibit-modification-hooks'.
+
+2020-04-13  Štěpán Němec  <address@hidden>
+
+       gnus-shorten-url: Improve and avoid args-out-of-range error
+
+       'gnus-shorten-url' (used by 'gnus-summary-browse-url') ignored
+       fragment identifiers and didn't check substring bounds, in some cases
+       leading to runtime errors, e.g.:
+
+         (gnus-shorten-url "https://some.url.with/path/and#also_a_long_target"; 
40)
+         ;; => Lisp error: (args-out-of-range "/path/and" -18 nil)
+
+       This commit makes it account for #fragments and fixes faulty string
+       computation.  (bug#39980)
+
+       Do not merge to master, where the helper is put to subr-x.el.
+
+       * lisp/gnus/gnus-sum.el (gnus--string-truncate-left): New helper
+       function (copied from 'ediff-truncate-string-left').
+       (gnus-shorten-url): Use it and don't drop #fragments.
+
+2020-04-13  Eli Zaretskii  <address@hidden>
+
+       Minor wording change in Introduction to Programming in Emacs Lisp
+
+       * doc/lispintro/emacs-lisp-intro.texi (Prevent confusion): Mention
+       that dynamic scoping is only the default in Emacs Lisp, not the
+       only scoping rule.  (Bug#40594)
+
+2020-04-13  Eli Zaretskii  <address@hidden>
+
+       Fix 'flymake-show-diagnostics-buffer' when line numbers are displayed
+
+       * lisp/progmodes/flymake.el (flymake--diagnostics-buffer-entries):
+       Do nothing if 'flymake--diagnostics-buffer-source' is not a
+       buffer.  (Bug#40529)
+
+2020-04-12  Eli Zaretskii  <address@hidden>
+
+       Fix last changes describing mail commands
+
+       * doc/emacs/sending.texi (Sending Mail): Fix the description of
+       the behavior of 'C-x m' without prefix argument.  (Bug#40561)
+
+2020-04-12  João Távora  <address@hidden>
+
+       Do setup Flymake in file-less Elisp buffers
+
+       (Bug#40573)
+
+       * lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Change
+       condition for setting flymake-diagnostic-functions.
+
+2020-04-12  Philipp Stephani  <address@hidden>
+
+       Fix error message for ‘cl-struct-unknown-slot’ (bug#39995)
+
+       * lisp/emacs-lisp/cl-macs.el (cl-struct-unknown-slot): Remove spurious
+       format specifiers.
+
+2020-04-12  Eli Zaretskii  <address@hidden>
+
+       Fix and improve documentation of mail-related features
+
+       * lisp/simple.el (compose-mail): Clarify the effect of the
+       CONTINUE argument.
+       * lisp/mail/sendmail.el (mail-from-style): Update the RFC value in
+       the obsolescence warning text.
+
+       * doc/emacs/sending.texi (Sending Mail): Fix the description of
+       the behavior of 'C-x m' wrt prefix argument.
+       (Mail Headers): Remove the description of 'mail-from-style'.
+
+       * etc/NEWS: Mention that 'mail-from-style' is obsolete.
+
+       (Bug#40561)
+
+2020-04-12  Martin Rudalics  <address@hidden>
+
+       Fix build failure with Fx_gtk_debug
+
+       * src/xfns.c (Fx_gtk_debug, Sx_gtk_debug): Define only for GTK
+       versions >= 3.14.0 so gtk_window_set_interactive_debugging is
+       defined.  Reported by Andreas Schwab  <address@hidden>.
+
+2020-04-11  Alan Mackenzie  <address@hidden>
+
+       Mention jit-lock deferred as an alternative to 
fast-but-imprecise-scrolling
+
+       * doc/emacs/display.texi (Scrolling): Add a paragraph on using jit-lock
+       deferred fontification as a way of obviating Emacs hanging after
+       auto-repeated scrolling.
+
+2020-04-10  Stefan Monnier  <address@hidden>
+
+       * doc/lispref/keymaps.texi (Extended Menu Items): Tweak :key-sequence
+
+       Don't make it sound like `:key-sequence nil` is any different than the
+       absence of `:key-sequence`.  And the performance advantage of
+       `:key-sequence` disappeared long ago.
+
+2020-04-10  Eli Zaretskii  <address@hidden>
+
+       Fix redisplay when scrolling under redisplay-dont-pause
+
+       * src/dispnew.c (update_window): Reset the window's
+       'must_be_updated_p' flag if the window's update was completed
+       without interruption.  This fixes redisplay glitches when
+       'redisplay-dont-pause' is nil, at least on MS-Windows, because
+       'expose_window' doesn't redraw the exposed rectangle when the
+       window's 'must_be_updated_p' flag is set.
+
+2020-04-09  Eli Zaretskii  <address@hidden>
+
+       Fix face extension in pulse.el
+
+       * lisp/cedet/pulse.el (pulse-reset-face): Propagate the :extend
+       attribute of FACE to the face used for displaying the pulse.
+       Reported by Adam Porter <address@hidden>.
+
+2020-04-09  Michael Albinus  <address@hidden>
+
+       * doc/misc/tramp.texi (Bug Reports): Avoid line breaks in traces.
+
+2020-04-09  Eli Zaretskii  <address@hidden>
+
+       Avoid assertion violation in intervals.c
+
+       * src/intervals.c (delete_interval): Allow negative values of
+       LENGTH (i).  This happens when delete_interval is called from
+       set_intervals_multibyte_1, because the caller zeroes out the
+       total_length field of the interval to be deleted.  See
+       https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00131.html
+       for more details.  See also a related old discussion at
+       https://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00399.html.
+
+2020-04-08  Eli Zaretskii  <address@hidden>
+
+       Improve documentation of 'jit-lock-contextually'
+
+       * lisp/jit-lock.el (jit-lock-contextually): Clarify the jit-lock
+       operation when 'jit-lock-contextually' is non-nil and non-t.
+
+       * doc/lispref/modes.texi (Syntactic Font Lock)
+       (Other Font Lock Variables): Document the relation between
+       'jit-lock-register', 'font-lock-keywords-only', and syntactic
+       refontification.
+
+2020-04-08  Dmitry Gutov  <address@hidden>
+
+       Speed up 'resize-mode' child frames a little
+
+       * src/gtkutil.c (xg_frame_set_char_size): Skip resizing if the
+       target dimensions are unchanged for child frames with
+       'resize-mode' resize policy as well.
+
+2020-04-06  Martin Rudalics  <address@hidden>
+
+       Fix some problems with moving and resizing child frames
+
+       (1) Provide new option 'x-gtk-resize-child-frames' which allows
+       to either hide a child frame during resizing or asks GTK to
+       resize it "immediately".  This is needed because desktops like
+       GNOME shell otherwise won't allow resizing child frames at all.
+       (2) Do not try to synchronize the position of a child frame
+       after moving it.  Needed because the present implementation
+       introduces a 0.5 secs delay which makes dragging child frames
+       virtually impossible with Lucid and Motif toolkits on desktops
+       like GNOME shell that use invisible outer frame borders.
+
+       For further information see the thread starting with
+       https://lists.gnu.org/archive/html/emacs-devel/2020-01/msg00343.html
+
+       * src/frame.c (syms_of_frame): New symbol Qxg_frame_set_char_size_4.
+       * src/gtkutil.c (xg_frame_set_char_size): Hide child frame
+       during resizing when 'x-gtk-resize-child-frames' equals 'hide'.
+       * src/xfns.c (x_set_parent_frame, Fx_create_frame): Set
+       gtk_container_resize_mode to GTK_RESIZE_IMMEDIATE for child
+       frames when'x-gtk-resize-child-frames' equals 'resize-mode'.
+       (Fx_gtk_debug): New function to toggle interactive GTK debugging
+       from within Emacs.
+       (syms_of_xfns): New symbols Qhide and Qresize_mode.
+       (x-gtk-resize-child-frames): New option that allows to resize
+       child frames on desktops like GNOME shell (with the mutter WM)
+       that otherwise refuse to resize them.
+       * src/xterm.c (x_set_offset): Don't x_sync_with_move for child
+       frames, it makes moving child frames virtually impossible with
+       the Lucid and Motif toolkits.
+
+2020-04-05  Philipp Stephani  <address@hidden>
+
+       Fix syntax error in man page.
+
+       * doc/man/emacs.1.in: Fix syntax of --script argument.  The Info
+       manual states that --script has to be followed by a space, and the
+       syntax with the equals sign doesn't actually work.
+
+2020-04-05  Noam Postavsky  <address@hidden>
+
+       Handle filling of indented ChangeLog function entries
+
+       * lisp/vc/log-edit.el (log-edit-fill-entry): Relax regexp a bit to
+       recognize function entries with leading blanks.
+       * test/lisp/vc/log-edit-tests.el: New test.
+
+2020-04-05  Noam Postavsky  <address@hidden>
+
+       Fix void-variable n-reb in re-builder (Bug#40409)
+
+       * lisp/emacs-lisp/re-builder.el (reb-while): Take the current value of
+       the counter instead of its name.
+       (reb-mark-non-matching-parenthesis): Bind n-reb to 0 at the start and
+       don't wrongly treat it as dynamicly bound.
+
+2020-04-03  Philipp Stephani  <address@hidden>
+
+       Fix small bug in copy_string_contents.
+
+       * src/emacs-module.c (module_copy_string_contents): Fix incorrect
+       variable use.  In this branch 'lisp_str_utf8' is always nil, so it
+       makes little sense to add it as error data.
+
+2020-04-03  Eli Zaretskii  <address@hidden>
+
+       Fix invocations of gpg from Gnus
+
+       * lisp/epg-config.el (epg-config--make-gpg-configuration): Bind
+       coding-system-for-read/write to 'undecided', to countermand
+       possible values of 'no-conversion' or somesuch by the callers.
+       (Bug#40248)
+
+2020-04-03  Martin Rudalics  <address@hidden>
+
+       Don't draw GTK's internal border and tab bar on top of each other
+
+       * src/xterm.c (x_clear_under_internal_border): For GTK builds
+       have 'margin' count in the height of the tab bar to avoid that
+       tab bar and internal border are drawn on top of each other.
+
+2020-04-03  Amin Bandali  <address@hidden>
+
+       Tweak htmlfontify's generated output
+
+       * lisp/htmlfontify.el (hfy-default-header): declare the character
+       encoding for the generated HTML file.  This helps browsers display
+       UTF-8 characters like the copyright symbol correctly.
+       (hfy-sprintf-stylesheet): apply the default style to all of the text
+       consistently, so that unstyled bits (which are not wrapped in span
+       tags and are directly part of the surrounding pre tag's "innerHTML")
+       have a look consistent with the rest of the document.
+
+2020-03-30  Dmitry Gutov  <address@hidden>
+
+       Handle project--files-in-directory finding no files better
+
+       * lisp/progmodes/project.el (project--find-regexp-in-files):
+       Signal user-error when passed an empty list of files.
+
+       * lisp/progmodes/xref.el (xref-matches-in-files):
+       Make sure FILES is not empty.
+
+2020-03-30  Alan Mackenzie  <address@hidden>
+
+       Let imenu to work on the menu bar when its list is a single non-nested 
member.
+
+       * lisp/imenu.el (imenu-update-menubar): No longer accept a list of 
length 1 as
+       being sufficient evidence for a nested list structure.  Instead, 
additionally
+       check whether or not certain elements are atoms.
+
+2020-03-30  Juri Linkov  <address@hidden>
+
+       * lisp/image/image-converter.el: Fix customization of image-converter.
+
+       * lisp/image/image-converter.el (image-convert-p): Update
+       image-converter-regexp when image-converter was customized (bug#39994).
+
+2020-03-29  Andreas Schwab  <address@hidden>
+
+       Fix url-cookie.el for lexical binding
+
+       * lisp/url/url-cookie.el (url-cookie-handle-set-cookie): Use setq
+       instead of set to modify lexical binding.
+
+2020-03-29  Noam Postavsky  <address@hidden>
+
+       Don't suggest setting face-remapping-alist to a literal (Bug#39812)
+
+       * src/xfaces.c (syms_of_xfaces) <face-remapping-alist>: Use copy-tree
+       in the costring example code, and note why.
+
+2020-03-27  Mattias Engdegård  <address@hidden>
+
+       Calc: don't treat nil as an integer (bug#40155)
+
+       Make Math-num-integerp return false for nil, following Math-integerp
+       which was changed in the bignum reform.  This fixes a crash in
+       calc-graph-fast.
+
+       Reported by Narendra Joshi.
+
+       * lisp/calc/calc-macs.el (Math-num-integerp): Not true for nil.
+       * test/lisp/calc/calc-tests.el (calc-Math-integerp): New tests.
+
+2020-03-25  Eli Zaretskii  <address@hidden>
+
+       * lisp/files.el (directory-files-recursively): Doc fix.  (Bug#40202)
+
+2020-03-25  Michael Albinus  <address@hidden>
+
+       Document how to disable Tramp file archives
+
+       * doc/misc/tramp.texi (Archive file names): Explain how to disable
+       file archives.
+
+2020-03-24  Lars Ingebrigtsen  <address@hidden>
+
+       Don't add repeated xlmns:xlink declarations in svg-create
+
+       * lisp/svg.el (svg-create): Fix previous unconditional addition of
+       the xmlns:xlink declaration -- callers may already add one, and
+       having it twice is something most svg libraries doesn't like.
+
+2020-03-23  Mattias Engdegård  <address@hidden>
+
+       Calc: Declare dynamic variable bound in lexbind code (bug#40185)
+
+       * lisp/calc/calc.el: Declare math-comp-selected as dynamic.
+
+2020-03-23  Eli Zaretskii  <address@hidden>
+
+       Don't build the Gnulib 'utimens' module on MinGW
+
+       * nt/gnulib-cfg.mk (OMIT_GNULIB_MODULE_utimens): Omit the
+       'utimens' module in the MinGW build: 'utimens' is not used by
+       Emacs, and 'fdutimens' is implemented in w32.c.
+
+2020-03-23  Phillip Lord  <address@hidden>
+
+       Add Harfbuzz dependency
+
+       * admin/nt/dist-build/build-dep-zips.py: Add harfbuzz as a dependency.
+
+2020-03-23  Noam Postavsky  <address@hidden>
+
+       Don't signal during backtrace unrewind (Bug#40088)
+
+       backtrace_eval_unrewind is used to temporarily reverse
+       let-bindings (it's called with a positive argument to reverse
+       bindings, and then a negative argument to re-apply them) by
+       backtrace--locals and backtrace-eval.  For the SPECPDL_LET_DEFAULT and
+       SPECPDL_LET_LOCAL cases (which occur for let-bindings on buffer-local
+       variables), the code calls Fdefault_value and Fbuffer_local_value on
+       the symbol.
+
+       For symbols which are unbound at top-level, the first (with positive
+       argument) call to backtrace_eval_unrewind will set the symbol's value
+       to unbound (putting the current value in the specpdl's "old value"
+       slot).  On the second (with negative argument) call,
+       backtrace_eval_unrewind attempts to retrieve the symbol's value with
+       Fdefault_value or Fbuffer_local_value, but that raises a void-variable
+       signal.  This interrupts the restoration of the let-bindings, so any
+       other variables more recent on the stack will now have the wrong
+       value.
+
+       * src/data.c (default_value): Make non-static.
+       * src/lisp.h: Declare it.
+       * src/eval.c (backtrace_eval_unrewind): Replace the calls to
+       Fdefault_value and Fbuffer_local_value with default_value and
+       buffer_local_value, respectively.  The latter do exactly the same as
+       the former, except if the symbol's value is Qunbound they just return
+       it instead of signaling void-variable.
+
+2020-03-23  Noam Postavsky  <address@hidden>
+
+       Fix a couple of problems in changelog generating functions
+
+       * lisp/vc/diff-mode.el (diff-add-log-current-defuns): If there is a
+       scan-error when calling end-of-defun, go to end of hunk.  This can
+       easily happen since we are calling end-of-defun on a partial code
+       fragment from a diff.
+       * lisp/vc/log-edit.el (log-edit-generate-changelog-from-diff): Bind
+       display-buffer-overriding-action around the log-edit-show-diff call
+       only.  Otherwise, it can affect, for example, debugger windows
+       triggered by the diff-add-log-current-defuns call.
+
+2020-03-23  Noam Postavsky  <address@hidden>
+
+       Fix cl-concatenate (Bug#40180)
+
+       * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Use apply, to avoid
+       adding extra nesting of args.
+       * test/lisp/emacs-lisp/cl-extra-tests.el (cl-concatenate): New test.
+
+2020-03-21  Eli Zaretskii  <address@hidden>
+
+       Improve documentation of project.el commands
+
+       * lisp/progmodes/project.el (project-find-regexp): Require 'grep'
+       to be able to call 'grep-read-files'.
+       (project-search, project-query-replace-regexp): Doc fixes.
+
+       * doc/emacs/maintaining.texi (Projects): New section.
+       * doc/emacs/emacs.texi (Top): Add "Projects" to the detailed menu.
+
+2020-03-20  Zhu Zihao  <address@hidden>  (tiny change)
+
+       Make svg images with links valid
+
+       * lisp/svg.el (svg-create): Specify xlink namespace for svg images
+       (bug#40010).
+
+2020-03-20  Juri Linkov  <address@hidden>
+
+       * lisp/tab-line.el (tab-line-new-button-show): New defcustom.
+
+       * lisp/tab-line.el (tab-line-format-template): Use 
tab-line-new-button-show.
+       (tab-line-new-tab-choice): Remove choice 'nil' with "No button".
+       (tab-line-separator): Add docstring.
+
+2020-03-19  Lars Ingebrigtsen  <address@hidden>
+
+       Don't have exif bugging out on short strings
+
+       * lisp/image/exif.el (exif--direct-ascii-value): New function
+       (bug#40127).
+       (exif--parse-directory): Use it to get the correct values for
+       in-directory (i.e., shorter than 4 octets) strings.
+
+2020-03-19  Robert Pluim  <address@hidden>
+
+       Use correct registry name for windows-1251 charset
+
+       * src/ftfont.c (fc_charset_table): The registry to use to lookup
+       windows-1251 charset is microsoft-cp1251, not windows-1251.
+       (Bug#40097)
+
+2020-03-19  Amin Bandali  <address@hidden>
+
+       ERC: Update maintainer address
+
+2020-03-18  Philipp Stephani  <address@hidden>
+
+       Remove raw carriage return characters from test file.
+
+       This protects against tools that mangle newline characters in text
+       files.
+
+       * test/lisp/electric-tests.el 
(electric-pair-mode-newline-between-parens)
+       (electric-layout-mode-newline-between-parens-without-e-p-m)
+       (electric-layout-mode-newline-between-parens-without-e-p-m-2): Escape
+       carriage return characters.
+
+2020-03-17  Robert Pluim  <address@hidden>
+
+       Recalculate default font when switching font backend
+
+       This is an updated version of the patch by Dmitry Antipov
+       <address@hidden> in
+       <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23386#43>.
+
+       Fixes Bug#23386
+
+       * src/dispextern.h (struct redisplay_interface): New member
+       default_font_parameter.
+       * src/xterm.h: Add prototype for x_default_font_parameter.
+       * src/xterm.c (x_redisplay_interface): Initialize
+       default_font_parameter member.
+       * src/xfns.c (x_default_font_parameter): Make non-static.
+       * src/w32term.h: Add prototype for w32_default_font_parameter
+       * src/w32fns.c (w32_default_font_parameter): Make non-static.
+       * src/w32term.c (w32_redisplay_interface): Initialize
+       default_font_parameter member.
+       * src/nsterm.m (ns_redisplay_interface): Add dummy
+       ns_default_font_parameter (there is currently only one possible font
+       backend on macOS).  Initialize default_font_parameter member.
+       * src/frame.c (gui_set_font_backend): Recalculate default font using
+       RIF default_font_parameter to avoid crash when changing font backend.
+
+2020-03-17  Juri Linkov  <address@hidden>
+
+       * lisp/tab-line.el: Fix tab-line-format and tab-line-format-template.
+
+       * lisp/tab-line.el (tab-line-format): Use buffer-name in the cache key
+       instead of just buffer object to invalidate the cache on buffer 
renaming.
+       (tab-line-format-template): Always leave the separator after the last 
tab
+       like tab-bar.el already does.
+
+2020-03-16  Stefan Monnier  <address@hidden>
+
+       * etc/NEWS: Make the `--eval` example slightly more precise
+
+2020-03-15  Juri Linkov  <address@hidden>
+
+       * lisp/image/image-converter.el: Support more ImageMagick versions 
(bug#39994)
+
+       * lisp/image/image-converter.el (image-converter--probe): Match
+       a possible additional second column in some ImageMagick versions
+       of "convert -list format".
+
+2020-03-14  Eli Zaretskii  <address@hidden>
+
+       Support Unicode 13.0
+
+       * admin/unidata/BidiBrackets.txt:
+       * admin/unidata/BidiMirroring.txt:
+       * admin/unidata/Blocks.txt:
+       * admin/unidata/NormalizationTest.txt:
+       * admin/unidata/SpecialCasing.txt:
+       * admin/unidata/UnicodeData.txt:
+       * admin/unidata/copyright.html:
+       * test/manual/BidiCharacterTest.txt: Updated files imported from
+       Unicode v13.0.
+
+       * admin/unidata/blocks.awk: Add "Symbols for Legacy Computing" to
+       known aliases.
+
+       * lisp/international/fontset.el (script-representative-chars)
+       (setup-default-fontset): Add new scripts.
+       * lisp/international/characters.el: Set syntax for Symbols for
+       Legacy Computing characters.  Update setting of char-width-table.
+       * lisp/international/mule-cmds.el (ucs-names): Update ranges of
+       characters for which we want names in 'ucs-names'.
+
+       * test/lisp/international/ucs-normalize-tests.el
+       (ucs-normalize-tests--failing-lines-part1)
+       (ucs-normalize-tests--failing-lines-part2): Update according to
+       'ucs-normalize-check-failing-lines'.
+
+2020-03-14  Lars Ingebrigtsen  <address@hidden>
+
+       Fix regression in wisent-total-conflicts
+
+       * lisp/cedet/semantic/wisent/comp.el (wisent-total-conflicts):
+       There may not be a current source file.  In that case, don't try
+       to keep track of the number of expected conflicts (bug#39911).
+
+2020-03-14  Alan Mackenzie  <address@hidden>
+
+       * lisp/progmodes/cc-defs.el (c-version): update to 5.34.1 for Emacs 27.1
+
+       Don't merge to master.
+
+2020-03-14  Philipp Stephani  <address@hidden>
+
+       * lisp/textmodes/fill.el (fill-nobreak-predicate): Fix documentation.
+
+2020-03-14  Stefan Kangas  <address@hidden>
+
+       Improve Package Menu hiding docstrings
+
+       * lisp/emacs-lisp/package.el (package-menu-toggle-hiding): Add
+       reference to 'package-menu-hidden-regexps'.
+       * lisp/emacs-lisp/package.el (package-menu-hide-package): Improve
+       docstring to say that hiding is saved in a user option.  Fix a
+       typo.  (Bug#39436)
+
+2020-03-14  Eli Zaretskii  <address@hidden>
+
+       Fix display of Big5 characters when using Fontconfig
+
+       * src/ftfont.c (fc_charset_table): Fix the value of the big-5
+       representative codepoint.  Reported by Brian Schack
+       <address@hidden>.  (Bug#40057)
+
+       * src/macfont.m (cf_charset_table): Adjust the comment.
+
+2020-03-13  Eli Zaretskii  <address@hidden>
+
+       Fix a recent documentation change
+
+       * doc/emacs/frames.texi (Mouse Commands): More detailed
+       description of how tilting the mouse-wheel works.
+
+       * lisp/mwheel.el (mouse-wheel-tilt-scroll)
+       (mouse-wheel-flip-direction): Fix the wording of doc strings.
+       (Bug#39979)
+
+2020-03-13  Eli Zaretskii  <address@hidden>
+
+       Fix last change
+
+       * lisp/tab-bar.el (tab-bar-new-button-show): Fix wording of the
+       doc string.
+
+2020-03-13  Juri Linkov  <address@hidden>
+
+       * lisp/tab-bar.el: Last-minute changes.
+
+       * lisp/tab-bar.el (tab-bar-mode): Check for non-nil
+       tab-bar-new-button and tab-bar-close-button.
+       (tab-bar-new-button-show): New defcustom.
+       (tab-bar-make-keymap-1): Check for tab-bar-new-button-show.
+       (tab-bar-separator): Add docstring.
+
+2020-03-12  Stefan Monnier  <address@hidden>
+
+       * lisp/subr.el (cancel-change-group): Fix bug#39680
+
+       Don't re-use an existing `pending-undo-list` even if (eq last-command 
'undo)
+       since there might have been changes to the buffer since that `undo` 
command
+       and the `pending-undo-list` can hence be invalid for the current
+       buffer contents.
+
+2020-03-12  İ. Göktuğ Kayaalp  <address@hidden>
+
+       Improve docs for horizontal scrolling with mouse and touchpad 
(Bug#39979)
+
+       * lisp/mwheel.el (mouse-wheel-tilt-scroll,
+       mouse-wheel-flip-direction): Improve docstrings.
+       * doc/emacs/frames.texi (Mouse Commands): Mention touchpads.
+
+2020-03-10  Juri Linkov  <address@hidden>
+
+       * lisp/emacs-lisp/package.el (package-install): Fix typo in docstring.
+
+2020-03-09  Paul Eggert  <address@hidden>
+
+       Port .gdbinit to clang with -gdwarf-4
+
+       * src/.gdbinit (xgetsym): Port to clang with -gdwarf-4, which
+       doesn’t output the type of lispsym anywhere other than emacs.o
+       (Bug#39962).
+
+2020-03-09  Mattias Engdegård  <address@hidden>
+
+       Simplify rx example in manual
+
+       * doc/lispref/searching.texi (Rx Notation):
+       Use the 'not' shorthand introduced in Emacs 27.
+
+2020-03-09  Paul Eggert  <address@hidden>
+
+       * src/timefns.c: Add comments.
+
+2020-03-08  Paul Eggert  <address@hidden>
+
+       * src/timefns.c: Add comments.
+
+2020-03-08  Andrew Eggenberger  <address@hidden>  (tiny change)
+
+       Eliminate use of cl-concatenate in 'seq' package
+
+       Fixes (Bug#39761) by making cl-extra dependent on seq rather than
+       vice versa.
+       * lisp/emacs-lisp/seq.el (seq-concatenate): Move cl-concatenate's
+       code here instead of calling it.
+       * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Use cl-concatenate.
+
+2020-03-07  Paul Eggert  <address@hidden>
+
+       Fix bug with JIT stealth timers
+
+       * lisp/emacs-lisp/timer.el (run-at-time): Don’t assume that Lisp
+       time values must be conses (Bug#39944).
+
+2020-03-07  Paul Eggert  <address@hidden>
+
+       * doc/lispref/os.texi (time-subtract): Doc fix.
+
+2020-03-07  Alan Third  <address@hidden>
+
+       NS port documentation updates
+
+       * doc/emacs/macos.texi (Mac / GNUstep Customization): Document some
+       more of the ns- variables and remove incorrect font back-end
+       information.
+       * etc/NEWS: Update the documentation status of macOS news entries.
+
+2020-03-07  João Távora  <address@hidden>
+
+       Let fido-mode users force a minibuffer-exit
+
+       * lisp/icomplete.el (icomplete-fido-exit):
+       Add FORCE arg.  Rewrite docstring. (bug#38992)
+
+2020-03-07  Dmitry Gutov  <address@hidden>
+
+       icomplete-fido-exit: New command for the M-j binding
+
+       * lisp/icomplete.el (icomplete-fido-exit): New command.
+       (icomplete-fido-mode-map): Use it (bug#38992).
+
+2020-03-07  Dmitry Gutov  <address@hidden>
+
+       minibuffer-force-complete-and-exit: Allow input with no matches
+
+       * lisp/minibuffer.el (minibuffer--require-match): New variable.
+       (completing-read-default): Bind it to the REQUIRE-MATCH value.
+       (minibuffer-force-complete-and-exit): Consult it to allow input
+       with no matches when a match is not required (bug#38992).
+
+       * lisp/icomplete.el (icomplete-exhibit): Use it to render the
+       correct parens around matches.
+
+2020-03-07  Eli Zaretskii  <address@hidden>
+
+       Document that 'byte-compile-dynamic' is obsolete
+
+       * doc/lispref/compile.texi (Dynamic Loading): Document that this
+       is deprecated.
+
+       * etc/NEWS: mark the 'byte-compile-dynamic' entry as documented.
+
+2020-03-07  Eli Zaretskii  <address@hidden>
+
+       Document the changes in 'read-answer'
+
+       * doc/lispref/minibuf.texi (Multiple Queries): Document the
+       fact that 'read-answer' can now accept non-character input
+       events.
+
+2020-03-07  Eli Zaretskii  <address@hidden>
+
+       Document changes in lexical-binding
+
+       * doc/lispref/variables.texi (Using Lexical Binding): Document
+       that lexical-binding is now turned on by default in more cases.
+
+       * etc/NEWS: Fix wording of the NEWS entry about the above, and mark it
+       as fully documented.
+
+2020-03-06  Amin Bandali  <address@hidden>
+
+       Update ERC mailing list address
+
+       * lisp/erc/erc.el (erc-official-location): As part of bringing ERC
+       under the Emacs umbrella, erc-discuss has been renamed to emacs-erc,
+       and will be *the* mailing list for discussions and announcements about
+       ERC going forward.  The other two lists, erc-announce and erc-commit,
+       are now retired.  For more details, see the announcement at
+       <https://lists.gnu.org/archive/html/emacs-erc/2020-03/msg00001.html>.
+
+2020-03-06  Roland Winkler  <address@hidden>
+
+       Use regexp-opt to define bibtex-autokey-transcriptions.  (Bug#39686)
+
+2020-03-06  Eli Zaretskii  <address@hidden>
+
+       Improve documentation of 'table-generate-source'
+
+       * lisp/textmodes/table.el (table-generate-source): Doc fix.
+       (Bug#39935)
+
+       * etc/NEWS: Fix wording of the 'table-generate-source' entry and
+       mark it as documented.
+
+2020-03-06  Eli Zaretskii  <address@hidden>
+
+       Attempt to avoid rare segfaults in show_mouse_face
+
+       * src/xdisp.c (show_mouse_face): Don't display the active region
+       if called on a frame different from the one recorded in HLINFO.
+       (Bug#37671)
+
+2020-03-05  Eli Zaretskii  <address@hidden>
+
+       Avoid crashes when a fontset has strange entries
+
+       * src/fontset.c (reorder_font_vector): Skip nil entries in the
+       loop that assigns scores to rfont_def's.
+       (fontset_compare_rfontdef): Cope with nil.  This has the effect of
+       moving any nil entries to the end of the font-group, and avoids
+       crashing if an element other than the last in the font-group is
+       nil.  (Bug#39892)
+
+2020-03-05  Mattias Engdegård  <address@hidden>
+
+       Fix rx error with ? and ??
+
+       The ? and ?? rx operators are special in that they can be written as
+       characters (space and '?' respectively).  This confused the definition
+       look-up mechanism in rare cases.
+
+       * lisp/emacs-lisp/rx.el (rx--expand-def): Don't look up non-symbols.
+       * test/lisp/emacs-lisp/rx-tests.el (rx-charset-or): Test.
+
+2020-03-05  Mattias Engdegård  <address@hidden>
+
+       * lisp/emacs-lisp/rx.el (rx--string-to-intervals): Fix error string.
+
+2020-03-05  Justin Burkett  <address@hidden>  (tiny change)
+
+       Fix args in 'window-text-pixel-size' call in 'fit-window-to-buffer'
+
+       * lisp/window.el (fit-window-to-buffer): Fix arguments in
+       'window-text-pixel-size' call.
+
+2020-03-04  João Távora  <address@hidden>
+
+       Have pulse.el preserve existing overlay priorities
+
+       (Bug#39821)
+
+       * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay): Save
+       overlay priority.
+       (pulse-momentary-unhighlight): Restore.
+
+2020-03-04  Alan Mackenzie  <address@hidden>
+
+       CC Mode: Fix the handling of two adjacent after-change-functionses.
+
+       The bug involved failing to set c-new-END correctly, which lead to an
+       args-out-of-range error when after-change-functions was invoked twice 
without
+       an intervening invocation of before-change-functions.
+
+       * lisp/progmodes/cc-mode.el (c-after-change): Correct a coding error in 
the
+       handling of c-just-done-before-change.
+
+2020-03-04  Alan Mackenzie  <address@hidden>
+
+       Fix combine-change-calls-1 for when buffer-undo-list is t
+
+       * lisp/subr.el (combine-change-calls-1): Bind 
before/after-change-functions to
+       nil also when buffer-undo-list is t.
+
+2020-03-04  Mattias Engdegård  <address@hidden>
+
+       Don't misinterpret doc string as initial value
+
+       * lisp/loadhist.el (loadhist--restore-autoload):
+       * lisp/progmodes/vhdl-mode.el (vhdl-font-lock-keywords-0):
+       Prevent the doc string from being used as initial value.
+
+2020-03-04  Stefan Kangas  <address@hidden>
+
+       Bump checkdoc-version to match library header
+
+       * lisp/emacs-lisp/checkdoc.el (checkdoc-version): Bump version.
+
+2020-03-04  Noam Postavsky  <address@hidden>
+
+       Explain how to unset mode bindings (Bug#39802)
+
+       * doc/emacs/custom.texi (Init Rebinding): Explain that passing nil to
+       define-key will unbind keys, and extend the example accordingly.
+
+2020-03-04  Noam Postavsky  <address@hidden>
+
+       Fix describe-variable on values with circular syntax (Bug#39805)
+
+       * lisp/help-fns.el (describe-variable): Set syntax tables before
+       calling pp-buffer.
+
+2020-03-04  Juri Linkov  <address@hidden>
+
+       Improve documentation of next-error-highlight-no-select (bug#38778)
+
+       * doc/emacs/building.texi (Compilation Mode):
+       Mention next-error-highlight-no-select.
+
+       * lisp/simple.el (next-error-highlight): Add reference to
+       next-error-highlight-no-select.
+       (next-error-highlight-no-select): Add reference to
+       next-error-highlight.
+
+2020-03-03  Andreas Schwab  <address@hidden>
+
+       Fix implicit declaration of getenv and atol
+
+       * src/gtkutil.c: Include <stdlib.h>.
+
+2020-03-03  Eli Zaretskii  <address@hidden>
+
+       Fix handling MS-Windows keyboard input above the BMP
+
+       * src/w32term.c (w32_read_socket): If we get a WM_UNICHAR message
+       with a surrogate codepoint, assemble the corresponding character
+       code above the BMP from its UTF-16 encoding, communicated in two
+       consecutive WM_UNICHAR messages.
+
+2020-03-03  Mattias Engdegård  <address@hidden>
+
+       * etc/NEWS: More complete description of rx 'not' changes.
+
+2020-03-02  Juri Linkov  <address@hidden>
+
+       * doc/emacs/mini.texi (Yes or No Prompts): 'y-or-n-p' now uses the 
minibuffer.
+
+2020-03-02  Robert Pluim  <address@hidden>
+
+       Don't attempt to cache glyph metrics for FONT_INVALID_CODE
+
+       This was causing massive slowdown in redisplay when eg #xfe0f
+       (VARIATION SELECTOR-16) was present, as the cache ended up very large,
+       unused, and being recreated on every call to font_fill_lglyph_metrics
+       (Bug#39133).
+
+       * src/composite.c (fill_gstring_body): Hoist FONT_OBJECT_P check out
+       of loop.  Calculate glyph code and check for FONT_INVALID_CODE before
+       calling font_fill_lglyph_metrics.  Pass glyph code to it.
+
+       * src/font.c (font_fill_lglyph_metrics): Add code parameter, move
+       glyph code calculation up the call stack into fill_gstring_body.
+
+       * src/font.h: Adjust font_fill_lglyph_metrics prototype.
+
+2020-03-01  Sergey Trofimov  <address@hidden>  (tiny change)
+
+       Fix fit-frame-to-buffer for multi-monitor setup
+
+       * lisp/window.el (fit-frame-to-buffer): Call
+       'frame-monitor-attributes' instead of
+       'display-monitor-attributes-list'.  Fix geometry calculations for
+       multiple monitors.
+
+2020-03-01  Mattias Engdegård  <address@hidden>
+
+       rx: Improve 'or' compositionality (bug#37659)
+
+       Perform 'regexp-opt' on nested 'or' forms, and after expansion of
+       user-defined and 'eval' forms.  Characters are now turned into strings
+       for wider 'regexp-opt' scope.  This preserves the longest-match
+       semantics for string in 'or' forms over composition.
+
+       * doc/lispref/searching.texi (Rx Constructs): Document.
+       * lisp/emacs-lisp/rx.el (rx--normalise-or-arg)
+       (rx--all-string-or-args): New.
+       (rx--translate-or): Normalise arguments first, and check for strings
+       in subforms.
+       (rx--expand-eval): Extracted from rx--translate-eval.
+       (rx--translate-eval): Call rx--expand-eval.
+       * test/lisp/emacs-lisp/rx-tests.el (rx-or, rx-def-in-or): Add tests.
+       * etc/NEWS: Announce.
+
+2020-02-29  Juri Linkov  <address@hidden>
+
+       * lisp/tab-line.el: Fix auto-hscrolling (bug#39649)
+
+       Distinguish offsets between manual-vs-automatic scrolling
+       as integers-vs-floats instead of positive-vs-negative integers.
+
+       * lisp/tab-line.el (tab-line-format-template): Use 'numberp'
+       instead of 'integerp', and 'truncate' instead of 'abs'.
+       (tab-line-format): When the window-buffer was updated, set 
window-parameter
+       to float to enable auto-hscroll after it was disabled on manual 
scrolling.
+       (tab-line-auto-hscroll-buffer): New variable with internal buffer.
+       (tab-line-auto-hscroll): Erase in tab-line-auto-hscroll-buffer.
+       Use 'numberp' instead of 'integerp', 'truncate' instead of 'abs',
+       and 'float' instead of '-'.
+       (tab-line-hscroll): Use 'numberp' instead of 'integerp',
+       and 'truncate' instead of 'abs'.
+
+2020-02-29  Mattias Engdegård  <address@hidden>
+
+       Fix rx charset generation
+
+       * lisp/emacs-lisp/rx.el (rx--charset-p): Don't overquote.
+       (rx--generate-alt): Generate '.' for negated newline.
+       * test/lisp/emacs-lisp/rx-tests.el (rx-any, rx-charset-or): Test.
+
+2020-02-28  Mattias Engdegård  <address@hidden>
+
+       Fix overquoting in mule.el
+
+       * lisp/international/mule.el (sgml-xml-auto-coding-function):
+       Remove accidental quote.
+
+2020-02-28  Paul Eggert  <address@hidden>
+
+       * src/timefns.c (time_arith): Omit incorrect comment.
+
+2020-02-28  Mattias Engdegård  <address@hidden>
+
+       * lisp/vc/vc-cvs.el (vc-cvs-ignore): Copy-edit doc string
+
+2020-02-28  Štěpán Němec  <address@hidden>
+
+       checkdoc: Don't mistake "cf." for sentence end
+
+       * lisp/emacs-lisp/checkdoc.el (checkdoc-sentencespace-region-engine):
+       Recognize "cf." as an abbreviation, not a sentence end.
+
+2020-02-27  Nicolas Petton  <address@hidden>
+
+       Bump Emacs version to 27.0.90
+
+       * README:
+       * configure.ac:
+       * msdos/sed2v2.inp:
+       * nt/README.W32: Bump Emacs version.
+
+2020-02-27  Nicolas Petton  <address@hidden>
+
+       * etc/AUTHORS: Update.
+
 2020-02-27  Nicolas Petton  <address@hidden>
 
        * admin/authors.el (authors-ignored-files): Fix entries.
@@ -139450,7 +140538,7 @@
 
 This file records repository revisions from
 commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit 9261b1ed49755284bb9dc194b6c2a9b407151ee5 (inclusive).
+commit 4acdd7fe58ae9f94102afeca67b0383141d597da (inclusive).
 See ChangeLog.2 for earlier changes.
 
 ;; Local Variables:
diff --git a/admin/authors.el b/admin/authors.el
index dc42bc7..fd17a33 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -207,6 +207,11 @@ files.")
     ("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則")
     ("Yutaka NIIBE" "NIIBE Yutaka")
     (nil "stardiviner")
+    (nil "lin.sun")
+    ("Nitish Chinta" "nitishch")
+    ("Carlos Pita" "memeplex")
+    ("Vinicius Jose Latorre" "viniciusjl")
+    ("Gaby Launay" "galaunay")
     )
   "Alist of author aliases.
 
@@ -278,7 +283,7 @@ If REALNAME is nil, ignore that author.")
 
 
 (defvar authors-obsolete-files-regexps
-  '(".*loaddefs.el$"                   ; not obsolete, but auto-generated
+  '(".*loaddefs\\.el$"                 ; not obsolete, but auto-generated
     "\\.\\(bzr\\|cvs\\|git\\)ignore$"          ; obsolete or uninteresting
     "\\.arch-inventory$"
     "ChangeLog\\(\\.[0-9]+\\)?\\'"
@@ -288,9 +293,9 @@ If REALNAME is nil, ignore that author.")
     "\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/"
     "-resources/"
     "unidata/.*\\.txt\\'"
-    "BidiCharacterTest.txt"
+    "BidiCharacterTest\\.txt"
     ;; TODO lib/? Matches other things?
-    "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
+    "build-aux/" "m4/" "Emacs\\.xcodeproj" "mapfiles" "\\.map\\'"
     "preferences\\.\\(nib\\|gorm\\)"
     ;; Generated files that have since been removed.
     "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
@@ -1183,7 +1188,7 @@ 
ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
     ("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\
 \\|odt\\|publish\\)\\.el\\'" "ox-\\1.el")
     ;; From test/ to test/automated/.
-    ("comint-testsuite.el" "automated/\\&")
+    ("comint-testsuite\\.el" "automated/\\&")
     ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
 -testsuite\\.el" "\\1-tests.el")
     ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index af2f3ac..5ec23a9 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -5871,25 +5871,26 @@ which window parameters (if any) are saved by this 
function.
 
 @defun set-window-configuration configuration
 This function restores the configuration of windows and buffers as
-specified by @var{configuration}, for the frame that @var{configuration}
-was created for.
-
-The argument @var{configuration} must be a value that was previously
-returned by @code{current-window-configuration}.  The configuration is
-restored in the frame from which @var{configuration} was made, whether
-that frame is selected or not.  In some rare cases this may trigger
-execution of the @code{window-size-change-functions} (@pxref{Window
-Hooks}) even if the size of windows did not change at all.  The
-@code{window-configuration-change-hook} functions will be called if and
-only if at least one window was added to or deleted from the frame.
-
-If the frame from which @var{configuration} was saved is dead, all this
-function does is restore the three variables @code{window-min-height},
-@code{window-min-width} and @code{minibuffer-scroll-window}.  In this
-case, the function returns @code{nil}.  Otherwise, it returns @code{t}.
-
-Here is a way of using this function to get the same effect
-as @code{save-window-excursion}:
+specified by @var{configuration}, for the frame that
+@var{configuration} was created for, regardless of whether that frame
+is selected or not.  The argument @var{configuration} must be a value
+that was previously returned by @code{current-window-configuration}
+for that frame.
+
+If the frame from which @var{configuration} was saved is dead, all
+this function does is to restore the value of the variable
+@code{minibuffer-scroll-window} and to adjust the value returned by
+@code{minibuffer-selected-window}.  In this case, the function returns
+@code{nil}.  Otherwise, it returns @code{t}.
+
+If the buffer of a window of @var{configuration} has been killed since
+@var{configuration} was made, that window is, as a rule, removed from
+the restored configuration.  However, if that window is the last
+window remaining in the restored configuration, another live buffer is
+shown in it.
+
+Here is a way of using this function to get the same effect as
+@code{save-window-excursion}:
 
 @example
 @group
diff --git a/etc/AUTHORS b/etc/AUTHORS
index ab0cbee..aff24a8 100644
--- a/etc/AUTHORS
+++ b/etc/AUTHORS
@@ -97,11 +97,11 @@ 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 follow.el display.texi subr.el
+and changed cc-mode.texi bytecomp.el display.texi follow.el subr.el
   edebug.el progmodes/compile.el programs.texi syntax.texi modes.texi
   font-lock.el isearch.el text.texi help.el ispell.el lread.c syntax.c
   windows.texi .dir-locals.el control.texi cus-start.el
-  and 147 other files
+  and 148 other files
 
 Alan Modra: changed unexelf.c
 
@@ -113,9 +113,9 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el 
cal-hebrew.el
 
 Alan Third: wrote dabbrev-tests.el image-transforms-tests.el
 and changed nsterm.m nsterm.h nsfns.m nsmenu.m ns-win.el nsimage.m
-  image.c macfont.m configure.ac frame.el xdisp.c display.texi image.el
-  macos.texi xterm.c Info.plist.in conf_post.h dispextern.h frame.c
-  frame.h frames.texi and 21 other files
+  image.c macfont.m configure.ac frame.el xdisp.c macos.texi display.texi
+  image.el xterm.c Info.plist.in conf_post.h dispextern.h frame.c frame.h
+  frames.texi and 21 other files
 
 Alastair Burt: changed gnus-art.el smiley.el
 
@@ -235,12 +235,11 @@ Alp Aker: changed nsfont.m nsterm.m buff-menu.el nsfns.m 
nsmenu.m
 Ami Fischman: changed bindings.el calendar.el diary-lib.el print.c
   savehist.el vc-git.el
 
-Amin Bandali: changed erc-button.el erc-desktop-notifications.el
-  erc-autoaway.el erc-compat.el erc-fill.el erc-ibuffer.el erc-imenu.el
-  erc-join.el erc-lang.el erc-list.el erc-log.el erc-match.el
-  erc-notify.el erc-pcomplete.el erc-replace.el erc-ring.el
-  erc-services.el erc-sound.el erc-speedbar.el erc-spelling.el
-  erc-stamp.el and 4 other files
+Amin Bandali: changed erc.el erc-button.el erc-desktop-notifications.el
+  erc-track.el erc-autoaway.el erc-compat.el erc-fill.el erc-ibuffer.el
+  erc-imenu.el erc-join.el erc-lang.el erc-list.el erc-log.el
+  erc-match.el erc-notify.el erc-pcomplete.el erc-replace.el erc-ring.el
+  erc-services.el erc-sound.el erc-speedbar.el and 5 other files
 
 Anand Mitra: changed gnus-sum.el
 
@@ -298,7 +297,7 @@ Andreas Rottmann: changed emacsclient.1 emacsclient.c 
misc.texi server.el
 Andreas Schwab: changed configure.ac lisp.h xdisp.c process.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 650 other files
+  and 651 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
@@ -332,6 +331,8 @@ and changed nnir.el gnus-sum.el nnimap.el gnus-msg.el 
gnus.texi
 
 Andrew Csillag: wrote m4-mode.el
 
+Andrew Eggenberger: changed cl-extra.el seq.el
+
 Andrew G Cohen: changed gnus-sum.el gnus-art.el
 
 Andrew Hall: changed paren.el
@@ -695,8 +696,8 @@ Carl Edman: co-wrote ns-win.el
 
 Carl Henrik Lunde: changed format-spec.el
 
-Carlos Pita: changed erc-pcomplete.el image-mode.el progmodes/python.el
-  sh-script.el
+Carlos Pita: changed progmodes/python.el erc-pcomplete.el fringe.c
+  gtkutil.c image-mode.el keyboard.c sh-script.el
 
 Carsten Bormann: changed ibmrs6000.h latin-post.el
 
@@ -1354,9 +1355,9 @@ Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el 
json-tests.el
   vc-hg-tests.el xref-tests.el
 and changed ruby-mode.el xref.el project.el vc-git.el elisp-mode.el
   etags.el ruby-mode-tests.el js.el package.el vc-hg.el vc.el
-  symref/grep.el log-edit.el dired-aux.el simple.el menu-bar.el
-  minibuffer.el package-test.el progmodes/grep.el vc-svn.el eldoc.el
-  and 110 other files
+  symref/grep.el log-edit.el dired-aux.el simple.el minibuffer.el
+  menu-bar.el package-test.el progmodes/grep.el vc-svn.el eldoc.el
+  and 111 other files
 
 Dmitry Kurochkin: changed isearch.el
 
@@ -1444,7 +1445,7 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c]
 and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el
   files.el fileio.c keyboard.c w32term.c w32proc.c emacs.c files.texi
   text.texi dispnew.c frames.texi lisp.h dispextern.h window.c process.c
-  term.c and 1184 other files
+  term.c and 1187 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
@@ -2039,7 +2040,7 @@ Ian Lance Taylor: changed sco4.h
 Ian T Zimmerman: wrote gametree.el
 and changed ange-ftp.el desktop.el tex-mode.el
 
-İ. Göktuğ Kayaalp: changed eww.el vc-rcs.el
+İ. Göktuğ Kayaalp: changed eww.el frames.texi mwheel.el vc-rcs.el
 
 Igor Kuzmin: wrote cconv.el
 
@@ -2433,7 +2434,7 @@ and changed flymake.el flymake-proc.el icomplete.el 
minibuffer.el
   flymake-tests.el flymake.texi elisp-mode.el flymake-elisp.el
   electric.el flymake-ui.el text.texi json-tests.el tex-mode.el
   errors-and-warnings.c json.c xref.el auth-source-pass.el linum.el
-  maintaining.texi message.el progmodes/python.el and 29 other files
+  maintaining.texi message.el progmodes/python.el and 30 other files
 
 Jochen Hein: changed gnus-art.el
 
@@ -2713,13 +2714,15 @@ Juri Linkov: wrote files-x.el misearch.el 
replace-tests.el tab-bar.el
 and changed isearch.el info.el simple.el replace.el dired.el dired-aux.el
   progmodes/grep.el progmodes/compile.el startup.el subr.el diff-mode.el
   files.el menu-bar.el faces.el bindings.el display.texi image-mode.el
-  desktop.el comint.el minibuffer.el search.texi and 418 other files
+  desktop.el comint.el minibuffer.el search.texi and 419 other files
 
 Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h
   w32console.c w32heap.c w32inevt.c w32term.h
 
 Justin Bogner: changed fortune.el
 
+Justin Burkett: changed window.el
+
 Justin Gordon: changed ox-md.el
 
 Justin Sheehy: changed gnus-sum.el nntp.el
@@ -3119,8 +3122,6 @@ Liam Stitt: changed url-file.el url-vars.el
 
 Liang Wang: changed etags.el
 
-Lin Sun: changed makefile-edit.el
-
 Lixin Chin: changed bibtex.el
 
 Lloyd Zusman: changed mml.el pgg-gpg.el
@@ -3348,9 +3349,9 @@ Martin Neitzel: changed supercite.el
 Martin Pohlack: changed iimage.el pc-select.el
 
 Martin Rudalics: changed window.el window.c windows.texi frame.c xdisp.c
-  w32fns.c frames.texi xterm.c w32term.c frame.el xfns.c display.texi
+  w32fns.c xterm.c frames.texi w32term.c xfns.c frame.el display.texi
   help.el buffer.c window.h cus-start.el frame.h dispnew.c mouse.el
-  nsfns.m dired.el and 209 other files
+  nsfns.m gtkutil.c and 209 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
@@ -3450,10 +3451,10 @@ Matt Hodges: changed textmodes/table.el faces.el 
iswitchb.el simple.el
   locate.el paragraphs.el pcomplete.el repeat.el and 3 other files
 
 Mattias Engdegård: changed rx.el searching.texi rx-tests.el autorevert.el
-  regexp-opt.el calc-tests.el filenotify.el subr.el progmodes/compile.el
-  files.el mouse.el bytecomp.el compile-tests.el autorevert-tests.el
-  byte-opt.el bytecomp-tests.el calc-alg.el compilation.txt font.c
-  regex-emacs.c regexp-opt-tests.el and 121 other files
+  calc-tests.el regexp-opt.el filenotify.el subr.el files.el
+  progmodes/compile.el mouse.el bytecomp.el compile-tests.el
+  autorevert-tests.el byte-opt.el bytecomp-tests.el calc-alg.el
+  compilation.txt dired.el font.c regex-emacs.c and 161 other files
 
 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
@@ -3854,7 +3855,7 @@ Nil Geisweiller: changed flymake.el
 
 Nils Ackermann: changed message.el nnmh.el reftex-vars.el
 
-Nitish Chandra: changed simple.el
+Nitish Chinta: changed progmodes/python.el sendmail.el simple.el
 
 N. Jackson: changed emacs.texi forms.texi
 
@@ -3870,10 +3871,10 @@ Noah Lavine: changed tramp.el
 Noah Swainland: changed calc.el
 
 Noam Postavsky: changed progmodes/python.el lisp-mode.el bytecomp.el
-  lisp-mode-tests.el term.el xdisp.c cl-macs.el eval.c
-  emacs-lisp/debug.el simple.el data.c modes.texi subr.el elisp-mode.el
-  ert.el help-fns.el isearch.el processes.texi cl-print.el ffap.el
-  print.c and 357 other files
+  lisp-mode-tests.el term.el xdisp.c eval.c cl-macs.el data.c
+  emacs-lisp/debug.el simple.el help-fns.el modes.texi subr.el
+  elisp-mode.el ert.el isearch.el processes.texi cl-print.el diff-mode.el
+  ffap.el and 359 other files
 
 Nobuyoshi Nakada: co-wrote ruby-mode.el
 and changed ruby-mode-tests.el
@@ -4168,15 +4169,15 @@ Philipp Stephani: wrote callint-tests.el 
checkdoc-tests.el
   lread-tests.el mouse-tests.el xt-mouse-tests.el
 and changed emacs-module.c emacs-module-tests.el json.c json-tests.el
   eval.c mod-test.c lisp.h lread.c nsterm.m configure.ac bytecomp.el
-  internals.texi gtkutil.c emacs-module.h.in files.el alloc.c electric.el
-  test/Makefile.in editfns.c electric-tests.el emacs.c
-  and 126 other files
+  internals.texi gtkutil.c emacs-module.h.in files.el alloc.c
+  electric-tests.el electric.el test/Makefile.in editfns.c emacs.c
+  and 127 other files
 
 Phillip Lord: wrote ps-print-tests.el
-and changed build-zips.sh lisp/Makefile.in undo.c simple.el
-  build-dep-zips.py test/Makefile.in Makefile Makefile.in emacs.nsi
-  keyboard.c viper-cmd.el README-windows-binaries README.W32
-  elisp-mode-tests.el ldefs-clean.el loadup.el README-scripts autoload.el
+and changed build-zips.sh lisp/Makefile.in undo.c build-dep-zips.py
+  simple.el test/Makefile.in Makefile Makefile.in emacs.nsi keyboard.c
+  viper-cmd.el README-windows-binaries README.W32 elisp-mode-tests.el
+  ldefs-clean.el loadup.el README-scripts autoload.el
   automated/Makefile.in cmds.c dired.el and 171 other files
 
 Phil Sainty: wrote autoload-longlines-mode-tests.el
@@ -4412,11 +4413,11 @@ Roberto Rodríguez: changed glossary.texi widget.texi
 Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el
 
 Robert Pluim: wrote nsm-tests.el
-and changed process.c gtkutil.c processes.texi vc-git.el configure.ac
-  ftfont.c network-stream.el nsm.el process-tests.el files.texi font.c
-  ftcrfont.c gnus-icalendar.el gnutls.el gtkutil.h
-  network-stream-tests.el text.texi w32.c xfns.c xftfont.c auth.texi
-  and 83 other files
+and changed process.c ftfont.c gtkutil.c processes.texi vc-git.el
+  configure.ac font.c network-stream.el nsm.el process-tests.el xfns.c
+  dispextern.h files.texi ftcrfont.c gnus-icalendar.el gnutls.el
+  gtkutil.h network-stream-tests.el nsterm.m text.texi w32.c
+  and 90 other files
 
 Robert Thorpe: changed cus-start.el indent.el
 
@@ -4649,6 +4650,8 @@ and changed ob-maxima.el ob-octave.el
 
 Sergey Poznyakoff: changed rmail.el mh-mime.el rmail.texi smtpmail.el
 
+Sergey Trofimov: changed window.el
+
 Sergey Vinokurov: changed emacs-module-tests.el emacs-module.c mod-test.c
 
 Sergio Durigan Junior: changed eudcb-bbdb.el gdb-mi.el
@@ -4772,7 +4775,7 @@ Stefan Kangas: wrote bookmark-tests.el delim-col-tests.el 
morse-tests.el
 and changed bookmark.el package.el efaq.texi package.texi ibuffer.el
   mwheel.el cperl-mode.el fns.c gud.el simple.el subr.el autoinsert.el
   comint-tests.el cus-edit.el delim-col.el dired-aux.el dired-x.el
-  em-term.el ert.texi flow-fill.el frames.texi and 146 other files
+  em-term.el ert.texi flow-fill.el frames.texi and 147 other files
 
 Stefan Merten: co-wrote rst.el
 
@@ -4806,10 +4809,11 @@ Stefan Wiens: changed gnus-sum.el
 
 Steinar Bang: changed gnus-setup.el imap.el
 
-Štěpán Němec: changed INSTALL calc-ext.el cl.texi comint.el edebug.texi
-  font-lock.el functions.texi leim-ext.el loading.texi maps.texi
-  mark.texi message.texi mini.texi minibuf.texi misc.texi programs.texi
-  subr.el tips.texi url-vars.el url.texi vc-git.el and 3 other files
+Štěpán Němec: changed INSTALL calc-ext.el checkdoc.el cl.texi comint.el
+  edebug.texi font-lock.el functions.texi gnus-sum.el insdel.c
+  leim-ext.el loading.texi maps.texi mark.texi message.texi mini.texi
+  minibuf.texi misc.texi programs.texi subr.el text.texi
+  and 7 other files
 
 Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi
   ediff-mult.el
@@ -5567,6 +5571,8 @@ Zhang Weize: wrote ob-plantuml.el
 
 Zhongwei Yao: changed tramp-adb.el
 
+Zhu Zihao: changed svg.el
+
 Zoltan Kemenczy: changed gud.el
 
 Zoran Milojevic: changed avoid.el
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index f4edfaf..aba3028 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -1647,6 +1647,16 @@ adjacent to an apostrophe, like "nick's".
 *** Set 'erc-button-url-regexp' to 'browse-url-button-regexp'
 which better handles surrounding pair of parentheses.
 
+---
+*** New function 'erc-switch-to-buffer-other-window'
+which is like 'erc-switch-to-buffer', but opens the buffer in another
+window.
+
+---
+*** New function 'erc-track-switch-buffer-other-window'
+which is like 'erc-track-switch-buffer', but opens the buffer in
+another window.
+
 ** EUDC
 
 ---
diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index e2a6bfe..ba66d0b 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -190,7 +190,7 @@ CONTENTS is the contents of a password-store formatted 
file."
   (let ((store-dir (expand-file-name auth-source-pass-filename)))
     (mapcar
      (lambda (file) (file-name-sans-extension (file-relative-name file 
store-dir)))
-     (directory-files-recursively store-dir "\\.gpg$"))))
+     (directory-files-recursively store-dir "\\.gpg\\'"))))
 
 (defun auth-source-pass--find-match (host user port)
   "Return password-store entry data matching HOST, USER and PORT.
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 6d8fe9c..a49f428 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -707,7 +707,7 @@ and done items are always shown on visiting a category."
                                    shortf todo-show-first)))
                     (when (eq todo-show-first 'regexp)
                       (let ((rxfiles (directory-files todo-directory t
-                                                      ".*\\.todr$" t)))
+                                                      "\\.todr\\'" t)))
                         (when (and rxfiles (> (length rxfiles) 1))
                           (let ((rxf (mapcar #'todo-short-file-name rxfiles)))
                             (setq fi-file (todo-absolute-file-name
@@ -4054,7 +4054,7 @@ regexp items."
 (defun todo-find-filtered-items-file ()
   "Choose a filtered items file and visit it."
   (interactive)
-  (let ((files (directory-files todo-directory t "\\.tod[rty]$" t))
+  (let ((files (directory-files todo-directory t "\\.tod[rty]\\'" t))
        falist file)
     (dolist (f files)
       (let ((sf-name (todo-short-file-name f))
@@ -4187,7 +4187,7 @@ multifile commands for further details."
                                (regexp ".todr")))))
         (multi (> (length flist) 1))
         (rxfiles (when regexp
-                   (directory-files todo-directory t ".*\\.todr$" t)))
+                   (directory-files todo-directory t "\\.todr\\'" t)))
         (file-exists (or (file-exists-p fname) rxfiles))
         bufname)
     (cond ((and top new (natnump new))
@@ -6154,7 +6154,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-nondiary-marker'."
   (let* ((oldvalue (symbol-value symbol))
         (files (append todo-files todo-archives
-                       (directory-files todo-directory t "\\.tod[rty]$" t))))
+                       (directory-files todo-directory t "\\.tod[rty]\\'" t))))
     (custom-set-default symbol value)
     ;; Need to reset these to get font-locking right.
     (setq todo-nondiary-start (nth 0 todo-nondiary-marker)
@@ -6207,7 +6207,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-done-string'."
   (let ((oldvalue (symbol-value symbol))
        (files (append todo-files todo-archives
-                      (directory-files todo-directory t "\\.todr$" t))))
+                      (directory-files todo-directory t "\\.todr\\'" t))))
     (custom-set-default symbol value)
     ;; Need to reset this to get font-locking right.
     (setq todo-done-string-start
@@ -6236,7 +6236,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-comment-string'."
   (let ((oldvalue (symbol-value symbol))
        (files (append todo-files todo-archives
-                      (directory-files todo-directory t "\\.todr$" t))))
+                      (directory-files todo-directory t "\\.todr\\'" t))))
     (custom-set-default symbol value)
     (when (not (equal value oldvalue))
       (dolist (f files)
@@ -6262,7 +6262,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-highlight-item'."
   (let ((oldvalue (symbol-value symbol))
        (files (append todo-files todo-archives
-                      (directory-files todo-directory t "\\.tod[rty]$" t))))
+                      (directory-files todo-directory t "\\.tod[rty]\\'" t))))
     (custom-set-default symbol value)
     (when (not (equal value oldvalue))
       (dolist (f files)
diff --git a/lisp/cedet/semantic/db-ebrowse.el 
b/lisp/cedet/semantic/db-ebrowse.el
index 2142917..6262efb 100644
--- a/lisp/cedet/semantic/db-ebrowse.el
+++ b/lisp/cedet/semantic/db-ebrowse.el
@@ -181,7 +181,9 @@ is specified by `semanticdb-default-save-directory'."
   "Load all semanticdb controlled EBROWSE caches."
   (interactive)
   (let ((f (directory-files semanticdb-default-save-directory
-                           t (concat semanticdb-ebrowse-default-file-name 
"-load.el$") t)))
+                           t (concat semanticdb-ebrowse-default-file-name
+                                      "-load\\.el\\'")
+                            t)))
     (while f
       (load (car f) nil t)
       (setq f (cdr f)))
diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el
index 760cb19..8e8d362 100644
--- a/lisp/cedet/semantic/texi.el
+++ b/lisp/cedet/semantic/texi.el
@@ -495,7 +495,7 @@ that start with that symbol."
               (setq tabs (cdr tabs)))
             r))
          (t
-          (directory-files default-directory nil "\\.texi$"))
+          (directory-files default-directory nil "\\.texi\\'"))
          )))
 
 ;; Turns out this might not be useful.
diff --git a/lisp/cedet/srecode/map.el b/lisp/cedet/srecode/map.el
index 784ebff..dc94920 100644
--- a/lisp/cedet/srecode/map.el
+++ b/lisp/cedet/srecode/map.el
@@ -327,7 +327,7 @@ if that file is NEW, otherwise assume the mode has not 
changed."
     ;; 4) - Find new files and add them to the map.
     (dolist (dir srecode-map-load-path)
       (when (file-exists-p dir)
-       (dolist (f (directory-files dir t "\\.srt$"))
+       (dolist (f (directory-files dir t "\\.srt\\'"))
          (when (and (not (backup-file-name-p f))
                     (not (auto-save-file-name-p f))
                     (file-readable-p f))
diff --git a/lisp/dired.el b/lisp/dired.el
index 62e232b..9583d5d 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3236,7 +3236,7 @@ Any other value means to ask for each directory."
   :group 'dired)
 
 ;; Match anything but `.' and `..'.
-(defvar dired-re-no-dot "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")
+(defvar dired-re-no-dot (rx (or (not ".") "...")))
 
 ;; Delete file, possibly delete a directory and all its files.
 ;; This function is useful outside of dired.  One could change its name
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index e9f7658..ede4edc 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -1047,7 +1047,7 @@ write its autoloads into the specified file instead."
                        ;; what is the suffix for the underlying OS.
                       (unless (string-match "\\.\\(elc\\|so\\|dll\\)" suf)
                          (push suf tmp)))
-                     (concat "^[^=.].*" (regexp-opt tmp t) "\\'")))
+                     (concat "\\`[^=.].*" (regexp-opt tmp t) "\\'")))
         (files (apply #'nconc
                       (mapcar (lambda (dir)
                                 (directory-files (expand-file-name dir)
diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el
index f0a4870..4ff129e 100644
--- a/lisp/emacs-lisp/shadow.el
+++ b/lisp/emacs-lisp/shadow.el
@@ -99,7 +99,8 @@ See the documentation for `list-load-path-shadows' for 
further information."
        (setq true-names (append true-names (list dir)))
        (setq dir (directory-file-name (or pp ".")))
        (setq curr-files (if (file-accessible-directory-p dir)
-                            (directory-files dir nil ".\\.elc?\\(\\.gz\\)?$" 
t)))
+                            (directory-files dir nil
+                                              "\\.elc?\\(?:\\.gz\\)?\\'" t)))
        (and curr-files
             (not noninteractive)
             (message "Checking %d files in %s..." (length curr-files) dir))
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index db8ccbb..41d8fc1 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -921,11 +921,7 @@ is relative to `erc-track-switch-direction'."
           (setq offset 0)))
     (car (nth offset erc-modified-channels-alist))))
 
-(defun erc-track-switch-buffer (arg)
-  "Switch to the next active ERC buffer, or if there are no active buffers,
-switch back to the last non-ERC buffer visited.  Next is defined by
-`erc-track-switch-direction', a negative argument will reverse this."
-  (interactive "p")
+(defun erc-track--switch-buffer (fun arg)
   (if (not erc-track-mode)
       (message (concat "Enable the ERC track module if you want to use the"
                       " tracking minor mode"))
@@ -934,12 +930,30 @@ switch back to the last non-ERC buffer visited.  Next is 
defined by
           (unless (eq major-mode 'erc-mode)
             (setq erc-track-last-non-erc-buffer (current-buffer)))
           ;; and jump to the next active channel
-          (switch-to-buffer (erc-track-get-active-buffer arg)))
+          (funcall fun (erc-track-get-active-buffer arg)))
          ;; if no active channels, switch back to what we were doing before
          ((and erc-track-last-non-erc-buffer
-               erc-track-switch-from-erc
-               (buffer-live-p erc-track-last-non-erc-buffer))
-          (switch-to-buffer erc-track-last-non-erc-buffer)))))
+               erc-track-switch-from-erc
+               (buffer-live-p erc-track-last-non-erc-buffer))
+          (funcall fun erc-track-last-non-erc-buffer)))))
+
+(defun erc-track-switch-buffer (arg)
+  "Switch to the next active ERC buffer.
+If there are no active ERC buffers, switch back to the last
+non-ERC buffer visited.  The order of buffers is defined by
+`erc-track-switch-direction', and a negative argument will
+reverse it."
+  (interactive "p")
+  (erc-track--switch-buffer 'switch-to-buffer arg))
+
+(defun erc-track-switch-buffer-other-window (arg)
+  "Switch to the next active ERC buffer in another window.
+If there are no active ERC buffers, switch back to the last
+non-ERC buffer visited.  The order of buffers is defined by
+`erc-track-switch-direction', and a negative argument will
+reverse it."
+  (interactive "p")
+  (erc-track--switch-buffer 'switch-to-buffer-other-window arg))
 
 (provide 'erc-track)
 
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 5c63382..cc5226b 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1762,29 +1762,38 @@ nil."
        res)))
 
 (define-obsolete-function-alias 'erc-iswitchb 'erc-switch-to-buffer "25.1")
+(defun erc--switch-to-buffer (&optional arg)
+  (read-buffer "Switch to ERC buffer: "
+              (when (boundp 'erc-modified-channels-alist)
+                (buffer-name (caar (last erc-modified-channels-alist))))
+              t
+              ;; Only allow ERC buffers in the same session.
+              (let ((proc (unless arg erc-server-process)))
+                (lambda (bufname)
+                  (let ((buf (if (consp bufname)
+                                 (cdr bufname) (get-buffer bufname))))
+                    (when buf
+                      (erc--buffer-p buf (lambda () t) proc)
+                      (with-current-buffer buf
+                        (and (derived-mode-p 'erc-mode)
+                             (or (null proc)
+                                 (eq proc erc-server-process))))))))))
 (defun erc-switch-to-buffer (&optional arg)
-  "Prompt for a ERC buffer to switch to.
-When invoked with prefix argument, use all erc buffers.  Without prefix
-ARG, allow only buffers related to same session server.
+  "Prompt for an ERC buffer to switch to.
+When invoked with prefix argument, use all ERC buffers.  Without
+prefix ARG, allow only buffers related to same session server.
 If `erc-track-mode' is in enabled, put the last element of
 `erc-modified-channels-alist' in front of the buffer list."
   (interactive "P")
-  (switch-to-buffer
-   (read-buffer "Switch to ERC buffer: "
-               (when (boundp 'erc-modified-channels-alist)
-                 (buffer-name (caar (last erc-modified-channels-alist))))
-               t
-               ;; Only allow ERC buffers in the same session.
-               (let ((proc (unless arg erc-server-process)))
-                 (lambda (bufname)
-                   (let ((buf (if (consp bufname)
-                                  (cdr bufname) (get-buffer bufname))))
-                     (when buf
-                       (erc--buffer-p buf (lambda () t) proc)
-                       (with-current-buffer buf
-                         (and (derived-mode-p 'erc-mode)
-                              (or (null proc)
-                                  (eq proc erc-server-process)))))))))))
+  (switch-to-buffer (erc--switch-to-buffer arg)))
+(defun erc-switch-to-buffer-other-window (&optional arg)
+  "Prompt for an ERC buffer to switch to in another window.
+When invoked with prefix argument, use all ERC buffers.  Without
+prefix ARG, allow only buffers related to same session server.
+If `erc-track-mode' is in enabled, put the last element of
+`erc-modified-channels-alist' in front of the buffer list."
+  (interactive "P")
+  (switch-to-buffer-other-window (erc--switch-to-buffer arg)))
 
 (defun erc-channel-list (proc)
   "Return a list of channel buffers.
diff --git a/lisp/files.el b/lisp/files.el
index f49be4f..04c271d 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2668,7 +2668,7 @@ since only a single case-insensitive search through the 
alist is made."
      ("\\.pas\\'" . pascal-mode)
      ("\\.\\(dpr\\|DPR\\)\\'" . delphi-mode)
      ("\\.ad[abs]\\'" . ada-mode)
-     ("\\.ad[bs].dg\\'" . ada-mode)
+     ("\\.ad[bs]\\.dg\\'" . ada-mode)
      ("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode)
      ("Imakefile\\'" . makefile-imake-mode)
      ("Makeppfile\\(?:\\.mk\\)?\\'" . makefile-makepp-mode) ; Put this before 
.mk
@@ -2819,7 +2819,7 @@ 
ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|CBR\\|7Z\\)\\'" . archive-mo
      ("\\.properties\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-javaprop-mode)
      ("\\.toml\\'" . conf-toml-mode)
      ("\\.desktop\\'" . conf-desktop-mode)
-     ("/\\.redshift.conf\\'" . conf-windows-mode)
+     ("/\\.redshift\\.conf\\'" . conf-windows-mode)
      
("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'"
 . conf-space-mode)
      
("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'"
 . conf-mode)
      ;; ChangeLog.old etc.  Other change-log-mode entries are above;
@@ -5753,7 +5753,7 @@ If called interactively, then PARENTS is non-nil."
   (write-region "" nil filename nil 0))
 
 (defconst directory-files-no-dot-files-regexp
-  "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
+  "[^.]\\|\\.\\.\\."
   "Regexp matching any file name except \".\" and \"..\".")
 
 (defun files--force (no-such fn &rest args)
diff --git a/lisp/finder.el b/lisp/finder.el
index dc14b27..f04d73e 100644
--- a/lisp/finder.el
+++ b/lisp/finder.el
@@ -188,7 +188,7 @@ from; the default is `load-path'."
   ;; Allow compressed files also.
   (setq package--builtins nil)
   (setq finder-keywords-hash (make-hash-table :test 'eq))
-  (let* ((el-file-regexp "^\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?$")
+  (let* ((el-file-regexp "\\`\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?\\'")
          (file-count 0)
          (files (cl-loop for d in (or dirs load-path)
                          when (file-exists-p (directory-file-name d))
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index d49193c..cd24f49 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -1430,7 +1430,7 @@ like an INI file.  You can add this hook to 
`find-file-hook'."
     "nowait"
     "internal")
   '(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face))
-  '("/etc/inetd.conf\\'")
+  '("/etc/inetd\\.conf\\'")
   (list
    (function
     (lambda ()
@@ -1630,7 +1630,7 @@ like an INI file.  You can add this hook to 
`find-file-hook'."
      (2 font-lock-variable-name-face)
      (3 font-lock-constant-face)))
   ;; List of additional automode-alist expressions
-  '("/etc/named.boot\\'")
+  '("/etc/named\\.boot\\'")
   ;; List of set up functions to call
   nil))
 
@@ -1667,7 +1667,7 @@ like an INI file.  You can add this hook to 
`find-file-hook'."
   ;; List of additional font-lock-expressions
   nil
   ;; List of additional auto-mode-alist expressions
-  '("/etc/resolv[e]?.conf\\'")
+  '("/etc/resolve?\\.conf\\'")
   ;; List of set up functions to call
   nil))
 
@@ -1803,7 +1803,7 @@ like an INI file.  You can add this hook to 
`find-file-hook'."
   ;; List of additional font-lock-expressions
   nil
   ;; List of additional automode-alist expressions
-  '("/etc/modules.conf" "/etc/conf.modules")
+  '("/etc/modules\\.conf" "/etc/conf\\.modules")
   ;; List of set up functions to call
   nil))
 
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 80bf21b..1ed5000 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -2074,7 +2074,7 @@ doesn't exist, to valid the overview buffer."
                  (file-attributes (directory-files-and-attributes
                                    (gnus-agent-article-name
                                     "" gnus-agent-read-agentview)
-                                   nil "^[0-9]+$" t)))
+                                   nil "\\`[0-9]+\\'" t)))
             (while file-attributes
               (let ((fa (pop file-attributes)))
                 (unless (file-attribute-type (cdr fa))
@@ -3850,7 +3850,8 @@ If REREAD is not nil, downloaded articles are marked as 
unread."
                           (sort (delq nil (mapcar (lambda (name)
                                                     (and (not 
(file-directory-p (nnheader-concat dir name)))
                                                          (string-to-number 
name)))
-                                                  (directory-files dir nil 
"^[0-9]+$" t)))
+                                                  (directory-files
+                                                    dir nil "\\`[0-9]+\\'" t)))
                                 '>)
                         (progn (gnus-make-directory dir) nil)))
            nov-arts
@@ -4110,7 +4111,7 @@ agent has fetched."
                 (setq delta sum))
             (let ((sum (- (nth 2 entry)))
                   (info (directory-files-and-attributes
-                         path nil "^-?[0-9]+$" t))
+                         path nil "\\`-?[0-9]+\\'" t))
                   file)
               (while (setq file (pop info))
                 (cl-incf sum (float (or (file-attribute-size (cdr file)) 0))))
diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index 8b9acfe..02a8ea7 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -501,7 +501,7 @@ Returns the list of articles removed."
     (when (file-exists-p dir)
       (setq articles
            (sort (mapcar (lambda (name) (string-to-number name))
-                         (directory-files dir nil "^[0-9]+$" t))
+                         (directory-files dir nil "\\`[0-9]+\\'" t))
                  '<))
       ;; Update the cache active file, just to synch more.
       (if articles
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index 41b63e2..46b70ea 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -2981,7 +2981,7 @@ The list is determined from the variable 
`gnus-score-file-alist'."
       (if (file-directory-p (car files))
          (setq out (nconc (directory-files
                            (car files) t
-                           (concat (gnus-score-file-regexp) "$"))))
+                           (concat (gnus-score-file-regexp) "\\'"))))
        (push (car files) out))
       (setq files (cdr files)))
     (setq gnus-internal-global-score-files out)))
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 83a8516..f0d328d 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -768,7 +768,7 @@ nil.  See also `gnus-bind-print-variables'."
 If there's no subdirectory, delete DIRECTORY as well."
   (when (file-directory-p directory)
     (let ((files (directory-files
-                 directory t "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
+                 directory t (rx (or (not ".") "..."))))
          file dir)
       (while files
        (setq file (pop files))
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index 4037221..af37df0 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -1674,7 +1674,7 @@ Gnus might fail to display all of it.")
     did-unpack))
 
 (defun gnus-uu-dir-files (dir)
-  (let ((dirs (directory-files dir t "[^/][^\\.][^\\.]?$"))
+  (let ((dirs (directory-files dir t (rx (or (not ".") "..."))))
        files file)
     (while dirs
       (if (file-directory-p (setq file (car dirs)))
diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el
index e5dda99..a3c26ea 100644
--- a/lisp/gnus/nndraft.el
+++ b/lisp/gnus/nndraft.el
@@ -219,7 +219,7 @@ are generated if and only if they are also in 
`message-draft-headers'."
       (nnheader-re-read-dir pathname)
       (setq dir (mapcar (lambda (name) (string-to-number (substring name 1)))
                        (ignore-errors (directory-files
-                                       pathname nil "^#[0-9]+#$" t))))
+                                       pathname nil "\\`#[0-9]+#\\'" t))))
       (dolist (n dir)
        (unless (file-exists-p
                 (setq file (expand-file-name (int-to-string n) pathname)))
diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el
index d2f63bd..581a408 100644
--- a/lisp/gnus/nnmh.el
+++ b/lisp/gnus/nnmh.el
@@ -172,7 +172,7 @@ as unread by Gnus.")
        (setq dir
              (sort
               (mapcar 'string-to-number
-                      (directory-files pathname nil "^[0-9]+$" t))
+                      (directory-files pathname nil "\\`[0-9]+\\'" t))
               '<))
        (cond
         (dir
@@ -360,7 +360,7 @@ as unread by Gnus.")
       (nnmh-possibly-change-directory group server)
       (let ((articles (mapcar 'string-to-number
                              (directory-files
-                              nnmh-current-directory nil "^[0-9]+$"))))
+                              nnmh-current-directory nil "\\`[0-9]+\\'"))))
        (when articles
          (setcar active (apply 'min articles))
          (setcdr active (apply 'max articles))))))
@@ -371,7 +371,7 @@ as unread by Gnus.")
   ;; Delete all articles in GROUP.
   (if (not force)
       ()                               ; Don't delete the articles.
-    (let ((articles (directory-files nnmh-current-directory t "^[0-9]+$")))
+    (let ((articles (directory-files nnmh-current-directory t "\\`[0-9]+\\'")))
       (while articles
        (when (file-writable-p (car articles))
          (nnheader-message 5 "Deleting article %s in %s..."
@@ -485,7 +485,7 @@ as unread by Gnus.")
       ;; Find the highest number in the group.
       (let ((files (sort
                    (mapcar 'string-to-number
-                           (directory-files dir nil "^[0-9]+$"))
+                           (directory-files dir nil "\\`[0-9]+\\'"))
                    '>)))
        (when files
          (setcdr active (car files)))))
@@ -509,7 +509,7 @@ as unread by Gnus.")
   (let* ((dir nnmh-current-directory)
         (files (sort (mapcar 'string-to-number
                              (directory-files nnmh-current-directory
-                                              nil "^[0-9]+$" t))
+                                              nil "\\`[0-9]+\\'" t))
                      '<))
         (nnmh-file (concat dir ".nnmh-articles"))
         new articles)
diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el
index da13a56..33b68fa 100644
--- a/lisp/gnus/nnspool.el
+++ b/lisp/gnus/nnspool.el
@@ -260,7 +260,7 @@ there.")
            t)
        ;; Yes, completely empty spool directories *are* possible.
        ;; Fix by Sudish Joseph <address@hidden>
-       (when (setq dir (directory-files pathname nil "^[0-9]+$" t))
+       (when (setq dir (directory-files pathname nil "\\`[0-9]+\\'" t))
          (setq dir (sort (mapcar 'string-to-number dir) '<)))
        (if dir
            (nnheader-insert
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 2e03608..3da45a2 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -557,7 +557,7 @@ check the variable `spam-stat-score-data'."
 
 (defun spam-stat-process-directory (dir func)
   "Process all the regular files in directory DIR using function FUNC."
-  (let* ((files (directory-files dir t "^[^.]"))
+  (let* ((files (directory-files dir t "\\`[^.]"))
         (max (/ (length files) 100.0))
         (count 0))
     (with-temp-buffer
@@ -601,7 +601,7 @@ If VERBOSE is non-nil display names of files detected as 
spam or
 non-spam in a temporary buffer.  If it is the symbol `ham',
 display non-spam files; otherwise display spam files."
   (interactive "DDirectory: ")
-  (let* ((files (directory-files dir t "^[^.]"))
+  (let* ((files (directory-files dir t "\\`[^.]"))
         display-files
         buffer-score
         (total (length files))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index cc00c72..0a99b8d 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -623,7 +623,7 @@ FILE is the file where FUNCTION was probably defined."
   ;; of the *packages* in which the function is defined.
   (let* ((name (symbol-name symbol))
          (re (concat "\\_<" (regexp-quote name) "\\_>"))
-         (news (directory-files data-directory t "\\`NEWS.[1-9]"))
+         (news (directory-files data-directory t "\\`NEWS\\.[1-9]"))
          (place nil)
          (first nil))
     (with-temp-buffer
diff --git a/lisp/help.el b/lisp/help.el
index e40ed47..b7d867e 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -361,7 +361,7 @@ With argument, display info only for the selected version."
                     (setq res (cons (match-string-no-properties 1) res)))))
               (cons "NEWS"
                     (directory-files data-directory nil
-                                     "^NEWS\\.[0-9][-0-9]*$" nil)))
+                                     "\\`NEWS\\.[0-9][-0-9]*\\'" nil)))
              (sort (delete-dups res) #'string>)))
           (current (car all-versions)))
       (setq version (completing-read
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 193b1d7..3299cc5 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -3059,7 +3059,7 @@ of each directory."
     (while quail-dirs
       (setq dirname (car quail-dirs))
       (when dirname
-       (setq pkg-list (directory-files dirname 'full "\\.el$"))
+       (setq pkg-list (directory-files dirname 'full "\\.el\\'"))
        (while pkg-list
          (with-temp-buffer
            (insert-file-contents (car pkg-list))
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el
index eec20ee..a6dcd02 100644
--- a/lisp/international/titdic-cnv.el
+++ b/lisp/international/titdic-cnv.el
@@ -553,7 +553,7 @@ To get complete usage, invoke \"emacs -batch -f 
batch-titdic-convert -h\"."
        (if (file-directory-p filename)
            (progn
              (message "Converting all tit files in the directory %s" filename)
-             (setq files (directory-files filename t "\\.tit$")))
+             (setq files (directory-files filename t "\\.tit\\'")))
          (setq files (list filename)))
        (while files
          (setq file (expand-file-name (car files)))
diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el
index 9c0c3fe..94b0886 100644
--- a/lisp/mail/mspools.el
+++ b/lisp/mail/mspools.el
@@ -223,7 +223,7 @@ your primary spool is.  If this fails, set it to something 
like
            ;; So I create a vm-spool-files entry for each of those mail drops
            (mapcar 'file-name-sans-extension
                    (directory-files mspools-folder-directory nil
-                                    (format "^[^.]+\\.%s" mspools-suffix)))
+                                    (format "\\`[^.]+\\.%s" mspools-suffix)))
            ))
    ))
 
@@ -357,7 +357,7 @@ nil."
     (if (null mspools-folder-directory)
        (error "Set `mspools-folder-directory' to where the spool files are"))
     (setq folders (directory-files mspools-folder-directory nil
-                                  (format "^[^.]+\\.%s$" mspools-suffix)))
+                                  (format "\\`[^.]+\\.%s\\'" mspools-suffix)))
     (setq folders (mapcar 'mspools-size-folder folders))
     (setq folders (delq nil folders))
     (setq mspools-files folders)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 40d3470..44cde7c 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -474,7 +474,7 @@ the frame where you have the RMAIL buffer displayed."
   :type 'directory
   :group 'rmail-files)
 ;;;###autoload
-(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail$")
+(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail\\'")
   "Regexp for which files are secondary Rmail files."
   :type 'regexp
   :group 'rmail-files)
@@ -4364,7 +4364,8 @@ This has an effect only if a summary buffer exists."
            (font-lock-fontify-region (point-min) (point-max)))))))
 
 ;;; Speedbar support for RMAIL files.
-(defcustom rmail-speedbar-match-folder-regexp "^[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?$"
+(defcustom rmail-speedbar-match-folder-regexp
+  "\\`[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?\\'"
   "Regexp matching Rmail folder names to be displayed in Speedbar.
 Enabling this permits Speedbar to display your folders for easy
 browsing, and moving of messages."
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index e2d4d7d..bf20128 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -4170,8 +4170,7 @@ directory, so that Emacs will know its current contents."
                   (ange-ftp-delete-directory file recursive trash)
                 (delete-file file trash)))
             ;; We do not want to delete "." and "..".
-            (directory-files
-             dir 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
+            (directory-files dir 'full (rx (or (not ".") "...")))))
        (if parsed
            (let* ((host (nth 0 parsed))
                   (user (nth 1 parsed))
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index a16085d..c8fdc5d 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2464,7 +2464,7 @@ remote file names."
           (regexp-opt
            (mapcar
             #'file-name-sans-extension
-            (directory-files dir nil "^tramp.+\\.elc?$"))
+            (directory-files dir nil "\\`tramp.+\\.elc?\\'"))
            'paren))))
     (mapatoms
      (lambda (atom)
diff --git a/lisp/obsolete/gulp.el b/lisp/obsolete/gulp.el
index 6589ede..08ab388 100644
--- a/lisp/obsolete/gulp.el
+++ b/lisp/obsolete/gulp.el
@@ -94,7 +94,7 @@ is left in the `*gulp*' buffer at the end."
   (interactive "DRequest updates for Lisp directory: \nP")
   (with-current-buffer (get-buffer-create gulp-tmp-buffer)
     (let ((m-p-alist (gulp-create-m-p-alist
-                     (directory-files dir nil "^[^=].*\\.el$" t)
+                     (directory-files dir nil "\\`[^=].*\\.el\\'" t)
                      dir))
          ;; Temporarily inhibit undo in the *gulp* buffer.
          (buffer-undo-list t)
diff --git a/lisp/obsolete/vc-arch.el b/lisp/obsolete/vc-arch.el
index b186a5c..bcdefac 100644
--- a/lisp/obsolete/vc-arch.el
+++ b/lisp/obsolete/vc-arch.el
@@ -597,18 +597,20 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
     (unless (file-writable-p rl-dir)
       (error "No writable revlib directory found"))
     (message "Revlib at %s" rl-dir)
-    (let* ((archives (directory-files rl-dir 'full "[^.]\\|..."))
+    (let* ((archives (directory-files rl-dir 'full (rx (or (not ".") "..."))))
            (categories
             (apply 'append
                    (mapcar (lambda (dir)
                              (when (file-directory-p dir)
-                               (directory-files dir 'full "[^.]\\|...")))
+                               (directory-files dir 'full
+                                                (rx (or (not ".") "...")))))
                            archives)))
            (branches
             (apply 'append
                    (mapcar (lambda (dir)
                              (when (file-directory-p dir)
-                               (directory-files dir 'full "[^.]\\|...")))
+                               (directory-files dir 'full
+                                                (rx (or (not ".") "...")))))
                            categories)))
            (versions
             (apply 'append
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index a5ad97a..debc27c 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -3055,7 +3055,7 @@ of `org-babel-temporary-directory'."
                    (delete-file file)))
                ;; We do not want to delete "." and "..".
                (directory-files org-babel-temporary-directory 'full
-                                "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
+                                 (rx (or (not ".") "..."))))
          (delete-directory org-babel-temporary-directory))
       (error
        (message "Failed to remove temporary Org-babel directory %s"
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index f7ac9d3..28e7667 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -1883,7 +1883,7 @@ It's only used when `ebnf-syntax' is `iso-ebnf'."
   :group 'ebnf-syntactic)
 
 
-(defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]$"
+(defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]\\'"
   "Specify file name suffix that contains EBNF.
 
 See `ebnf-eps-directory' command."
@@ -2715,7 +2715,7 @@ Used in functions `ebnf-reset-style', `ebnf-push-style' 
and
       (ebnf-syntax                      . 'ebnf)
       (ebnf-iso-alternative-p           . nil)
       (ebnf-iso-normalize-p             . nil)
-      (ebnf-file-suffix-regexp          . "\\.[Bb][Nn][Ff]$")
+      (ebnf-file-suffix-regexp          . "\\.[Bb][Nn][Ff]\\'")
       (ebnf-eps-prefix                  . "ebnf--")
       (ebnf-eps-header-font             . '(11 Helvetica "Black" "White" bold))
       (ebnf-eps-header                  . nil)
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el
index b42e6f7..bae2bb6 100644
--- a/lisp/progmodes/executable.el
+++ b/lisp/progmodes/executable.el
@@ -155,7 +155,7 @@ See `compilation-error-regexp-alist'.")
 If PROGRAM is non-nil, use that instead of \"find\"."
   ;;  Pick file to search from location we know
   (let* ((dir (file-truename data-directory))
-         (file (car (directory-files dir nil "^[^.]"))))
+         (file (car (directory-files dir nil "\\`[^.]"))))
     (with-temp-buffer
       (call-process (or program "find")
                     nil
diff --git a/lisp/simple.el b/lisp/simple.el
index 7c8ac41..abf5ee2 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -5146,10 +5146,11 @@ property, in the way that `yank' does."
 
 (defun yank (&optional arg)
   "Reinsert (\"paste\") the last stretch of killed text.
-More precisely, reinsert the most recent kill, which is the
-stretch of killed text most recently killed OR yanked.  Put point
-at the end, and set mark at the beginning without activating it.
-With just \\[universal-argument] as argument, put point at beginning, and mark 
at end.
+More precisely, reinsert the most recent kill, which is the stretch of
+text most recently killed OR yanked, as returned by `current-kill' (which
+see).  Put point at the end, and set mark at the beginning without
+activating it. With just \\[universal-argument] as argument, put point
+at beginning, and mark at end.
 With argument N, reinsert the Nth most recent kill.
 
 This command honors the `yank-handled-properties' and
diff --git a/lisp/startup.el b/lisp/startup.el
index 1f545c6..5af264e 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1373,10 +1373,10 @@ please check its value")
         ((not (eq system-type 'windows-nt))
          (concat "~" init-file-user "/.emacs"))
         ;; Else deal with the Windows situation.
-        ((directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
+        ((directory-files "~" nil "\\`\\.emacs\\(\\.elc?\\)?\\'")
          ;; Prefer .emacs on Windows.
          "~/.emacs")
-        ((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
+        ((directory-files "~" nil "\\`_emacs\\(\\.elc?\\)?\\'")
          ;; Also support _emacs for compatibility, but warn about it.
          (push `(initialization
                  ,(format-message
diff --git a/lisp/textmodes/refer.el b/lisp/textmodes/refer.el
index 2865b42..8d8223a 100644
--- a/lisp/textmodes/refer.el
+++ b/lisp/textmodes/refer.el
@@ -377,7 +377,7 @@ found on the last `refer-find-entry' or 
`refer-find-next-entry'."
                    dir files)
                (while (setq dir (car dirs))
                  (setq files
-                       (append (directory-files dir t "\\.bib$")
+                       (append (directory-files dir t "\\.bib\\'")
                                files))
                  (setq dirs (cdr dirs)))
                files))
diff --git a/lisp/url/url-about.el b/lisp/url/url-about.el
index 59c233b..5fe817c 100644
--- a/lisp/url/url-about.el
+++ b/lisp/url/url-about.el
@@ -37,7 +37,7 @@
                          (mapc (lambda (f)
                                  (if (string-match "url-\\(.*\\).el$" f)
                                      (push (match-string 1 f) schemes)))
-                               (directory-files d nil "^url-.*\\.el$")))
+                               (directory-files d nil "\\`url-.*\\.el\\'")))
                        load-path)
                  (put 'url-extension-protocols 'schemes schemes)
                  schemes)))))
diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el
index 00796e5..273f37c 100644
--- a/lisp/vc/vc-rcs.el
+++ b/lisp/vc/vc-rcs.el
@@ -247,7 +247,7 @@ to the RCS command."
                 (setq subdir (expand-file-name "RCS"
                                                (file-name-directory file)))))
           (not (directory-files (file-name-directory file)
-                                nil ".*,v$" t))
+                                nil ",v\\'" t))
           (yes-or-no-p "Create RCS subdirectory? ")
           (make-directory subdir))
       (apply #'vc-do-command "*vc*" 0 "ci" file
@@ -312,8 +312,7 @@ whether to remove it."
       (and (string= (file-name-nondirectory (directory-file-name dir)) "RCS")
           ;; check whether RCS dir is empty, i.e. it does not
           ;; contain any files except "." and ".."
-          (not (directory-files dir nil
-                                "^\\([^.]\\|\\.[^.]\\|\\.\\.[^.]\\).*"))
+          (not (directory-files dir nil (rx (or (not ".") "..."))))
           (yes-or-no-p (format "Directory %s is empty; remove it? " dir))
           (delete-directory dir)))))
 
diff --git a/src/nsterm.m b/src/nsterm.m
index 3ce2233..2f181ea 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -5837,6 +5837,21 @@ ns_term_shutdown (int sig)
 #endif
 
 #ifdef NS_IMPL_COCOA
+  /* Some functions/methods in CoreFoundation/Foundation increase the
+     maximum number of open files for the process in their first call.
+     We make dummy calls to them and then reduce the resource limit
+     here, since pselect cannot handle file descriptors that are
+     greater than or equal to FD_SETSIZE.  */
+  CFSocketGetTypeID ();
+  CFFileDescriptorGetTypeID ();
+  [[NSFileHandle alloc] init];
+  struct rlimit rlim;
+  if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+      && rlim.rlim_cur > FD_SETSIZE)
+    {
+      rlim.rlim_cur = FD_SETSIZE;
+      setrlimit (RLIMIT_NOFILE, &rlim);
+    }
   if ([NSApp activationPolicy] == NSApplicationActivationPolicyProhibited) {
     /* Set the app's activation policy to regular when we run outside
        of a bundle.  This is already done for us by Info.plist when we
diff --git a/test/lisp/net/tramp-archive-tests.el 
b/test/lisp/net/tramp-archive-tests.el
index b3fc129..8c75d91 100644
--- a/test/lisp/net/tramp-archive-tests.el
+++ b/test/lisp/net/tramp-archive-tests.el
@@ -668,7 +668,7 @@ This tests also `access-file', `file-readable-p' and 
`file-regular-p'."
          (setq attr (directory-files-and-attributes tmp-name 'full))
          (dolist (elt attr)
            (should (equal (file-attributes (car elt)) (cdr elt))))
-         (setq attr (directory-files-and-attributes tmp-name nil "^b"))
+         (setq attr (directory-files-and-attributes tmp-name nil "\\`b"))
          (should (equal (mapcar #'car attr) '("bar"))))
 
       ;; Cleanup.
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 7db9ad4..4966825 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -3350,7 +3350,7 @@ They might differ only in time attributes or directory 
size."
               (tramp--test-file-attributes-equal-p
                (file-attributes (car elt)) (cdr elt))))
 
-           (setq attr (directory-files-and-attributes tmp-name2 nil "^b"))
+           (setq attr (directory-files-and-attributes tmp-name2 nil "\\`b"))
            (should (equal (mapcar #'car attr) '("bar" "boz"))))
 
        ;; Cleanup.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]