aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2020-03-07 07:50:28 -0800
committerGlenn Morris2020-03-07 07:50:28 -0800
commit3274b8090bf18dec00b6ce45d6a01bf5263982ed (patch)
tree51eefa044043b38e239e23049592a7e49808aa72
parentc996fe1ec69de0082043397d4965d08cb94892fb (diff)
parent72f87f88739befce2adf202749b7d651a8ef1551 (diff)
downloademacs-3274b8090bf18dec00b6ce45d6a01bf5263982ed.tar.gz
emacs-3274b8090bf18dec00b6ce45d6a01bf5263982ed.zip
Merge from origin/emacs-27
72f87f8873 (origin/emacs-27) NS port documentation updates 5b19db98ad ; * etc/NEWS: correctly describe what fido-mode is fc47e3ad99 Let fido-mode users force a minibuffer-exit e734961d4c icomplete-fido-exit: New command for the M-j binding 335a9bd215 minibuffer-force-complete-and-exit: Allow input with no ma... 34132d4bf6 ; * etc/NEWS: Mark 2 entries as fully documented. d28b73841b ; * etc/NEWS: Fix the 'mml-secure-openpgp-sign-with-sender... d1d56a9fd9 ; * etc/NEWS: 'thunk-let' and 'thunk-let*' are fully docum... fc4f4efabf ; * etc/NEWS: No need to document vc-hg and mergebase chan... 9e8456cf0f ; * etc/NEWS: No need to document changes in Octave mode. 25b4d6fa28 ; * etc/NEWS: No need to document changes in map.el and se... fc4d0f86da ; * etc/NEWS: No need to document Ido news. d4ac478cb3 ; * etc/NEWS: No need to document news of doc-view.el. 08c042bd26 Document that 'byte-compile-dynamic' is obsolete 512b66abd7 ; * etc/NEWS: No need to document 'goto-address-uri-scheme... 3103c01c3e ; * etc/NEWS: Formatting fixes. 98306fdfb8 ; * etc/NEWS: No need to document deprecation of 'cl'. 6281ed58be ; * etc/NEWS: No need to document the change in 'list-proc... e252341e11 ; * etc/NEWS: 'backup-by-copying-when-privileged-mismatch'... ec5a267ddc ; * etc/NEWS: Mark 'byte-count-to-string-function' as undo... 89307ebccd ; * etc/NEWS: Mark 'completion-common-part' face entry as ... fdbe7cacfb Document the changes in 'read-answer' 10c58356e4 Document changes in lexical-binding 5cb312b5b9 Update ERC mailing list address cb1877321b Use regexp-opt to define bibtex-autokey-transcriptions. (... 3f9c340de0 Improve documentation of 'table-generate-source' 33b31dc314 Attempt to avoid rare segfaults in show_mouse_face 88c6db9196 Avoid crashes when a fontset has strange entries 1814c7e158 Fix rx error with ? and ?? 40fb20061e * lisp/emacs-lisp/rx.el (rx--string-to-intervals): Fix err... 08d7d28d35 Fix args in 'window-text-pixel-size' call in 'fit-window-t... cb1e30910e Have pulse.el preserve existing overlay priorities # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/macos.texi69
-rw-r--r--doc/lispref/compile.texi6
-rw-r--r--doc/lispref/minibuf.texi20
-rw-r--r--doc/lispref/variables.texi10
-rw-r--r--etc/NEWS.2764
-rw-r--r--lisp/cedet/pulse.el2
-rw-r--r--lisp/emacs-lisp/rx.el4
-rw-r--r--lisp/erc/erc.el2
-rw-r--r--lisp/icomplete.el15
-rw-r--r--lisp/minibuffer.el11
-rw-r--r--lisp/textmodes/bibtex.el50
-rw-r--r--lisp/textmodes/table.el21
-rw-r--r--lisp/window.el4
-rw-r--r--src/fontset.c12
-rw-r--r--src/xdisp.c4
-rw-r--r--test/lisp/emacs-lisp/rx-tests.el4
16 files changed, 213 insertions, 85 deletions
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index ae1b8d654f0..00daa8b35d3 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -143,6 +143,64 @@ The variables for right-hand keys, like @code{ns-right-alternate-modifier},
143may also be set to @code{left}, which means to use the same behavior as 143may also be set to @code{left}, which means to use the same behavior as
144the corresponding left-hand key. 144the corresponding left-hand key.
145 145
146@subsection Frame Variables
147
148@table @code
149@vindex ns-use-proxy-icon
150@item ns-use-proxy-icon
151This variable specifies whether to display the proxy icon in the
152titlebar.
153
154@vindex ns-confirm-quit
155@item ns-confirm-quit
156This variable specifies whether to display a graphical confirmation
157dialogue on quitting.
158
159@vindex ns-auto-hide-menu-bar
160@item ns-auto-hide-menu-bar
161This variable specifies whether the macOS menu bar is hidden when an
162Emacs frame is selected. If non-nil the menu bar is not shown unless
163the mouse pointer is moved near to the top of the screen.
164
165@vindex ns-use-native-fullscreen
166@item ns-use-native-fullscreen
167This variable controls whether to use native, or non-native
168fullscreen. Native fullscreen is only available on macOS 10.7 and
169above.
170@end table
171
172@subsection macOS Trackpad/Mousewheel Variables
173
174These variables only apply to macOS 10.7 (Lion) and above.
175
176@table @code
177@vindex ns-use-mwheel-acceleration
178@item ns-use-mwheel-acceleration
179This variable controls whether Emacs ignores the system mousewheel
180acceleration. When nil each `click' of the mousewheel will correspond
181exactly with one mousewheel event. When non-nil, the default, each
182`click' may correspond with more than one mousewheel event, depending
183on the user's input.
184
185@vindex ns-use-mwheel-momentum
186@item ns-use-mwheel-momentum
187This variable controls whether Emacs ignores the system `momentum'
188when scrolling using a trackpad. When non-nil, the default, scrolling
189rapidly may result in the buffer continuing to scroll for a short
190while after the user has lifted their fingers off the trackpad.
191
192@vindex ns-mwheel-line-height
193@item ns-mwheel-line-height
194This variable controls the sensitivity of scrolling with the trackpad.
195Apple trackpads scroll by pixels, not lines, so Emacs converts the
196system's pixel values into lines. When set to a number, this variable
197sets the number of pixels Emacs will consider as one line. When nil
198or a non-number the default line height is used.
199
200Setting a lower number makes the trackpad more sensitive, and a higher
201number makes the trackpad less sensitive.
202@end table
203
146@subsection Font Panel 204@subsection Font Panel
147 205
148@findex ns-popup-font-panel 206@findex ns-popup-font-panel
@@ -153,17 +211,6 @@ recently used or clicked on.
153@c To make the setting permanent, use @samp{Save Options} in the 211@c To make the setting permanent, use @samp{Save Options} in the
154@c Options menu, or run @code{menu-bar-options-save}. 212@c Options menu, or run @code{menu-bar-options-save}.
155 213
156@cindex Core Text, on macOS
157@cindex font backend, on macOS
158In macOS, Emacs uses a Core Text based font backend
159by default. If you prefer the older font style, enter the following
160at the command-line before starting Emacs:
161
162@example
163% defaults write org.gnu.Emacs FontBackend ns
164@end example
165
166
167@node Mac / GNUstep Events 214@node Mac / GNUstep Events
168@section Windowing System Events under macOS / GNUstep 215@section Windowing System Events under macOS / GNUstep
169@cindex events on macOS 216@cindex events on macOS
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index 311b6f5b3fb..e979fda41eb 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -302,7 +302,7 @@ function is called, it reads the full definition from the file, to
302replace the place-holder. 302replace the place-holder.
303 303
304 The advantage of dynamic function loading is that loading the file 304 The advantage of dynamic function loading is that loading the file
305becomes much faster. This is a good thing for a file which contains 305should become faster. This is a good thing for a file which contains
306many separate user-callable functions, if using one of them does not 306many separate user-callable functions, if using one of them does not
307imply you will probably also use the rest. A specialized mode which 307imply you will probably also use the rest. A specialized mode which
308provides many keyboard commands often has that usage pattern: a user may 308provides many keyboard commands often has that usage pattern: a user may
@@ -326,6 +326,10 @@ installed Emacs files. But they are quite likely to happen with Lisp
326files that you are changing. The easiest way to prevent these problems 326files that you are changing. The easiest way to prevent these problems
327is to reload the new compiled file immediately after each recompilation. 327is to reload the new compiled file immediately after each recompilation.
328 328
329 @emph{Experience shows that using dynamic function loading provides
330benefits that are hardly measurable, so this feature is deprecated
331since Emacs 27.1.}
332
329 The byte compiler uses the dynamic function loading feature if the 333 The byte compiler uses the dynamic function loading feature if the
330variable @code{byte-compile-dynamic} is non-@code{nil} at compilation 334variable @code{byte-compile-dynamic} is non-@code{nil} at compilation
331time. Do not set this variable globally, since dynamic loading is 335time. Do not set this variable globally, since dynamic loading is
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index ac38b9d390d..2488fb37529 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -2236,16 +2236,16 @@ the end of @var{question}. The possible responses are provided in
2236@noindent 2236@noindent
2237where @var{long-answer} is the complete text of the user response, a 2237where @var{long-answer} is the complete text of the user response, a
2238string; @var{short-answer} is a short form of the same response, a 2238string; @var{short-answer} is a short form of the same response, a
2239single character; and @var{help-message} is the text that describes 2239single character or a function key; and @var{help-message} is the text
2240the meaning of the answer. If the variable @code{read-answer-short} 2240that describes the meaning of the answer. If the variable
2241is non-@code{nil}, the prompt will show the short variants of the 2241@code{read-answer-short} is non-@code{nil}, the prompt will show the
2242possible answers and the user is expected to type the single 2242short variants of the possible answers and the user is expected to
2243characters shown in the prompt; otherwise the prompt will show the 2243type the single characters/keys shown in the prompt; otherwise the
2244long variants of the answers, and the user is expected to type the 2244prompt will show the long variants of the answers, and the user is
2245full text of one of the answers and end by pressing @key{RET}. If 2245expected to type the full text of one of the answers and end by
2246@code{use-dialog-box} is non-@code{nil}, and this function was invoked 2246pressing @key{RET}. If @code{use-dialog-box} is non-@code{nil}, and
2247by mouse events, the question and the answers will be displayed in a 2247this function was invoked by mouse events, the question and the
2248GUI dialog box. 2248answers will be displayed in a GUI dialog box.
2249 2249
2250The function returns the text of the @var{long-answer} selected by the 2250The function returns the text of the @var{long-answer} selected by the
2251user, regardless of whether long or short answers were shown in the 2251user, regardless of whether long or short answers were shown in the
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 33897bb6336..abcd4bbd0f7 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1187,8 +1187,14 @@ When evaluating Emacs Lisp code directly using an @code{eval} call,
1187lexical binding is enabled if the @var{lexical} argument to 1187lexical binding is enabled if the @var{lexical} argument to
1188@code{eval} is non-@code{nil}. @xref{Eval}. 1188@code{eval} is non-@code{nil}. @xref{Eval}.
1189 1189
1190Lexical binding is also enabled in Lisp Interaction and IELM 1190@findex eval-expression@r{, and }lexical-binding
1191mode, used in the @file{*scratch*} and @file{*ielm*} buffers. 1191Lexical binding is also enabled in Lisp Interaction and IELM mode,
1192used in the @file{*scratch*} and @file{*ielm*} buffers, and also when
1193evaluating expressions via @kbd{M-:} (@code{eval-expression}) and when
1194processing the @option{--eval} command-line options of Emacs
1195(@pxref{Action Arguments,,, emacs, The GNU Emacs Manual}) and
1196@command{emacsclient} (@pxref{emacsclient Options,,, emacs, The GNU
1197Emacs Manual}).
1192 1198
1193@cindex special variables 1199@cindex special variables
1194 Even when lexical binding is enabled, certain variables will 1200 Even when lexical binding is enabled, certain variables will
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index 8d0e0b67591..1eff9261147 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -347,14 +347,18 @@ The default value is 30000, as the previously hard-coded threshold.
347+++ 347+++
348** The function 'read-passwd' uses "*" as default character to hide passwords. 348** The function 'read-passwd' uses "*" as default character to hide passwords.
349 349
350+++
350** The function 'read-answer' now accepts not only single character 351** The function 'read-answer' now accepts not only single character
351answers, but also function keys like 'F1', character events such as 352answers, but also function keys like 'F1', character events such as
352'C-M-h', and control characters like 'C-h'. 353'C-M-h', and control characters like 'C-h'.
353 354
354** Lexical binding is now used when evaluating interactive Elisp forms. 355+++
355More specifically, 'lexical-binding' is now used for 'M-:', '--eval', 356** Lexical binding is now used by default when evaluating interactive Elisp.
356as well as in 'lisp-interaction-mode' and 'ielm-mode', used in the 357More specifically, 'lexical-binding' is now used by default for 'M-:'
357"*scratch*" and "*ielm*" buffers. 358and '--eval' (including in evaluations invoked from 'emacsclient' via
359its '--eval' command-line option), as well as in
360'lisp-interaction-mode' and 'ielm-mode', used in the "*scratch*" and
361"*ielm*" buffers.
358 362
359--- 363---
360** The new user option 'tooltip-resize-echo-area' avoids truncating 364** The new user option 'tooltip-resize-echo-area' avoids truncating
@@ -489,6 +493,7 @@ matches strings where the pattern appears as a subsequence. Put
489simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex' 493simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex'
490to 'completion-styles' or 'completion-category-overrides' to use it. 494to 'completion-styles' or 'completion-category-overrides' to use it.
491 495
496---
492** The 'completion-common-part' face is now visible by default. 497** The 'completion-common-part' face is now visible by default.
493 498
494+++ 499+++
@@ -555,6 +560,7 @@ mode, they are described in the manual "(emacs) Display".
555** New user option 'xref-file-name-display' controls the display of 560** New user option 'xref-file-name-display' controls the display of
556file names in xref buffers. 561file names in xref buffers.
557 562
563---
558** New user option 'byte-count-to-string-function'. 564** New user option 'byte-count-to-string-function'.
559It is used for displaying file sizes and disk space in some cases. 565It is used for displaying file sizes and disk space in some cases.
560 566
@@ -586,6 +592,7 @@ The HIST argument of 'read-from-minibuffer' now works correctly with
586buffer-local variables. This means that different buffers can have 592buffer-local variables. This means that different buffers can have
587their own separated input history list if desired. 593their own separated input history list if desired.
588 594
595+++
589** 'backup-by-copying-when-privileged-mismatch' applies to file gid, too. 596** 'backup-by-copying-when-privileged-mismatch' applies to file gid, too.
590In addition to checking the file owner uid, Emacs also checks that the 597In addition to checking the file owner uid, Emacs also checks that the
591group gid is not greater than 'backup-by-copying-when-privileged-mismatch'; 598group gid is not greater than 'backup-by-copying-when-privileged-mismatch';
@@ -739,9 +746,11 @@ non-nil.
739what they're named, and the 'battery-linux-sysfs-regexp' variable has 746what they're named, and the 'battery-linux-sysfs-regexp' variable has
740been removed. 747been removed.
741 748
749---
742** The 'list-processes' command now includes port numbers in the 750** The 'list-processes' command now includes port numbers in the
743network connection information (in addition to the host name). 751network connection information (in addition to the host name).
744 752
753---
745** The 'cl' package is now officially deprecated in favor of 'cl-lib'. 754** The 'cl' package is now officially deprecated in favor of 'cl-lib'.
746 755
747--- 756---
@@ -750,51 +759,55 @@ network connection information (in addition to the host name).
750*** When called interactively with a prefix arg 'C-u', 'desktop-read' 759*** When called interactively with a prefix arg 'C-u', 'desktop-read'
751now prompts the user for the directory containing the desktop file. 760now prompts the user for the directory containing the desktop file.
752 761
753+++
754** display-line-numbers-mode 762** display-line-numbers-mode
755 763
764+++
756*** New faces 'line-number-major-tick' and 'line-number-minor-tick', 765*** New faces 'line-number-major-tick' and 'line-number-minor-tick',
757and user options 'display-line-numbers-major-tick' and 766and user options 'display-line-numbers-major-tick' and
758'display-line-numbers-minor-tick' can be used to highlight the line 767'display-line-numbers-minor-tick' can be used to highlight the line
759numbers of lines multiple of certain numbers. 768numbers of lines multiple of certain numbers.
760 769
770+++
761*** New variable 'display-line-numbers-offset', when non-zero, adds 771*** New variable 'display-line-numbers-offset', when non-zero, adds
762an offset to absolute line numbers. 772an offset to absolute line numbers.
763 773
764+++
765** winner 774** winner
766 775
776+++
767*** A new user option, 'winner-boring-buffers-regexp', has been added. 777*** A new user option, 'winner-boring-buffers-regexp', has been added.
768 778
769** table 779** table
770 780
771*** 'table-generate-source' and friends now support outputting wiki and 781+++
772mediawiki format tables. 782*** 'table-generate-source' now supports wiki and mediawiki
783This command can now output wiki and mediawiki format tables.
773 784
774---
775** telnet-mode 785** telnet-mode
776 786
787---
777*** Reverting a buffer in 'telnet-mode' will restart a closed connection. 788*** Reverting a buffer in 'telnet-mode' will restart a closed connection.
778 789
779** goto-addr 790** goto-addr
780 791
792---
781*** A way to more conveniently specify what URI address schemes should 793*** A way to more conveniently specify what URI address schemes should
782be ignored has been added via the 'goto-address-uri-schemes-ignored' 794be ignored has been added via the 'goto-address-uri-schemes-ignored'
783variable. 795variable.
784 796
785+++
786** tex-mode 797** tex-mode
787 798
799+++
788*** 'latex-noindent-commands' controls indentation of certain commands. 800*** 'latex-noindent-commands' controls indentation of certain commands.
789You can use this new user option to control indentation of arguments of 801You can use this new user option to control indentation of arguments of
790\emph, \footnote, and similar commands. 802\emph, \footnote, and similar commands.
791 803
792** byte compiler 804** byte compiler
793 805
806+++
794*** 'byte-compile-dynamic' is now obsolete. 807*** 'byte-compile-dynamic' is now obsolete.
795This is because on the one hand it suffers from misbehavior in corner 808This is because on the one hand it suffers from misbehavior in corner
796cases that have plagued it for years, and on the other experiments indicated 809cases that have plagued it for years, and on the other hand experience
797that it doesn't bring any measurable benefit. 810indicates that it doesn't bring any measurable benefit.
798 811
799--- 812---
800*** The 'g' keystroke in "*Compile-Log*" buffers has been bound to a 813*** The 'g' keystroke in "*Compile-Log*" buffers has been bound to a
@@ -832,15 +845,19 @@ its functions.
832 845
833** doc-view.el 846** doc-view.el
834 847
848---
835*** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'. 849*** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'.
836 850
851---
837*** Added support for password-protected PDF files. 852*** Added support for password-protected PDF files.
838 853
854---
839*** A new user option 'doc-view-pdftotext-program-args' has been added 855*** A new user option 'doc-view-pdftotext-program-args' has been added
840to allow controlling how the conversion to text is done. 856to allow controlling how the conversion to text is done.
841 857
842** Ido 858** Ido
843 859
860---
844*** New user option 'ido-big-directories' to mark directories whose 861*** New user option 'ido-big-directories' to mark directories whose
845names match certain regular expressions as big. Ido won't attempt to 862names match certain regular expressions as big. Ido won't attempt to
846list the contents of such directories when completing file names. 863list the contents of such directories when completing file names.
@@ -871,6 +888,7 @@ at the end of the active minibuffer.
871*** Some commands that previously used 'read-char-choice' now read 888*** Some commands that previously used 'read-char-choice' now read
872a character using the minibuffer by 'read-char-from-minibuffer'. 889a character using the minibuffer by 'read-char-from-minibuffer'.
873 890
891---
874** map.el 892** map.el
875 893
876*** Now also understands plists. 894*** Now also understands plists.
@@ -882,6 +900,7 @@ a character using the minibuffer by 'read-char-from-minibuffer'.
882+++ 900+++
883*** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'. 901*** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'.
884 902
903---
885** seq.el 904** seq.el
886New convenience functions 'seq-first' and 'seq-rest' give easy access 905New convenience functions 'seq-first' and 'seq-rest' give easy access
887to respectively the first and all but the first elements of sequences. 906to respectively the first and all but the first elements of sequences.
@@ -941,6 +960,7 @@ functions 'windmove-coord-add', 'windmove-constrain-to-range',
941'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement', 960'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement',
942'windmove-reference-loc' and 'windmove-other-window-loc'. 961'windmove-reference-loc' and 'windmove-other-window-loc'.
943 962
963---
944** Octave mode 964** Octave mode
945The mode is automatically enabled in files that start with the 965The mode is automatically enabled in files that start with the
946'function' keyword. 966'function' keyword.
@@ -1103,9 +1123,11 @@ for a revision.
1103*** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions 1123*** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions
1104and compares their entire trees. 1124and compares their entire trees.
1105 1125
1126---
1106*** New user option 'vc-hg-revert-switches'. 1127*** New user option 'vc-hg-revert-switches'.
1107It specifies switches to pass to Hg's 'revert' command. 1128It specifies switches to pass to Hg's 'revert' command.
1108 1129
1130---
1109*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase') 1131*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase')
1110print diffs and logs between the merge base (common ancestor) of two 1132print diffs and logs between the merge base (common ancestor) of two
1111given revisions. 1133given revisions.
@@ -1475,9 +1497,9 @@ strings and report all the spelling mistakes.
1475+++ 1497+++
1476*** New minor mode Fido mode. 1498*** New minor mode Fido mode.
1477This mode is based on Icomplete, and its name stands for "Fake Ido". 1499This mode is based on Icomplete, and its name stands for "Fake Ido".
1478The point of this mode is to be an 'ido-mode' workalike, but provide 1500The point of this mode is to be an 'ido-mode' workalike, providing
1479most of the functionality present in Icomplete that is not in 1501most of the functionality present in 'ido-mode' that is not in
1480'ido-mode', while being much more compatible with all of Emacs's 1502Icomplete, which is much more compatible with all of Emacs's
1481completion facilities. 1503completion facilities.
1482 1504
1483** Ecomplete 1505** Ecomplete
@@ -1809,7 +1831,6 @@ keyboard macros.
1809'isearch-yank-symbol-or-char'. 'isearch-del-char' is now bound to 1831'isearch-yank-symbol-or-char'. 'isearch-del-char' is now bound to
1810'C-M-d'. 1832'C-M-d'.
1811 1833
1812+++
1813'M-s h l' invokes 'highlight-lines-matching-regexp' using the search 1834'M-s h l' invokes 'highlight-lines-matching-regexp' using the search
1814string to highlight lines matching the search string. This is similar 1835string to highlight lines matching the search string. This is similar
1815to the existing binding 'M-s h r' ('highlight-regexp') that highlights 1836to the existing binding 'M-s h r' ('highlight-regexp') that highlights
@@ -1964,6 +1985,7 @@ This is useful for games where lower scores are better, like time-based games.
1964*** Completing file names in the minibuffer via 'C-TAB' now uses the 1985*** Completing file names in the minibuffer via 'C-TAB' now uses the
1965styles as configured by the user option 'completion-styles'. 1986styles as configured by the user option 'completion-styles'.
1966 1987
1988+++
1967** New macros 'thunk-let' and 'thunk-let*'. 1989** New macros 'thunk-let' and 'thunk-let*'.
1968These macros are analogue to 'let' and 'let*', but create bindings that 1990These macros are analogue to 'let' and 'let*', but create bindings that
1969are evaluated lazily. 1991are evaluated lazily.
@@ -2187,8 +2209,9 @@ are formatted as MIME digests.
2187*** 'message-forward-included-headers' has changed its default to 2209*** 'message-forward-included-headers' has changed its default to
2188exclude most headers when forwarding. 2210exclude most headers when forwarding.
2189 2211
2212---
2190*** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender". 2213*** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender".
2191When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's 2214When 'mml-secure-openpgp-sign-with-sender' is non-nil, message sender's
2192email address (in addition to its old behavior) will also be used to 2215email address (in addition to its old behavior) will also be used to
2193set gpg's "--sender email@domain" option. 2216set gpg's "--sender email@domain" option.
2194 2217
@@ -2640,6 +2663,7 @@ overrides all system and Emacs-provided defaults. To get the old
2640method back, set 'mailcap-prefer-mailcap-viewers' to nil. 2663method back, set 'mailcap-prefer-mailcap-viewers' to nil.
2641 2664
2642** MH-E 2665** MH-E
2666
2643+++ 2667+++
2644*** The hook 'mh-show-mode-hook' is now called before the message is inserted. 2668*** The hook 'mh-show-mode-hook' is now called before the message is inserted.
2645Functions that want to affect the message text (for example, to change 2669Functions that want to affect the message text (for example, to change
@@ -3084,6 +3108,7 @@ with POSIX.1-2017.
3084'decoded-time-weekday', 'decoded-time-dst' and 'decoded-time-zone' 3108'decoded-time-weekday', 'decoded-time-dst' and 'decoded-time-zone'
3085accessors can be used. 3109accessors can be used.
3086 3110
3111+++
3087*** The new functions 'date-days-in-month' (which will say how many 3112*** The new functions 'date-days-in-month' (which will say how many
3088days there are in a month in a specific year), 'date-ordinal-to-time' 3113days there are in a month in a specific year), 'date-ordinal-to-time'
3089(that computes the date of an ordinal day), 'decoded-time-add' (for 3114(that computes the date of an ordinal day), 'decoded-time-add' (for
@@ -3143,6 +3168,7 @@ throughput of reading from sub-processes that produces vast
3143** The new user option 'quit-window-hook' is now run first when 3168** The new user option 'quit-window-hook' is now run first when
3144executing the 'quit-window' command. 3169executing the 'quit-window' command.
3145 3170
3171+++
3146** The user options 'help-enable-completion-auto-load', 3172** The user options 'help-enable-completion-auto-load',
3147'help-enable-auto-load' and 'vhdl-project-auto-load', as well as the 3173'help-enable-auto-load' and 'vhdl-project-auto-load', as well as the
3148function 'vhdl-auto-load-project' have been renamed to have "autoload" 3174function 'vhdl-auto-load-project' have been renamed to have "autoload"
@@ -3623,15 +3649,18 @@ signal 'user-error' if there is no buffer to switch to.
3623** Battery status is now supported in all Cygwin builds. 3649** Battery status is now supported in all Cygwin builds.
3624Previously it was supported only in the Cygwin-w32 build. 3650Previously it was supported only in the Cygwin-w32 build.
3625 3651
3652---
3626** Emacs now handles key combinations involving the macOS "command" 3653** Emacs now handles key combinations involving the macOS "command"
3627and "option" modifier keys more correctly. 3654and "option" modifier keys more correctly.
3628 3655
3656+++
3629** MacOS modifier key behavior is now more adjustable. 3657** MacOS modifier key behavior is now more adjustable.
3630The behavior of the macOS "Option", "Command", "Control" and 3658The behavior of the macOS "Option", "Command", "Control" and
3631"Function" keys can now be specified separately for use with 3659"Function" keys can now be specified separately for use with
3632ordinary keys, function keys and mouse clicks. This allows using them 3660ordinary keys, function keys and mouse clicks. This allows using them
3633in their standard macOS way for composing characters. 3661in their standard macOS way for composing characters.
3634 3662
3663+++
3635** The special handling of 'frame-title-format' on NS where setting it 3664** The special handling of 'frame-title-format' on NS where setting it
3636to t would enable the macOS proxy icon has been replaced with a 3665to t would enable the macOS proxy icon has been replaced with a
3637separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now 3666separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now
@@ -3682,6 +3711,7 @@ modifier keys in line with Apples guidelines. This makes the drag and
3682drop behavior more consistent, as previously the sending application 3711drop behavior more consistent, as previously the sending application
3683was able to 'set' modifiers without the knowledge of the user. 3712was able to 'set' modifiers without the knowledge of the user.
3684 3713
3714---
3685** On NS multicolor font display is enabled again since it is also 3715** On NS multicolor font display is enabled again since it is also
3686implemented in Emacs on free operating systems via Cairo drawing. 3716implemented in Emacs on free operating systems via Cairo drawing.
3687 3717
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index 5713a7b0d1f..16243e16b45 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -181,6 +181,7 @@ Optional argument FACE specifies the face to do the highlighting."
181 (overlay-put o 'original-face (overlay-get o 'face)) 181 (overlay-put o 'original-face (overlay-get o 'face))
182 ;; Make this overlay take priority over the `transient-mark-mode' 182 ;; Make this overlay take priority over the `transient-mark-mode'
183 ;; overlay. 183 ;; overlay.
184 (overlay-put o 'original-priority (overlay-get o 'priority))
184 (overlay-put o 'priority 1) 185 (overlay-put o 'priority 1)
185 (setq pulse-momentary-overlay o) 186 (setq pulse-momentary-overlay o)
186 (if (eq pulse-flag 'never) 187 (if (eq pulse-flag 'never)
@@ -214,6 +215,7 @@ Optional argument FACE specifies the face to do the highlighting."
214 (let ((ol pulse-momentary-overlay)) 215 (let ((ol pulse-momentary-overlay))
215 (overlay-put ol 'face (overlay-get ol 'original-face)) 216 (overlay-put ol 'face (overlay-get ol 'original-face))
216 (overlay-put ol 'original-face nil) 217 (overlay-put ol 'original-face nil)
218 (overlay-put ol 'priority (overlay-get ol 'original-priority))
217 ;; Clear the overlay if it needs deleting. 219 ;; Clear the overlay if it needs deleting.
218 (when (overlay-get ol 'pulse-delete) (delete-overlay ol))) 220 (when (overlay-get ol 'pulse-delete) (delete-overlay ol)))
219 221
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index a0b2444346a..aa4b2addd47 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -134,7 +134,7 @@ Each entry is:
134 (if (cdr def) 134 (if (cdr def)
135 (error "Not an `rx' symbol definition: %s" form) 135 (error "Not an `rx' symbol definition: %s" form)
136 (car def))))) 136 (car def)))))
137 ((consp form) 137 ((and (consp form) (symbolp (car form)))
138 (let* ((op (car form)) 138 (let* ((op (car form))
139 (def (rx--lookup-def op))) 139 (def (rx--lookup-def op)))
140 (and def 140 (and def
@@ -360,7 +360,7 @@ character X becomes (?X . ?X). Return the intervals in a list."
360 (push (cons start end) intervals)) 360 (push (cons start end) intervals))
361 (t 361 (t
362 (error "Invalid rx `any' range: %s" 362 (error "Invalid rx `any' range: %s"
363 (substring str i 3)))) 363 (substring str i (+ i 3)))))
364 (setq i (+ i 3)))) 364 (setq i (+ i 3))))
365 (t 365 (t
366 ;; Single character. 366 ;; Single character.
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index a46755153e3..81325df3f4f 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -75,7 +75,7 @@
75(eval-when-compile (require 'subr-x)) 75(eval-when-compile (require 'subr-x))
76 76
77(defvar erc-official-location 77(defvar erc-official-location
78 "https://www.emacswiki.org/emacs/ERC (mailing list: erc-discuss@gnu.org)" 78 "https://www.emacswiki.org/emacs/ERC (mailing list: emacs-erc@gnu.org)"
79 "Location of the ERC client on the Internet.") 79 "Location of the ERC client on the Internet.")
80 80
81(defgroup erc nil 81(defgroup erc nil
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index a1a67e2330a..66bc731f67f 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -284,6 +284,17 @@ require user confirmation."
284 (t 284 (t
285 (icomplete-force-complete-and-exit))))) 285 (icomplete-force-complete-and-exit)))))
286 286
287(defun icomplete-fido-exit (force)
288 "Attempt to exit minibuffer immediately with current input.
289Unless FORCE is non-nil (interactively with a prefix argument),
290honour a non-nil REQUIRE-MATCH argument to `completing-read' by
291trying to complete as much as possible and disallowing the exit
292if that doesn't produce a completion match."
293 (interactive "P")
294 (if (and (not force) minibuffer--require-match)
295 (minibuffer-complete-and-exit)
296 (exit-minibuffer)))
297
287(defun icomplete-fido-backward-updir () 298(defun icomplete-fido-backward-updir ()
288 "Delete char before or go up directory, like `ido-mode'." 299 "Delete char before or go up directory, like `ido-mode'."
289 (interactive) 300 (interactive)
@@ -299,7 +310,7 @@ require user confirmation."
299 (define-key map (kbd "RET") 'icomplete-fido-ret) 310 (define-key map (kbd "RET") 'icomplete-fido-ret)
300 (define-key map (kbd "C-m") 'icomplete-fido-ret) 311 (define-key map (kbd "C-m") 'icomplete-fido-ret)
301 (define-key map (kbd "DEL") 'icomplete-fido-backward-updir) 312 (define-key map (kbd "DEL") 'icomplete-fido-backward-updir)
302 (define-key map (kbd "M-j") 'exit-minibuffer) 313 (define-key map (kbd "M-j") 'icomplete-fido-exit)
303 (define-key map (kbd "C-s") 'icomplete-forward-completions) 314 (define-key map (kbd "C-s") 'icomplete-forward-completions)
304 (define-key map (kbd "C-r") 'icomplete-backward-completions) 315 (define-key map (kbd "C-r") 'icomplete-backward-completions)
305 (define-key map (kbd "<right>") 'icomplete-forward-completions) 316 (define-key map (kbd "<right>") 'icomplete-forward-completions)
@@ -541,7 +552,7 @@ See `icomplete-mode' and `minibuffer-setup-hook'."
541 (icomplete--completion-table) 552 (icomplete--completion-table)
542 (icomplete--completion-predicate) 553 (icomplete--completion-predicate)
543 (if (window-minibuffer-p) 554 (if (window-minibuffer-p)
544 (not minibuffer-completion-confirm))))) 555 (eq minibuffer--require-match t)))))
545 (buffer-undo-list t) 556 (buffer-undo-list t)
546 deactivate-mark) 557 deactivate-mark)
547 ;; Do nothing if while-no-input was aborted. 558 ;; Do nothing if while-no-input was aborted.
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 49daabc44e3..7f5b597542a 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1400,7 +1400,11 @@ scroll the window of possible completions."
1400 (minibuffer-prompt-end) (point-max) #'exit-minibuffer 1400 (minibuffer-prompt-end) (point-max) #'exit-minibuffer
1401 ;; If the previous completion completed to an element which fails 1401 ;; If the previous completion completed to an element which fails
1402 ;; test-completion, then we shouldn't exit, but that should be rare. 1402 ;; test-completion, then we shouldn't exit, but that should be rare.
1403 (lambda () (minibuffer-message "Incomplete")))) 1403 (lambda ()
1404 (if minibuffer--require-match
1405 (minibuffer-message "Incomplete")
1406 ;; If a match is not required, exit after all.
1407 (exit-minibuffer)))))
1404 1408
1405(defun minibuffer-force-complete (&optional start end dont-cycle) 1409(defun minibuffer-force-complete (&optional start end dont-cycle)
1406 "Complete the minibuffer to an exact match. 1410 "Complete the minibuffer to an exact match.
@@ -1464,6 +1468,9 @@ DONT-CYCLE tells the function not to setup cycling."
1464 "List of commands which cause an immediately following 1468 "List of commands which cause an immediately following
1465`minibuffer-complete-and-exit' to ask for extra confirmation.") 1469`minibuffer-complete-and-exit' to ask for extra confirmation.")
1466 1470
1471(defvar minibuffer--require-match nil
1472 "Value of REQUIRE-MATCH passed to `completing-read'.")
1473
1467(defun minibuffer-complete-and-exit () 1474(defun minibuffer-complete-and-exit ()
1468 "Exit if the minibuffer contains a valid completion. 1475 "Exit if the minibuffer contains a valid completion.
1469Otherwise, try to complete the minibuffer contents. If 1476Otherwise, try to complete the minibuffer contents. If
@@ -3748,8 +3755,10 @@ See `completing-read' for the meaning of the arguments."
3748 3755
3749 (let* ((minibuffer-completion-table collection) 3756 (let* ((minibuffer-completion-table collection)
3750 (minibuffer-completion-predicate predicate) 3757 (minibuffer-completion-predicate predicate)
3758 ;; FIXME: Remove/rename this var, see the next one.
3751 (minibuffer-completion-confirm (unless (eq require-match t) 3759 (minibuffer-completion-confirm (unless (eq require-match t)
3752 require-match)) 3760 require-match))
3761 (minibuffer--require-match require-match)
3753 (base-keymap (if require-match 3762 (base-keymap (if require-match
3754 minibuffer-local-must-match-map 3763 minibuffer-local-must-match-map
3755 minibuffer-local-completion-map)) 3764 minibuffer-local-completion-map))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index a7be57e5a3f..670e763814c 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1006,32 +1006,36 @@ See `bibtex-generate-autokey' for details."
1006 :type 'boolean) 1006 :type 'boolean)
1007 1007
1008(defvar bibtex-autokey-transcriptions 1008(defvar bibtex-autokey-transcriptions
1009 '(;; language specific characters 1009 (nconc
1010 ("\\\\aa" . "a") ; \aa -> a 1010 (mapcar (lambda (a) (cons (regexp-opt (car a)) (cdr a)))
1011 ("\\\\AA" . "A") ; \AA -> A 1011 '(;; language specific characters
1012 ("\\\"a\\|\\\\\\\"a\\|\\\\ae" . "ae") ; "a,\"a,\ae -> ae 1012 (("\\aa") . "a") ; \aa -> a
1013 ("\\\"A\\|\\\\\\\"A\\|\\\\AE" . "Ae") ; "A,\"A,\AE -> Ae 1013 (("\\AA") . "A") ; \AA -> A
1014 ("\\\\i" . "i") ; \i -> i 1014 (("\"a" "\\\"a" "\\ae") . "ae") ; "a,\"a,\ae -> ae
1015 ("\\\\j" . "j") ; \j -> j 1015 (("\"A" "\\\"A" "\\AE") . "Ae") ; "A,\"A,\AE -> Ae
1016 ("\\\\l" . "l") ; \l -> l 1016 (("\\i") . "i") ; \i -> i
1017 ("\\\\L" . "L") ; \L -> L 1017 (("\\j") . "j") ; \j -> j
1018 ("\\\"o\\|\\\\\\\"o\\|\\\\o\\|\\\\oe" . "oe") ; "o,\"o,\o,\oe -> oe 1018 (("\\l") . "l") ; \l -> l
1019 ("\\\"O\\|\\\\\\\"O\\|\\\\O\\|\\\\OE" . "Oe") ; "O,\"O,\O,\OE -> Oe 1019 (("\\L") . "L") ; \L -> L
1020 ("\\\"s\\|\\\\\\\"s\\|\\\\3" . "ss") ; "s,\"s,\3 -> ss 1020 (("\"o" "\\\"o" "\\o" "\\oe") . "oe") ; "o,\"o,\o,\oe -> oe
1021 ("\\\"u\\|\\\\\\\"u" . "ue") ; "u,\"u -> ue 1021 (("\"O" "\\\"O" "\\O" "\\OE") . "Oe") ; "O,\"O,\O,\OE -> Oe
1022 ("\\\"U\\|\\\\\\\"U" . "Ue") ; "U,\"U -> Ue 1022 (("\"s" "\\\"s" "\\3") . "ss") ; "s,\"s,\3 -> ss
1023 ;; accents 1023 (("\"u" "\\\"u") . "ue") ; "u,\"u -> ue
1024 ("\\\\`\\|\\\\'\\|\\\\\\^\\|\\\\~\\|\\\\=\\|\\\\\\.\\|\\\\u\\|\\\\v\\|\\\\H\\|\\\\t\\|\\\\c\\|\\\\d\\|\\\\b" . "") 1024 (("\"U" "\\\"U") . "Ue") ; "U,\"U -> Ue
1025 ;; braces, quotes, concatenation. 1025 ;; hyphen, accents
1026 ("[`'\"{}#]" . "") 1026 (("\\-" "\\`" "\\'" "\\^" "\\~" "\\=" "\\." "\\u" "\\v"
1027 ("\\\\-" . "") ; \- -> 1027 "\\H" "\\t" "\\c" "\\d" "\\b") . "")
1028 ;; spaces 1028 ;; space
1029 ("\\\\?[ \t\n]+\\|~" . " ")) 1029 (("~") . " ")))
1030 ;; more spaces
1031 '(("[\s\t\n]*\\(?:\\\\\\)?[\s\t\n]+" . " ")
1032 ;; braces, quotes, concatenation.
1033 ("[`'\"{}#]" . "")))
1030 "Alist of (OLD-REGEXP . NEW-STRING) pairs. 1034 "Alist of (OLD-REGEXP . NEW-STRING) pairs.
1031Used by the default values of `bibtex-autokey-name-change-strings' and 1035Used as default values of `bibtex-autokey-name-change-strings' and
1032`bibtex-autokey-titleword-change-strings'. Defaults to translating some 1036`bibtex-autokey-titleword-change-strings'. Defaults to translating some
1033language specific characters to their ASCII transcriptions, and 1037language specific characters to their ASCII transcriptions, and
1034removing any character accents.") 1038removing any accent characters.")
1035 1039
1036(defcustom bibtex-autokey-name-change-strings 1040(defcustom bibtex-autokey-name-change-strings
1037 bibtex-autokey-transcriptions 1041 bibtex-autokey-transcriptions
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 7f87ee3646d..33f181b80c3 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -2914,16 +2914,17 @@ WHERE is provided the cell and table at that location is reported."
2914(defun table-generate-source (language &optional dest-buffer caption) 2914(defun table-generate-source (language &optional dest-buffer caption)
2915 "Generate source of the current table in the specified language. 2915 "Generate source of the current table in the specified language.
2916LANGUAGE is a symbol that specifies the language to describe the 2916LANGUAGE is a symbol that specifies the language to describe the
2917structure of the table. It must be either `html', `latex' or `cals'. 2917structure of the table. It must be either `html', `latex', `cals',
2918The resulted source text is inserted into DEST-BUFFER and the buffer 2918`wiki', or `mediawiki'.
2919object is returned. When DEST-BUFFER is omitted or nil the default 2919The function inserts the resulting source text into DEST-BUFFER, and
2920buffer specified in `table-dest-buffer-name' is used. In this case 2920returns the buffer object. When DEST-BUFFER is omitted or nil, the
2921the content of the default buffer is erased prior to the generation. 2921function uses the default buffer specified in `table-dest-buffer-name'.
2922When DEST-BUFFER is non-nil it is expected to be either a destination 2922In this case, the function erases the default buffer prior to the
2923buffer or a name of the destination buffer. In this case the 2923source generation.
2924generated result is inserted at the current point in the destination 2924When DEST-BUFFER is non-nil, it should be either a destination
2925buffer and the previously existing contents in the buffer are 2925buffer or a name of the destination buffer. In that case, the
2926untouched. 2926function inserts the generated result at point in the destination
2927buffer, and leaves the previous contents of the buffer untouched.
2927 2928
2928References used for this implementation: 2929References used for this implementation:
2929 2930
diff --git a/lisp/window.el b/lisp/window.el
index bbd4e9b6dfc..5824b1cb845 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -9125,8 +9125,8 @@ accessible position."
9125 ;; wider than its frame's pixel width, its height 9125 ;; wider than its frame's pixel width, its height
9126 ;; remains unaltered. 9126 ;; remains unaltered.
9127 (width (+ (car (window-text-pixel-size 9127 (width (+ (car (window-text-pixel-size
9128 window (window-start) (point-max) 9128 window (window-start window) nil
9129 (frame-pixel-width) 9129 (frame-pixel-width (window-frame window))
9130 ;; Add one line-height to assure that 9130 ;; Add one line-height to assure that
9131 ;; we're on the safe side. This 9131 ;; we're on the safe side. This
9132 ;; overshoots when the first line below 9132 ;; overshoots when the first line below
diff --git a/src/fontset.c b/src/fontset.c
index bca9452418e..c2bb8b21f26 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -367,8 +367,14 @@ fontset_add (Lisp_Object fontset, Lisp_Object range, Lisp_Object elt, Lisp_Objec
367static int 367static int
368fontset_compare_rfontdef (const void *val1, const void *val2) 368fontset_compare_rfontdef (const void *val1, const void *val2)
369{ 369{
370 return (RFONT_DEF_SCORE (*(Lisp_Object *) val1) 370 Lisp_Object v1 = *(Lisp_Object *) val1, v2 = *(Lisp_Object *) val2;
371 - RFONT_DEF_SCORE (*(Lisp_Object *) val2)); 371 if (NILP (v1) && NILP (v2))
372 return 0;
373 else if (NILP (v1))
374 return INT_MIN;
375 else if (NILP (v2))
376 return INT_MAX;
377 return (RFONT_DEF_SCORE (v1) - RFONT_DEF_SCORE (v2));
372} 378}
373 379
374/* Update a cons cell which has this form: 380/* Update a cons cell which has this form:
@@ -400,6 +406,8 @@ reorder_font_vector (Lisp_Object font_group, struct font *font)
400 for (i = 0; i < size; i++) 406 for (i = 0; i < size; i++)
401 { 407 {
402 Lisp_Object rfont_def = AREF (vec, i); 408 Lisp_Object rfont_def = AREF (vec, i);
409 if (NILP (rfont_def))
410 continue;
403 Lisp_Object font_def = RFONT_DEF_FONT_DEF (rfont_def); 411 Lisp_Object font_def = RFONT_DEF_FONT_DEF (rfont_def);
404 Lisp_Object font_spec = FONT_DEF_SPEC (font_def); 412 Lisp_Object font_spec = FONT_DEF_SPEC (font_def);
405 int score = RFONT_DEF_SCORE (rfont_def) & 0xFF; 413 int score = RFONT_DEF_SCORE (rfont_def) & 0xFF;
diff --git a/src/xdisp.c b/src/xdisp.c
index c2aa314c1ad..3c594b54add 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -31441,6 +31441,10 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
31441 struct window *w = XWINDOW (hlinfo->mouse_face_window); 31441 struct window *w = XWINDOW (hlinfo->mouse_face_window);
31442 struct frame *f = XFRAME (WINDOW_FRAME (w)); 31442 struct frame *f = XFRAME (WINDOW_FRAME (w));
31443 31443
31444 /* Don't bother doing anything if we are on a wrong frame. */
31445 if (f != hlinfo->mouse_face_mouse_frame)
31446 return;
31447
31444 if (/* If window is in the process of being destroyed, don't bother 31448 if (/* If window is in the process of being destroyed, don't bother
31445 to do anything. */ 31449 to do anything. */
31446 w->current_matrix != NULL 31450 w->current_matrix != NULL
diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el
index 4888e1d9d1e..0fece4004bd 100644
--- a/test/lisp/emacs-lisp/rx-tests.el
+++ b/test/lisp/emacs-lisp/rx-tests.el
@@ -316,7 +316,9 @@
316 (should (equal (rx (not (or (in "abc") (char "bcd")))) 316 (should (equal (rx (not (or (in "abc") (char "bcd"))))
317 "[^a-d]")) 317 "[^a-d]"))
318 (should (equal (rx (or (not (in "abc")) (not (char "bcd")))) 318 (should (equal (rx (or (not (in "abc")) (not (char "bcd"))))
319 "[^bc]"))) 319 "[^bc]"))
320 (should (equal (rx (or "x" (? "yz")))
321 "x\\|\\(?:yz\\)?")))
320 322
321(ert-deftest rx-def-in-charset-or () 323(ert-deftest rx-def-in-charset-or ()
322 (rx-let ((a (any "badc")) 324 (rx-let ((a (any "badc"))