* src/dispextern.h (enum face_underline_type): Add FACE_NO_UNDERLINE = 0.
(struct face): Merge `underline_type` and `underline_p` into `underline`.
Update all the occurrences in src/xdisp.c, src/xfaces.c, and src/xterm.c.
* lisp/url/url-util.el (url-hexify-string): Accept a list of allowed
chars.
* doc/misc/url.texi (URI Encoding): Update url-hexify-string doc and
index improvements (bug#24694).
* doc/emacs/killing.texi (Other Kill Commands): Document it.
* lisp/simple.el (read-char-with-history): New function (bug#10477).
(zap-to-char): Use it to have a history.
* src/keymap.c (copy_keymap_1, copy_keymap_set_char_table): Ensure
we don't recurse infinitely when using non-sparse keymaps, too.
This change makes this form not segfault:
(let ((map (make-keymap)))
(define-key map " " map)
(copy-keymap map))
* lisp/tab-bar.el (tab-bar-tab-name-function): Change the default value.
(tab-bar-tab-name-current): Rename from tab-bar-tab-name-selected-window.
(tab-bar-tab-name-current-with-count): New function.
(tab-bar-tab-name-all): Rename from tab-bar-tab-name-all-windows.
* lisp/startup.el (x-apply-session-resources): Enable tab-bar-mode
when X resource "tabBar" class "TabBar" is "on", "yes" or "1".
* doc/man/emacs.1.in:
* doc/emacs/xresources.texi (Table of Resources):
Document X resource "tabBar" (class "TabBar").
* src/frame.c (syms_of_frame): Update doc string and default value of
frame-inhibit-implied-resize in NS to not include 'tab-bar-lines,
and non-toolkit X builds to include 'tab-bar-lines.
* lisp/progmodes/compile.el (compilation-next-error-function):
Don't bug out with an incomprehensible error message on "make[2]:"
texts (bug#5316).
(compilation-find-file): Protect against there being no file name.
* doc/emacs/files.texi (Save Commands): Document it.
* lisp/files.el (save-some-buffers-action-alist): Offer to pop to
the buffer and then quit (bug#3625).
(save-some-buffers): Implement it.
(save-some-buffers--switch-window-callback): New variable.
* lisp/emacs-lisp/ert.el (ert--explain-equal-rec):
* test/lisp/emacs-lisp/ert-tests.el (ert-test-explain-equal):
When explaining a difference between a unibyte and a multibyte string,
first convert both to multibyte. Otherwise, we might end up comparing
unibyte char C to multibyte char C, 127<C<256, and not detect the
difference (bug#30219).
* doc/lispref/nonascii.texi (Specifying Coding Systems): Don't use
'&rest' in conjunction with 'body...' in arglist of
with-coding-priority. Fix typo and cross-referencing (2-arg @pxref
adds a trailing period).
* time-stamp.el (time-stamp): Reformat the explanation of the
variables that affect time-stamp, for easier reading. In particular,
wrap the documentation to 75 characters, so that it displays neatly as
a before-save-hook customization option.
* time-stamp-tests.el (with-time-stamp-test-env): Use imperative voice,
per checkdoc.
* lisp/progmodes/compile.el (compilation-tear-down-arrow-spec-in-margin): Make
sure compilation-arrow-overlay is an overlay before performing overlay
operations on it. This fixes bug #37733.
* lisp/vc/diff-mode.el (diff-prev-line-if-patch-separator):
A function to return prev. line if it has git-format-patch
separator.
(diff-end-of-hunk): Make use of
diff-prev-line-if-patch-separator
diff-buffer-type: whether a buffer is a git-diff
(define-derived-mode): set diff-buffer-type to appropriate
value (bug#37395).
* lisp/subr.el (read-password--hide-password): Factor out (bug#17127).
(read-passwd): Use it in post-command-hook instead of
after-change-functions to ensure that we hide the password no
matter what inserts text.
* lisp/epg-config.el (epg-find-configuration): Remove the -unknown
hack, because it led to further problems later when comparing
versions.
* lisp/subr.el (version-regexp-alist): Rate -unknown versions the
same as -alpha releases (bug#37556).
* src/keymap.c (copy_keymap_1): Factor out and refuse to recurse
infinitely (bug#7496).
(Fcopy_keymap): ... from here.
(copy_keymap_item): Pass on the depth parameter.
* src/textprop.c (Fadd_face_text_property): We need to be
non-destructive in buffers, too, because face properties may have
been added with `put-text-property' as a list that's been reused.
* lisp/button.el (button-start, button-end, button-get)
(button-put, button-label): Have the doc string mention that they
have to be called from the current buffer (bug#23909).
Copyright-paperwork-exempt: yes