[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 8e46d93 1/2: Merge from origin/emacs-26
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] master 8e46d93 1/2: Merge from origin/emacs-26 |
Date: |
Sat, 16 Dec 2017 15:19:31 -0500 (EST) |
branch: master
commit 8e46d93dcdabfa9fb099345fa12378479b4dbe63
Merge: da2c441 28e0261
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>
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
---
doc/emacs/building.texi | 5 ++
doc/emacs/misc.texi | 10 ++++
doc/emacs/trouble.texi | 2 +-
doc/lispref/display.texi | 7 ++-
doc/lispref/sequences.texi | 13 ++++
doc/misc/emacs-gnutls.texi | 6 +-
etc/NEWS.26 | 23 +++++++
lisp/calendar/icalendar.el | 2 +-
lisp/comint.el | 37 ++++++++----
lisp/emacs-lisp/bytecomp.el | 1 +
lisp/epa.el | 1 +
lisp/eshell/em-tramp.el | 2 +
lisp/eshell/em-xtra.el | 2 +
lisp/files.el | 4 +-
lisp/frame.el | 4 +-
lisp/frameset.el | 28 ++++++++-
lisp/gnus/gnus-art.el | 5 +-
lisp/gnus/gnus-cloud.el | 2 +
lisp/gnus/mail-source.el | 3 +-
lisp/gnus/message.el | 110 ++++++++++++++++------------------
lisp/htmlfontify.el | 6 +-
lisp/image-dired.el | 2 +
lisp/international/mule.el | 15 ++++-
lisp/menu-bar.el | 4 +-
lisp/net/gnutls.el | 6 +-
lisp/net/mailcap.el | 1 +
lisp/net/newst-backend.el | 28 +++++----
lisp/net/shr.el | 13 ++--
lisp/progmodes/cc-defs.el | 2 +-
lisp/progmodes/cc-engine.el | 42 +++++++++----
lisp/progmodes/cc-fonts.el | 14 ++++-
lisp/progmodes/cc-langs.el | 38 ++++++++++--
lisp/progmodes/cc-vars.el | 7 ++-
lisp/progmodes/compile.el | 8 +--
lisp/progmodes/flymake.el | 2 +
lisp/progmodes/grep.el | 1 +
lisp/progmodes/js.el | 1 +
lisp/progmodes/perl-mode.el | 1 +
lisp/progmodes/python.el | 3 +
lisp/progmodes/ruby-mode.el | 2 +
lisp/progmodes/verilog-mode.el | 8 +--
lisp/textmodes/css-mode.el | 2 +-
lisp/textmodes/less-css-mode.el | 7 ++-
lisp/textmodes/tex-mode.el | 9 ++-
lisp/textmodes/tildify.el | 2 +-
lisp/time.el | 4 +-
lisp/vc/cvs-status.el | 5 --
lisp/vc/diff-mode.el | 9 +--
lisp/vc/emerge.el | 6 +-
lisp/vc/smerge-mode.el | 10 ++--
lisp/vc/vc-hg.el | 2 +-
lisp/vc/vc-hooks.el | 4 +-
src/buffer.c | 6 +-
src/data.c | 2 +-
src/font.c | 10 ++--
src/frame.c | 5 ++
src/frame.h | 5 +-
src/xdisp.c | 28 +++++----
test/lisp/net/tramp-tests.el | 2 +-
test/lisp/textmodes/css-mode-tests.el | 6 ++
60 files changed, 395 insertions(+), 200 deletions(-)
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index 87ac61b..e108a4e 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -303,6 +303,11 @@ And here's how to do it in csh:
if ($?prompt) set prompt = @dots{}
@end example
address@hidden TERM, environment variable, in compilation mode
+ If you want to customize the value of the @env{TERM} environment
+variable passed to the compilation subshell, customize the variable
address@hidden (@pxref{Shell Options}).
+
Emacs does not expect a compiler process to launch asynchronous
subprocesses; if it does, and they keep running after the main
compiler process has terminated, Emacs may kill them or their output
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 6ad5fba..e4be004 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1396,6 +1396,16 @@ directory stack if they are not already on it
(@code{shell-pushd-dunique}). The values you choose should match the
underlying shell, of course.
address@hidden comint-terminfo-terminal
address@hidden TERM, environment variable, in sub-shell
+Comint mode sets the @env{TERM} environment variable to a safe default
+value, but this value disables some useful features. For example,
+color is disabled in applications that use @env{TERM} to determine if
+color is supported. Therefore, Emacs provides an option
address@hidden, which you can set to a terminal that
+is present in your system's terminfo database, in order to take
+advantage of advanced features of that terminal.
+
@node Terminal emulator
@subsection Emacs Terminal Emulator
@findex term
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 4a836c3..e98322d 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -780,7 +780,7 @@ the dribble file.
@item
@findex open-termscript
@cindex termscript file
address@hidden @env{TERM} environment variable
address@hidden TERM, environment variable, and display bugs
For possible display bugs, the terminal type (the value of environment
variable @env{TERM}), the complete termcap entry for the terminal from
@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 7af8d9e..50069e3 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
@defun invisible-p pos-or-prop
If @var{pos-or-prop} is a marker or number, this function returns a
address@hidden value if the text at that position is invisible.
address@hidden value if the text at that position is currently
+invisible.
If @var{pos-or-prop} is any other kind of Lisp object, that is taken
to mean a possible value of the @code{invisible} text or overlay
property. In that case, this function returns a address@hidden value
if that value would cause text to become invisible, based on the
current value of @code{buffer-invisibility-spec}.
+
+The return value of this function is @code{t} if the text would be
+completely hidden on display, or a address@hidden, address@hidden value
+if the text would be replaced by an ellipsis.
@end defun
@vindex line-move-ignore-invisible
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 4fba880..8d56e02 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -425,6 +425,7 @@ useful example of @code{sort}.
@cindex sequence functions in seq
@cindex seq library
address@hidden sequences, generalized
The @file{seq.el} library provides the following additional sequence
manipulation macros and functions, prefixed with @code{seq-}. To use
them, 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}.
@end defun
@defun seq-subseq sequence start &optional end
address@hidden sub-sequence
This function returns a subset of @var{sequence} from @var{start}
to @var{end}, both integers (@var{end} defaults to the last element).
If @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
@end defun
@defun seq-intersection sequence1 sequence2 &optional function
address@hidden sequences, intersection of
address@hidden intersection of sequences
This function returns a list of the elements that appear both in
@var{sequence1} and @var{sequence2}. If the optional argument
@var{function} is address@hidden, it is a function of two arguments to
@@ -972,6 +976,10 @@ of @var{sequence}. Keys are compared using @code{equal}.
@end defun
@defun seq-into sequence type
address@hidden convert sequence to another type
address@hidden list to vector
address@hidden vector to list
address@hidden string to vector
This function converts the sequence @var{sequence} into a sequence
of type @var{type}. @var{type} can be one of the following symbols:
@code{vector}, @code{string} or @code{list}.
@@ -993,6 +1001,8 @@ of type @var{type}. @var{type} can be one of the
following symbols:
@end defun
@defun seq-min sequence
address@hidden minimum value of sequence
address@hidden sequence minimum
This function returns the smallest element of @var{sequence}. The
elements of @var{sequence} must be numbers or markers
(@pxref{Markers}).
@@ -1010,6 +1020,8 @@ elements of @var{sequence} must be numbers or markers
@end defun
@defun seq-max sequence
address@hidden maximum value of sequence
address@hidden sequence maximum
This function returns the largest element of @var{sequence}. The
elements of @var{sequence} must be numbers or markers.
@@ -1027,6 +1039,7 @@ elements of @var{sequence} must be numbers or markers.
@defmac seq-doseq (var sequence) address@hidden
@cindex sequence iteration
address@hidden iteration over vector or string
This macro is like @code{dolist} (@pxref{Iteration, dolist}), except
that @var{sequence} can be a list, vector or string. This is
primarily useful for side-effects.
diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi
index 92846a9..1715c83 100644
--- a/doc/misc/emacs-gnutls.texi
+++ b/doc/misc/emacs-gnutls.texi
@@ -116,9 +116,11 @@ information.
The @code{gnutls-algorithm-priority} variable sets the GnuTLS priority
string. This is global, not per host name (although
@code{gnutls-negotiate} supports a priority string per connection so
-it could be done if needed). The priority string syntax is in the
+it could be done if needed). For details see the
@uref{https://www.gnu.org/software/gnutls/documentation.html, GnuTLS
-documentation}.
+documentation} and the
address@hidden://gnutls.org/manual/html_node/Priority-Strings.html,
+GnuTLS priority string syntax and description}.
@end defvar
@defvar gnutls-trustfiles
diff --git a/etc/NEWS.26 b/etc/NEWS.26
index 64b53d8..784c608 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
want to reverse the direction of the scroll, customize
'mwheel-flip-direction'.
++++
+** The default GnuTLS priority string now includes %DUMBFW.
+This is to avoid bad behavior in some firewalls, which causes the
+connection to be closed by the remote host.
+
** Emacsclient changes
+++
@@ -807,6 +812,13 @@ whose content matches a regexp; bound to '% g'.
*** New user option 'comint-move-point-for-matching-input' to control
where to place point after 'C-c M-r' and 'C-c M-s'.
++++
+*** New user option 'comint-terminfo-terminal'.
+This option allows control of the value of the TERM environment
+variable Emacs puts into the environment of the Comint mode and its
+derivatives, such as Shell mode and Compilation Shell minor-mode. The
+default is "dumb", for compatibility with previous behavior.
+
** Compilation mode
---
@@ -1462,6 +1474,17 @@ them through 'format' first. Even that is discouraged:
for ElDoc
support, you should set 'eldoc-documentation-function' instead of
calling 'eldoc-message' directly.
+---
+** Using '&rest' or '&optional' incorrectly is now an error.
+For example giving '&optional' without a following variable, or
+passing '&optional' multiple times:
+
+ (defun foo (&optional &rest x))
+ (defun bar (&optional &optional x))
+
+Previously, Emacs would just ignore the extra keyword, or give
+incorrect results in certain cases.
+
* Lisp Changes in Emacs 26.1
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 129cd6d..27f1b03 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -1310,7 +1310,7 @@ Returns an alist."
Argument ADVANCE-TIME is a number giving the time when the alarm
fires (minutes before the respective event). Argument ALARM-SPEC
is a list which must be one of (audio), (display) or
-(email (ADDRESS1 ...)), see `icalendar-export-alarms'. Argument
+\(email (ADDRESS1 ...)), see `icalendar-export-alarms'. Argument
SUMMARY is a string which contains a short description for the
alarm."
(let* ((action (car alarm-spec))
diff --git a/lisp/comint.el b/lisp/comint.el
index aa7dab2..5ee4e48 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -290,6 +290,7 @@ If `after-input', point will be positioned after the input
typed
by the user, but before the rest of the history entry that has
been inserted. If `end-of-line', point will be positioned at the
end of the current logical (not visual) line after insertion."
+ :version "26.1"
:type '(radio (const :tag "Stay after input" after-input)
(const :tag "Move to end of line" end-of-line))
:group 'comint)
@@ -458,6 +459,12 @@ executed once when the buffer is created."
:type 'hook
:group 'comint)
+(defcustom comint-terminfo-terminal "dumb"
+ "Value to use for TERM when the system uses terminfo."
+ :type 'string
+ :group 'comint
+ :version "26.1")
+
(defvar comint-mode-map
(let ((map (make-sparse-keymap)))
;; Keys:
@@ -816,19 +823,7 @@ series of processes in the same Comint buffer. The hook
(defun comint-exec-1 (name buffer command switches)
(let ((process-environment
(nconc
- ;; If using termcap, we specify `emacs' as the terminal type
- ;; because that lets us specify a width.
- ;; If using terminfo, we specify `dumb' because that is
- ;; a defined terminal type. `emacs' is not a defined terminal type
- ;; and there is no way for us to define it here.
- ;; Some programs that use terminfo get very confused
- ;; if TERM is not a valid terminal type.
- ;; ;; There is similar code in compile.el.
- (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
- (list "TERM=dumb" "TERMCAP="
- (format "COLUMNS=%d" (window-width)))
- (list "TERM=emacs"
- (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
+ (comint-term-environment)
(list (format "INSIDE_EMACS=%s,comint" emacs-version))
process-environment))
(default-directory
@@ -857,6 +852,22 @@ series of processes in the same Comint buffer. The hook
(set-process-coding-system proc decoding encoding))
proc))
+(defun comint-term-environment ()
+ "Return an environment variable list for terminal configuration."
+ ;; If using termcap, we specify `emacs' as the terminal type
+ ;; because that lets us specify a width.
+ ;; If using terminfo, we default to `dumb' because that is
+ ;; a defined terminal type. `emacs' is not a defined terminal type
+ ;; and there is no way for us to define it here.
+ ;; Some programs that use terminfo get very confused
+ ;; if TERM is not a valid terminal type.
+ (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
+ (list (format "TERM=%s" comint-terminfo-terminal)
+ "TERMCAP="
+ (format "COLUMNS=%d" (window-width)))
+ (list "TERM=emacs"
+ (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width)))))
+
(defun comint-nonblank-p (str)
"Return non-nil if STR contains non-whitespace syntax."
(not (string-match "\\`\\s *\\'" str)))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index c898305..25f738c 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'."
(defcustom byte-compile-cond-use-jump-table t
"Compile `cond' clauses to a jump table implementation (using a hash-table)."
+ :version "26.1"
:group 'bytecomp
:type 'boolean)
diff --git a/lisp/epa.el b/lisp/epa.el
index aca9aaa..8e84b5b 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -40,6 +40,7 @@
If t, replace the original text without any confirmation.
If nil, don't replace the original text and show the result in a new buffer.
If neither t nor nil, ask user for confirmation."
+ :version "26.1"
:type '(choice (const :tag "Never" nil)
(const :tag "Ask the user" ask)
(const :tag "Always" t))
diff --git a/lisp/eshell/em-tramp.el b/lisp/eshell/em-tramp.el
index e322cea..e2da346 100644
--- a/lisp/eshell/em-tramp.el
+++ b/lisp/eshell/em-tramp.el
@@ -32,6 +32,8 @@
(require 'eshell)
(require 'tramp))
+;; There are no items in this custom group, but eshell modules (ab)use
+;; custom groups.
;;;###autoload
(progn
(defgroup eshell-tramp nil
diff --git a/lisp/eshell/em-xtra.el b/lisp/eshell/em-xtra.el
index 7b80f64..8981446 100644
--- a/lisp/eshell/em-xtra.el
+++ b/lisp/eshell/em-xtra.el
@@ -29,6 +29,8 @@
(require 'pcomplete))
(require 'compile)
+;; There are no items in this custom group, but eshell modules (ab)use
+;; custom groups.
;;;###autoload
(progn
(defgroup eshell-xtra nil
diff --git a/lisp/files.el b/lisp/files.el
index 8045ba5..e474de6 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5199,7 +5199,9 @@ Before and after saving the buffer, this function runs
This allows you to stop `save-some-buffers' from asking
about certain files that you'd usually rather not save."
:group 'auto-save
- :type 'function
+ ;; FIXME nil should not be a valid option, let alone the default,
+ ;; eg so that add-function can be used.
+ :type '(choice (const :tag "Default" nil) function)
:version "26.1")
(defun save-some-buffers (&optional arg pred)
diff --git a/lisp/frame.el b/lisp/frame.el
index 2e92532..6f8d6a1 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -800,7 +800,7 @@ the user during startup."
(nreverse frame-initial-geometry-arguments))
(cdr param-list))
-(declare-function x-focus-frame "frame.c" (frame))
+(declare-function x-focus-frame "frame.c" (frame &optional noactivate))
(defun select-frame-set-input-focus (frame &optional norecord)
"Select FRAME, raise it, and set input focus, if possible.
@@ -1484,7 +1484,7 @@ FRAME."
(declare-function w32-mouse-absolute-pixel-position "w32fns.c")
(declare-function x-mouse-absolute-pixel-position "xfns.c")
-(declare-function ns-mouse-absolute-pixel-position "nsfns.c")
+(declare-function ns-mouse-absolute-pixel-position "nsfns.m")
(defun mouse-absolute-pixel-position ()
"Return absolute position of mouse cursor in pixels.
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 16940f8..e2d2641 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -745,6 +745,8 @@ The relationships recorded for each frame are
- `delete-before' via `frameset--delete-before'
- `parent-frame' via `frameset--parent-frame'
- `mouse-wheel-frame' via `frameset--mouse-wheel-frame'
+- `text-pixel-width' via `frameset--text-pixel-width'
+- `text-pixel-height' via `frameset--text-pixel-height'
Internal use only."
;; Record frames with their own minibuffer
@@ -791,7 +793,23 @@ Internal use only."
'frameset--mini
(cons nil
(and mb-frame
- (frameset-frame-id mb-frame))))))))))
+ (frameset-frame-id mb-frame)))))))))
+ ;; Now store text-pixel width and height if it differs from the calculated
+ ;; width and height and the frame is not fullscreen.
+ (dolist (frame frame-list)
+ (unless (frame-parameter frame 'fullscreen)
+ (unless (eq (* (frame-parameter frame 'width)
+ (frame-char-width frame))
+ (frame-text-width frame))
+ (set-frame-parameter
+ frame 'frameset--text-pixel-width
+ (frame-text-width frame)))
+ (unless (eq (* (frame-parameter frame 'height)
+ (frame-char-height frame))
+ (frame-text-height frame))
+ (set-frame-parameter
+ frame 'frameset--text-pixel-height
+ (frame-text-height frame))))))
;;;###autoload
(cl-defun frameset-save (frame-list
@@ -1002,6 +1020,14 @@ Internal use only."
(display (cdr (assq 'display filtered-cfg))) ;; post-filtering
alt-cfg frame)
+ ;; Use text-pixels for height and width, if available.
+ (let ((text-pixel-width (cdr (assq 'frameset--text-pixel-width
parameters)))
+ (text-pixel-height (cdr (assq 'frameset--text-pixel-height
parameters))))
+ (when text-pixel-width
+ (setf (alist-get 'width filtered-cfg) (cons 'text-pixels
text-pixel-width)))
+ (when text-pixel-height
+ (setf (alist-get 'height filtered-cfg) (cons 'text-pixels
text-pixel-height))))
+
(when fullscreen
;; Currently Emacs has the limitation that it does not record the size
;; 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 6ee0d7b..0fd1412 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -527,7 +527,7 @@ each invocation of the saving commands."
"If non-nil, show the cursor in the Article buffer even when not selected."
:version "25.1"
:group 'gnus-article
- :type 'bool)
+ :type 'boolean)
(defcustom gnus-saved-headers gnus-visible-headers
"Headers to keep if `gnus-save-all-headers' is nil.
@@ -6711,8 +6711,7 @@ not have a face in `gnus-article-boring-faces'."
(member keys nosave-but-article)
(member keys nosave-in-article))
(let (func)
- (save-window-excursion
- (pop-to-buffer gnus-article-current-summary)
+ (with-current-buffer gnus-article-current-summary
;; We disable the pick minor mode commands.
(let (gnus-pick-mode)
(setq func (key-binding keys t))))
diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el
index f3acd9e..409fc53 100644
--- a/lisp/gnus/gnus-cloud.el
+++ b/lisp/gnus/gnus-cloud.el
@@ -51,6 +51,7 @@
(defcustom gnus-cloud-storage-method (if (featurep 'epg) 'epg 'base64-gzip)
"Storage method for cloud data, defaults to EPG if that's available."
+ :version "26.1"
:group 'gnus-cloud
:type '(radio (const :tag "No encoding" nil)
(const :tag "Base64" base64)
@@ -59,6 +60,7 @@
(defcustom gnus-cloud-interactive t
"Whether Gnus Cloud changes should be confirmed."
+ :version "26.1"
:group 'gnus-cloud
:type 'boolean)
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 93f03be..ef34c49 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."
;; remember password
(with-current-buffer buf
(when (and imap-password
- (not (assoc from mail-source-password-cache)))
+ (not (member (cons from imap-password)
+ mail-source-password-cache)))
(push (cons from imap-password) mail-source-password-cache)))
;; if predicate is nil, use all uids
(dolist (uid (imap-search (or predicate "1:*") buf))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 0f99cb6..6053d33 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1427,152 +1427,142 @@ starting with `not' and followed by regexps."
(defface message-header-to
'((((class color)
(background dark))
- (:foreground "DarkOliveGreen1" :bold t))
+ :foreground "DarkOliveGreen1" :bold t)
(((class color)
(background light))
- (:foreground "MidnightBlue" :bold t))
+ :foreground "MidnightBlue" :bold t)
(t
- (:bold t :italic t)))
+ :bold t :italic t))
"Face used for displaying To headers."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-to-face 'face-alias 'message-header-to)
-(put 'message-header-to-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-to-face
+ 'message-header-to "22.1")
(defface message-header-cc
'((((class color)
(background dark))
- (:foreground "chartreuse1" :bold t))
+ :foreground "chartreuse1" :bold t)
(((class color)
(background light))
- (:foreground "MidnightBlue"))
+ :foreground "MidnightBlue")
(t
- (:bold t)))
+ :bold t))
"Face used for displaying Cc headers."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-cc-face 'face-alias 'message-header-cc)
-(put 'message-header-cc-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-cc-face
+ 'message-header-cc "22.1")
(defface message-header-subject
'((((class color)
(background dark))
- (:foreground "OliveDrab1"))
+ :foreground "OliveDrab1")
(((class color)
(background light))
- (:foreground "navy blue" :bold t))
+ :foreground "navy blue" :bold t)
(t
- (:bold t)))
+ :bold t))
"Face used for displaying Subject headers."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-subject-face 'face-alias 'message-header-subject)
-(put 'message-header-subject-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-subject-face
+ 'message-header-subject "22.1")
(defface message-header-newsgroups
'((((class color)
(background dark))
- (:foreground "yellow" :bold t :italic t))
+ :foreground "yellow" :bold t :italic t)
(((class color)
(background light))
- (:foreground "blue4" :bold t :italic t))
+ :foreground "blue4" :bold t :italic t)
(t
- (:bold t :italic t)))
+ :bold t :italic t))
"Face used for displaying Newsgroups headers."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-newsgroups-face 'face-alias 'message-header-newsgroups)
-(put 'message-header-newsgroups-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-newsgroups-face
+ 'message-header-newsgroups "22.1")
(defface message-header-other
'((((class color)
(background dark))
- (:foreground "VioletRed1"))
+ :foreground "VioletRed1")
(((class color)
(background light))
- (:foreground "steel blue"))
+ :foreground "steel blue")
(t
- (:bold t :italic t)))
+ :bold t :italic t))
"Face used for displaying other headers."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-other-face 'face-alias 'message-header-other)
-(put 'message-header-other-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-other-face
+ 'message-header-other "22.1")
(defface message-header-name
'((((class color)
(background dark))
- (:foreground "green"))
+ :foreground "green")
(((class color)
(background light))
- (:foreground "cornflower blue"))
+ :foreground "cornflower blue")
(t
- (:bold t)))
+ :bold t))
"Face used for displaying header names."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-name-face 'face-alias 'message-header-name)
-(put 'message-header-name-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-name-face
+ 'message-header-name "22.1")
(defface message-header-xheader
'((((class color)
(background dark))
- (:foreground "DeepSkyBlue1"))
+ :foreground "DeepSkyBlue1")
(((class color)
(background light))
- (:foreground "blue"))
+ :foreground "blue")
(t
- (:bold t)))
+ :bold t))
"Face used for displaying X-Header headers."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-header-xheader-face 'face-alias 'message-header-xheader)
-(put 'message-header-xheader-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-header-xheader-face
+ 'message-header-xheader "22.1")
(defface message-separator
'((((class color)
(background dark))
- (:foreground "LightSkyBlue1"))
+ :foreground "LightSkyBlue1")
(((class color)
(background light))
- (:foreground "brown"))
+ :foreground "brown")
(t
- (:bold t)))
+ :bold t))
"Face used for displaying the separator."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-separator-face 'face-alias 'message-separator)
-(put 'message-separator-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-separator-face
+ 'message-separator "22.1")
(defface message-cited-text
'((((class color)
(background dark))
- (:foreground "LightPink1"))
+ :foreground "LightPink1")
(((class color)
(background light))
- (:foreground "red"))
+ :foreground "red")
(t
- (:bold t)))
+ :bold t))
"Face used for displaying cited text names."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-cited-text-face 'face-alias 'message-cited-text)
-(put 'message-cited-text-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-cited-text-face
+ 'message-cited-text "22.1")
(defface message-mml
'((((class color)
(background dark))
- (:foreground "MediumSpringGreen"))
+ :foreground "MediumSpringGreen")
(((class color)
(background light))
- (:foreground "ForestGreen"))
+ :foreground "ForestGreen")
(t
- (:bold t)))
+ :bold t))
"Face used for displaying MML."
:group 'message-faces)
-;; backward-compatibility alias
-(put 'message-mml-face 'face-alias 'message-mml)
-(put 'message-mml-face 'obsolete-face "22.1")
+(define-obsolete-face-alias 'message-mml-face
+ 'message-mml "22.1")
(defun message-font-lock-make-header-matcher (regexp)
(let ((form
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index cb4c83d..aa7cf43 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -370,8 +370,8 @@ commands in `hfy-etags-cmd-alist'."
(when (eq (call-process hfy-etags-bin nil t nil "--version") 0)
(goto-char (point-min))
(cond
- ((looking-at-p "exube") "exuberant ctags")
- ((looking-at-p "GNU E") "emacs etags")))
+ ((search-forward "exube" nil t) "exuberant ctags")
+ ((search-forward "GNU E" nil t) "emacs etags")))
;; Return nil if the etags binary isn't executable (Bug#25468).
(file-error nil))))
@@ -426,7 +426,7 @@ Some valid class specification elements are:\n
(type lucid)
Multiple values for a tag may be combined, to indicate that any one or more
of these values in the specification key constitutes a match, eg:\n
-((class color grayscale) (type tty)) would match any of:\n
+\((class color grayscale) (type tty)) would match any of:\n
((class color))
((class grayscale))
((class color grayscale))
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 175d9df..e8046af 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -305,6 +305,7 @@ temporary file name (typically generated by pnqnq)"
(defcustom image-dired-cmd-optipng-program (executable-find "optipng")
"The file name of the `optipng' program."
+ :version "26.1"
:type '(choice (const :tag "Not Set" nil) file)
:group 'image-dired)
@@ -312,6 +313,7 @@ temporary file name (typically generated by pnqnq)"
"Arguments passed to `image-dired-optipng-program'.
Available format specifiers are described in
`image-dired-cmd-create-thumbnail-options'."
+ :version "26.1"
:type '(repeat (string :tag "Argument"))
:link '(url-link "man:optipng(1)")
:group 'image-dired)
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 857fa80..81c04db 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'."
(let* ((match (match-string 1))
(sym (intern (downcase match))))
(if (coding-system-p sym)
- sym
+ ;; If the encoding tag is UTF-8 and the buffer's
+ ;; encoding is one of the variants of UTF-8, use the
+ ;; buffer's encoding. This allows, e.g., saving an
+ ;; XML file as UTF-8 with BOM when the tag says UTF-8.
+ (let ((sym-type (coding-system-type sym))
+ (bfcs-type
+ (coding-system-type buffer-file-coding-system)))
+ (if (and (coding-system-equal 'utf-8 sym-type)
+ (coding-system-equal 'utf-8 bfcs-type))
+ buffer-file-coding-system
+ sym))
(message "Warning: unknown coding system \"%s\"" match)
nil))
;; 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'."
(coding-system-base
(detect-coding-region (point-min) size t)))))
;; Pure ASCII always comes back as undecided.
- (if (memq detected '(utf-8 undecided))
+ (if (memq detected
+ '(utf-8 'utf-8-with-signature 'utf-8-hfs undecided))
'utf-8
(warn "File contents detected as %s.
Consider adding an encoding attribute to the xml declaration,
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 2b38cb5..5c96663 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.")
(define-minor-mode menu-bar-mode
"Toggle display of a menu bar on each frame (Menu Bar mode).
With a prefix argument ARG, enable Menu Bar mode if ARG is
-positive, and disable it otherwise. If called from Lisp, enable
-Menu Bar mode if ARG is omitted or nil.
+positive, and disable it otherwise. If called from Lisp, also
+enable Menu Bar mode if ARG is omitted or nil.
This command applies to all frames that exist and frames to be
created in the future."
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 98f7b58..a406b0b 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'."
TYPE is `gnutls-x509pki' (default) or `gnutls-anon'. Use nil for the default.
HOSTNAME is the remote hostname. It must be a valid string.
-PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
+PRIORITY-STRING is as per the GnuTLS docs, default is based on \"NORMAL\".
TRUSTFILES is a list of CA bundles. It defaults to `gnutls-trustfiles'.
CRLFILES is a list of CRL files.
KEYLIST is an alist of (client key file, client cert file) pairs.
@@ -265,11 +265,11 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
(priority-string (or priority-string
(cond
((eq type 'gnutls-anon)
- "NORMAL:+ANON-DH:!ARCFOUR-128")
+ "NORMAL:+ANON-DH:!ARCFOUR-128:%DUMBFW")
((eq type 'gnutls-x509pki)
(if gnutls-algorithm-priority
(upcase gnutls-algorithm-priority)
- "NORMAL")))))
+ "NORMAL:%DUMBFW")))))
(verify-error (or verify-error
;; this uses the value of `gnutls-verify-error'
(cond
diff --git a/lisp/net/mailcap.el b/lisp/net/mailcap.el
index b4b3870..be1a171 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
in this list with a matching MIME-TYPE and successful TEST is
selected. Only if none matches, the standard `mailcap-mime-data'
is consulted."
+ :version "26.1"
:type '(repeat
(list
(choice (function :tag "Function or mode")
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 0b38814..00e81f8 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."
"Aggregator for RSS and Atom feeds."
:group 'applications)
+;; Hard-coding URLs like this is a recipe for propagating obsolete info.
(defconst newsticker--raw-url-list-defaults
- '(("CNET News.com"
- "http://export.cnet.com/export/feeds/news/rss/1,11176,,00.xml")
+ '(
+ ;; 2017/12: no response.
+;;; ("CNET News.com"
+;;; "http://export.cnet.com/export/feeds/news/rss/1,11176,,00.xml")
("Debian Security Advisories"
"http://www.debian.org/security/dsa.en.rdf")
("Debian Security Advisories - Long format"
@@ -76,23 +79,24 @@ considered to be running if the newsticker timer list is
not empty."
nil
3600)
("LWN (Linux Weekly News)"
- "http://lwn.net/headlines/rss")
- ("NY Times: Technology"
- "http://partners.userland.com/nytRss/technology.xml")
- ("NY Times"
- "http://partners.userland.com/nytRss/nytHomepage.xml")
+ "https://lwn.net/headlines/rss")
+ ;; Not updated since 2010.
+;;; ("NY Times: Technology"
+;;; "http://www.nytimes.com/services/xml/rss/userland/Technology.xml")
+;;; ("NY Times"
+;;; "http://www.nytimes.com/services/xml/rss/userland/HomePage.xml")
("Quote of the day"
- "http://www.quotationspage.com/data/qotd.rss"
+ "http://feeds.feedburner.com/quotationspage/qotd"
"07:00"
86400)
("The Register"
- "http://www.theregister.co.uk/tonys/slashdot.rdf")
+ "https://www.theregister.co.uk/headlines.rss")
("slashdot"
- "http://slashdot.org/index.rss"
+ "http://rss.slashdot.org/Slashdot/slashdot"
nil
3600) ;/. will ban you if under 3600 seconds!
("Wired News"
- "http://www.wired.com/news_drop/netcenter/netcenter.rdf")
+ "https://www.wired.com/feed/rss")
("Heise News (german)"
"http://www.heise.de/newsticker/heise.rdf")
("Tagesschau (german)"
@@ -158,7 +162,7 @@ value effective."
(defcustom newsticker-url-list-defaults
'(("Emacs Wiki"
- "http://www.emacswiki.org/cgi-bin/wiki.pl?action=rss"
+ "https://www.emacswiki.org/emacs?action=rss"
nil
3600))
"A customizable list of news feeds to select from.
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index ad5d869..c505f25 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -149,7 +149,7 @@ cid: URL as the argument.")
"Alist of tag/function pairs used to alter how shr renders certain tags.
For instance, eww uses this to alter rendering of title, forms
and other things:
-((title . eww-tag-title)
+\((title . eww-tag-title)
(form . eww-tag-form)
...)")
@@ -591,9 +591,14 @@ size, and full-buffer size."
(defun shr-string-pixel-width (string)
(if (not shr-use-fonts)
(length string)
- (with-temp-buffer
- (insert string)
- (shr-pixel-column))))
+ ;; Save and restore point across with-temp-buffer, since
+ ;; shr-pixel-column uses save-window-excursion, which can reset
+ ;; point to 1.
+ (let ((pt (point)))
+ (with-temp-buffer
+ (insert string)
+ (shr-pixel-column))
+ (goto-char pt))))
(defsubst shr--translate-insertion-chars ()
;; Remove soft hyphens.
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index bff1c9e..973d97c 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -87,7 +87,7 @@
;;; Variables also used at compile time.
-(defconst c-version "5.33"
+(defconst c-version "5.33.1"
"CC Mode version number.")
(defconst c-version-sym (intern c-version))
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index ab0204c..12ec8f7 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."
;; Skip leading type modifiers. If any are found we know it's a
;; prefix of a type.
- (when c-opt-type-modifier-key ; e.g. "const" "volatile", but NOT "typedef"
- (while (looking-at c-opt-type-modifier-key)
+ (when c-opt-type-modifier-prefix-key ; e.g. "const" "volatile", but NOT
"typedef"
+ (while (looking-at c-opt-type-modifier-prefix-key)
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq res 'prefix)))
@@ -8167,9 +8167,9 @@ comment at the start of cc-engine.el for more info."
;; If a declaration is parsed:
;;
;; The point is left at the first token after the first complete
- ;; declarator, if there is one. The return value is a list of 4 elements,
+ ;; declarator, if there is one. The return value is a list of 5 elements,
;; where the first is the position of the first token in the declarator.
- ;; (See below for the other three.)
+ ;; (See below for the other four.)
;; Some examples:
;;
;; void foo (int a, char *b) stuff ...
@@ -8210,7 +8210,9 @@ comment at the start of cc-engine.el for more info."
;;
;; The third element of the return value is non-nil when the declaration
;; parsed might be an expression. The fourth element is the position of
- ;; the start of the type identifier.
+ ;; the start of the type identifier. The fifth element is t if either
+ ;; CONTEXT was 'top, or the declaration is detected to be treated as top
+ ;; level (e.g. with the keyword "extern").
;;
;; If a cast is parsed:
;;
@@ -8308,6 +8310,9 @@ comment at the start of cc-engine.el for more info."
;; Set when the symbol before `preceding-token-end' is known to
;; terminate the previous construct, or when we're at point-min.
at-decl-start
+ ;; Set when we have encountered a keyword (e.g. "extern") which
+ ;; causes the following declaration to be treated as though top-level.
+ make-top
;; Save `c-record-type-identifiers' and
;; `c-record-ref-identifiers' since ranges are recorded
;; 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."
(cond
;; Look for a specifier keyword clause.
- ((or (looking-at c-prefix-spec-kwds-re)
+ ((or (and (looking-at c-make-top-level-key)
+ (setq make-top t))
+ (looking-at c-prefix-spec-kwds-re)
(and (c-major-mode-is 'java-mode)
(looking-at "@[A-Za-z0-9]+")))
(save-match-data
@@ -8609,7 +8616,7 @@ comment at the start of cc-engine.el for more info."
;; construct here in C, since we want to recognize this as a
;; typeless function declaration.
(not (and (c-major-mode-is 'c-mode)
- (eq context 'top)
+ (or (eq context 'top) make-top)
(eq (char-after) ?\)))))
(if (eq (char-after) ?\))
(when (> paren-depth 0)
@@ -8657,7 +8664,7 @@ comment at the start of cc-engine.el for more info."
;; Recognize a top-level typeless
;; function declaration in C.
(and (c-major-mode-is 'c-mode)
- (eq context 'top)
+ (or (eq context 'top) make-top)
(eq (char-after) ?\))))))))
(setq pos (c-up-list-forward (point)))
(eq (char-before pos) ?\)))
@@ -8914,6 +8921,7 @@ comment at the start of cc-engine.el for more info."
(when (and got-identifier
(looking-at c-after-suffixed-type-decl-key)
(or (eq context 'top)
+ make-top
(and (eq context nil)
(match-beginning 1)))
(if (and got-parens
@@ -9080,7 +9088,7 @@ comment at the start of cc-engine.el for more info."
;; CASE 19
(or (eq context 'decl)
(and (c-major-mode-is 'c-mode)
- (eq context 'top))))))
+ (or (eq context 'top) make-top))))))
;; The point is now after the type decl expression.
@@ -9185,7 +9193,8 @@ comment at the start of cc-engine.el for more info."
(and (or at-type-decl at-typedef)
(cons at-type-decl at-typedef))
maybe-expression
- type-start))
+ type-start
+ (or (eq context 'top) make-top)))
(t
;; False alarm. Restore the recorded ranges.
@@ -10431,7 +10440,7 @@ comment at the start of cc-engine.el for more info."
c-decl-block-key))
(braceassignp 'dontknow)
inexpr-brace-list bufpos macro-start res pos after-type-id-pos
- in-paren)
+ in-paren parens-before-brace)
(setq res (c-backward-token-2 1 t lim))
;; 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."
((and (looking-at c-symbol-start)
(not (looking-at c-keywords-regexp)))
(setq after-type-id-pos (point)))
+ ((eq (char-after) ?\()
+ (setq parens-before-brace t)
+ nil)
(t nil))
(save-excursion
(cond
@@ -10497,6 +10509,14 @@ comment at the start of cc-engine.el for more info."
;; Single identifier between '(' and '{'. We have a bracelist.
(cons after-type-id-pos 'in-paren))
+ ;; Are we at the parens of a C++ lambda expression?
+ ((and parens-before-brace
+ (save-excursion
+ (and
+ (zerop (c-backward-token-2 1 t lim))
+ (c-looking-at-c++-lambda-capture-list))))
+ nil) ; a lambda expression isn't a brace list.
+
(t
(goto-char pos)
;; 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 d352e5b..7b99c2f 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."
;; Got a cached hit in some other type of arglist.
(type
(cons 'arglist t))
+ ;; We're at a C++ uniform initialization.
+ ((and (c-major-mode-is 'c++-mode)
+ (eq (char-before match-pos) ?\()
+ (save-excursion
+ (goto-char match-pos)
+ (and
+ (zerop (c-backward-token-2 2))
+ (looking-at c-identifier-start)
+ (c-got-face-at (point)
+ '(font-lock-variable-name-face)))))
+ (cons 'not-decl nil))
((and not-front-decl
;; The point is within the range of a previously
;; encountered type decl expression, so the arglist
@@ -1589,7 +1600,8 @@ casts and declarations are fontified. Used on level 2
and higher."
(setq max-type-decl-end (point))))
(goto-char start-pos)
(c-font-lock-single-decl limit decl-or-cast match-pos
- context toplev))
+ context
+ (or toplev (nth 4 decl-or-cast))))
(t t))))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 227b3e1..169b61c 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1925,16 +1925,32 @@ on one of the `*-decl-kwds' lists."
t (c-make-keywords-re t (c-lang-const c-type-prefix-kwds)))
(c-lang-defvar c-type-prefix-key (c-lang-const c-type-prefix-key))
-(c-lang-defconst c-type-modifier-kwds
- "Type modifier keywords. These can occur almost anywhere in types
-but they don't build a type of themselves. Unlike the keywords on
-`c-primitive-type-kwds', they are fontified with the keyword face and
-not the type face."
+(c-lang-defconst c-type-modifier-prefix-kwds
+ "Type modifier keywords which can appear in front of a type. These can
+also occur almost anywhere in types but they don't build a type of
+themselves. Unlike the keywords on `c-primitive-type-kwds', they are
+fontified with the keyword face and not the type face."
t nil
c '("const" "restrict" "volatile")
- c++ '("const" "noexcept" "volatile" "throw")
+ c++ '("const" "noexcept" "volatile")
objc '("const" "volatile"))
+(c-lang-defconst c-opt-type-modifier-prefix-key
+ ;; Adorned regexp matching `c-type-modifier-prefix-kwds', or nil in
+ ;; languages without such keywords.
+ t (and (c-lang-const c-type-modifier-prefix-kwds)
+ (c-make-keywords-re t (c-lang-const c-type-modifier-prefix-kwds))))
+(c-lang-defvar c-opt-type-modifier-prefix-key
+ (c-lang-const c-opt-type-modifier-prefix-key))
+
+(c-lang-defconst c-type-modifier-kwds
+ "Type modifier keywords. These can occur almost anywhere in types except
+at the start, but they don't build a type of themselves. Unlike the keywords
+on `c-primitive-type-kwds', they are fontified with the keyword face and not
+the type face."
+ t (c-lang-const c-type-modifier-prefix-kwds)
+ c++ (append (c-lang-const c-type-modifier-prefix-kwds) '("throw")))
+
(c-lang-defconst c-opt-type-modifier-key
;; Adorned regexp matching `c-type-modifier-kwds', or nil in
;; languages without such keywords.
@@ -2355,6 +2371,16 @@ construct it's part of continues."
t nil
(c c++ objc) '("extern"))
+(c-lang-defconst c-make-top-level-kwds
+ "Keywords which make declarations they introduce be handled as top-level."
+ t nil
+ (c c++ objc) '("extern"))
+
+(c-lang-defconst c-make-top-level-key
+ ;; A regexp which matches any `c-make-top-level-kwds' keyword.
+ t (c-make-keywords-re t (c-lang-const c-make-top-level-kwds)))
+(c-lang-defvar c-make-top-level-key (c-lang-const c-make-top-level-key))
+
(c-lang-defconst c-type-list-kwds
"Keywords that may be followed by a comma separated list of type
identifiers, where each optionally can be prefixed by keywords. (Can
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index c421379..f7bfe7c 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
whether a construct is a declaration or an expression. This happens
particularly in C++, due to ambiguities in the language. When such a
construct is like \"foo * bar\" or \"foo &bar\", and this variable is non-nil
-(the default), the construct will be fontified as a declaration if there is
+\(the default), the construct will be fontified as a declaration if there is
white space either before or after the operator, but not both."
+ :version "26.1"
:type 'boolean
:group 'c)
@@ -1658,6 +1659,7 @@ identifiers.
If you change this variable's value, call the function
`c-make-noise-macro-regexps' to set the necessary internal variables (or do
this implicitly by reinitializing C/C++/Objc Mode on any buffer)."
+ :version "26.1"
:type '(repeat :tag "List of names" string)
:group 'c)
(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)."
"A list of names of macros \(or compiler extensions like \"__attribute__\")
which optionally have arguments in parentheses, and which expand to nothing.
These are recognized by CC Mode only in declarations."
- :type '(regexp :tag "List of names (possibly empty)" string)
+ :version "26.1"
+ :type '(repeat :tag "List of names (possibly empty)" string)
:group 'c)
(put 'c-noise-macro-with-parens-names 'safe-local-variable #'c-string-list-p)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 4cce47e..c68001d 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1746,13 +1746,7 @@ Returns the compilation buffer created."
(let ((process-environment
(append
compilation-environment
- (if (if (boundp 'system-uses-terminfo);`If' for compiler warning.
- system-uses-terminfo)
- (list "TERM=dumb" "TERMCAP="
- (format "COLUMNS=%d" (window-width)))
- (list "TERM=emacs"
- (format "TERMCAP=emacs:co#%d:tc=unknown:"
- (window-width))))
+ (comint-term-environment)
(list (format "INSIDE_EMACS=%s,compile" emacs-version))
(copy-sequence process-environment))))
(set (make-local-variable 'compilation-arguments)
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 15a3617..f23af82 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -127,6 +127,7 @@ If nil, never start checking buffer automatically like
this."
(defcustom flymake-start-on-flymake-mode t
"Start syntax check when `flymake-mode' is enabled.
Specifically, start it when the buffer is actually displayed."
+ :version "26.1"
:type 'boolean)
(define-obsolete-variable-alias 'flymake-start-syntax-check-on-find-file
@@ -141,6 +142,7 @@ Specifically, start it when the buffer is actually
displayed."
(defcustom flymake-wrap-around t
"If non-nil, moving to errors wraps around buffer boundaries."
+ :version "26.1"
:type 'boolean)
(when (fboundp 'define-fringe-bitmap)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index c2d8022..dac3726 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -162,6 +162,7 @@ Customize or call the function `grep-apply-setting'."
(defcustom grep-use-null-filename-separator 'auto-detect
"If non-nil, use `grep's `--null' option.
This is done to disambiguate file names in `grep's output."
+ :version "26.1"
:type '(choice (const :tag "Do Not Use `--null'" nil)
(const :tag "Use `--null'" t)
(other :tag "Not Set" auto-detect))
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 3d3ea07..18101f5 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -477,6 +477,7 @@ This applies to function movement, marking, and so on."
(defcustom js-indent-align-list-continuation t
"Align continuation of non-empty ([{ lines in `js-mode'."
+ :version "26.1"
:type 'boolean
:group 'js)
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index f3cb810..fecdb72 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -587,6 +587,7 @@ create a new comment."
This is a non empty list of strings, the checker tool possibly
followed by required arguments. Once launched it will receive
the Perl source to be checked as its standard input."
+ :version "26.1"
:group 'perl
:type '(repeat string))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 9d3e428..2de40c4 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
required arguments. Once launched it will receive the Python source to be
checked as its standard input.
To use `flake8' you would set this to (\"flake8\" \"-\")."
+ :version "26.1"
:group 'python-flymake
:type '(repeat string))
@@ -5186,6 +5187,7 @@ MESSAGE'th gives the message text itself.
If COLUMN or TYPE are nil or that index didn't match, that
information is not present on the matched line and a default will
be used."
+ :version "26.1"
:group 'python-flymake
:type '(list regexp
(integer :tag "Line's index")
@@ -5209,6 +5211,7 @@ For example, when using `flake8' a possible configuration
could be:
(\"^[EW][0-9]+\" . :note))
By default messages are considered errors."
+ :version "26.1"
:group 'python-flymake
:type `(alist :key-type (regexp)
:value-type (symbol)))
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index dc1b0f8..1c7df7e 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -2314,12 +2314,14 @@ See `font-lock-syntax-table'.")
(defcustom ruby-flymake-use-rubocop-if-available t
"Non-nil to use the Rubocop Flymake backend.
Only takes effect if Rubocop is installed."
+ :version "26.1"
:type 'boolean
:group 'ruby
:safe 'booleanp)
(defcustom ruby-rubocop-config ".rubocop.yml"
"Configuration file for `ruby-flymake-rubocop'."
+ :version "26.1"
:type 'string
:group 'ruby
:safe 'stringp)
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 10a1edc..1baac1d 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -764,14 +764,14 @@ mode is experimental."
:version "24.1" ; rev670
:group 'verilog-mode-actions
:type 'boolean)
-(put 'verilog-auto-declare-nettype 'safe-local-variable `stringp)
+(put 'verilog-auto-declare-nettype 'safe-local-variable 'stringp)
(defcustom verilog-auto-wire-comment t
"Non-nil indicates to insert to/from comments with `verilog-auto-wire' etc."
:version "25.1"
:group 'verilog-mode-actions
:type 'boolean)
-(put 'verilog-auto-wire-comment 'safe-local-variable `verilog-booleanp)
+(put 'verilog-auto-wire-comment 'safe-local-variable 'verilog-booleanp)
(defcustom verilog-auto-wire-type nil
"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
containing SystemVerilog cells."
:version "24.1" ; rev673
:group 'verilog-mode-actions
- :type 'string)
-(put 'verilog-auto-wire-type 'safe-local-variable `stringp)
+ :type '(choice (const nil) string))
+(put 'verilog-auto-wire-type 'safe-local-variable 'stringp)
(defcustom verilog-auto-endcomments t
"Non-nil means insert a comment /* ... */ after `end's.
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 93ca36b..96c3f6b 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1037,7 +1037,7 @@ This recognizes CSS-color-4 extensions."
STR is the incoming CSS hex color.
This function simply drops any transparency."
;; Either #RGB or #RRGGBB, drop the "A" or "AA".
- (if (> (length str) 4)
+ (if (> (length str) 5)
(substring str 0 7)
(substring str 0 4)))
diff --git a/lisp/textmodes/less-css-mode.el b/lisp/textmodes/less-css-mode.el
index d31414e..c2846ac 100644
--- a/lisp/textmodes/less-css-mode.el
+++ b/lisp/textmodes/less-css-mode.el
@@ -78,6 +78,7 @@
(defgroup less-css nil
"Less CSS mode."
+ :version "26.1"
:prefix "less-css-"
:group 'css)
@@ -105,7 +106,7 @@ Use \"-x\" to minify output."
This path is expanded relative to the directory of the Less file
using `expand-file-name', so both relative and absolute paths
will work as expected."
- :type 'directory)
+ :type '(choice (const :tag "Same as Less file" nil) directory))
;;;###autoload
(put 'less-css-output-directory 'safe-local-variable 'stringp)
@@ -115,7 +116,7 @@ This can be also be set to a full path, or a relative path.
If
the path is relative, it will be relative to the value of
`less-css-output-dir', if set, or the current directory by
default."
- :type 'file)
+ :type '(choice (const :tag "Default" nil) file))
(make-variable-buffer-local 'less-css-output-file-name)
(defcustom less-css-input-file-name nil
@@ -131,7 +132,7 @@ variables.
This can be also be set to a full path, or a relative path. If
the path is relative, it will be relative to the current
directory by default."
- :type 'file)
+ :type '(choice (const nil) file))
;;;###autoload
(put 'less-css-input-file-name 'safe-local-variable 'stringp)
(make-variable-buffer-local 'less-css-input-file-name)
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 5c585ea..432a779 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."
(defcustom tex-chktex-program "chktex"
"ChkTeX executable to use for linting TeX files."
+ :version "26.1"
:type 'string
:link '(url-link "man:chktex(1)")
:group 'tex-flymake)
(defcustom tex-chktex-extra-flags nil
"Extra command line flags for `tex-chktex-program'."
+ :version "26.1"
:type '(repeat string)
:group 'tex-flymake)
@@ -1012,9 +1014,10 @@ Inherits `shell-mode-map' with a few additions.")
;; This is a) ugly, and b) cheating, but this was the last
;; remaining warning from byte-compiling all of Emacs...
(eval-when-compile
- (setq byte-compile-function-environment
- (delq (assq 'tex-mode byte-compile-function-environment)
- byte-compile-function-environment)))
+ (if (boundp 'byte-compile-function-environment)
+ (setq byte-compile-function-environment
+ (delq (assq 'tex-mode byte-compile-function-environment)
+ byte-compile-function-environment))))
;;;###autoload
(defun tex-mode ()
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el
index 0d7b15d..f25dfbc 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.
Returns (count . response) cons where count is number of string
replacements done and response is one of symbols: t (all right), nil
-(quit), force (replace without further questions)."
+\(quit), force (replace without further questions)."
(save-excursion
(goto-char beg)
(let ((regexp tildify-pattern)
diff --git a/lisp/time.el b/lisp/time.el
index 6cd7320..49f345c 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
`legacy-style-world-list' otherwise."
:group 'display-time
- :type '(repeat (list string string))
+ :type '(choice (const :tag "Default" t)
+ (repeat :tag "List of zones and labels"
+ (list (string :tag "Zone") (string :tag "Label"))))
:version "23.1")
(defun time--display-world-list ()
diff --git a/lisp/vc/cvs-status.el b/lisp/vc/cvs-status.el
index 770791a..3124a61 100644
--- a/lisp/vc/cvs-status.el
+++ b/lisp/vc/cvs-status.el
@@ -33,11 +33,6 @@
;;;
-(defgroup cvs-status nil
- "Major mode for browsing `cvs status' output."
- :group 'pcl-cvs
- :prefix "cvs-status-")
-
(easy-mmode-defmap cvs-status-mode-map
'(("n" . next-line)
("p" . previous-line)
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index df9627a..df33d10 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'."
(replace-match (cdr (assq (char-before) '((?+ . "-") (?> . "<"))))))
)
-(declare-function smerge-refine-subst "smerge-mode"
- (beg1 end1 beg2 end2 props-c &optional preproc props-r
props-a))
-
(defun diff--forward-while-leading-char (char bound)
"Move point until reaching a line not starting with CHAR.
Return new point, if it was moved."
@@ -2049,13 +2046,13 @@ Return new point, if it was moved."
(diff--forward-while-leading-char ?+ end)
(progn (diff--forward-while-leading-char ?\\ end)
(setq end-add (point))))
- (smerge-refine-subst beg-del beg-add beg-add end-add
+ (smerge-refine-regions beg-del beg-add beg-add end-add
nil 'diff-refine-preproc props-r
props-a)))))
(`context
(let* ((middle (save-excursion (re-search-forward "^---")))
(other middle))
(while (re-search-forward "^\\(?:!.*\n\\)+" middle t)
- (smerge-refine-subst (match-beginning 0) (match-end 0)
+ (smerge-refine-regions (match-beginning 0) (match-end 0)
(save-excursion
(goto-char other)
(re-search-forward "^\\(?:!.*\n\\)+" end)
@@ -2070,7 +2067,7 @@ Return new point, if it was moved."
(let ((beg1 (1+ (point))))
(when (re-search-forward "^---.*\n" end t)
;; It's a combined add&remove, so there's something to do.
- (smerge-refine-subst beg1 (match-beginning 0)
+ (smerge-refine-regions beg1 (match-beginning 0)
(match-end 0) end
nil 'diff-refine-preproc props-r
props-a)))))))))
diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el
index 9c25ec4..3f945bb 100644
--- a/lisp/vc/emerge.el
+++ b/lisp/vc/emerge.el
@@ -3171,11 +3171,9 @@ See also `auto-save-file-name-p'."
(setq limit (1+ (match-end 0)))))
s)
-;; Metacharacters that have to be protected from the shell when executing
-;; a diff/diff3 command.
(defcustom emerge-metachars nil
- "Obsolete, emerge now uses `shell-quote-argument'."
- :type 'regexp
+ "No longer used. Emerge now uses `shell-quote-argument'."
+ :type '(choice (const nil) regexp)
:group 'emerge)
(make-obsolete-variable 'emerge-metachars nil "26.1")
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index b988463..ea1e0c7 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -919,7 +919,7 @@ Its behavior has mainly two restrictions:
after the newline.
This only matters if `smerge-refine-ignore-whitespace' is nil.
- it needs to be unaffected by changes performed by the `preproc' argument
- to `smerge-refine-subst'.
+ to `smerge-refine-regions'.
This only matters if `smerge-refine-weight-hack' is nil.")
(defvar smerge-refine-ignore-whitespace t
@@ -1188,15 +1188,15 @@ repeating the command will highlight other two parts."
(put-text-property (match-beginning 0) (1+ (match-beginning 0))
'smerge-refine-part
(cons (buffer-chars-modified-tick) part)))
- (smerge-refine-subst (match-beginning n1) (match-end n1)
+ (smerge-refine-regions (match-beginning n1) (match-end n1)
(match-beginning n2) (match-end n2)
(if smerge-use-changed-face
- '((smerge . refine) (face .
smerge-refined-change)))
+ '((smerge . refine) (font-lock-face .
smerge-refined-change)))
nil
(unless smerge-use-changed-face
- '((smerge . refine) (face . smerge-refined-removed)))
+ '((smerge . refine) (font-lock-face .
smerge-refined-removed)))
(unless smerge-use-changed-face
- '((smerge . refine) (face .
smerge-refined-added))))))
+ '((smerge . refine) (font-lock-face .
smerge-refined-added))))))
(defun smerge-swap ()
"Swap the \"Upper\" and the \"Lower\" chunks.
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 9e597a2..7962b70 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -278,7 +278,7 @@ within the repository.
If no list entry produces a useful revision, return `nil'."
:type '(repeat (choice
- (const :tag "Active bookmark" 'bookmark)
+ (const :tag "Active bookmark" builtin-active-bookmark)
(string :tag "Hg template")
(function :tag "Custom")))
:version "26.1"
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 99c8211..394b86c 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -34,9 +34,9 @@
;; Faces
-(defgroup vc-state-faces nil
+(defgroup vc-faces nil
"Faces used in the mode line by the VC state indicator."
- :group 'vc-faces
+ :group 'vc
:group 'mode-line
:version "25.1")
diff --git a/src/buffer.c b/src/buffer.c
index 12a467d..75cb470 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. */)
}
DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0,
- doc: /* Return a list of all existing live buffers.
-If the optional arg FRAME is a frame, we return the buffer list in the
-proper order for that frame: the buffers show in FRAME come first,
+ doc: /* Return a list of all live buffers.
+If the optional arg FRAME is a frame, return the buffer list in the
+proper order for that frame: the buffers shown in FRAME come first,
followed by the rest of the buffers. */)
(Lisp_Object frame)
{
diff --git a/src/data.c b/src/data.c
index 3c91520..b94c899 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1481,7 +1481,7 @@ SYMBOL is the variable being changed.
NEWVAL is the value it will be changed to.
OPERATION is a symbol representing the kind of change, one of: `set',
`let', `unlet', `makunbound', and `defvaralias'.
-WHERE is a buffer if the buffer-local value of the variable being
+WHERE is a buffer if the buffer-local value of the variable is being
changed, nil otherwise.
All writes to aliases of SYMBOL will call WATCH-FUNCTION too. */)
diff --git a/src/font.c b/src/font.c
index 441652b..69efd7d 100644
--- a/src/font.c
+++ b/src/font.c
@@ -5055,10 +5055,10 @@ DEFUN ("font-info", Ffont_info, Sfont_info, 1, 2, 0,
doc: /* Return information about a font named NAME on frame FRAME.
If FRAME is omitted or nil, use the selected frame.
-The returned value is a vector:
+The returned value is a vector of 14 elements:
[ OPENED-NAME FULL-NAME SIZE HEIGHT BASELINE-OFFSET RELATIVE-COMPOSE
DEFAULT-ASCENT MAX-WIDTH ASCENT DESCENT SPACE-WIDTH AVERAGE-WIDTH
- CAPABILITY ]
+ FILENAME CAPABILITY ]
where
OPENED-NAME is the name used for opening the font,
FULL-NAME is the full name of the font,
@@ -5068,12 +5068,12 @@ where
RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling
how to compose characters,
MAX-WIDTH is the maximum advance width of the font,
- ASCENT, DESCENT, SPACE-WIDTH, AVERAGE-WIDTH are metrics of the font
- in pixels,
+ ASCENT, DESCENT, SPACE-WIDTH, and AVERAGE-WIDTH are metrics of
+ the font in pixels,
FILENAME is the font file name, a string (or nil if the font backend
doesn't provide a file name).
CAPABILITY is a list whose first element is a symbol representing the
- font format, one of x, opentype, truetype, type1, pcf, or bdf.
+ font format, one of `x', `opentype', `truetype', `type1', `pcf', or `bdf'.
The remaining elements describe the details of the font capabilities,
as follows:
diff --git a/src/frame.c b/src/frame.c
index 94ec9fb..09c0e79 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1608,6 +1608,8 @@ next_frame (Lisp_Object frame, Lisp_Object minibuf)
Lisp_Object f, tail;
int passed = 0;
+ eassume (CONSP (Vframe_list));
+
while (passed < 2)
FOR_EACH_FRAME (tail, f)
{
@@ -1630,6 +1632,8 @@ prev_frame (Lisp_Object frame, Lisp_Object minibuf)
{
Lisp_Object f, tail, prev = Qnil;
+ eassume (CONSP (Vframe_list));
+
FOR_EACH_FRAME (tail, f)
{
if (EQ (frame, f) && !NILP (prev))
@@ -1915,6 +1919,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
if (f == sf)
{
Lisp_Object tail;
+ eassume (CONSP (Vframe_list));
/* Look for another visible frame on the same terminal.
Do not call next_frame here because it may loop forever.
diff --git a/src/frame.h b/src/frame.h
index a3b7763..a5d4e4f 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -1149,8 +1149,7 @@ default_pixels_per_inch_y (void)
/* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
`for' loop which iterates over the elements of Vframe_list. The
loop will set FRAME_VAR, a Lisp_Object, to each frame in
- Vframe_list in succession and execute the statement. Vframe_list
- should be nonempty, so the body is executed at least once. LIST_VAR
+ Vframe_list in succession and execute the statement. LIST_VAR
should be a Lisp_Object too; it is used to iterate through the
Vframe_list. Note that this macro walks over child frames and
the tooltip frame as well.
@@ -1160,7 +1159,7 @@ default_pixels_per_inch_y (void)
something which executes the statement once. */
#define FOR_EACH_FRAME(list_var, frame_var) \
- for ((list_var) = (eassume (CONSP (Vframe_list)), Vframe_list); \
+ for ((list_var) = Vframe_list; \
(CONSP (list_var) \
&& (frame_var = XCAR (list_var), true)); \
list_var = XCDR (list_var))
diff --git a/src/xdisp.c b/src/xdisp.c
index 3791d98..efc47b3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -25087,19 +25087,25 @@ invisible_prop (Lisp_Object propval, Lisp_Object list)
}
DEFUN ("invisible-p", Finvisible_p, Sinvisible_p, 1, 1, 0,
- doc: /* Non-nil if the property makes the text invisible.
-POS-OR-PROP can be a marker or number, in which case it is taken to be
-a position in the current buffer and the value of the `invisible' property
-is checked; or it can be some other value, which is then presumed to be the
-value of the `invisible' property of the text of interest.
-The non-nil value returned can be t for truly invisible text or something
-else if the text is replaced by an ellipsis. */)
- (Lisp_Object pos_or_prop)
+ doc: /* Non-nil if text properties at POS cause text there to be
currently invisible.
+POS should be a marker or a buffer position; the value of the `invisible'
+property at that position in the current buffer is examined.
+POS can also be the actual value of the `invisible' text or overlay
+property of the text of interest, in which case the value itself is
+examined.
+
+The non-nil value returned can be t for currently invisible text that is
+entirely hidden on display, or some other non-nil, non-t value if the
+text is replaced by an ellipsis.
+
+Note that whether text with `invisible' property is actually hidden on
+display may depend on `buffer-invisibility-spec', which see. */)
+ (Lisp_Object pos)
{
Lisp_Object prop
- = (NATNUMP (pos_or_prop) || MARKERP (pos_or_prop)
- ? Fget_char_property (pos_or_prop, Qinvisible, Qnil)
- : pos_or_prop);
+ = (NATNUMP (pos) || MARKERP (pos)
+ ? Fget_char_property (pos, Qinvisible, Qnil)
+ : pos);
int invis = TEXT_PROP_MEANS_INVISIBLE (prop);
return (invis == 0 ? Qnil
: invis == 1 ? Qt
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 1bcd3a0..41687e4 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'."
(format "%s=%d" envvar port)
tramp-remote-process-environment)))
(should
- (string-equal
+ (string-match
(number-to-string port)
(shell-command-to-string (format "echo -n $%s" envvar))))))
diff --git a/test/lisp/textmodes/css-mode-tests.el
b/test/lisp/textmodes/css-mode-tests.el
index 47cf5f9..1e58751 100644
--- a/test/lisp/textmodes/css-mode-tests.el
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -295,6 +295,12 @@
(insert input ")"))
(should (equal (css--hsl-color) "#ff0000")))))
+(ert-deftest css-test-hex-color ()
+ (should (equal (css--hex-color "#abc") "#abc"))
+ (should (equal (css--hex-color "#abcd") "#abc"))
+ (should (equal (css--hex-color "#aabbcc") "#aabbcc"))
+ (should (equal (css--hex-color "#aabbccdd") "#aabbcc")))
+
(ert-deftest css-test-named-color ()
(dolist (text '("@mixin black" "@include black"))
(with-temp-buffer