aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2017-12-16 12:18:45 -0800
committerGlenn Morris2017-12-16 12:18:45 -0800
commit8e46d93dcdabfa9fb099345fa12378479b4dbe63 (patch)
tree3586203b53367f0bc71460e31caee41a79b84d8f
parentda2c441079c74b18399176df3f92613436ef53dc (diff)
parent28e0261890e6335cb49cc03c47c206ce9c022448 (diff)
downloademacs-8e46d93dcdabfa9fb099345fa12378479b4dbe63.tar.gz
emacs-8e46d93dcdabfa9fb099345fa12378479b4dbe63.zip
Merge from origin/emacs-26
28e0261890 * lisp/progmodes/cc-defs.el (c-version): Update to 5.33.1. ac53084f9b Improve fix for Bug#29712 ffd4771560 * doc/lispref/sequences.texi (Sequence Functions): Improve... f274cbd185 Avoid reordering of output in 'shr-insert-document' 7890864413 Improve documentation of 'invisible-p' a1327bbc64 Remove one more check that Vframe_list is non-nil 63b6281fdd Fix off-by-one error in 'css--hex-color' 804b37ca63 Save and restore text-pixel height and width of frames (Bu... 777fe94661 Partially revert "Mention new strictness for &optional, &r... ad17db7964 * lisp/vc/smerge-mode.el (smerge-refine): Respect font-loc... 5a7d0095a4 * lisp/vc/smerge-mode.el (smerge-refine): Replace obsolete... e019c35df6 FOR_EACH_FRAME no longer assumes frame-list d64b88da2f * src/font.c (Ffont_info): Doc fix. (Bug#29682) 92b2604a7f Modernise message.el face spec syntax b1efbe6564 Update message.el obsolete face aliases 2494c14e76 ; * lisp/comint.el (comint-terminfo-terminal): Add a :vers... 12ad276d15 Improve documentation of TERM environment variable 8ed529f0f3 Add option to configure comint TERM 889f07c352 Better support utf-8-with-signature and utf-8-hfs in XML/HTML a2697fac0e * lisp/menu-bar.el (menu-bar-mode): Doc fix. ffb50eace6 ; * etc/NEWS: Fix last change. 95606af8b0 Fix Bug#29712 in tramp-tests.el 9bf66c6bee Don't run FOR_EACH_FRAME when there's no frame left (Bug#2... c2a88ec8e8 * lisp/textmodes/tex-mode.el: Ensure uncompiled file is lo... b178870528 Remember password change for IMAP in Gnus (Bug#29692) a21dac18bb Add %DUMBFW to the default GnuTLS priority strings 780407cff1 Small fixes prompted by make check-declare 541a60108d Fix some custom groups e220d6e112 Fix fontification of first declaration within a C++ lambda... aa66da220c * src/data.c (Fadd_variable_watcher): Doc fix. f838210b01 Fix misfontification of C++ member initialization list aft... 232c6465ce Fix doc-string of Fbuffer_list 3f9aac68d7 Don't raise an extraneous frame (bug#29696) e7b1111155 Mention new strictness for &optional, &rest in arglists (B... 4cb8696e47 Don't misfontify "foo ()" inside C++ initialization parent... ce31e726ad Fixes for defcustoms, prompted by cus-test-opts aacd1e14fc * lisp/net/newst-backend.el (newsticker--raw-url-list-defa... 7e2f4d3d41 * lisp/htmlfontify.el (hfy-which-etags): Fix it. 52d2a690f6 Add missing :version tags revealed by cusver-check f5d0360234 Escape column-zero doc parens # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/building.texi5
-rw-r--r--doc/emacs/misc.texi10
-rw-r--r--doc/emacs/trouble.texi2
-rw-r--r--doc/lispref/display.texi7
-rw-r--r--doc/lispref/sequences.texi13
-rw-r--r--doc/misc/emacs-gnutls.texi6
-rw-r--r--etc/NEWS.2623
-rw-r--r--lisp/calendar/icalendar.el2
-rw-r--r--lisp/comint.el37
-rw-r--r--lisp/emacs-lisp/bytecomp.el1
-rw-r--r--lisp/epa.el1
-rw-r--r--lisp/eshell/em-tramp.el2
-rw-r--r--lisp/eshell/em-xtra.el2
-rw-r--r--lisp/files.el4
-rw-r--r--lisp/frame.el4
-rw-r--r--lisp/frameset.el28
-rw-r--r--lisp/gnus/gnus-art.el5
-rw-r--r--lisp/gnus/gnus-cloud.el2
-rw-r--r--lisp/gnus/mail-source.el3
-rw-r--r--lisp/gnus/message.el110
-rw-r--r--lisp/htmlfontify.el6
-rw-r--r--lisp/image-dired.el2
-rw-r--r--lisp/international/mule.el15
-rw-r--r--lisp/menu-bar.el4
-rw-r--r--lisp/net/gnutls.el6
-rw-r--r--lisp/net/mailcap.el1
-rw-r--r--lisp/net/newst-backend.el28
-rw-r--r--lisp/net/shr.el13
-rw-r--r--lisp/progmodes/cc-defs.el2
-rw-r--r--lisp/progmodes/cc-engine.el42
-rw-r--r--lisp/progmodes/cc-fonts.el14
-rw-r--r--lisp/progmodes/cc-langs.el38
-rw-r--r--lisp/progmodes/cc-vars.el7
-rw-r--r--lisp/progmodes/compile.el8
-rw-r--r--lisp/progmodes/flymake.el2
-rw-r--r--lisp/progmodes/grep.el1
-rw-r--r--lisp/progmodes/js.el1
-rw-r--r--lisp/progmodes/perl-mode.el1
-rw-r--r--lisp/progmodes/python.el3
-rw-r--r--lisp/progmodes/ruby-mode.el2
-rw-r--r--lisp/progmodes/verilog-mode.el8
-rw-r--r--lisp/textmodes/css-mode.el2
-rw-r--r--lisp/textmodes/less-css-mode.el7
-rw-r--r--lisp/textmodes/tex-mode.el9
-rw-r--r--lisp/textmodes/tildify.el2
-rw-r--r--lisp/time.el4
-rw-r--r--lisp/vc/cvs-status.el5
-rw-r--r--lisp/vc/diff-mode.el9
-rw-r--r--lisp/vc/emerge.el6
-rw-r--r--lisp/vc/smerge-mode.el10
-rw-r--r--lisp/vc/vc-hg.el2
-rw-r--r--lisp/vc/vc-hooks.el4
-rw-r--r--src/buffer.c6
-rw-r--r--src/data.c2
-rw-r--r--src/font.c10
-rw-r--r--src/frame.c5
-rw-r--r--src/frame.h5
-rw-r--r--src/xdisp.c28
-rw-r--r--test/lisp/net/tramp-tests.el2
-rw-r--r--test/lisp/textmodes/css-mode-tests.el6
60 files changed, 395 insertions, 200 deletions
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index 87ac61bac3b..e108a4e7c10 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -303,6 +303,11 @@ And here's how to do it in csh:
303if ($?prompt) set prompt = @dots{} 303if ($?prompt) set prompt = @dots{}
304@end example 304@end example
305 305
306@vindex TERM, environment variable, in compilation mode
307 If you want to customize the value of the @env{TERM} environment
308variable passed to the compilation subshell, customize the variable
309@code{comint-terminfo-terminal} (@pxref{Shell Options}).
310
306 Emacs does not expect a compiler process to launch asynchronous 311 Emacs does not expect a compiler process to launch asynchronous
307subprocesses; if it does, and they keep running after the main 312subprocesses; if it does, and they keep running after the main
308compiler process has terminated, Emacs may kill them or their output 313compiler process has terminated, Emacs may kill them or their output
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 6ad5fbafdd6..e4be004ae52 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1396,6 +1396,16 @@ directory stack if they are not already on it
1396(@code{shell-pushd-dunique}). The values you choose should match the 1396(@code{shell-pushd-dunique}). The values you choose should match the
1397underlying shell, of course. 1397underlying shell, of course.
1398 1398
1399@vindex comint-terminfo-terminal
1400@vindex TERM, environment variable, in sub-shell
1401Comint mode sets the @env{TERM} environment variable to a safe default
1402value, but this value disables some useful features. For example,
1403color is disabled in applications that use @env{TERM} to determine if
1404color is supported. Therefore, Emacs provides an option
1405@code{comint-terminfo-terminal}, which you can set to a terminal that
1406is present in your system's terminfo database, in order to take
1407advantage of advanced features of that terminal.
1408
1399@node Terminal emulator 1409@node Terminal emulator
1400@subsection Emacs Terminal Emulator 1410@subsection Emacs Terminal Emulator
1401@findex term 1411@findex term
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 4a836c3224b..e98322d74e2 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -780,7 +780,7 @@ the dribble file.
780@item 780@item
781@findex open-termscript 781@findex open-termscript
782@cindex termscript file 782@cindex termscript file
783@cindex @env{TERM} environment variable 783@vindex TERM, environment variable, and display bugs
784For possible display bugs, the terminal type (the value of environment 784For possible display bugs, the terminal type (the value of environment
785variable @env{TERM}), the complete termcap entry for the terminal from 785variable @env{TERM}), the complete termcap entry for the terminal from
786@file{/etc/termcap} (since that file is not identical on all machines), 786@file{/etc/termcap} (since that file is not identical on all machines),
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 7af8d9efb7c..50069e3d1da 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -929,13 +929,18 @@ major mode should use the mode's own name as an element of
929 929
930@defun invisible-p pos-or-prop 930@defun invisible-p pos-or-prop
931If @var{pos-or-prop} is a marker or number, this function returns a 931If @var{pos-or-prop} is a marker or number, this function returns a
932non-@code{nil} value if the text at that position is invisible. 932non-@code{nil} value if the text at that position is currently
933invisible.
933 934
934If @var{pos-or-prop} is any other kind of Lisp object, that is taken 935If @var{pos-or-prop} is any other kind of Lisp object, that is taken
935to mean a possible value of the @code{invisible} text or overlay 936to mean a possible value of the @code{invisible} text or overlay
936property. In that case, this function returns a non-@code{nil} value 937property. In that case, this function returns a non-@code{nil} value
937if that value would cause text to become invisible, based on the 938if that value would cause text to become invisible, based on the
938current value of @code{buffer-invisibility-spec}. 939current value of @code{buffer-invisibility-spec}.
940
941The return value of this function is @code{t} if the text would be
942completely hidden on display, or a non-@code{nil}, non-@code{t} value
943if the text would be replaced by an ellipsis.
939@end defun 944@end defun
940 945
941@vindex line-move-ignore-invisible 946@vindex line-move-ignore-invisible
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 4fba880803e..8d56e022d8f 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -425,6 +425,7 @@ useful example of @code{sort}.
425 425
426@cindex sequence functions in seq 426@cindex sequence functions in seq
427@cindex seq library 427@cindex seq library
428@cindex sequences, generalized
428 The @file{seq.el} library provides the following additional sequence 429 The @file{seq.el} library provides the following additional sequence
429manipulation macros and functions, prefixed with @code{seq-}. To use 430manipulation macros and functions, prefixed with @code{seq-}. To use
430them, you must first load the @file{seq} library. 431them, you must first load the @file{seq} library.
@@ -859,6 +860,7 @@ it is a function of two arguments to use instead of the default @code{equal}.
859@end defun 860@end defun
860 861
861@defun seq-subseq sequence start &optional end 862@defun seq-subseq sequence start &optional end
863@cindex sub-sequence
862 This function returns a subset of @var{sequence} from @var{start} 864 This function returns a subset of @var{sequence} from @var{start}
863to @var{end}, both integers (@var{end} defaults to the last element). 865to @var{end}, both integers (@var{end} defaults to the last element).
864If @var{start} or @var{end} is negative, it counts from the end of 866If @var{start} or @var{end} is negative, it counts from the end of
@@ -926,6 +928,8 @@ contain less elements than @var{n}. @var{n} must be an integer. If
926@end defun 928@end defun
927 929
928@defun seq-intersection sequence1 sequence2 &optional function 930@defun seq-intersection sequence1 sequence2 &optional function
931@cindex sequences, intersection of
932@cindex intersection of sequences
929 This function returns a list of the elements that appear both in 933 This function returns a list of the elements that appear both in
930@var{sequence1} and @var{sequence2}. If the optional argument 934@var{sequence1} and @var{sequence2}. If the optional argument
931@var{function} is non-@code{nil}, it is a function of two arguments to 935@var{function} is non-@code{nil}, it is a function of two arguments to
@@ -972,6 +976,10 @@ of @var{sequence}. Keys are compared using @code{equal}.
972@end defun 976@end defun
973 977
974@defun seq-into sequence type 978@defun seq-into sequence type
979@cindex convert sequence to another type
980@cindex list to vector
981@cindex vector to list
982@cindex string to vector
975 This function converts the sequence @var{sequence} into a sequence 983 This function converts the sequence @var{sequence} into a sequence
976of type @var{type}. @var{type} can be one of the following symbols: 984of type @var{type}. @var{type} can be one of the following symbols:
977@code{vector}, @code{string} or @code{list}. 985@code{vector}, @code{string} or @code{list}.
@@ -993,6 +1001,8 @@ of type @var{type}. @var{type} can be one of the following symbols:
993@end defun 1001@end defun
994 1002
995@defun seq-min sequence 1003@defun seq-min sequence
1004@cindex minimum value of sequence
1005@cindex sequence minimum
996 This function returns the smallest element of @var{sequence}. The 1006 This function returns the smallest element of @var{sequence}. The
997elements of @var{sequence} must be numbers or markers 1007elements of @var{sequence} must be numbers or markers
998(@pxref{Markers}). 1008(@pxref{Markers}).
@@ -1010,6 +1020,8 @@ elements of @var{sequence} must be numbers or markers
1010@end defun 1020@end defun
1011 1021
1012@defun seq-max sequence 1022@defun seq-max sequence
1023@cindex maximum value of sequence
1024@cindex sequence maximum
1013 This function returns the largest element of @var{sequence}. The 1025 This function returns the largest element of @var{sequence}. The
1014elements of @var{sequence} must be numbers or markers. 1026elements of @var{sequence} must be numbers or markers.
1015 1027
@@ -1027,6 +1039,7 @@ elements of @var{sequence} must be numbers or markers.
1027 1039
1028@defmac seq-doseq (var sequence) body@dots{} 1040@defmac seq-doseq (var sequence) body@dots{}
1029@cindex sequence iteration 1041@cindex sequence iteration
1042@cindex iteration over vector or string
1030 This macro is like @code{dolist} (@pxref{Iteration, dolist}), except 1043 This macro is like @code{dolist} (@pxref{Iteration, dolist}), except
1031that @var{sequence} can be a list, vector or string. This is 1044that @var{sequence} can be a list, vector or string. This is
1032primarily useful for side-effects. 1045primarily useful for side-effects.
diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi
index 92846a924c5..1715c83a0d2 100644
--- a/doc/misc/emacs-gnutls.texi
+++ b/doc/misc/emacs-gnutls.texi
@@ -116,9 +116,11 @@ information.
116The @code{gnutls-algorithm-priority} variable sets the GnuTLS priority 116The @code{gnutls-algorithm-priority} variable sets the GnuTLS priority
117string. This is global, not per host name (although 117string. This is global, not per host name (although
118@code{gnutls-negotiate} supports a priority string per connection so 118@code{gnutls-negotiate} supports a priority string per connection so
119it could be done if needed). The priority string syntax is in the 119it could be done if needed). For details see the
120@uref{https://www.gnu.org/software/gnutls/documentation.html, GnuTLS 120@uref{https://www.gnu.org/software/gnutls/documentation.html, GnuTLS
121documentation}. 121documentation} and the
122@uref{https://gnutls.org/manual/html_node/Priority-Strings.html,
123GnuTLS priority string syntax and description}.
122@end defvar 124@end defvar
123 125
124@defvar gnutls-trustfiles 126@defvar gnutls-trustfiles
diff --git a/etc/NEWS.26 b/etc/NEWS.26
index 64b53d88c83..784c608041b 100644
--- a/etc/NEWS.26
+++ b/etc/NEWS.26
@@ -431,6 +431,11 @@ You can enable this by customizing 'mwheel-tilt-scroll-p'. If you
431want to reverse the direction of the scroll, customize 431want to reverse the direction of the scroll, customize
432'mwheel-flip-direction'. 432'mwheel-flip-direction'.
433 433
434+++
435** The default GnuTLS priority string now includes %DUMBFW.
436This is to avoid bad behavior in some firewalls, which causes the
437connection to be closed by the remote host.
438
434** Emacsclient changes 439** Emacsclient changes
435 440
436+++ 441+++
@@ -807,6 +812,13 @@ whose content matches a regexp; bound to '% g'.
807*** New user option 'comint-move-point-for-matching-input' to control 812*** New user option 'comint-move-point-for-matching-input' to control
808where to place point after 'C-c M-r' and 'C-c M-s'. 813where to place point after 'C-c M-r' and 'C-c M-s'.
809 814
815+++
816*** New user option 'comint-terminfo-terminal'.
817This option allows control of the value of the TERM environment
818variable Emacs puts into the environment of the Comint mode and its
819derivatives, such as Shell mode and Compilation Shell minor-mode. The
820default is "dumb", for compatibility with previous behavior.
821
810** Compilation mode 822** Compilation mode
811 823
812--- 824---
@@ -1462,6 +1474,17 @@ them through 'format' first. Even that is discouraged: for ElDoc
1462support, you should set 'eldoc-documentation-function' instead of 1474support, you should set 'eldoc-documentation-function' instead of
1463calling 'eldoc-message' directly. 1475calling 'eldoc-message' directly.
1464 1476
1477---
1478** Using '&rest' or '&optional' incorrectly is now an error.
1479For example giving '&optional' without a following variable, or
1480passing '&optional' multiple times:
1481
1482 (defun foo (&optional &rest x))
1483 (defun bar (&optional &optional x))
1484
1485Previously, Emacs would just ignore the extra keyword, or give
1486incorrect results in certain cases.
1487
1465 1488
1466* Lisp Changes in Emacs 26.1 1489* Lisp Changes in Emacs 26.1
1467 1490
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 129cd6d9ad3..27f1b0324e3 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -1310,7 +1310,7 @@ Returns an alist."
1310Argument ADVANCE-TIME is a number giving the time when the alarm 1310Argument ADVANCE-TIME is a number giving the time when the alarm
1311fires (minutes before the respective event). Argument ALARM-SPEC 1311fires (minutes before the respective event). Argument ALARM-SPEC
1312is a list which must be one of (audio), (display) or 1312is a list which must be one of (audio), (display) or
1313(email (ADDRESS1 ...)), see `icalendar-export-alarms'. Argument 1313\(email (ADDRESS1 ...)), see `icalendar-export-alarms'. Argument
1314SUMMARY is a string which contains a short description for the 1314SUMMARY is a string which contains a short description for the
1315alarm." 1315alarm."
1316 (let* ((action (car alarm-spec)) 1316 (let* ((action (car alarm-spec))
diff --git a/lisp/comint.el b/lisp/comint.el
index aa7dab28f32..5ee4e48d636 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -290,6 +290,7 @@ If `after-input', point will be positioned after the input typed
290by the user, but before the rest of the history entry that has 290by the user, but before the rest of the history entry that has
291been inserted. If `end-of-line', point will be positioned at the 291been inserted. If `end-of-line', point will be positioned at the
292end of the current logical (not visual) line after insertion." 292end of the current logical (not visual) line after insertion."
293 :version "26.1"
293 :type '(radio (const :tag "Stay after input" after-input) 294 :type '(radio (const :tag "Stay after input" after-input)
294 (const :tag "Move to end of line" end-of-line)) 295 (const :tag "Move to end of line" end-of-line))
295 :group 'comint) 296 :group 'comint)
@@ -458,6 +459,12 @@ executed once when the buffer is created."
458 :type 'hook 459 :type 'hook
459 :group 'comint) 460 :group 'comint)
460 461
462(defcustom comint-terminfo-terminal "dumb"
463 "Value to use for TERM when the system uses terminfo."
464 :type 'string
465 :group 'comint
466 :version "26.1")
467
461(defvar comint-mode-map 468(defvar comint-mode-map
462 (let ((map (make-sparse-keymap))) 469 (let ((map (make-sparse-keymap)))
463 ;; Keys: 470 ;; Keys:
@@ -816,19 +823,7 @@ series of processes in the same Comint buffer. The hook
816(defun comint-exec-1 (name buffer command switches) 823(defun comint-exec-1 (name buffer command switches)
817 (let ((process-environment 824 (let ((process-environment
818 (nconc 825 (nconc
819 ;; If using termcap, we specify `emacs' as the terminal type 826 (comint-term-environment)
820 ;; because that lets us specify a width.
821 ;; If using terminfo, we specify `dumb' because that is
822 ;; a defined terminal type. `emacs' is not a defined terminal type
823 ;; and there is no way for us to define it here.
824 ;; Some programs that use terminfo get very confused
825 ;; if TERM is not a valid terminal type.
826 ;; ;; There is similar code in compile.el.
827 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
828 (list "TERM=dumb" "TERMCAP="
829 (format "COLUMNS=%d" (window-width)))
830 (list "TERM=emacs"
831 (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
832 (list (format "INSIDE_EMACS=%s,comint" emacs-version)) 827 (list (format "INSIDE_EMACS=%s,comint" emacs-version))
833 process-environment)) 828 process-environment))
834 (default-directory 829 (default-directory
@@ -857,6 +852,22 @@ series of processes in the same Comint buffer. The hook
857 (set-process-coding-system proc decoding encoding)) 852 (set-process-coding-system proc decoding encoding))
858 proc)) 853 proc))
859 854
855(defun comint-term-environment ()
856 "Return an environment variable list for terminal configuration."
857 ;; If using termcap, we specify `emacs' as the terminal type
858 ;; because that lets us specify a width.
859 ;; If using terminfo, we default to `dumb' because that is
860 ;; a defined terminal type. `emacs' is not a defined terminal type
861 ;; and there is no way for us to define it here.
862 ;; Some programs that use terminfo get very confused
863 ;; if TERM is not a valid terminal type.
864 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
865 (list (format "TERM=%s" comint-terminfo-terminal)
866 "TERMCAP="
867 (format "COLUMNS=%d" (window-width)))
868 (list "TERM=emacs"
869 (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width)))))
870
860(defun comint-nonblank-p (str) 871(defun comint-nonblank-p (str)
861 "Return non-nil if STR contains non-whitespace syntax." 872 "Return non-nil if STR contains non-whitespace syntax."
862 (not (string-match "\\`\\s *\\'" str))) 873 (not (string-match "\\`\\s *\\'" str)))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index c898305d916..25f738cb8ec 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -236,6 +236,7 @@ This includes variable references and calls to functions such as `car'."
236 236
237(defcustom byte-compile-cond-use-jump-table t 237(defcustom byte-compile-cond-use-jump-table t
238 "Compile `cond' clauses to a jump table implementation (using a hash-table)." 238 "Compile `cond' clauses to a jump table implementation (using a hash-table)."
239 :version "26.1"
239 :group 'bytecomp 240 :group 'bytecomp
240 :type 'boolean) 241 :type 'boolean)
241 242
diff --git a/lisp/epa.el b/lisp/epa.el
index aca9aaa7d22..8e84b5b223d 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -40,6 +40,7 @@
40If t, replace the original text without any confirmation. 40If t, replace the original text without any confirmation.
41If nil, don't replace the original text and show the result in a new buffer. 41If nil, don't replace the original text and show the result in a new buffer.
42If neither t nor nil, ask user for confirmation." 42If neither t nor nil, ask user for confirmation."
43 :version "26.1"
43 :type '(choice (const :tag "Never" nil) 44 :type '(choice (const :tag "Never" nil)
44 (const :tag "Ask the user" ask) 45 (const :tag "Ask the user" ask)
45 (const :tag "Always" t)) 46 (const :tag "Always" t))
diff --git a/lisp/eshell/em-tramp.el b/lisp/eshell/em-tramp.el
index e322cea1e21..e2da3468aba 100644
--- a/lisp/eshell/em-tramp.el
+++ b/lisp/eshell/em-tramp.el
@@ -32,6 +32,8 @@
32 (require 'eshell) 32 (require 'eshell)
33 (require 'tramp)) 33 (require 'tramp))
34 34
35;; There are no items in this custom group, but eshell modules (ab)use
36;; custom groups.
35;;;###autoload 37;;;###autoload
36(progn 38(progn
37 (defgroup eshell-tramp nil 39 (defgroup eshell-tramp nil
diff --git a/lisp/eshell/em-xtra.el b/lisp/eshell/em-xtra.el
index 7b80f64d629..89814467d1f 100644
--- a/lisp/eshell/em-xtra.el
+++ b/lisp/eshell/em-xtra.el
@@ -29,6 +29,8 @@
29 (require 'pcomplete)) 29 (require 'pcomplete))
30(require 'compile) 30(require 'compile)
31 31
32;; There are no items in this custom group, but eshell modules (ab)use
33;; custom groups.
32;;;###autoload 34;;;###autoload
33(progn 35(progn
34(defgroup eshell-xtra nil 36(defgroup eshell-xtra nil
diff --git a/lisp/files.el b/lisp/files.el
index 8045ba5c22b..e474de6abad 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5199,7 +5199,9 @@ Before and after saving the buffer, this function runs
5199This allows you to stop `save-some-buffers' from asking 5199This allows you to stop `save-some-buffers' from asking
5200about certain files that you'd usually rather not save." 5200about certain files that you'd usually rather not save."
5201 :group 'auto-save 5201 :group 'auto-save
5202 :type 'function 5202 ;; FIXME nil should not be a valid option, let alone the default,
5203 ;; eg so that add-function can be used.
5204 :type '(choice (const :tag "Default" nil) function)
5203 :version "26.1") 5205 :version "26.1")
5204 5206
5205(defun save-some-buffers (&optional arg pred) 5207(defun save-some-buffers (&optional arg pred)
diff --git a/lisp/frame.el b/lisp/frame.el
index 2e925325a9e..6f8d6a1cc9a 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -800,7 +800,7 @@ the user during startup."
800 (nreverse frame-initial-geometry-arguments)) 800 (nreverse frame-initial-geometry-arguments))
801 (cdr param-list)) 801 (cdr param-list))
802 802
803(declare-function x-focus-frame "frame.c" (frame)) 803(declare-function x-focus-frame "frame.c" (frame &optional noactivate))
804 804
805(defun select-frame-set-input-focus (frame &optional norecord) 805(defun select-frame-set-input-focus (frame &optional norecord)
806 "Select FRAME, raise it, and set input focus, if possible. 806 "Select FRAME, raise it, and set input focus, if possible.
@@ -1484,7 +1484,7 @@ FRAME."
1484 1484
1485(declare-function w32-mouse-absolute-pixel-position "w32fns.c") 1485(declare-function w32-mouse-absolute-pixel-position "w32fns.c")
1486(declare-function x-mouse-absolute-pixel-position "xfns.c") 1486(declare-function x-mouse-absolute-pixel-position "xfns.c")
1487(declare-function ns-mouse-absolute-pixel-position "nsfns.c") 1487(declare-function ns-mouse-absolute-pixel-position "nsfns.m")
1488 1488
1489(defun mouse-absolute-pixel-position () 1489(defun mouse-absolute-pixel-position ()
1490 "Return absolute position of mouse cursor in pixels. 1490 "Return absolute position of mouse cursor in pixels.
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 16940f814a9..e2d26411e96 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -745,6 +745,8 @@ The relationships recorded for each frame are
745- `delete-before' via `frameset--delete-before' 745- `delete-before' via `frameset--delete-before'
746- `parent-frame' via `frameset--parent-frame' 746- `parent-frame' via `frameset--parent-frame'
747- `mouse-wheel-frame' via `frameset--mouse-wheel-frame' 747- `mouse-wheel-frame' via `frameset--mouse-wheel-frame'
748- `text-pixel-width' via `frameset--text-pixel-width'
749- `text-pixel-height' via `frameset--text-pixel-height'
748 750
749Internal use only." 751Internal use only."
750 ;; Record frames with their own minibuffer 752 ;; Record frames with their own minibuffer
@@ -791,7 +793,23 @@ Internal use only."
791 'frameset--mini 793 'frameset--mini
792 (cons nil 794 (cons nil
793 (and mb-frame 795 (and mb-frame
794 (frameset-frame-id mb-frame)))))))))) 796 (frameset-frame-id mb-frame)))))))))
797 ;; Now store text-pixel width and height if it differs from the calculated
798 ;; width and height and the frame is not fullscreen.
799 (dolist (frame frame-list)
800 (unless (frame-parameter frame 'fullscreen)
801 (unless (eq (* (frame-parameter frame 'width)
802 (frame-char-width frame))
803 (frame-text-width frame))
804 (set-frame-parameter
805 frame 'frameset--text-pixel-width
806 (frame-text-width frame)))
807 (unless (eq (* (frame-parameter frame 'height)
808 (frame-char-height frame))
809 (frame-text-height frame))
810 (set-frame-parameter
811 frame 'frameset--text-pixel-height
812 (frame-text-height frame))))))
795 813
796;;;###autoload 814;;;###autoload
797(cl-defun frameset-save (frame-list 815(cl-defun frameset-save (frame-list
@@ -1002,6 +1020,14 @@ Internal use only."
1002 (display (cdr (assq 'display filtered-cfg))) ;; post-filtering 1020 (display (cdr (assq 'display filtered-cfg))) ;; post-filtering
1003 alt-cfg frame) 1021 alt-cfg frame)
1004 1022
1023 ;; Use text-pixels for height and width, if available.
1024 (let ((text-pixel-width (cdr (assq 'frameset--text-pixel-width parameters)))
1025 (text-pixel-height (cdr (assq 'frameset--text-pixel-height parameters))))
1026 (when text-pixel-width
1027 (setf (alist-get 'width filtered-cfg) (cons 'text-pixels text-pixel-width)))
1028 (when text-pixel-height
1029 (setf (alist-get 'height filtered-cfg) (cons 'text-pixels text-pixel-height))))
1030
1005 (when fullscreen 1031 (when fullscreen
1006 ;; Currently Emacs has the limitation that it does not record the size 1032 ;; Currently Emacs has the limitation that it does not record the size
1007 ;; and position of a frame before maximizing it, so we cannot save & 1033 ;; and position of a frame before maximizing it, so we cannot save &
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 6ee0d7b0231..0fd141201cb 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -527,7 +527,7 @@ each invocation of the saving commands."
527 "If non-nil, show the cursor in the Article buffer even when not selected." 527 "If non-nil, show the cursor in the Article buffer even when not selected."
528 :version "25.1" 528 :version "25.1"
529 :group 'gnus-article 529 :group 'gnus-article
530 :type 'bool) 530 :type 'boolean)
531 531
532(defcustom gnus-saved-headers gnus-visible-headers 532(defcustom gnus-saved-headers gnus-visible-headers
533 "Headers to keep if `gnus-save-all-headers' is nil. 533 "Headers to keep if `gnus-save-all-headers' is nil.
@@ -6711,8 +6711,7 @@ not have a face in `gnus-article-boring-faces'."
6711 (member keys nosave-but-article) 6711 (member keys nosave-but-article)
6712 (member keys nosave-in-article)) 6712 (member keys nosave-in-article))
6713 (let (func) 6713 (let (func)
6714 (save-window-excursion 6714 (with-current-buffer gnus-article-current-summary
6715 (pop-to-buffer gnus-article-current-summary)
6716 ;; We disable the pick minor mode commands. 6715 ;; We disable the pick minor mode commands.
6717 (let (gnus-pick-mode) 6716 (let (gnus-pick-mode)
6718 (setq func (key-binding keys t)))) 6717 (setq func (key-binding keys t))))
diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el
index f3acd9e4c53..409fc53df78 100644
--- a/lisp/gnus/gnus-cloud.el
+++ b/lisp/gnus/gnus-cloud.el
@@ -51,6 +51,7 @@
51 51
52(defcustom gnus-cloud-storage-method (if (featurep 'epg) 'epg 'base64-gzip) 52(defcustom gnus-cloud-storage-method (if (featurep 'epg) 'epg 'base64-gzip)
53 "Storage method for cloud data, defaults to EPG if that's available." 53 "Storage method for cloud data, defaults to EPG if that's available."
54 :version "26.1"
54 :group 'gnus-cloud 55 :group 'gnus-cloud
55 :type '(radio (const :tag "No encoding" nil) 56 :type '(radio (const :tag "No encoding" nil)
56 (const :tag "Base64" base64) 57 (const :tag "Base64" base64)
@@ -59,6 +60,7 @@
59 60
60(defcustom gnus-cloud-interactive t 61(defcustom gnus-cloud-interactive t
61 "Whether Gnus Cloud changes should be confirmed." 62 "Whether Gnus Cloud changes should be confirmed."
63 :version "26.1"
62 :group 'gnus-cloud 64 :group 'gnus-cloud
63 :type 'boolean) 65 :type 'boolean)
64 66
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 93f03be72d0..ef34c492545 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -1097,7 +1097,8 @@ This only works when `display-time' is enabled."
1097 ;; remember password 1097 ;; remember password
1098 (with-current-buffer buf 1098 (with-current-buffer buf
1099 (when (and imap-password 1099 (when (and imap-password
1100 (not (assoc from mail-source-password-cache))) 1100 (not (member (cons from imap-password)
1101 mail-source-password-cache)))
1101 (push (cons from imap-password) mail-source-password-cache))) 1102 (push (cons from imap-password) mail-source-password-cache)))
1102 ;; if predicate is nil, use all uids 1103 ;; if predicate is nil, use all uids
1103 (dolist (uid (imap-search (or predicate "1:*") buf)) 1104 (dolist (uid (imap-search (or predicate "1:*") buf))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 0f99cb697dc..6053d33223a 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1427,152 +1427,142 @@ starting with `not' and followed by regexps."
1427(defface message-header-to 1427(defface message-header-to
1428 '((((class color) 1428 '((((class color)
1429 (background dark)) 1429 (background dark))
1430 (:foreground "DarkOliveGreen1" :bold t)) 1430 :foreground "DarkOliveGreen1" :bold t)
1431 (((class color) 1431 (((class color)
1432 (background light)) 1432 (background light))
1433 (:foreground "MidnightBlue" :bold t)) 1433 :foreground "MidnightBlue" :bold t)
1434 (t 1434 (t
1435 (:bold t :italic t))) 1435 :bold t :italic t))
1436 "Face used for displaying To headers." 1436 "Face used for displaying To headers."
1437 :group 'message-faces) 1437 :group 'message-faces)
1438;; backward-compatibility alias 1438(define-obsolete-face-alias 'message-header-to-face
1439(put 'message-header-to-face 'face-alias 'message-header-to) 1439 'message-header-to "22.1")
1440(put 'message-header-to-face 'obsolete-face "22.1")
1441 1440
1442(defface message-header-cc 1441(defface message-header-cc
1443 '((((class color) 1442 '((((class color)
1444 (background dark)) 1443 (background dark))
1445 (:foreground "chartreuse1" :bold t)) 1444 :foreground "chartreuse1" :bold t)
1446 (((class color) 1445 (((class color)
1447 (background light)) 1446 (background light))
1448 (:foreground "MidnightBlue")) 1447 :foreground "MidnightBlue")
1449 (t 1448 (t
1450 (:bold t))) 1449 :bold t))
1451 "Face used for displaying Cc headers." 1450 "Face used for displaying Cc headers."
1452 :group 'message-faces) 1451 :group 'message-faces)
1453;; backward-compatibility alias 1452(define-obsolete-face-alias 'message-header-cc-face
1454(put 'message-header-cc-face 'face-alias 'message-header-cc) 1453 'message-header-cc "22.1")
1455(put 'message-header-cc-face 'obsolete-face "22.1")
1456 1454
1457(defface message-header-subject 1455(defface message-header-subject
1458 '((((class color) 1456 '((((class color)
1459 (background dark)) 1457 (background dark))
1460 (:foreground "OliveDrab1")) 1458 :foreground "OliveDrab1")
1461 (((class color) 1459 (((class color)
1462 (background light)) 1460 (background light))
1463 (:foreground "navy blue" :bold t)) 1461 :foreground "navy blue" :bold t)
1464 (t 1462 (t
1465 (:bold t))) 1463 :bold t))
1466 "Face used for displaying Subject headers." 1464 "Face used for displaying Subject headers."
1467 :group 'message-faces) 1465 :group 'message-faces)
1468;; backward-compatibility alias 1466(define-obsolete-face-alias 'message-header-subject-face
1469(put 'message-header-subject-face 'face-alias 'message-header-subject) 1467 'message-header-subject "22.1")
1470(put 'message-header-subject-face 'obsolete-face "22.1")
1471 1468
1472(defface message-header-newsgroups 1469(defface message-header-newsgroups
1473 '((((class color) 1470 '((((class color)
1474 (background dark)) 1471 (background dark))
1475 (:foreground "yellow" :bold t :italic t)) 1472 :foreground "yellow" :bold t :italic t)
1476 (((class color) 1473 (((class color)
1477 (background light)) 1474 (background light))
1478 (:foreground "blue4" :bold t :italic t)) 1475 :foreground "blue4" :bold t :italic t)
1479 (t 1476 (t
1480 (:bold t :italic t))) 1477 :bold t :italic t))
1481 "Face used for displaying Newsgroups headers." 1478 "Face used for displaying Newsgroups headers."
1482 :group 'message-faces) 1479 :group 'message-faces)
1483;; backward-compatibility alias 1480(define-obsolete-face-alias 'message-header-newsgroups-face
1484(put 'message-header-newsgroups-face 'face-alias 'message-header-newsgroups) 1481 'message-header-newsgroups "22.1")
1485(put 'message-header-newsgroups-face 'obsolete-face "22.1")
1486 1482
1487(defface message-header-other 1483(defface message-header-other
1488 '((((class color) 1484 '((((class color)
1489 (background dark)) 1485 (background dark))
1490 (:foreground "VioletRed1")) 1486 :foreground "VioletRed1")
1491 (((class color) 1487 (((class color)
1492 (background light)) 1488 (background light))
1493 (:foreground "steel blue")) 1489 :foreground "steel blue")
1494 (t 1490 (t
1495 (:bold t :italic t))) 1491 :bold t :italic t))
1496 "Face used for displaying other headers." 1492 "Face used for displaying other headers."
1497 :group 'message-faces) 1493 :group 'message-faces)
1498;; backward-compatibility alias 1494(define-obsolete-face-alias 'message-header-other-face
1499(put 'message-header-other-face 'face-alias 'message-header-other) 1495 'message-header-other "22.1")
1500(put 'message-header-other-face 'obsolete-face "22.1")
1501 1496
1502(defface message-header-name 1497(defface message-header-name
1503 '((((class color) 1498 '((((class color)
1504 (background dark)) 1499 (background dark))
1505 (:foreground "green")) 1500 :foreground "green")
1506 (((class color) 1501 (((class color)
1507 (background light)) 1502 (background light))
1508 (:foreground "cornflower blue")) 1503 :foreground "cornflower blue")
1509 (t 1504 (t
1510 (:bold t))) 1505 :bold t))
1511 "Face used for displaying header names." 1506 "Face used for displaying header names."
1512 :group 'message-faces) 1507 :group 'message-faces)
1513;; backward-compatibility alias 1508(define-obsolete-face-alias 'message-header-name-face
1514(put 'message-header-name-face 'face-alias 'message-header-name) 1509 'message-header-name "22.1")
1515(put 'message-header-name-face 'obsolete-face "22.1")
1516 1510
1517(defface message-header-xheader 1511(defface message-header-xheader
1518 '((((class color) 1512 '((((class color)
1519 (background dark)) 1513 (background dark))
1520 (:foreground "DeepSkyBlue1")) 1514 :foreground "DeepSkyBlue1")
1521 (((class color) 1515 (((class color)
1522 (background light)) 1516 (background light))
1523 (:foreground "blue")) 1517 :foreground "blue")
1524 (t 1518 (t
1525 (:bold t))) 1519 :bold t))
1526 "Face used for displaying X-Header headers." 1520 "Face used for displaying X-Header headers."
1527 :group 'message-faces) 1521 :group 'message-faces)
1528;; backward-compatibility alias 1522(define-obsolete-face-alias 'message-header-xheader-face
1529(put 'message-header-xheader-face 'face-alias 'message-header-xheader) 1523 'message-header-xheader "22.1")
1530(put 'message-header-xheader-face 'obsolete-face "22.1")
1531 1524
1532(defface message-separator 1525(defface message-separator
1533 '((((class color) 1526 '((((class color)
1534 (background dark)) 1527 (background dark))
1535 (:foreground "LightSkyBlue1")) 1528 :foreground "LightSkyBlue1")
1536 (((class color) 1529 (((class color)
1537 (background light)) 1530 (background light))
1538 (:foreground "brown")) 1531 :foreground "brown")
1539 (t 1532 (t
1540 (:bold t))) 1533 :bold t))
1541 "Face used for displaying the separator." 1534 "Face used for displaying the separator."
1542 :group 'message-faces) 1535 :group 'message-faces)
1543;; backward-compatibility alias 1536(define-obsolete-face-alias 'message-separator-face
1544(put 'message-separator-face 'face-alias 'message-separator) 1537 'message-separator "22.1")
1545(put 'message-separator-face 'obsolete-face "22.1")
1546 1538
1547(defface message-cited-text 1539(defface message-cited-text
1548 '((((class color) 1540 '((((class color)
1549 (background dark)) 1541 (background dark))
1550 (:foreground "LightPink1")) 1542 :foreground "LightPink1")
1551 (((class color) 1543 (((class color)
1552 (background light)) 1544 (background light))
1553 (:foreground "red")) 1545 :foreground "red")
1554 (t 1546 (t
1555 (:bold t))) 1547 :bold t))
1556 "Face used for displaying cited text names." 1548 "Face used for displaying cited text names."
1557 :group 'message-faces) 1549 :group 'message-faces)
1558;; backward-compatibility alias 1550(define-obsolete-face-alias 'message-cited-text-face
1559(put 'message-cited-text-face 'face-alias 'message-cited-text) 1551 'message-cited-text "22.1")
1560(put 'message-cited-text-face 'obsolete-face "22.1")
1561 1552
1562(defface message-mml 1553(defface message-mml
1563 '((((class color) 1554 '((((class color)
1564 (background dark)) 1555 (background dark))
1565 (:foreground "MediumSpringGreen")) 1556 :foreground "MediumSpringGreen")
1566 (((class color) 1557 (((class color)
1567 (background light)) 1558 (background light))
1568 (:foreground "ForestGreen")) 1559 :foreground "ForestGreen")
1569 (t 1560 (t
1570 (:bold t))) 1561 :bold t))
1571 "Face used for displaying MML." 1562 "Face used for displaying MML."
1572 :group 'message-faces) 1563 :group 'message-faces)
1573;; backward-compatibility alias 1564(define-obsolete-face-alias 'message-mml-face
1574(put 'message-mml-face 'face-alias 'message-mml) 1565 'message-mml "22.1")
1575(put 'message-mml-face 'obsolete-face "22.1")
1576 1566
1577(defun message-font-lock-make-header-matcher (regexp) 1567(defun message-font-lock-make-header-matcher (regexp)
1578 (let ((form 1568 (let ((form
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index cb4c83d33e0..aa7cf430a4d 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -370,8 +370,8 @@ commands in `hfy-etags-cmd-alist'."
370 (when (eq (call-process hfy-etags-bin nil t nil "--version") 0) 370 (when (eq (call-process hfy-etags-bin nil t nil "--version") 0)
371 (goto-char (point-min)) 371 (goto-char (point-min))
372 (cond 372 (cond
373 ((looking-at-p "exube") "exuberant ctags") 373 ((search-forward "exube" nil t) "exuberant ctags")
374 ((looking-at-p "GNU E") "emacs etags"))) 374 ((search-forward "GNU E" nil t) "emacs etags")))
375 ;; Return nil if the etags binary isn't executable (Bug#25468). 375 ;; Return nil if the etags binary isn't executable (Bug#25468).
376 (file-error nil)))) 376 (file-error nil))))
377 377
@@ -426,7 +426,7 @@ Some valid class specification elements are:\n
426 (type lucid) 426 (type lucid)
427Multiple values for a tag may be combined, to indicate that any one or more 427Multiple values for a tag may be combined, to indicate that any one or more
428of these values in the specification key constitutes a match, eg:\n 428of these values in the specification key constitutes a match, eg:\n
429((class color grayscale) (type tty)) would match any of:\n 429\((class color grayscale) (type tty)) would match any of:\n
430 ((class color)) 430 ((class color))
431 ((class grayscale)) 431 ((class grayscale))
432 ((class color grayscale)) 432 ((class color grayscale))
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 175d9df5e8c..e8046af3c0b 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -305,6 +305,7 @@ temporary file name (typically generated by pnqnq)"
305 305
306(defcustom image-dired-cmd-optipng-program (executable-find "optipng") 306(defcustom image-dired-cmd-optipng-program (executable-find "optipng")
307 "The file name of the `optipng' program." 307 "The file name of the `optipng' program."
308 :version "26.1"
308 :type '(choice (const :tag "Not Set" nil) file) 309 :type '(choice (const :tag "Not Set" nil) file)
309 :group 'image-dired) 310 :group 'image-dired)
310 311
@@ -312,6 +313,7 @@ temporary file name (typically generated by pnqnq)"
312 "Arguments passed to `image-dired-optipng-program'. 313 "Arguments passed to `image-dired-optipng-program'.
313Available format specifiers are described in 314Available format specifiers are described in
314`image-dired-cmd-create-thumbnail-options'." 315`image-dired-cmd-create-thumbnail-options'."
316 :version "26.1"
315 :type '(repeat (string :tag "Argument")) 317 :type '(repeat (string :tag "Argument"))
316 :link '(url-link "man:optipng(1)") 318 :link '(url-link "man:optipng(1)")
317 :group 'image-dired) 319 :group 'image-dired)
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 857fa800eb4..81c04db90e9 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -2493,7 +2493,17 @@ This function is intended to be added to `auto-coding-functions'."
2493 (let* ((match (match-string 1)) 2493 (let* ((match (match-string 1))
2494 (sym (intern (downcase match)))) 2494 (sym (intern (downcase match))))
2495 (if (coding-system-p sym) 2495 (if (coding-system-p sym)
2496 sym 2496 ;; If the encoding tag is UTF-8 and the buffer's
2497 ;; encoding is one of the variants of UTF-8, use the
2498 ;; buffer's encoding. This allows, e.g., saving an
2499 ;; XML file as UTF-8 with BOM when the tag says UTF-8.
2500 (let ((sym-type (coding-system-type sym))
2501 (bfcs-type
2502 (coding-system-type buffer-file-coding-system)))
2503 (if (and (coding-system-equal 'utf-8 sym-type)
2504 (coding-system-equal 'utf-8 bfcs-type))
2505 buffer-file-coding-system
2506 sym))
2497 (message "Warning: unknown coding system \"%s\"" match) 2507 (message "Warning: unknown coding system \"%s\"" match)
2498 nil)) 2508 nil))
2499 ;; Files without an encoding tag should be UTF-8. But users 2509 ;; Files without an encoding tag should be UTF-8. But users
@@ -2506,7 +2516,8 @@ This function is intended to be added to `auto-coding-functions'."
2506 (coding-system-base 2516 (coding-system-base
2507 (detect-coding-region (point-min) size t))))) 2517 (detect-coding-region (point-min) size t)))))
2508 ;; Pure ASCII always comes back as undecided. 2518 ;; Pure ASCII always comes back as undecided.
2509 (if (memq detected '(utf-8 undecided)) 2519 (if (memq detected
2520 '(utf-8 'utf-8-with-signature 'utf-8-hfs undecided))
2510 'utf-8 2521 'utf-8
2511 (warn "File contents detected as %s. 2522 (warn "File contents detected as %s.
2512 Consider adding an encoding attribute to the xml declaration, 2523 Consider adding an encoding attribute to the xml declaration,
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 2b38cb5f2b0..5c96663316e 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -2294,8 +2294,8 @@ It must accept a buffer as its only required argument.")
2294(define-minor-mode menu-bar-mode 2294(define-minor-mode menu-bar-mode
2295 "Toggle display of a menu bar on each frame (Menu Bar mode). 2295 "Toggle display of a menu bar on each frame (Menu Bar mode).
2296With a prefix argument ARG, enable Menu Bar mode if ARG is 2296With a prefix argument ARG, enable Menu Bar mode if ARG is
2297positive, and disable it otherwise. If called from Lisp, enable 2297positive, and disable it otherwise. If called from Lisp, also
2298Menu Bar mode if ARG is omitted or nil. 2298enable Menu Bar mode if ARG is omitted or nil.
2299 2299
2300This command applies to all frames that exist and frames to be 2300This command applies to all frames that exist and frames to be
2301created in the future." 2301created in the future."
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 98f7b585588..a406b0b07fd 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -217,7 +217,7 @@ For the meaning of the rest of the parameters, see `gnutls-boot-parameters'."
217 217
218TYPE is `gnutls-x509pki' (default) or `gnutls-anon'. Use nil for the default. 218TYPE is `gnutls-x509pki' (default) or `gnutls-anon'. Use nil for the default.
219HOSTNAME is the remote hostname. It must be a valid string. 219HOSTNAME is the remote hostname. It must be a valid string.
220PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\". 220PRIORITY-STRING is as per the GnuTLS docs, default is based on \"NORMAL\".
221TRUSTFILES is a list of CA bundles. It defaults to `gnutls-trustfiles'. 221TRUSTFILES is a list of CA bundles. It defaults to `gnutls-trustfiles'.
222CRLFILES is a list of CRL files. 222CRLFILES is a list of CRL files.
223KEYLIST is an alist of (client key file, client cert file) pairs. 223KEYLIST is an alist of (client key file, client cert file) pairs.
@@ -265,11 +265,11 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
265 (priority-string (or priority-string 265 (priority-string (or priority-string
266 (cond 266 (cond
267 ((eq type 'gnutls-anon) 267 ((eq type 'gnutls-anon)
268 "NORMAL:+ANON-DH:!ARCFOUR-128") 268 "NORMAL:+ANON-DH:!ARCFOUR-128:%DUMBFW")
269 ((eq type 'gnutls-x509pki) 269 ((eq type 'gnutls-x509pki)
270 (if gnutls-algorithm-priority 270 (if gnutls-algorithm-priority
271 (upcase gnutls-algorithm-priority) 271 (upcase gnutls-algorithm-priority)
272 "NORMAL"))))) 272 "NORMAL:%DUMBFW")))))
273 (verify-error (or verify-error 273 (verify-error (or verify-error
274 ;; this uses the value of `gnutls-verify-error' 274 ;; this uses the value of `gnutls-verify-error'
275 (cond 275 (cond
diff --git a/lisp/net/mailcap.el b/lisp/net/mailcap.el
index b4b38707c89..be1a171cd48 100644
--- a/lisp/net/mailcap.el
+++ b/lisp/net/mailcap.el
@@ -99,6 +99,7 @@ When selecting a viewer for a given MIME type, the first viewer
99in this list with a matching MIME-TYPE and successful TEST is 99in this list with a matching MIME-TYPE and successful TEST is
100selected. Only if none matches, the standard `mailcap-mime-data' 100selected. Only if none matches, the standard `mailcap-mime-data'
101is consulted." 101is consulted."
102 :version "26.1"
102 :type '(repeat 103 :type '(repeat
103 (list 104 (list
104 (choice (function :tag "Function or mode") 105 (choice (function :tag "Function or mode")
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 0b3881428e2..00e81f8b5e2 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -64,9 +64,12 @@ considered to be running if the newsticker timer list is not empty."
64 "Aggregator for RSS and Atom feeds." 64 "Aggregator for RSS and Atom feeds."
65 :group 'applications) 65 :group 'applications)
66 66
67;; Hard-coding URLs like this is a recipe for propagating obsolete info.
67(defconst newsticker--raw-url-list-defaults 68(defconst newsticker--raw-url-list-defaults
68 '(("CNET News.com" 69 '(
69 "http://export.cnet.com/export/feeds/news/rss/1,11176,,00.xml") 70 ;; 2017/12: no response.
71;;; ("CNET News.com"
72;;; "http://export.cnet.com/export/feeds/news/rss/1,11176,,00.xml")
70 ("Debian Security Advisories" 73 ("Debian Security Advisories"
71 "http://www.debian.org/security/dsa.en.rdf") 74 "http://www.debian.org/security/dsa.en.rdf")
72 ("Debian Security Advisories - Long format" 75 ("Debian Security Advisories - Long format"
@@ -76,23 +79,24 @@ considered to be running if the newsticker timer list is not empty."
76 nil 79 nil
77 3600) 80 3600)
78 ("LWN (Linux Weekly News)" 81 ("LWN (Linux Weekly News)"
79 "http://lwn.net/headlines/rss") 82 "https://lwn.net/headlines/rss")
80 ("NY Times: Technology" 83 ;; Not updated since 2010.
81 "http://partners.userland.com/nytRss/technology.xml") 84;;; ("NY Times: Technology"
82 ("NY Times" 85;;; "http://www.nytimes.com/services/xml/rss/userland/Technology.xml")
83 "http://partners.userland.com/nytRss/nytHomepage.xml") 86;;; ("NY Times"
87;;; "http://www.nytimes.com/services/xml/rss/userland/HomePage.xml")
84 ("Quote of the day" 88 ("Quote of the day"
85 "http://www.quotationspage.com/data/qotd.rss" 89 "http://feeds.feedburner.com/quotationspage/qotd"
86 "07:00" 90 "07:00"
87 86400) 91 86400)
88 ("The Register" 92 ("The Register"
89 "http://www.theregister.co.uk/tonys/slashdot.rdf") 93 "https://www.theregister.co.uk/headlines.rss")
90 ("slashdot" 94 ("slashdot"
91 "http://slashdot.org/index.rss" 95 "http://rss.slashdot.org/Slashdot/slashdot"
92 nil 96 nil
93 3600) ;/. will ban you if under 3600 seconds! 97 3600) ;/. will ban you if under 3600 seconds!
94 ("Wired News" 98 ("Wired News"
95 "http://www.wired.com/news_drop/netcenter/netcenter.rdf") 99 "https://www.wired.com/feed/rss")
96 ("Heise News (german)" 100 ("Heise News (german)"
97 "http://www.heise.de/newsticker/heise.rdf") 101 "http://www.heise.de/newsticker/heise.rdf")
98 ("Tagesschau (german)" 102 ("Tagesschau (german)"
@@ -158,7 +162,7 @@ value effective."
158 162
159(defcustom newsticker-url-list-defaults 163(defcustom newsticker-url-list-defaults
160 '(("Emacs Wiki" 164 '(("Emacs Wiki"
161 "http://www.emacswiki.org/cgi-bin/wiki.pl?action=rss" 165 "https://www.emacswiki.org/emacs?action=rss"
162 nil 166 nil
163 3600)) 167 3600))
164 "A customizable list of news feeds to select from. 168 "A customizable list of news feeds to select from.
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index ad5d869531c..c505f25a5a9 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -149,7 +149,7 @@ cid: URL as the argument.")
149 "Alist of tag/function pairs used to alter how shr renders certain tags. 149 "Alist of tag/function pairs used to alter how shr renders certain tags.
150For instance, eww uses this to alter rendering of title, forms 150For instance, eww uses this to alter rendering of title, forms
151and other things: 151and other things:
152((title . eww-tag-title) 152\((title . eww-tag-title)
153 (form . eww-tag-form) 153 (form . eww-tag-form)
154 ...)") 154 ...)")
155 155
@@ -591,9 +591,14 @@ size, and full-buffer size."
591(defun shr-string-pixel-width (string) 591(defun shr-string-pixel-width (string)
592 (if (not shr-use-fonts) 592 (if (not shr-use-fonts)
593 (length string) 593 (length string)
594 (with-temp-buffer 594 ;; Save and restore point across with-temp-buffer, since
595 (insert string) 595 ;; shr-pixel-column uses save-window-excursion, which can reset
596 (shr-pixel-column)))) 596 ;; point to 1.
597 (let ((pt (point)))
598 (with-temp-buffer
599 (insert string)
600 (shr-pixel-column))
601 (goto-char pt))))
597 602
598(defsubst shr--translate-insertion-chars () 603(defsubst shr--translate-insertion-chars ()
599 ;; Remove soft hyphens. 604 ;; Remove soft hyphens.
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index bff1c9eb65d..973d97c2560 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -87,7 +87,7 @@
87 87
88;;; Variables also used at compile time. 88;;; Variables also used at compile time.
89 89
90(defconst c-version "5.33" 90(defconst c-version "5.33.1"
91 "CC Mode version number.") 91 "CC Mode version number.")
92 92
93(defconst c-version-sym (intern c-version)) 93(defconst c-version-sym (intern c-version))
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index ab0204cb961..12ec8f74fea 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -7572,8 +7572,8 @@ comment at the start of cc-engine.el for more info."
7572 7572
7573 ;; Skip leading type modifiers. If any are found we know it's a 7573 ;; Skip leading type modifiers. If any are found we know it's a
7574 ;; prefix of a type. 7574 ;; prefix of a type.
7575 (when c-opt-type-modifier-key ; e.g. "const" "volatile", but NOT "typedef" 7575 (when c-opt-type-modifier-prefix-key ; e.g. "const" "volatile", but NOT "typedef"
7576 (while (looking-at c-opt-type-modifier-key) 7576 (while (looking-at c-opt-type-modifier-prefix-key)
7577 (goto-char (match-end 1)) 7577 (goto-char (match-end 1))
7578 (c-forward-syntactic-ws) 7578 (c-forward-syntactic-ws)
7579 (setq res 'prefix))) 7579 (setq res 'prefix)))
@@ -8167,9 +8167,9 @@ comment at the start of cc-engine.el for more info."
8167 ;; If a declaration is parsed: 8167 ;; If a declaration is parsed:
8168 ;; 8168 ;;
8169 ;; The point is left at the first token after the first complete 8169 ;; The point is left at the first token after the first complete
8170 ;; declarator, if there is one. The return value is a list of 4 elements, 8170 ;; declarator, if there is one. The return value is a list of 5 elements,
8171 ;; where the first is the position of the first token in the declarator. 8171 ;; where the first is the position of the first token in the declarator.
8172 ;; (See below for the other three.) 8172 ;; (See below for the other four.)
8173 ;; Some examples: 8173 ;; Some examples:
8174 ;; 8174 ;;
8175 ;; void foo (int a, char *b) stuff ... 8175 ;; void foo (int a, char *b) stuff ...
@@ -8210,7 +8210,9 @@ comment at the start of cc-engine.el for more info."
8210 ;; 8210 ;;
8211 ;; The third element of the return value is non-nil when the declaration 8211 ;; The third element of the return value is non-nil when the declaration
8212 ;; parsed might be an expression. The fourth element is the position of 8212 ;; parsed might be an expression. The fourth element is the position of
8213 ;; the start of the type identifier. 8213 ;; the start of the type identifier. The fifth element is t if either
8214 ;; CONTEXT was 'top, or the declaration is detected to be treated as top
8215 ;; level (e.g. with the keyword "extern").
8214 ;; 8216 ;;
8215 ;; If a cast is parsed: 8217 ;; If a cast is parsed:
8216 ;; 8218 ;;
@@ -8308,6 +8310,9 @@ comment at the start of cc-engine.el for more info."
8308 ;; Set when the symbol before `preceding-token-end' is known to 8310 ;; Set when the symbol before `preceding-token-end' is known to
8309 ;; terminate the previous construct, or when we're at point-min. 8311 ;; terminate the previous construct, or when we're at point-min.
8310 at-decl-start 8312 at-decl-start
8313 ;; Set when we have encountered a keyword (e.g. "extern") which
8314 ;; causes the following declaration to be treated as though top-level.
8315 make-top
8311 ;; Save `c-record-type-identifiers' and 8316 ;; Save `c-record-type-identifiers' and
8312 ;; `c-record-ref-identifiers' since ranges are recorded 8317 ;; `c-record-ref-identifiers' since ranges are recorded
8313 ;; speculatively and should be thrown away if it turns out 8318 ;; speculatively and should be thrown away if it turns out
@@ -8339,7 +8344,9 @@ comment at the start of cc-engine.el for more info."
8339 8344
8340 (cond 8345 (cond
8341 ;; Look for a specifier keyword clause. 8346 ;; Look for a specifier keyword clause.
8342 ((or (looking-at c-prefix-spec-kwds-re) 8347 ((or (and (looking-at c-make-top-level-key)
8348 (setq make-top t))
8349 (looking-at c-prefix-spec-kwds-re)
8343 (and (c-major-mode-is 'java-mode) 8350 (and (c-major-mode-is 'java-mode)
8344 (looking-at "@[A-Za-z0-9]+"))) 8351 (looking-at "@[A-Za-z0-9]+")))
8345 (save-match-data 8352 (save-match-data
@@ -8609,7 +8616,7 @@ comment at the start of cc-engine.el for more info."
8609 ;; construct here in C, since we want to recognize this as a 8616 ;; construct here in C, since we want to recognize this as a
8610 ;; typeless function declaration. 8617 ;; typeless function declaration.
8611 (not (and (c-major-mode-is 'c-mode) 8618 (not (and (c-major-mode-is 'c-mode)
8612 (eq context 'top) 8619 (or (eq context 'top) make-top)
8613 (eq (char-after) ?\))))) 8620 (eq (char-after) ?\)))))
8614 (if (eq (char-after) ?\)) 8621 (if (eq (char-after) ?\))
8615 (when (> paren-depth 0) 8622 (when (> paren-depth 0)
@@ -8657,7 +8664,7 @@ comment at the start of cc-engine.el for more info."
8657 ;; Recognize a top-level typeless 8664 ;; Recognize a top-level typeless
8658 ;; function declaration in C. 8665 ;; function declaration in C.
8659 (and (c-major-mode-is 'c-mode) 8666 (and (c-major-mode-is 'c-mode)
8660 (eq context 'top) 8667 (or (eq context 'top) make-top)
8661 (eq (char-after) ?\)))))))) 8668 (eq (char-after) ?\))))))))
8662 (setq pos (c-up-list-forward (point))) 8669 (setq pos (c-up-list-forward (point)))
8663 (eq (char-before pos) ?\))) 8670 (eq (char-before pos) ?\)))
@@ -8914,6 +8921,7 @@ comment at the start of cc-engine.el for more info."
8914 (when (and got-identifier 8921 (when (and got-identifier
8915 (looking-at c-after-suffixed-type-decl-key) 8922 (looking-at c-after-suffixed-type-decl-key)
8916 (or (eq context 'top) 8923 (or (eq context 'top)
8924 make-top
8917 (and (eq context nil) 8925 (and (eq context nil)
8918 (match-beginning 1))) 8926 (match-beginning 1)))
8919 (if (and got-parens 8927 (if (and got-parens
@@ -9080,7 +9088,7 @@ comment at the start of cc-engine.el for more info."
9080 ;; CASE 19 9088 ;; CASE 19
9081 (or (eq context 'decl) 9089 (or (eq context 'decl)
9082 (and (c-major-mode-is 'c-mode) 9090 (and (c-major-mode-is 'c-mode)
9083 (eq context 'top)))))) 9091 (or (eq context 'top) make-top))))))
9084 9092
9085 ;; The point is now after the type decl expression. 9093 ;; The point is now after the type decl expression.
9086 9094
@@ -9185,7 +9193,8 @@ comment at the start of cc-engine.el for more info."
9185 (and (or at-type-decl at-typedef) 9193 (and (or at-type-decl at-typedef)
9186 (cons at-type-decl at-typedef)) 9194 (cons at-type-decl at-typedef))
9187 maybe-expression 9195 maybe-expression
9188 type-start)) 9196 type-start
9197 (or (eq context 'top) make-top)))
9189 9198
9190 (t 9199 (t
9191 ;; False alarm. Restore the recorded ranges. 9200 ;; False alarm. Restore the recorded ranges.
@@ -10431,7 +10440,7 @@ comment at the start of cc-engine.el for more info."
10431 c-decl-block-key)) 10440 c-decl-block-key))
10432 (braceassignp 'dontknow) 10441 (braceassignp 'dontknow)
10433 inexpr-brace-list bufpos macro-start res pos after-type-id-pos 10442 inexpr-brace-list bufpos macro-start res pos after-type-id-pos
10434 in-paren) 10443 in-paren parens-before-brace)
10435 10444
10436 (setq res (c-backward-token-2 1 t lim)) 10445 (setq res (c-backward-token-2 1 t lim))
10437 ;; Checks to do only on the first sexp before the brace. 10446 ;; Checks to do only on the first sexp before the brace.
@@ -10449,6 +10458,9 @@ comment at the start of cc-engine.el for more info."
10449 ((and (looking-at c-symbol-start) 10458 ((and (looking-at c-symbol-start)
10450 (not (looking-at c-keywords-regexp))) 10459 (not (looking-at c-keywords-regexp)))
10451 (setq after-type-id-pos (point))) 10460 (setq after-type-id-pos (point)))
10461 ((eq (char-after) ?\()
10462 (setq parens-before-brace t)
10463 nil)
10452 (t nil)) 10464 (t nil))
10453 (save-excursion 10465 (save-excursion
10454 (cond 10466 (cond
@@ -10497,6 +10509,14 @@ comment at the start of cc-engine.el for more info."
10497 ;; Single identifier between '(' and '{'. We have a bracelist. 10509 ;; Single identifier between '(' and '{'. We have a bracelist.
10498 (cons after-type-id-pos 'in-paren)) 10510 (cons after-type-id-pos 'in-paren))
10499 10511
10512 ;; Are we at the parens of a C++ lambda expression?
10513 ((and parens-before-brace
10514 (save-excursion
10515 (and
10516 (zerop (c-backward-token-2 1 t lim))
10517 (c-looking-at-c++-lambda-capture-list))))
10518 nil) ; a lambda expression isn't a brace list.
10519
10500 (t 10520 (t
10501 (goto-char pos) 10521 (goto-char pos)
10502 ;; Checks to do on all sexps before the brace, up to the 10522 ;; Checks to do on all sexps before the brace, up to the
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index d352e5b08c9..7b99c2f54e5 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -1251,6 +1251,17 @@ casts and declarations are fontified. Used on level 2 and higher."
1251 ;; Got a cached hit in some other type of arglist. 1251 ;; Got a cached hit in some other type of arglist.
1252 (type 1252 (type
1253 (cons 'arglist t)) 1253 (cons 'arglist t))
1254 ;; We're at a C++ uniform initialization.
1255 ((and (c-major-mode-is 'c++-mode)
1256 (eq (char-before match-pos) ?\()
1257 (save-excursion
1258 (goto-char match-pos)
1259 (and
1260 (zerop (c-backward-token-2 2))
1261 (looking-at c-identifier-start)
1262 (c-got-face-at (point)
1263 '(font-lock-variable-name-face)))))
1264 (cons 'not-decl nil))
1254 ((and not-front-decl 1265 ((and not-front-decl
1255 ;; The point is within the range of a previously 1266 ;; The point is within the range of a previously
1256 ;; encountered type decl expression, so the arglist 1267 ;; encountered type decl expression, so the arglist
@@ -1589,7 +1600,8 @@ casts and declarations are fontified. Used on level 2 and higher."
1589 (setq max-type-decl-end (point)))) 1600 (setq max-type-decl-end (point))))
1590 (goto-char start-pos) 1601 (goto-char start-pos)
1591 (c-font-lock-single-decl limit decl-or-cast match-pos 1602 (c-font-lock-single-decl limit decl-or-cast match-pos
1592 context toplev)) 1603 context
1604 (or toplev (nth 4 decl-or-cast))))
1593 1605
1594 (t t)))) 1606 (t t))))
1595 1607
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 227b3e16485..169b61c3dd3 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1925,16 +1925,32 @@ on one of the `*-decl-kwds' lists."
1925 t (c-make-keywords-re t (c-lang-const c-type-prefix-kwds))) 1925 t (c-make-keywords-re t (c-lang-const c-type-prefix-kwds)))
1926(c-lang-defvar c-type-prefix-key (c-lang-const c-type-prefix-key)) 1926(c-lang-defvar c-type-prefix-key (c-lang-const c-type-prefix-key))
1927 1927
1928(c-lang-defconst c-type-modifier-kwds 1928(c-lang-defconst c-type-modifier-prefix-kwds
1929 "Type modifier keywords. These can occur almost anywhere in types 1929 "Type modifier keywords which can appear in front of a type. These can
1930but they don't build a type of themselves. Unlike the keywords on 1930also occur almost anywhere in types but they don't build a type of
1931`c-primitive-type-kwds', they are fontified with the keyword face and 1931themselves. Unlike the keywords on `c-primitive-type-kwds', they are
1932not the type face." 1932fontified with the keyword face and not the type face."
1933 t nil 1933 t nil
1934 c '("const" "restrict" "volatile") 1934 c '("const" "restrict" "volatile")
1935 c++ '("const" "noexcept" "volatile" "throw") 1935 c++ '("const" "noexcept" "volatile")
1936 objc '("const" "volatile")) 1936 objc '("const" "volatile"))
1937 1937
1938(c-lang-defconst c-opt-type-modifier-prefix-key
1939 ;; Adorned regexp matching `c-type-modifier-prefix-kwds', or nil in
1940 ;; languages without such keywords.
1941 t (and (c-lang-const c-type-modifier-prefix-kwds)
1942 (c-make-keywords-re t (c-lang-const c-type-modifier-prefix-kwds))))
1943(c-lang-defvar c-opt-type-modifier-prefix-key
1944 (c-lang-const c-opt-type-modifier-prefix-key))
1945
1946(c-lang-defconst c-type-modifier-kwds
1947 "Type modifier keywords. These can occur almost anywhere in types except
1948at the start, but they don't build a type of themselves. Unlike the keywords
1949on `c-primitive-type-kwds', they are fontified with the keyword face and not
1950the type face."
1951 t (c-lang-const c-type-modifier-prefix-kwds)
1952 c++ (append (c-lang-const c-type-modifier-prefix-kwds) '("throw")))
1953
1938(c-lang-defconst c-opt-type-modifier-key 1954(c-lang-defconst c-opt-type-modifier-key
1939 ;; Adorned regexp matching `c-type-modifier-kwds', or nil in 1955 ;; Adorned regexp matching `c-type-modifier-kwds', or nil in
1940 ;; languages without such keywords. 1956 ;; languages without such keywords.
@@ -2355,6 +2371,16 @@ construct it's part of continues."
2355 t nil 2371 t nil
2356 (c c++ objc) '("extern")) 2372 (c c++ objc) '("extern"))
2357 2373
2374(c-lang-defconst c-make-top-level-kwds
2375 "Keywords which make declarations they introduce be handled as top-level."
2376 t nil
2377 (c c++ objc) '("extern"))
2378
2379(c-lang-defconst c-make-top-level-key
2380 ;; A regexp which matches any `c-make-top-level-kwds' keyword.
2381 t (c-make-keywords-re t (c-lang-const c-make-top-level-kwds)))
2382(c-lang-defvar c-make-top-level-key (c-lang-const c-make-top-level-key))
2383
2358(c-lang-defconst c-type-list-kwds 2384(c-lang-defconst c-type-list-kwds
2359 "Keywords that may be followed by a comma separated list of type 2385 "Keywords that may be followed by a comma separated list of type
2360identifiers, where each optionally can be prefixed by keywords. (Can 2386identifiers, where each optionally can be prefixed by keywords. (Can
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index c4213797636..f7bfe7c672a 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -1641,8 +1641,9 @@ In the fontification engine, it is sometimes impossible to determine
1641whether a construct is a declaration or an expression. This happens 1641whether a construct is a declaration or an expression. This happens
1642particularly in C++, due to ambiguities in the language. When such a 1642particularly in C++, due to ambiguities in the language. When such a
1643construct is like \"foo * bar\" or \"foo &bar\", and this variable is non-nil 1643construct is like \"foo * bar\" or \"foo &bar\", and this variable is non-nil
1644(the default), the construct will be fontified as a declaration if there is 1644\(the default), the construct will be fontified as a declaration if there is
1645white space either before or after the operator, but not both." 1645white space either before or after the operator, but not both."
1646 :version "26.1"
1646 :type 'boolean 1647 :type 'boolean
1647 :group 'c) 1648 :group 'c)
1648 1649
@@ -1658,6 +1659,7 @@ identifiers.
1658If you change this variable's value, call the function 1659If you change this variable's value, call the function
1659`c-make-noise-macro-regexps' to set the necessary internal variables (or do 1660`c-make-noise-macro-regexps' to set the necessary internal variables (or do
1660this implicitly by reinitializing C/C++/Objc Mode on any buffer)." 1661this implicitly by reinitializing C/C++/Objc Mode on any buffer)."
1662 :version "26.1"
1661 :type '(repeat :tag "List of names" string) 1663 :type '(repeat :tag "List of names" string)
1662 :group 'c) 1664 :group 'c)
1663(put 'c-noise-macro-names 'safe-local-variable #'c-string-list-p) 1665(put 'c-noise-macro-names 'safe-local-variable #'c-string-list-p)
@@ -1666,7 +1668,8 @@ this implicitly by reinitializing C/C++/Objc Mode on any buffer)."
1666 "A list of names of macros \(or compiler extensions like \"__attribute__\") 1668 "A list of names of macros \(or compiler extensions like \"__attribute__\")
1667which optionally have arguments in parentheses, and which expand to nothing. 1669which optionally have arguments in parentheses, and which expand to nothing.
1668These are recognized by CC Mode only in declarations." 1670These are recognized by CC Mode only in declarations."
1669 :type '(regexp :tag "List of names (possibly empty)" string) 1671 :version "26.1"
1672 :type '(repeat :tag "List of names (possibly empty)" string)
1670 :group 'c) 1673 :group 'c)
1671(put 'c-noise-macro-with-parens-names 'safe-local-variable #'c-string-list-p) 1674(put 'c-noise-macro-with-parens-names 'safe-local-variable #'c-string-list-p)
1672 1675
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 4cce47e5d8c..c68001d2366 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1746,13 +1746,7 @@ Returns the compilation buffer created."
1746 (let ((process-environment 1746 (let ((process-environment
1747 (append 1747 (append
1748 compilation-environment 1748 compilation-environment
1749 (if (if (boundp 'system-uses-terminfo);`If' for compiler warning. 1749 (comint-term-environment)
1750 system-uses-terminfo)
1751 (list "TERM=dumb" "TERMCAP="
1752 (format "COLUMNS=%d" (window-width)))
1753 (list "TERM=emacs"
1754 (format "TERMCAP=emacs:co#%d:tc=unknown:"
1755 (window-width))))
1756 (list (format "INSIDE_EMACS=%s,compile" emacs-version)) 1750 (list (format "INSIDE_EMACS=%s,compile" emacs-version))
1757 (copy-sequence process-environment)))) 1751 (copy-sequence process-environment))))
1758 (set (make-local-variable 'compilation-arguments) 1752 (set (make-local-variable 'compilation-arguments)
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 15a36175970..f23af82d354 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -127,6 +127,7 @@ If nil, never start checking buffer automatically like this."
127(defcustom flymake-start-on-flymake-mode t 127(defcustom flymake-start-on-flymake-mode t
128 "Start syntax check when `flymake-mode' is enabled. 128 "Start syntax check when `flymake-mode' is enabled.
129Specifically, start it when the buffer is actually displayed." 129Specifically, start it when the buffer is actually displayed."
130 :version "26.1"
130 :type 'boolean) 131 :type 'boolean)
131 132
132(define-obsolete-variable-alias 'flymake-start-syntax-check-on-find-file 133(define-obsolete-variable-alias 'flymake-start-syntax-check-on-find-file
@@ -141,6 +142,7 @@ Specifically, start it when the buffer is actually displayed."
141 142
142(defcustom flymake-wrap-around t 143(defcustom flymake-wrap-around t
143 "If non-nil, moving to errors wraps around buffer boundaries." 144 "If non-nil, moving to errors wraps around buffer boundaries."
145 :version "26.1"
144 :type 'boolean) 146 :type 'boolean)
145 147
146(when (fboundp 'define-fringe-bitmap) 148(when (fboundp 'define-fringe-bitmap)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index c2d80223541..dac3726bb14 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -162,6 +162,7 @@ Customize or call the function `grep-apply-setting'."
162(defcustom grep-use-null-filename-separator 'auto-detect 162(defcustom grep-use-null-filename-separator 'auto-detect
163 "If non-nil, use `grep's `--null' option. 163 "If non-nil, use `grep's `--null' option.
164This is done to disambiguate file names in `grep's output." 164This is done to disambiguate file names in `grep's output."
165 :version "26.1"
165 :type '(choice (const :tag "Do Not Use `--null'" nil) 166 :type '(choice (const :tag "Do Not Use `--null'" nil)
166 (const :tag "Use `--null'" t) 167 (const :tag "Use `--null'" t)
167 (other :tag "Not Set" auto-detect)) 168 (other :tag "Not Set" auto-detect))
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 3d3ea079cff..18101f53e0a 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -477,6 +477,7 @@ This applies to function movement, marking, and so on."
477 477
478(defcustom js-indent-align-list-continuation t 478(defcustom js-indent-align-list-continuation t
479 "Align continuation of non-empty ([{ lines in `js-mode'." 479 "Align continuation of non-empty ([{ lines in `js-mode'."
480 :version "26.1"
480 :type 'boolean 481 :type 'boolean
481 :group 'js) 482 :group 'js)
482 483
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index f3cb8109133..fecdb720f58 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -587,6 +587,7 @@ create a new comment."
587This is a non empty list of strings, the checker tool possibly 587This is a non empty list of strings, the checker tool possibly
588followed by required arguments. Once launched it will receive 588followed by required arguments. Once launched it will receive
589the Perl source to be checked as its standard input." 589the Perl source to be checked as its standard input."
590 :version "26.1"
590 :group 'perl 591 :group 'perl
591 :type '(repeat string)) 592 :type '(repeat string))
592 593
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 9d3e428e23c..2de40c4ab88 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -5165,6 +5165,7 @@ This is a non empty list of strings, the checker tool possibly followed by
5165required arguments. Once launched it will receive the Python source to be 5165required arguments. Once launched it will receive the Python source to be
5166checked as its standard input. 5166checked as its standard input.
5167To use `flake8' you would set this to (\"flake8\" \"-\")." 5167To use `flake8' you would set this to (\"flake8\" \"-\")."
5168 :version "26.1"
5168 :group 'python-flymake 5169 :group 'python-flymake
5169 :type '(repeat string)) 5170 :type '(repeat string))
5170 5171
@@ -5186,6 +5187,7 @@ MESSAGE'th gives the message text itself.
5186If COLUMN or TYPE are nil or that index didn't match, that 5187If COLUMN or TYPE are nil or that index didn't match, that
5187information is not present on the matched line and a default will 5188information is not present on the matched line and a default will
5188be used." 5189be used."
5190 :version "26.1"
5189 :group 'python-flymake 5191 :group 'python-flymake
5190 :type '(list regexp 5192 :type '(list regexp
5191 (integer :tag "Line's index") 5193 (integer :tag "Line's index")
@@ -5209,6 +5211,7 @@ For example, when using `flake8' a possible configuration could be:
5209 (\"^[EW][0-9]+\" . :note)) 5211 (\"^[EW][0-9]+\" . :note))
5210 5212
5211By default messages are considered errors." 5213By default messages are considered errors."
5214 :version "26.1"
5212 :group 'python-flymake 5215 :group 'python-flymake
5213 :type `(alist :key-type (regexp) 5216 :type `(alist :key-type (regexp)
5214 :value-type (symbol))) 5217 :value-type (symbol)))
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index dc1b0f8e2da..1c7df7e35a2 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -2314,12 +2314,14 @@ See `font-lock-syntax-table'.")
2314(defcustom ruby-flymake-use-rubocop-if-available t 2314(defcustom ruby-flymake-use-rubocop-if-available t
2315 "Non-nil to use the Rubocop Flymake backend. 2315 "Non-nil to use the Rubocop Flymake backend.
2316Only takes effect if Rubocop is installed." 2316Only takes effect if Rubocop is installed."
2317 :version "26.1"
2317 :type 'boolean 2318 :type 'boolean
2318 :group 'ruby 2319 :group 'ruby
2319 :safe 'booleanp) 2320 :safe 'booleanp)
2320 2321
2321(defcustom ruby-rubocop-config ".rubocop.yml" 2322(defcustom ruby-rubocop-config ".rubocop.yml"
2322 "Configuration file for `ruby-flymake-rubocop'." 2323 "Configuration file for `ruby-flymake-rubocop'."
2324 :version "26.1"
2323 :type 'string 2325 :type 'string
2324 :group 'ruby 2326 :group 'ruby
2325 :safe 'stringp) 2327 :safe 'stringp)
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 10a1edc3ee0..1baac1d4204 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -764,14 +764,14 @@ mode is experimental."
764 :version "24.1" ; rev670 764 :version "24.1" ; rev670
765 :group 'verilog-mode-actions 765 :group 'verilog-mode-actions
766 :type 'boolean) 766 :type 'boolean)
767(put 'verilog-auto-declare-nettype 'safe-local-variable `stringp) 767(put 'verilog-auto-declare-nettype 'safe-local-variable 'stringp)
768 768
769(defcustom verilog-auto-wire-comment t 769(defcustom verilog-auto-wire-comment t
770 "Non-nil indicates to insert to/from comments with `verilog-auto-wire' etc." 770 "Non-nil indicates to insert to/from comments with `verilog-auto-wire' etc."
771 :version "25.1" 771 :version "25.1"
772 :group 'verilog-mode-actions 772 :group 'verilog-mode-actions
773 :type 'boolean) 773 :type 'boolean)
774(put 'verilog-auto-wire-comment 'safe-local-variable `verilog-booleanp) 774(put 'verilog-auto-wire-comment 'safe-local-variable 'verilog-booleanp)
775 775
776(defcustom verilog-auto-wire-type nil 776(defcustom verilog-auto-wire-type nil
777 "Non-nil specifies the data type to use with `verilog-auto-wire' etc. 777 "Non-nil specifies the data type to use with `verilog-auto-wire' etc.
@@ -781,8 +781,8 @@ this is generally only appropriate when making a non-SystemVerilog wrapper
781containing SystemVerilog cells." 781containing SystemVerilog cells."
782 :version "24.1" ; rev673 782 :version "24.1" ; rev673
783 :group 'verilog-mode-actions 783 :group 'verilog-mode-actions
784 :type 'string) 784 :type '(choice (const nil) string))
785(put 'verilog-auto-wire-type 'safe-local-variable `stringp) 785(put 'verilog-auto-wire-type 'safe-local-variable 'stringp)
786 786
787(defcustom verilog-auto-endcomments t 787(defcustom verilog-auto-endcomments t
788 "Non-nil means insert a comment /* ... */ after `end's. 788 "Non-nil means insert a comment /* ... */ after `end's.
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 93ca36b08aa..96c3f6b9395 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1037,7 +1037,7 @@ This recognizes CSS-color-4 extensions."
1037STR is the incoming CSS hex color. 1037STR is the incoming CSS hex color.
1038This function simply drops any transparency." 1038This function simply drops any transparency."
1039 ;; Either #RGB or #RRGGBB, drop the "A" or "AA". 1039 ;; Either #RGB or #RRGGBB, drop the "A" or "AA".
1040 (if (> (length str) 4) 1040 (if (> (length str) 5)
1041 (substring str 0 7) 1041 (substring str 0 7)
1042 (substring str 0 4))) 1042 (substring str 0 4)))
1043 1043
diff --git a/lisp/textmodes/less-css-mode.el b/lisp/textmodes/less-css-mode.el
index d31414e3a4b..c2846ac926b 100644
--- a/lisp/textmodes/less-css-mode.el
+++ b/lisp/textmodes/less-css-mode.el
@@ -78,6 +78,7 @@
78 78
79(defgroup less-css nil 79(defgroup less-css nil
80 "Less CSS mode." 80 "Less CSS mode."
81 :version "26.1"
81 :prefix "less-css-" 82 :prefix "less-css-"
82 :group 'css) 83 :group 'css)
83 84
@@ -105,7 +106,7 @@ Use \"-x\" to minify output."
105This path is expanded relative to the directory of the Less file 106This path is expanded relative to the directory of the Less file
106using `expand-file-name', so both relative and absolute paths 107using `expand-file-name', so both relative and absolute paths
107will work as expected." 108will work as expected."
108 :type 'directory) 109 :type '(choice (const :tag "Same as Less file" nil) directory))
109;;;###autoload 110;;;###autoload
110(put 'less-css-output-directory 'safe-local-variable 'stringp) 111(put 'less-css-output-directory 'safe-local-variable 'stringp)
111 112
@@ -115,7 +116,7 @@ This can be also be set to a full path, or a relative path. If
115the path is relative, it will be relative to the value of 116the path is relative, it will be relative to the value of
116`less-css-output-dir', if set, or the current directory by 117`less-css-output-dir', if set, or the current directory by
117default." 118default."
118 :type 'file) 119 :type '(choice (const :tag "Default" nil) file))
119(make-variable-buffer-local 'less-css-output-file-name) 120(make-variable-buffer-local 'less-css-output-file-name)
120 121
121(defcustom less-css-input-file-name nil 122(defcustom less-css-input-file-name nil
@@ -131,7 +132,7 @@ variables.
131This can be also be set to a full path, or a relative path. If 132This can be also be set to a full path, or a relative path. If
132the path is relative, it will be relative to the current 133the path is relative, it will be relative to the current
133directory by default." 134directory by default."
134 :type 'file) 135 :type '(choice (const nil) file))
135;;;###autoload 136;;;###autoload
136(put 'less-css-input-file-name 'safe-local-variable 'stringp) 137(put 'less-css-input-file-name 'safe-local-variable 'stringp)
137(make-variable-buffer-local 'less-css-input-file-name) 138(make-variable-buffer-local 'less-css-input-file-name)
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 5c585ea46ca..432a779b4a8 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -266,12 +266,14 @@ measured relative to that of the normal text."
266 266
267(defcustom tex-chktex-program "chktex" 267(defcustom tex-chktex-program "chktex"
268 "ChkTeX executable to use for linting TeX files." 268 "ChkTeX executable to use for linting TeX files."
269 :version "26.1"
269 :type 'string 270 :type 'string
270 :link '(url-link "man:chktex(1)") 271 :link '(url-link "man:chktex(1)")
271 :group 'tex-flymake) 272 :group 'tex-flymake)
272 273
273(defcustom tex-chktex-extra-flags nil 274(defcustom tex-chktex-extra-flags nil
274 "Extra command line flags for `tex-chktex-program'." 275 "Extra command line flags for `tex-chktex-program'."
276 :version "26.1"
275 :type '(repeat string) 277 :type '(repeat string)
276 :group 'tex-flymake) 278 :group 'tex-flymake)
277 279
@@ -1012,9 +1014,10 @@ Inherits `shell-mode-map' with a few additions.")
1012;; This is a) ugly, and b) cheating, but this was the last 1014;; This is a) ugly, and b) cheating, but this was the last
1013;; remaining warning from byte-compiling all of Emacs... 1015;; remaining warning from byte-compiling all of Emacs...
1014(eval-when-compile 1016(eval-when-compile
1015 (setq byte-compile-function-environment 1017 (if (boundp 'byte-compile-function-environment)
1016 (delq (assq 'tex-mode byte-compile-function-environment) 1018 (setq byte-compile-function-environment
1017 byte-compile-function-environment))) 1019 (delq (assq 'tex-mode byte-compile-function-environment)
1020 byte-compile-function-environment))))
1018 1021
1019;;;###autoload 1022;;;###autoload
1020(defun tex-mode () 1023(defun tex-mode ()
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el
index 0d7b15dfc6b..f25dfbcc75d 100644
--- a/lisp/textmodes/tildify.el
+++ b/lisp/textmodes/tildify.el
@@ -350,7 +350,7 @@ If ASK is nil, perform replace without asking user for confirmation.
350 350
351Returns (count . response) cons where count is number of string 351Returns (count . response) cons where count is number of string
352replacements done and response is one of symbols: t (all right), nil 352replacements done and response is one of symbols: t (all right), nil
353(quit), force (replace without further questions)." 353\(quit), force (replace without further questions)."
354 (save-excursion 354 (save-excursion
355 (goto-char beg) 355 (goto-char beg)
356 (let ((regexp tildify-pattern) 356 (let ((regexp tildify-pattern)
diff --git a/lisp/time.el b/lisp/time.el
index 6cd7320e72f..49f345c26d5 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -173,7 +173,9 @@ If the value is t instead of an alist, use the value of
173`legacy-style-world-list' otherwise." 173`legacy-style-world-list' otherwise."
174 174
175 :group 'display-time 175 :group 'display-time
176 :type '(repeat (list string string)) 176 :type '(choice (const :tag "Default" t)
177 (repeat :tag "List of zones and labels"
178 (list (string :tag "Zone") (string :tag "Label"))))
177 :version "23.1") 179 :version "23.1")
178 180
179(defun time--display-world-list () 181(defun time--display-world-list ()
diff --git a/lisp/vc/cvs-status.el b/lisp/vc/cvs-status.el
index 770791a3c09..3124a61422b 100644
--- a/lisp/vc/cvs-status.el
+++ b/lisp/vc/cvs-status.el
@@ -33,11 +33,6 @@
33 33
34;;; 34;;;
35 35
36(defgroup cvs-status nil
37 "Major mode for browsing `cvs status' output."
38 :group 'pcl-cvs
39 :prefix "cvs-status-")
40
41(easy-mmode-defmap cvs-status-mode-map 36(easy-mmode-defmap cvs-status-mode-map
42 '(("n" . next-line) 37 '(("n" . next-line)
43 ("p" . previous-line) 38 ("p" . previous-line)
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index df9627abdf0..df33d10ed0c 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -2005,9 +2005,6 @@ For use in `add-log-current-defun-function'."
2005 (replace-match (cdr (assq (char-before) '((?+ . "-") (?> . "<")))))) 2005 (replace-match (cdr (assq (char-before) '((?+ . "-") (?> . "<"))))))
2006 ) 2006 )
2007 2007
2008(declare-function smerge-refine-subst "smerge-mode"
2009 (beg1 end1 beg2 end2 props-c &optional preproc props-r props-a))
2010
2011(defun diff--forward-while-leading-char (char bound) 2008(defun diff--forward-while-leading-char (char bound)
2012 "Move point until reaching a line not starting with CHAR. 2009 "Move point until reaching a line not starting with CHAR.
2013Return new point, if it was moved." 2010Return new point, if it was moved."
@@ -2049,13 +2046,13 @@ Return new point, if it was moved."
2049 (diff--forward-while-leading-char ?+ end) 2046 (diff--forward-while-leading-char ?+ end)
2050 (progn (diff--forward-while-leading-char ?\\ end) 2047 (progn (diff--forward-while-leading-char ?\\ end)
2051 (setq end-add (point)))) 2048 (setq end-add (point))))
2052 (smerge-refine-subst beg-del beg-add beg-add end-add 2049 (smerge-refine-regions beg-del beg-add beg-add end-add
2053 nil 'diff-refine-preproc props-r props-a))))) 2050 nil 'diff-refine-preproc props-r props-a)))))
2054 (`context 2051 (`context
2055 (let* ((middle (save-excursion (re-search-forward "^---"))) 2052 (let* ((middle (save-excursion (re-search-forward "^---")))
2056 (other middle)) 2053 (other middle))
2057 (while (re-search-forward "^\\(?:!.*\n\\)+" middle t) 2054 (while (re-search-forward "^\\(?:!.*\n\\)+" middle t)
2058 (smerge-refine-subst (match-beginning 0) (match-end 0) 2055 (smerge-refine-regions (match-beginning 0) (match-end 0)
2059 (save-excursion 2056 (save-excursion
2060 (goto-char other) 2057 (goto-char other)
2061 (re-search-forward "^\\(?:!.*\n\\)+" end) 2058 (re-search-forward "^\\(?:!.*\n\\)+" end)
@@ -2070,7 +2067,7 @@ Return new point, if it was moved."
2070 (let ((beg1 (1+ (point)))) 2067 (let ((beg1 (1+ (point))))
2071 (when (re-search-forward "^---.*\n" end t) 2068 (when (re-search-forward "^---.*\n" end t)
2072 ;; It's a combined add&remove, so there's something to do. 2069 ;; It's a combined add&remove, so there's something to do.
2073 (smerge-refine-subst beg1 (match-beginning 0) 2070 (smerge-refine-regions beg1 (match-beginning 0)
2074 (match-end 0) end 2071 (match-end 0) end
2075 nil 'diff-refine-preproc props-r props-a))))))))) 2072 nil 'diff-refine-preproc props-r props-a)))))))))
2076 2073
diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el
index 9c25ec43321..3f945bbb2bf 100644
--- a/lisp/vc/emerge.el
+++ b/lisp/vc/emerge.el
@@ -3171,11 +3171,9 @@ See also `auto-save-file-name-p'."
3171 (setq limit (1+ (match-end 0))))) 3171 (setq limit (1+ (match-end 0)))))
3172 s) 3172 s)
3173 3173
3174;; Metacharacters that have to be protected from the shell when executing
3175;; a diff/diff3 command.
3176(defcustom emerge-metachars nil 3174(defcustom emerge-metachars nil
3177 "Obsolete, emerge now uses `shell-quote-argument'." 3175 "No longer used. Emerge now uses `shell-quote-argument'."
3178 :type 'regexp 3176 :type '(choice (const nil) regexp)
3179 :group 'emerge) 3177 :group 'emerge)
3180(make-obsolete-variable 'emerge-metachars nil "26.1") 3178(make-obsolete-variable 'emerge-metachars nil "26.1")
3181 3179
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index b988463de1e..ea1e0c726fd 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -919,7 +919,7 @@ Its behavior has mainly two restrictions:
919 after the newline. 919 after the newline.
920 This only matters if `smerge-refine-ignore-whitespace' is nil. 920 This only matters if `smerge-refine-ignore-whitespace' is nil.
921- it needs to be unaffected by changes performed by the `preproc' argument 921- it needs to be unaffected by changes performed by the `preproc' argument
922 to `smerge-refine-subst'. 922 to `smerge-refine-regions'.
923 This only matters if `smerge-refine-weight-hack' is nil.") 923 This only matters if `smerge-refine-weight-hack' is nil.")
924 924
925(defvar smerge-refine-ignore-whitespace t 925(defvar smerge-refine-ignore-whitespace t
@@ -1188,15 +1188,15 @@ repeating the command will highlight other two parts."
1188 (put-text-property (match-beginning 0) (1+ (match-beginning 0)) 1188 (put-text-property (match-beginning 0) (1+ (match-beginning 0))
1189 'smerge-refine-part 1189 'smerge-refine-part
1190 (cons (buffer-chars-modified-tick) part))) 1190 (cons (buffer-chars-modified-tick) part)))
1191 (smerge-refine-subst (match-beginning n1) (match-end n1) 1191 (smerge-refine-regions (match-beginning n1) (match-end n1)
1192 (match-beginning n2) (match-end n2) 1192 (match-beginning n2) (match-end n2)
1193 (if smerge-use-changed-face 1193 (if smerge-use-changed-face
1194 '((smerge . refine) (face . smerge-refined-change))) 1194 '((smerge . refine) (font-lock-face . smerge-refined-change)))
1195 nil 1195 nil
1196 (unless smerge-use-changed-face 1196 (unless smerge-use-changed-face
1197 '((smerge . refine) (face . smerge-refined-removed))) 1197 '((smerge . refine) (font-lock-face . smerge-refined-removed)))
1198 (unless smerge-use-changed-face 1198 (unless smerge-use-changed-face
1199 '((smerge . refine) (face . smerge-refined-added)))))) 1199 '((smerge . refine) (font-lock-face . smerge-refined-added))))))
1200 1200
1201(defun smerge-swap () 1201(defun smerge-swap ()
1202 "Swap the \"Upper\" and the \"Lower\" chunks. 1202 "Swap the \"Upper\" and the \"Lower\" chunks.
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 9e597a209a7..7962b70f20a 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -278,7 +278,7 @@ within the repository.
278 278
279If no list entry produces a useful revision, return `nil'." 279If no list entry produces a useful revision, return `nil'."
280 :type '(repeat (choice 280 :type '(repeat (choice
281 (const :tag "Active bookmark" 'bookmark) 281 (const :tag "Active bookmark" builtin-active-bookmark)
282 (string :tag "Hg template") 282 (string :tag "Hg template")
283 (function :tag "Custom"))) 283 (function :tag "Custom")))
284 :version "26.1" 284 :version "26.1"
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 99c8211ad5f..394b86c024b 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -34,9 +34,9 @@
34 34
35;; Faces 35;; Faces
36 36
37(defgroup vc-state-faces nil 37(defgroup vc-faces nil
38 "Faces used in the mode line by the VC state indicator." 38 "Faces used in the mode line by the VC state indicator."
39 :group 'vc-faces 39 :group 'vc
40 :group 'mode-line 40 :group 'mode-line
41 :version "25.1") 41 :version "25.1")
42 42
diff --git a/src/buffer.c b/src/buffer.c
index 12a467daae4..75cb470af8d 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -386,9 +386,9 @@ Value is nil if OBJECT is not a buffer or if it has been killed. */)
386} 386}
387 387
388DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0, 388DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0,
389 doc: /* Return a list of all existing live buffers. 389 doc: /* Return a list of all live buffers.
390If the optional arg FRAME is a frame, we return the buffer list in the 390If the optional arg FRAME is a frame, return the buffer list in the
391proper order for that frame: the buffers show in FRAME come first, 391proper order for that frame: the buffers shown in FRAME come first,
392followed by the rest of the buffers. */) 392followed by the rest of the buffers. */)
393 (Lisp_Object frame) 393 (Lisp_Object frame)
394{ 394{
diff --git a/src/data.c b/src/data.c
index 3c9152049b7..b94c899a3d8 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1481,7 +1481,7 @@ SYMBOL is the variable being changed.
1481NEWVAL is the value it will be changed to. 1481NEWVAL is the value it will be changed to.
1482OPERATION is a symbol representing the kind of change, one of: `set', 1482OPERATION is a symbol representing the kind of change, one of: `set',
1483`let', `unlet', `makunbound', and `defvaralias'. 1483`let', `unlet', `makunbound', and `defvaralias'.
1484WHERE is a buffer if the buffer-local value of the variable being 1484WHERE is a buffer if the buffer-local value of the variable is being
1485changed, nil otherwise. 1485changed, nil otherwise.
1486 1486
1487All writes to aliases of SYMBOL will call WATCH-FUNCTION too. */) 1487All writes to aliases of SYMBOL will call WATCH-FUNCTION too. */)
diff --git a/src/font.c b/src/font.c
index 441652b0951..69efd7d56d2 100644
--- a/src/font.c
+++ b/src/font.c
@@ -5055,10 +5055,10 @@ DEFUN ("font-info", Ffont_info, Sfont_info, 1, 2, 0,
5055 doc: /* Return information about a font named NAME on frame FRAME. 5055 doc: /* Return information about a font named NAME on frame FRAME.
5056If FRAME is omitted or nil, use the selected frame. 5056If FRAME is omitted or nil, use the selected frame.
5057 5057
5058The returned value is a vector: 5058The returned value is a vector of 14 elements:
5059 [ OPENED-NAME FULL-NAME SIZE HEIGHT BASELINE-OFFSET RELATIVE-COMPOSE 5059 [ OPENED-NAME FULL-NAME SIZE HEIGHT BASELINE-OFFSET RELATIVE-COMPOSE
5060 DEFAULT-ASCENT MAX-WIDTH ASCENT DESCENT SPACE-WIDTH AVERAGE-WIDTH 5060 DEFAULT-ASCENT MAX-WIDTH ASCENT DESCENT SPACE-WIDTH AVERAGE-WIDTH
5061 CAPABILITY ] 5061 FILENAME CAPABILITY ]
5062where 5062where
5063 OPENED-NAME is the name used for opening the font, 5063 OPENED-NAME is the name used for opening the font,
5064 FULL-NAME is the full name of the font, 5064 FULL-NAME is the full name of the font,
@@ -5068,12 +5068,12 @@ where
5068 RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling 5068 RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling
5069 how to compose characters, 5069 how to compose characters,
5070 MAX-WIDTH is the maximum advance width of the font, 5070 MAX-WIDTH is the maximum advance width of the font,
5071 ASCENT, DESCENT, SPACE-WIDTH, AVERAGE-WIDTH are metrics of the font 5071 ASCENT, DESCENT, SPACE-WIDTH, and AVERAGE-WIDTH are metrics of
5072 in pixels, 5072 the font in pixels,
5073 FILENAME is the font file name, a string (or nil if the font backend 5073 FILENAME is the font file name, a string (or nil if the font backend
5074 doesn't provide a file name). 5074 doesn't provide a file name).
5075 CAPABILITY is a list whose first element is a symbol representing the 5075 CAPABILITY is a list whose first element is a symbol representing the
5076 font format, one of x, opentype, truetype, type1, pcf, or bdf. 5076 font format, one of `x', `opentype', `truetype', `type1', `pcf', or `bdf'.
5077 The remaining elements describe the details of the font capabilities, 5077 The remaining elements describe the details of the font capabilities,
5078 as follows: 5078 as follows:
5079 5079
diff --git a/src/frame.c b/src/frame.c
index 94ec9fbdc7d..09c0e79bdef 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1608,6 +1608,8 @@ next_frame (Lisp_Object frame, Lisp_Object minibuf)
1608 Lisp_Object f, tail; 1608 Lisp_Object f, tail;
1609 int passed = 0; 1609 int passed = 0;
1610 1610
1611 eassume (CONSP (Vframe_list));
1612
1611 while (passed < 2) 1613 while (passed < 2)
1612 FOR_EACH_FRAME (tail, f) 1614 FOR_EACH_FRAME (tail, f)
1613 { 1615 {
@@ -1630,6 +1632,8 @@ prev_frame (Lisp_Object frame, Lisp_Object minibuf)
1630{ 1632{
1631 Lisp_Object f, tail, prev = Qnil; 1633 Lisp_Object f, tail, prev = Qnil;
1632 1634
1635 eassume (CONSP (Vframe_list));
1636
1633 FOR_EACH_FRAME (tail, f) 1637 FOR_EACH_FRAME (tail, f)
1634 { 1638 {
1635 if (EQ (frame, f) && !NILP (prev)) 1639 if (EQ (frame, f) && !NILP (prev))
@@ -1915,6 +1919,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
1915 if (f == sf) 1919 if (f == sf)
1916 { 1920 {
1917 Lisp_Object tail; 1921 Lisp_Object tail;
1922 eassume (CONSP (Vframe_list));
1918 1923
1919 /* Look for another visible frame on the same terminal. 1924 /* Look for another visible frame on the same terminal.
1920 Do not call next_frame here because it may loop forever. 1925 Do not call next_frame here because it may loop forever.
diff --git a/src/frame.h b/src/frame.h
index a3b77636435..a5d4e4fc88b 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -1149,8 +1149,7 @@ default_pixels_per_inch_y (void)
1149/* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a 1149/* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
1150 `for' loop which iterates over the elements of Vframe_list. The 1150 `for' loop which iterates over the elements of Vframe_list. The
1151 loop will set FRAME_VAR, a Lisp_Object, to each frame in 1151 loop will set FRAME_VAR, a Lisp_Object, to each frame in
1152 Vframe_list in succession and execute the statement. Vframe_list 1152 Vframe_list in succession and execute the statement. LIST_VAR
1153 should be nonempty, so the body is executed at least once. LIST_VAR
1154 should be a Lisp_Object too; it is used to iterate through the 1153 should be a Lisp_Object too; it is used to iterate through the
1155 Vframe_list. Note that this macro walks over child frames and 1154 Vframe_list. Note that this macro walks over child frames and
1156 the tooltip frame as well. 1155 the tooltip frame as well.
@@ -1160,7 +1159,7 @@ default_pixels_per_inch_y (void)
1160 something which executes the statement once. */ 1159 something which executes the statement once. */
1161 1160
1162#define FOR_EACH_FRAME(list_var, frame_var) \ 1161#define FOR_EACH_FRAME(list_var, frame_var) \
1163 for ((list_var) = (eassume (CONSP (Vframe_list)), Vframe_list); \ 1162 for ((list_var) = Vframe_list; \
1164 (CONSP (list_var) \ 1163 (CONSP (list_var) \
1165 && (frame_var = XCAR (list_var), true)); \ 1164 && (frame_var = XCAR (list_var), true)); \
1166 list_var = XCDR (list_var)) 1165 list_var = XCDR (list_var))
diff --git a/src/xdisp.c b/src/xdisp.c
index 3791d982b28..efc47b39e60 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -25087,19 +25087,25 @@ invisible_prop (Lisp_Object propval, Lisp_Object list)
25087} 25087}
25088 25088
25089DEFUN ("invisible-p", Finvisible_p, Sinvisible_p, 1, 1, 0, 25089DEFUN ("invisible-p", Finvisible_p, Sinvisible_p, 1, 1, 0,
25090 doc: /* Non-nil if the property makes the text invisible. 25090 doc: /* Non-nil if text properties at POS cause text there to be currently invisible.
25091POS-OR-PROP can be a marker or number, in which case it is taken to be 25091POS should be a marker or a buffer position; the value of the `invisible'
25092a position in the current buffer and the value of the `invisible' property 25092property at that position in the current buffer is examined.
25093is checked; or it can be some other value, which is then presumed to be the 25093POS can also be the actual value of the `invisible' text or overlay
25094value of the `invisible' property of the text of interest. 25094property of the text of interest, in which case the value itself is
25095The non-nil value returned can be t for truly invisible text or something 25095examined.
25096else if the text is replaced by an ellipsis. */) 25096
25097 (Lisp_Object pos_or_prop) 25097The non-nil value returned can be t for currently invisible text that is
25098entirely hidden on display, or some other non-nil, non-t value if the
25099text is replaced by an ellipsis.
25100
25101Note that whether text with `invisible' property is actually hidden on
25102display may depend on `buffer-invisibility-spec', which see. */)
25103 (Lisp_Object pos)
25098{ 25104{
25099 Lisp_Object prop 25105 Lisp_Object prop
25100 = (NATNUMP (pos_or_prop) || MARKERP (pos_or_prop) 25106 = (NATNUMP (pos) || MARKERP (pos)
25101 ? Fget_char_property (pos_or_prop, Qinvisible, Qnil) 25107 ? Fget_char_property (pos, Qinvisible, Qnil)
25102 : pos_or_prop); 25108 : pos);
25103 int invis = TEXT_PROP_MEANS_INVISIBLE (prop); 25109 int invis = TEXT_PROP_MEANS_INVISIBLE (prop);
25104 return (invis == 0 ? Qnil 25110 return (invis == 0 ? Qnil
25105 : invis == 1 ? Qt 25111 : invis == 1 ? Qt
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 1bcd3a0f98b..41687e41c8d 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -3671,7 +3671,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
3671 (format "%s=%d" envvar port) 3671 (format "%s=%d" envvar port)
3672 tramp-remote-process-environment))) 3672 tramp-remote-process-environment)))
3673 (should 3673 (should
3674 (string-equal 3674 (string-match
3675 (number-to-string port) 3675 (number-to-string port)
3676 (shell-command-to-string (format "echo -n $%s" envvar)))))) 3676 (shell-command-to-string (format "echo -n $%s" envvar))))))
3677 3677
diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el
index 47cf5f9244b..1e58751f140 100644
--- a/test/lisp/textmodes/css-mode-tests.el
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -295,6 +295,12 @@
295 (insert input ")")) 295 (insert input ")"))
296 (should (equal (css--hsl-color) "#ff0000"))))) 296 (should (equal (css--hsl-color) "#ff0000")))))
297 297
298(ert-deftest css-test-hex-color ()
299 (should (equal (css--hex-color "#abc") "#abc"))
300 (should (equal (css--hex-color "#abcd") "#abc"))
301 (should (equal (css--hex-color "#aabbcc") "#aabbcc"))
302 (should (equal (css--hex-color "#aabbccdd") "#aabbcc")))
303
298(ert-deftest css-test-named-color () 304(ert-deftest css-test-named-color ()
299 (dolist (text '("@mixin black" "@include black")) 305 (dolist (text '("@mixin black" "@include black"))
300 (with-temp-buffer 306 (with-temp-buffer