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
This commit is contained in:
Glenn Morris 2017-12-16 12:18:45 -08:00
commit 8e46d93dcd
60 changed files with 395 additions and 200 deletions

View file

@ -303,6 +303,11 @@ And here's how to do it in csh:
if ($?prompt) set prompt = @dots{}
@end example
@vindex 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
@code{comint-terminfo-terminal} (@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

View file

@ -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.
@vindex comint-terminfo-terminal
@vindex 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
@code{comint-terminfo-terminal}, 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

View file

@ -780,7 +780,7 @@ the dribble file.
@item
@findex open-termscript
@cindex termscript file
@cindex @env{TERM} environment variable
@vindex 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),

View file

@ -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
non-@code{nil} value if the text at that position is invisible.
non-@code{nil} 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 non-@code{nil} 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 non-@code{nil}, non-@code{t} value
if the text would be replaced by an ellipsis.
@end defun
@vindex line-move-ignore-invisible

View file

@ -425,6 +425,7 @@ useful example of @code{sort}.
@cindex sequence functions in seq
@cindex seq library
@cindex 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
@cindex 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
@cindex sequences, intersection of
@cindex 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 non-@code{nil}, 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
@cindex convert sequence to another type
@cindex list to vector
@cindex vector to list
@cindex 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
@cindex minimum value of sequence
@cindex 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
@cindex maximum value of sequence
@cindex 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) body@dots{}
@cindex sequence iteration
@cindex 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.

View file

@ -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
@uref{https://gnutls.org/manual/html_node/Priority-Strings.html,
GnuTLS priority string syntax and description}.
@end defvar
@defvar gnutls-trustfiles

View file

@ -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

View file

@ -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))

View file

@ -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)))

View file

@ -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)

View file

@ -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))

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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.

View file

@ -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 &

View file

@ -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))))

View file

@ -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)

View file

@ -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))

View file

@ -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

View file

@ -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))

View file

@ -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)

View file

@ -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,

View file

@ -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."

View file

@ -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

View file

@ -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")

View file

@ -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.

View file

@ -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.

View file

@ -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))

View file

@ -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

View file

@ -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))))

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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))

View file

@ -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)

View file

@ -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))

View file

@ -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)))

View file

@ -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)

View file

@ -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.

View file

@ -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)))

View file

@ -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)

View file

@ -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 ()

View file

@ -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)

View file

@ -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 ()

View file

@ -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)

View file

@ -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)))))))))

View file

@ -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")

View file

@ -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.

View file

@ -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"

View file

@ -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")

View file

@ -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)
{

View file

@ -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. */)

View file

@ -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:

View file

@ -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.

View file

@ -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))

View file

@ -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

View file

@ -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))))))

View file

@ -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