aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2020-01-15 07:50:22 -0800
committerGlenn Morris2020-01-15 07:50:22 -0800
commitd672ad60e34b4e1dcb28f91d15f1e286acf2f94f (patch)
tree5d17911717db0469bed838cbda7c0adf9638e31b
parente31287e704a539ebef777d92e4d06d4b1d912b2a (diff)
parent0e936f18f8738fbe3809784f5ec6feb27c6bb24e (diff)
downloademacs-d672ad60e34b4e1dcb28f91d15f1e286acf2f94f.tar.gz
emacs-d672ad60e34b4e1dcb28f91d15f1e286acf2f94f.zip
Merge from origin/emacs-27
0e936f18f8 (origin/emacs-27) Fix build failure with --with-cairo --wi... c34f7e884b Add new node "Package Statuses" to manual fdee034ac8 * lisp/isearch.el: Fix corner cases of isearch-lazy-count. 7b14329d86 ; * lisp/simple.el (messages-buffer): Doc fix. (Bug#39124) 7ec66a59e3 Document spacing issues with Xft for some fonts 08cd247fbd ; * etc/NEWS: Fix typo. d645628e3c Always use lexical-binding in lisp-interaction-mode (bug#3... c42198f78c ; *etc/NEWS: Fix typo. 0ed9cfa7dc vc-dir: ensure we don't use a pager with git 37e0d00c14 Improve ERC's matching of nicks and URLs (bug#38257) d47b157969 Handle tab-bar clicks on a GPM-capable console. e4791f3f8e ;* etc/TODO: Update. # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/emacs.texi1
-rw-r--r--doc/emacs/package.texi76
-rw-r--r--doc/lispref/variables.texi3
-rw-r--r--etc/NEWS.2721
-rw-r--r--etc/PROBLEMS12
-rw-r--r--etc/TODO43
-rw-r--r--lisp/erc/erc-button.el11
-rw-r--r--lisp/erc/erc-match.el3
-rw-r--r--lisp/isearch.el7
-rw-r--r--lisp/progmodes/elisp-mode.el3
-rw-r--r--lisp/simple.el2
-rw-r--r--lisp/startup.el4
-rw-r--r--lisp/tab-line.el4
-rw-r--r--lisp/vc/vc-git.el3
-rw-r--r--src/image.c8
-rw-r--r--src/term.c8
-rw-r--r--src/xdisp.c4
17 files changed, 137 insertions, 76 deletions
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 0400ed0b736..c3cb37e6a6d 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1099,6 +1099,7 @@ Hyperlinking and Navigation Features
1099Emacs Lisp Packages 1099Emacs Lisp Packages
1100 1100
1101* Package Menu:: Buffer for viewing and managing packages. 1101* Package Menu:: Buffer for viewing and managing packages.
1102* Package Statuses:: Which statuses a package can have.
1102* Package Installation:: Options for package installation. 1103* Package Installation:: Options for package installation.
1103* Package Files:: Where packages are installed. 1104* Package Files:: Where packages are installed.
1104 1105
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index cca602e7a05..1cac7f9b4b6 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -32,6 +32,7 @@ Manual}.
32 32
33@menu 33@menu
34* Package Menu:: Buffer for viewing and managing packages. 34* Package Menu:: Buffer for viewing and managing packages.
35* Package Statuses:: Which statuses a package can have.
35* Package Installation:: Options for package installation. 36* Package Installation:: Options for package installation.
36* Package Files:: Where packages are installed. 37* Package Files:: Where packages are installed.
37@end menu 38@end menu
@@ -57,19 +58,12 @@ The package's version number (e.g., @samp{11.86}).
57The package's status---normally one of @samp{available} (can be 58The package's status---normally one of @samp{available} (can be
58downloaded from the package archive), @samp{installed}, 59downloaded from the package archive), @samp{installed},
59@c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}), 60@c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
60or @samp{built-in} (included in Emacs by default). The status 61or @samp{built-in} (included in Emacs by default).
61@samp{external} means the package is not built-in and not from the 62@xref{Package Statuses}.
62directory specified by @code{package-user-dir} (@pxref{Package 63
63Files}). External packages are treated much like built-in: they 64@item
64cannot be deleted through the package menu, and are not considered for 65Which package archive this package is from, if you have more than one
65upgrading. 66package archive enabled.
66
67The status can also be @samp{new}. This is equivalent to
68@samp{available}, except that it means the package became newly
69available on the package archive after your last invocation of
70@kbd{M-x list-packages}. In other instances, a package may have the
71status @samp{held}, @samp{disabled}, or @samp{obsolete}.
72@xref{Package Installation}.
73 67
74@item 68@item
75A short description of the package. 69A short description of the package.
@@ -139,7 +133,7 @@ current line by an @kbd{i} or @kbd{d} command
139Mark all package with a newer available version for upgrading 133Mark all package with a newer available version for upgrading
140(@code{package-menu-mark-upgrades}). This places an installation mark 134(@code{package-menu-mark-upgrades}). This places an installation mark
141on the new available versions, and a deletion mark on the old 135on the new available versions, and a deletion mark on the old
142installed versions. 136installed versions (marked with status @samp{obsolete}).
143 137
144@item x 138@item x
145@kindex x @r{(Package Menu)} 139@kindex x @r{(Package Menu)}
@@ -195,6 +189,60 @@ from lower-priority archives (@code{package-menu-toggle-hiding}).
195For example, you can install a package by typing @kbd{i} on the line 189For example, you can install a package by typing @kbd{i} on the line
196listing that package, followed by @kbd{x}. 190listing that package, followed by @kbd{x}.
197 191
192@node Package Statuses
193@section Package Statuses
194@cindex package status
195
196A package can have one of the following statuses:
197
198@table @samp
199@item available
200The package is not installed, but can be downloaded and installed from
201the package archive.
202
203@item avail-obso
204The package is available for installation, but a newer version is also
205available. Packages with this status are hidden by default.
206
207@item built-in
208The package is included in Emacs by default. It cannot be deleted
209through the package menu, and is not considered for upgrading.
210
211@item dependency
212The package was installed automatically to satisfy a dependency of
213another package.
214
215@item disabled
216The package has been disabled using the @code{package-load-list}
217variable.
218
219@item external
220The package is not built-in and not from the directory specified by
221@code{package-user-dir} (@pxref{Package Files}). External packages
222are treated much like @samp{built-in} packages and cannot be deleted.
223
224@item held
225The package is held, @xref{Package Installation}.
226
227@item incompat
228The package cannot be installed for some reason, for example because
229it depends on uninstallable packages.
230
231@item installed
232The package is installed.
233
234@item new
235Equivalent to @samp{available}, except that the package became newly
236available on the package archive after your last invocation of
237@kbd{M-x list-packages}.
238
239@item obsolete
240The package is an outdated installed version; in addition to this
241version of the package, a newer version is also installed.
242
243@c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
244@end table
245
198@node Package Installation 246@node Package Installation
199@section Package Installation 247@section Package Installation
200 248
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 1ec97e2f3de..1e357754abe 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1187,6 +1187,9 @@ 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
1191mode, used in the @file{*scratch*} and @file{*ielm*} buffers.
1192
1190@cindex special variables 1193@cindex special variables
1191 Even when lexical binding is enabled, certain variables will 1194 Even when lexical binding is enabled, certain variables will
1192continue to be dynamically bound. These are called @dfn{special 1195continue to be dynamically bound. These are called @dfn{special
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index 43805bb0ac6..cea5d500c7c 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -337,8 +337,9 @@ answers, but also function keys like 'F1', character events such as
337'C-M-h', and control characters like 'C-h'. 337'C-M-h', and control characters like 'C-h'.
338 338
339** Lexical binding is now used when evaluating interactive Elisp forms. 339** Lexical binding is now used when evaluating interactive Elisp forms.
340More specifically, lexical-binding is now used for 'M-:', '--eval', as 340More specifically, 'lexical-binding' is now used for 'M-:', '--eval',
341well as in the "*scratch*" and "*ielm*" buffers. 341as well as in 'lisp-interaction-mode' and 'ielm-mode', used in the
342"*scratch*" and "*ielm*" buffers.
342 343
343--- 344---
344** The new user option 'tooltip-resize-echo-area' avoids truncating 345** The new user option 'tooltip-resize-echo-area' avoids truncating
@@ -781,8 +782,8 @@ cases that have plagued it for years, and on the other experiments indicated
781that it doesn't bring any measurable benefit. 782that it doesn't bring any measurable benefit.
782 783
783--- 784---
784*** The 'g' keystroke in *Compile-Log* buffers has been bound to a new 785*** The 'g' keystroke in "*Compile-Log*" buffers has been bound to a
785command that will recompile the file previously compiled with 'M-x 786new command that will recompile the file previously compiled with 'M-x
786byte-compile-file' and the like. 787byte-compile-file' and the like.
787 788
788** compile.el 789** compile.el
@@ -1569,6 +1570,18 @@ and its value has been changed to Duck Duck Go.
1569The user option to use instead to alter text to be sent is now 1570The user option to use instead to alter text to be sent is now
1570'erc-pre-send-functions'. 1571'erc-pre-send-functions'.
1571 1572
1573---
1574*** Improve matching/highlighting of nicknames.
1575Open and close parenthesis and apostrophe are not considered valid
1576nick characters anymore, matching the given grammar in RFC 2812
1577section 2.3.1. This enables correct matching and highlighting of
1578nicks when they are surrounded by parentheses, like "(nick)", and when
1579adjacent to an apostrophe, like "nick's".
1580
1581---
1582*** Set 'erc-button-url-regexp' to 'browse-url-button-regexp'
1583which better handles surrounding pair of parentheses.
1584
1572** EUDC 1585** EUDC
1573 1586
1574--- 1587---
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 5067b53817b..9e4a631c729 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -728,6 +728,18 @@ and ps-mule to print Unicode characters.
728 728
729You may have bad fonts. 729You may have bad fonts.
730 730
731** Under X, some characters are unexpectedly wide.
732
733e.g. recent versions of Inconsolata show this issue for almost all of
734its characters. Due to what is probably an Xft bug, the determination
735of the width of some characters is incorrect. One workaround is to
736build emacs with Cairo enabled ("configure --with-cairo" and have the
737appropriate Cairo development packages installed) as this
738configuration does not suffer from this problem. See
739<https://github.com/googlefonts/Inconsolata/issues/42> and
740<https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-01/msg00456.html>
741for more discussion.
742
731** Under X, an unexpected monospace font is used as the default font. 743** Under X, an unexpected monospace font is used as the default font.
732 744
733When compiled with XFT, Emacs tries to use a default font named 745When compiled with XFT, Emacs tries to use a default font named
diff --git a/etc/TODO b/etc/TODO
index e87fd85f7f9..0a06484c165 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -384,6 +384,12 @@ specified filters, specified timers, and specified hooks.
384 384
385** Install mmc@maruska.dyndns.org's no-flicker change. 385** Install mmc@maruska.dyndns.org's no-flicker change.
386 386
387 https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html
388
389 I don't know if this is still relevant. I can't reach the URLs in
390 the above message thread and double-buffering may have solved some
391 of the problems.
392
387** Add a "current vertical pixel level" value that goes with point, 393** Add a "current vertical pixel level" value that goes with point,
388 so that motion commands can also move through tall images. 394 so that motion commands can also move through tall images.
389 This value would be to point as window-vscroll is to window-start. 395 This value would be to point as window-vscroll is to window-start.
@@ -537,11 +543,6 @@ from the emacsclient process.
537** Provide an optional feature which computes a scroll bar slider's 543** Provide an optional feature which computes a scroll bar slider's
538 size and its position from lines instead of characters. 544 size and its position from lines instead of characters.
539 545
540** Allow unknown image types to be rendered via an external program
541 converting them to, say, PBM (in the same way as PostScript?). [does
542 doc-view.el do this, or could it be extended to do this?
543 Does ImageMagick obsolete this idea?]
544
545** Allow displaying an X window from an external program in a buffer, 546** Allow displaying an X window from an external program in a buffer,
546 e.g. to render graphics from Java applets. [gerd and/or wmperry 547 e.g. to render graphics from Java applets. [gerd and/or wmperry
547 thought this was feasible.] 548 thought this was feasible.]
@@ -555,6 +556,8 @@ from the emacsclient process.
555 556
556** Use the XIE X extension, if available, for image display. 557** Use the XIE X extension, if available, for image display.
557 558
559(Obsolete as XIE is now considered obsolete itself.)
560
558** Make monochrome images display using the foreground and background 561** Make monochrome images display using the foreground and background
559 colors of the applicable faces. 562 colors of the applicable faces.
560 563
@@ -679,6 +682,10 @@ simple buttons to webkit (effectively, a web browser).
679Currently, xwidgets works only for the gtk+ framework but it is 682Currently, xwidgets works only for the gtk+ framework but it is
680designed to be compatible with multiple Emacs ports. 683designed to be compatible with multiple Emacs ports.
681 684
685(See the scratch/nsxwidget branch, and the discussion around
686Objective-C code and GCC at
687https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00072.html)
688
682**** Respect 'frame-inhibit-implied-resize' 689**** Respect 'frame-inhibit-implied-resize'
683 690
684When the variable 'frame-inhibit-implied-resize' is non-nil, frames 691When the variable 'frame-inhibit-implied-resize' is non-nil, frames
@@ -855,32 +862,6 @@ all build versions.
855 862
856*** Bugs 863*** Bugs
857 864
858**** Incorrect translation of Super modifier with Ctrl or Meta on macOS
859
860When pressing 'M-s-a', Emacs replies "M-s-Ã¥ is undefined". What
861happened is a mix of Emacs view that Meta and Super has been pressed,
862and macOS view that ALT-a should yield "Ã¥" (U+00E5 LATIN SMALL LETTER
863A WITH RING ABOVE).
864
865The bug reports suggest two different patches; unfortunately, neither
866works properly. For example:
867
868 Use a Swedish keyboard layout
869
870 (setq ns-alternate-modifier nil)
871
872 "CMD-ALT-9"
873
874Today, this correctly yields that s-] is undefined. With either
875of the two patches, Emacs responds that s-9 was pressed.
876
877More investigation is needed to fix this problem.
878
879Links:
880- https://debbugs.gnu.org/19977
881- https://debbugs.gnu.org/21330
882- https://debbugs.gnu.org/21551
883
884**** Toggling the toolbar in fullheight or maximized modes 865**** Toggling the toolbar in fullheight or maximized modes
885 866
886The toolbar, in the NS interface, is not considered part of the text 867The toolbar, in the NS interface, is not considered part of the text
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 6e30b3a7935..e4f5a190913 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -41,6 +41,7 @@
41(require 'erc) 41(require 'erc)
42(require 'wid-edit) 42(require 'wid-edit)
43(require 'erc-fill) 43(require 'erc-fill)
44(require 'browse-url)
44 45
45;;; Minor Mode 46;;; Minor Mode
46 47
@@ -87,12 +88,9 @@ above them."
87 :type 'face 88 :type 'face
88 :group 'erc-faces) 89 :group 'erc-faces)
89 90
90(defcustom erc-button-url-regexp 91(defcustom erc-button-url-regexp browse-url-button-regexp
91 (concat "\\(www\\.\\|\\(s?https?\\|"
92 "ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\)"
93 "\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?"
94 "[-a-zA-Z0-9_=!?#$@~`%&*+\\/:;.,()]+[-a-zA-Z0-9_=#$@~`%&*+\\/()]")
95 "Regular expression that matches URLs." 92 "Regular expression that matches URLs."
93 :version "27.1"
96 :group 'erc-button 94 :group 'erc-button
97 :type 'regexp) 95 :type 'regexp)
98 96
@@ -223,14 +221,11 @@ PAR is a number of a regexp grouping whose text will be passed to
223 221
224(defvar erc-button-syntax-table 222(defvar erc-button-syntax-table
225 (let ((table (make-syntax-table))) 223 (let ((table (make-syntax-table)))
226 (modify-syntax-entry ?\( "w" table)
227 (modify-syntax-entry ?\) "w" table)
228 (modify-syntax-entry ?\[ "w" table) 224 (modify-syntax-entry ?\[ "w" table)
229 (modify-syntax-entry ?\] "w" table) 225 (modify-syntax-entry ?\] "w" table)
230 (modify-syntax-entry ?\{ "w" table) 226 (modify-syntax-entry ?\{ "w" table)
231 (modify-syntax-entry ?\} "w" table) 227 (modify-syntax-entry ?\} "w" table)
232 (modify-syntax-entry ?` "w" table) 228 (modify-syntax-entry ?` "w" table)
233 (modify-syntax-entry ?' "w" table)
234 (modify-syntax-entry ?^ "w" table) 229 (modify-syntax-entry ?^ "w" table)
235 (modify-syntax-entry ?- "w" table) 230 (modify-syntax-entry ?- "w" table)
236 (modify-syntax-entry ?_ "w" table) 231 (modify-syntax-entry ?_ "w" table)
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 7a824cce9f8..8b9ab331288 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -246,14 +246,11 @@ and other miscellaneous functions."
246;; just put it in erc.el 246;; just put it in erc.el
247(defvar erc-match-syntax-table 247(defvar erc-match-syntax-table
248 (let ((table (make-syntax-table))) 248 (let ((table (make-syntax-table)))
249 (modify-syntax-entry ?\( "w" table)
250 (modify-syntax-entry ?\) "w" table)
251 (modify-syntax-entry ?\[ "w" table) 249 (modify-syntax-entry ?\[ "w" table)
252 (modify-syntax-entry ?\] "w" table) 250 (modify-syntax-entry ?\] "w" table)
253 (modify-syntax-entry ?\{ "w" table) 251 (modify-syntax-entry ?\{ "w" table)
254 (modify-syntax-entry ?\} "w" table) 252 (modify-syntax-entry ?\} "w" table)
255 (modify-syntax-entry ?` "w" table) 253 (modify-syntax-entry ?` "w" table)
256 (modify-syntax-entry ?' "w" table)
257 (modify-syntax-entry ?^ "w" table) 254 (modify-syntax-entry ?^ "w" table)
258 (modify-syntax-entry ?- "w" table) 255 (modify-syntax-entry ?- "w" table)
259 (modify-syntax-entry ?_ "w" table) 256 (modify-syntax-entry ?_ "w" table)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index c9873937252..ddf9190dc6d 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1225,6 +1225,9 @@ used to set the value of `isearch-regexp-function'."
1225 isearch-pre-scroll-point nil 1225 isearch-pre-scroll-point nil
1226 isearch-pre-move-point nil 1226 isearch-pre-move-point nil
1227 1227
1228 isearch-lazy-count-current nil
1229 isearch-lazy-count-total nil
1230
1228 ;; Save the original value of `minibuffer-message-timeout', and 1231 ;; Save the original value of `minibuffer-message-timeout', and
1229 ;; set it to nil so that isearch's messages don't get timed out. 1232 ;; set it to nil so that isearch's messages don't get timed out.
1230 isearch-original-minibuffer-message-timeout minibuffer-message-timeout 1233 isearch-original-minibuffer-message-timeout minibuffer-message-timeout
@@ -3776,7 +3779,7 @@ by other Emacs features."
3776 isearch-lazy-highlight-window-end)))))) 3779 isearch-lazy-highlight-window-end))))))
3777 ;; something important did indeed change 3780 ;; something important did indeed change
3778 (lazy-highlight-cleanup t (not (equal isearch-string ""))) ;stop old timer 3781 (lazy-highlight-cleanup t (not (equal isearch-string ""))) ;stop old timer
3779 (when isearch-lazy-count 3782 (when (and isearch-lazy-count isearch-mode (null isearch-message-function))
3780 (when (or (equal isearch-string "") 3783 (when (or (equal isearch-string "")
3781 ;; Check if this place was reached by a condition above 3784 ;; Check if this place was reached by a condition above
3782 ;; other than changed window boundaries (that shouldn't 3785 ;; other than changed window boundaries (that shouldn't
@@ -3794,7 +3797,7 @@ by other Emacs features."
3794 (clrhash isearch-lazy-count-hash) 3797 (clrhash isearch-lazy-count-hash)
3795 (setq isearch-lazy-count-current nil 3798 (setq isearch-lazy-count-current nil
3796 isearch-lazy-count-total nil) 3799 isearch-lazy-count-total nil)
3797 (funcall (or isearch-message-function #'isearch-message)))) 3800 (isearch-message)))
3798 (setq isearch-lazy-highlight-window-start-changed nil) 3801 (setq isearch-lazy-highlight-window-start-changed nil)
3799 (setq isearch-lazy-highlight-window-end-changed nil) 3802 (setq isearch-lazy-highlight-window-end-changed nil)
3800 (setq isearch-lazy-highlight-error isearch-error) 3803 (setq isearch-lazy-highlight-error isearch-error)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 774e3324c2e..2617a6e4cce 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -933,7 +933,8 @@ Paragraphs are separated only by blank lines.
933Semicolons start comments. 933Semicolons start comments.
934 934
935\\{lisp-interaction-mode-map}" 935\\{lisp-interaction-mode-map}"
936 :abbrev-table nil) 936 :abbrev-table nil
937 (setq-local lexical-binding t))
937 938
938;;; Emacs Lisp Byte-Code mode 939;;; Emacs Lisp Byte-Code mode
939 940
diff --git a/lisp/simple.el b/lisp/simple.el
index f9f1efcc98c..f28198cd81f 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -8953,7 +8953,7 @@ and setting it to nil."
8953 8953
8954(defun messages-buffer () 8954(defun messages-buffer ()
8955 "Return the \"*Messages*\" buffer. 8955 "Return the \"*Messages*\" buffer.
8956If it does not exist, create and it switch it to `messages-buffer-mode'." 8956If it does not exist, create it and switch it to `messages-buffer-mode'."
8957 (or (get-buffer "*Messages*") 8957 (or (get-buffer "*Messages*")
8958 (with-current-buffer (get-buffer-create "*Messages*") 8958 (with-current-buffer (get-buffer-create "*Messages*")
8959 (messages-buffer-mode) 8959 (messages-buffer-mode)
diff --git a/lisp/startup.el b/lisp/startup.el
index c27af726f9c..2a85c004da1 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1435,8 +1435,7 @@ please check its value")
1435 (if (get-buffer "*scratch*") 1435 (if (get-buffer "*scratch*")
1436 (with-current-buffer "*scratch*" 1436 (with-current-buffer "*scratch*"
1437 (if (eq major-mode 'fundamental-mode) 1437 (if (eq major-mode 'fundamental-mode)
1438 (funcall initial-major-mode)) 1438 (funcall initial-major-mode))))
1439 (setq-local lexical-binding t)))
1440 1439
1441 ;; Load library for our terminal type. 1440 ;; Load library for our terminal type.
1442 ;; User init file can set term-file-prefix to nil to prevent this. 1441 ;; User init file can set term-file-prefix to nil to prevent this.
@@ -2317,7 +2316,6 @@ A fancy display is used on graphic displays, normal otherwise."
2317 (or (get-buffer "*scratch*") 2316 (or (get-buffer "*scratch*")
2318 (with-current-buffer (get-buffer-create "*scratch*") 2317 (with-current-buffer (get-buffer-create "*scratch*")
2319 (set-buffer-major-mode (current-buffer)) 2318 (set-buffer-major-mode (current-buffer))
2320 (setq-local lexical-binding t)
2321 (current-buffer)))) 2319 (current-buffer))))
2322 2320
2323(defun command-line-1 (args-left) 2321(defun command-line-1 (args-left)
diff --git a/lisp/tab-line.el b/lisp/tab-line.el
index 8e561c71f5b..ef530d43dec 100644
--- a/lisp/tab-line.el
+++ b/lisp/tab-line.el
@@ -81,9 +81,7 @@
81 '((default 81 '((default
82 :inherit tab-line-tab) 82 :inherit tab-line-tab)
83 (((class color) (min-colors 88)) 83 (((class color) (min-colors 88))
84 :background "grey85") 84 :background "grey85"))
85 (t
86 :inverse-video t))
87 "Tab line face for tab with current buffer in selected window." 85 "Tab line face for tab with current buffer in selected window."
88 :version "27.1" 86 :version "27.1"
89 :group 'tab-line-faces) 87 :group 'tab-line-faces)
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 37bc53b3850..2caa287bce2 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1785,13 +1785,12 @@ The difference to vc-do-command is that this function always invokes
1785 (process-environment 1785 (process-environment
1786 (append 1786 (append
1787 `("GIT_DIR" 1787 `("GIT_DIR"
1788 "PAGER="
1789 ;; Avoid repository locking during background operations 1788 ;; Avoid repository locking during background operations
1790 ;; (bug#21559). 1789 ;; (bug#21559).
1791 ,@(when revert-buffer-in-progress-p 1790 ,@(when revert-buffer-in-progress-p
1792 '("GIT_OPTIONAL_LOCKS=0"))) 1791 '("GIT_OPTIONAL_LOCKS=0")))
1793 process-environment))) 1792 process-environment)))
1794 (apply 'process-file vc-git-program nil buffer nil command args))) 1793 (apply 'process-file vc-git-program nil buffer nil "--no-pager" command args)))
1795 1794
1796(defun vc-git--out-ok (command &rest args) 1795(defun vc-git--out-ok (command &rest args)
1797 (zerop (apply 'vc-git--call '(t nil) command args))) 1796 (zerop (apply 'vc-git--call '(t nil) command args)))
diff --git a/src/image.c b/src/image.c
index d3fec37186c..65d59254f02 100644
--- a/src/image.c
+++ b/src/image.c
@@ -6235,7 +6235,7 @@ pbm_load (struct frame *f, struct image *img)
6235 PNG 6235 PNG
6236 ***********************************************************************/ 6236 ***********************************************************************/
6237 6237
6238#if defined (HAVE_PNG) || defined (HAVE_NS) || defined (USE_CAIRO) 6238#if defined (HAVE_PNG) || defined (HAVE_NS)
6239 6239
6240/* Indices of image specification fields in png_format, below. */ 6240/* Indices of image specification fields in png_format, below. */
6241 6241
@@ -6286,10 +6286,10 @@ png_image_p (Lisp_Object object)
6286 return fmt[PNG_FILE].count + fmt[PNG_DATA].count == 1; 6286 return fmt[PNG_FILE].count + fmt[PNG_DATA].count == 1;
6287} 6287}
6288 6288
6289#endif /* HAVE_PNG || HAVE_NS || USE_CAIRO */ 6289#endif /* HAVE_PNG || HAVE_NS */
6290 6290
6291 6291
6292#if (defined HAVE_PNG && !defined HAVE_NS) || defined USE_CAIRO 6292#if defined HAVE_PNG && !defined HAVE_NS
6293 6293
6294# ifdef WINDOWSNT 6294# ifdef WINDOWSNT
6295/* PNG library details. */ 6295/* PNG library details. */
@@ -10164,7 +10164,7 @@ static struct image_type const image_types[] =
10164 { SYMBOL_INDEX (Qsvg), svg_image_p, svg_load, image_clear_image, 10164 { SYMBOL_INDEX (Qsvg), svg_image_p, svg_load, image_clear_image,
10165 IMAGE_TYPE_INIT (init_svg_functions) }, 10165 IMAGE_TYPE_INIT (init_svg_functions) },
10166#endif 10166#endif
10167#if defined HAVE_PNG || defined HAVE_NS || defined USE_CAIRO 10167#if defined HAVE_PNG || defined HAVE_NS
10168 { SYMBOL_INDEX (Qpng), png_image_p, png_load, image_clear_image, 10168 { SYMBOL_INDEX (Qpng), png_image_p, png_load, image_clear_image,
10169 IMAGE_TYPE_INIT (init_png_functions) }, 10169 IMAGE_TYPE_INIT (init_png_functions) },
10170#endif 10170#endif
diff --git a/src/term.c b/src/term.c
index 871734318c0..a3aef31ec25 100644
--- a/src/term.c
+++ b/src/term.c
@@ -2568,6 +2568,14 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event,
2568 else { 2568 else {
2569 f->mouse_moved = 0; 2569 f->mouse_moved = 0;
2570 term_mouse_click (&ie, event, f); 2570 term_mouse_click (&ie, event, f);
2571 if (tty_handle_tab_bar_click (f, event->x, event->y,
2572 (ie.modifiers & down_modifier) != 0, &ie))
2573 {
2574 /* tty_handle_tab_bar_click stores 2 events in the event
2575 queue, so we are done here. */
2576 count += 2;
2577 return count;
2578 }
2571 } 2579 }
2572 2580
2573 done: 2581 done:
diff --git a/src/xdisp.c b/src/xdisp.c
index 53300928d7b..516013ce4ba 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13516,6 +13516,10 @@ tty_handle_tab_bar_click (struct frame *f, int x, int y, bool down_p,
13516 f->last_tab_bar_item = prop_idx; 13516 f->last_tab_bar_item = prop_idx;
13517 else 13517 else
13518 { 13518 {
13519 /* Force reset of up_modifier bit from the event modifiers. */
13520 if (event->modifiers & up_modifier)
13521 event->modifiers &= ~up_modifier;
13522
13519 /* Generate a TAB_BAR_EVENT event. */ 13523 /* Generate a TAB_BAR_EVENT event. */
13520 Lisp_Object frame; 13524 Lisp_Object frame;
13521 Lisp_Object key = AREF (f->tab_bar_items, 13525 Lisp_Object key = AREF (f->tab_bar_items,