commit 9f54f24e94d039331b982012bd66e960cfc764ff (HEAD, refs/remotes/origin/master) Author: Eshel Yaron Date: Sat Oct 5 08:55:26 2024 +0200 ; Fix clean up of local variables in Help buffers * lisp/help-mode.el (help-setup-xref): Kill local values of 'xref-backend-functions' and 'semantic-symref-filepattern-alist' regardless of 'outline-minor-mode'. diff --git a/lisp/help-mode.el b/lisp/help-mode.el index b6757fcdbf1..7bb69a9389f 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -518,9 +518,9 @@ restore it properly when going back." outline-minor-mode-highlight outline-minor-mode-use-buttons outline-default-state - outline-default-rules - xref-backend-functions - semantic-symref-filepattern-alist))) + outline-default-rules))) + (kill-local-variable 'xref-backend-functions) + (kill-local-variable 'semantic-symref-filepattern-alist) (when help-xref-stack-item (push (cons (point) help-xref-stack-item) help-xref-stack) (setq help-xref-forward-stack nil)) commit 069ecc9c4c3709246a6ff50d09af418444d427c3 Author: Sean Whitton Date: Sat Oct 5 09:15:46 2024 +0800 work-buffer--release: Bind inhibit-read-only * lisp/emacs-lisp/subr-x.el (work-buffer--release): Bind inhibit-read-only while erasing the buffer. diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 66347e7b584..3b4907b8f43 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -357,7 +357,8 @@ automatically killed, which means that in a such case ;; Flush BUFFER before making it available again, i.e. clear ;; its contents, remove all overlays and buffer-local ;; variables. Is it enough to safely reuse the buffer? - (erase-buffer) + (let ((inhibit-read-only t)) + (erase-buffer)) (delete-all-overlays) (let (change-major-mode-hook) (kill-all-local-variables t)) commit 6e8fc4f6eabe21fc3e6df8c860a99e3e5f3748fd Author: Stefan Kangas Date: Sat Oct 5 01:08:14 2024 +0200 Use python-mode for SCons build files SCons is a build system whose associated files are Python scripts. Ref: https://www.scons.org/doc/0.96/HTML/scons-user/x325.html * lisp/progmodes/python.el (python--auto-mode-alist-regexp): Use 'python-mode' for SCons build files. diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 7576bae9f95..173a9bc3692 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -295,10 +295,12 @@ ;;;###autoload (defconst python--auto-mode-alist-regexp - (rx "." (or "py" - "pth" ; Python Path Configuration File - "pyi" ; Python Stub File (PEP 484) - "pyw") ; MS-Windows specific extension + (rx (or + (seq "." (or "py" + "pth" ; Python Path Configuration File + "pyi" ; Python Stub File (PEP 484) + "pyw")) ; MS-Windows specific extension + (seq "/" (or "SConstruct" "SConscript"))) ; SCons Build Files eos)) ;;;###autoload commit e2b8e9d940d1bddff9c1d201f8ca6ea85f2af104 Author: Stefan Kangas Date: Sat Oct 5 00:43:06 2024 +0200 Also use "Python Module Index" for info lookup * lisp/info-look.el (:mode): Also search Python module index. diff --git a/lisp/info-look.el b/lisp/info-look.el index 12c017fa4fd..3066bc1d75d 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -976,14 +976,14 @@ Return nil if there is nothing appropriate in the buffer near point." :doc-spec-function (lambda () ;; Python is released annually (PEP 602). - (let ((yy (- (decoded-time-year (decode-time (current-time))) 2000))) - (list - (list - (cl-loop for version from yy downto 7 - for name = (format "python3.%d" version) - if (Info-find-file name t) - return (format "(%s)Index" name) - finally return "(python)Index")))))) + (let* ((yy (- (decoded-time-year (decode-time (current-time))) 2000)) + (manual (cl-loop for version from yy downto 7 + for name = (format "python3.%d" version) + if (Info-find-file name t) + return name + finally return "python"))) + `((,(format "(%s)Index" manual)) + (,(format "(%s)Python Module Index" manual)))))) (info-lookup-maybe-add-help :mode 'perl-mode commit 0cca6146dc8dc2dff648dfeb7b68b56c423d90ec Author: Stefan Kangas Date: Sat Oct 5 00:17:58 2024 +0200 Future-proof searching for Python info manual * lisp/info-look.el (:mode): Python is released annually (PEP 602), so search for minor version based on the current year. diff --git a/lisp/info-look.el b/lisp/info-look.el index 2f36e598dcd..12c017fa4fd 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -973,14 +973,17 @@ Return nil if there is nothing appropriate in the buffer near point." :mode 'python-mode ;; Debian includes Python info files, but they're version-named ;; instead of having a symlink. - :doc-spec-function (lambda () - (list - (list - (cl-loop for version from 20 downto 7 - for name = (format "python3.%d" version) - if (Info-find-file name t) - return (format "(%s)Index" name) - finally return "(python)Index"))))) + :doc-spec-function + (lambda () + ;; Python is released annually (PEP 602). + (let ((yy (- (decoded-time-year (decode-time (current-time))) 2000))) + (list + (list + (cl-loop for version from yy downto 7 + for name = (format "python3.%d" version) + if (Info-find-file name t) + return (format "(%s)Index" name) + finally return "(python)Index")))))) (info-lookup-maybe-add-help :mode 'perl-mode commit 776ca54e8debe035786a14a560eac27df8d1643c Author: Stefan Kangas Date: Fri Oct 4 23:37:31 2024 +0200 ; * etc/NEWS: Document Python electric-layout-mode support. diff --git a/etc/NEWS b/etc/NEWS index 66f5e18e8db..24fd8ae0e8d 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -482,6 +482,9 @@ exist. If "python" points to Python 2 on your system, you now have to customize these variables to "python3" if you want to use Python 3 instead. +--- +*** Support 'electric-layout-mode'. + * New Modes and Packages in Emacs 31.1 commit ee6e737fdf7a1bea3abec383a1bf0ae69ac8ca77 Author: Stefan Kangas Date: Fri Oct 4 23:31:09 2024 +0200 python: Better support := in electric-layout-mode * lisp/progmodes/python.el (python-base-mode): Use heuristic to better support the Python walrus operator := in electric-layout-rules. diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 56c80c8264b..7576bae9f95 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -7090,6 +7090,11 @@ implementations: `python-mode' and `python-ts-mode'." `((?: . ,(lambda () (and (zerop (car (syntax-ppss))) (python-info-statement-starts-block-p) + ;; Heuristic: assume walrus operator := + ;; when colon is preceded by space. + (save-excursion + (goto-char (- (point) 2)) + (looking-at (rx (not space) ":"))) 'after))))) ;; Add """ ... """ pairing to electric-pair-mode. commit e9727982cf62d0848056a9f3e42e8e719a609c8d Author: Stefan Kangas Date: Fri Oct 4 23:29:59 2024 +0200 * lisp/info-look.el (:mode): Support IELM. diff --git a/lisp/info-look.el b/lisp/info-look.el index 52f20e34b88..2f36e598dcd 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -1098,6 +1098,11 @@ Return nil if there is nothing appropriate in the buffer near point." :parse-rule 'ignore :other-modes '(emacs-lisp-mode)) +(info-lookup-maybe-add-help + :mode 'inferior-emacs-lisp-mode + :regexp "[^][()`'‘’,:\" \t\n]+" + :other-modes '(emacs-lisp-mode)) + (info-lookup-maybe-add-help :mode 'lisp-mode :regexp "[^()`'‘’,\" \t\n]+" commit ecac8ca62ea1dab8cf353ff4274469840ce3d0c9 Author: Stefan Kangas Date: Fri Oct 4 23:28:09 2024 +0200 Shorten info-lookup-mode docstring * lisp/info-look.el (info-lookup-mode): Shorten variable docstring by removing information that is auto-generated by 'describe-variable'. diff --git a/lisp/info-look.el b/lisp/info-look.el index fbb6dd1e9d2..52f20e34b88 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -48,8 +48,7 @@ (defvar-local info-lookup-mode nil "Symbol of the current buffer's help mode. -Help is provided according to the buffer's major mode if value is nil. -Automatically becomes buffer local when set in any fashion.") +Help is provided according to the buffer's major mode if value is nil.") (defcustom info-lookup-other-window-flag t "Non-nil means pop up the Info buffer in another window." commit 9ba20e8f39ca4784c6445b92603eca7a045954ac Author: Stefan Kangas Date: Fri Oct 4 19:03:33 2024 +0200 Expose lambdas in info-look.el to byte-compiler * lisp/info-look.el (:mode): Expose lambdas to byte-compiler. diff --git a/lisp/info-look.el b/lisp/info-look.el index ea35540d5c0..fbb6dd1e9d2 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -867,12 +867,12 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'texinfo-mode :regexp "@\\([a-zA-Z]+\\|[^a-zA-Z]\\)" - :doc-spec '(("(texinfo)Command and Variable Index" - ;; Ignore Emacs commands and prepend a `@'. - (lambda (item) - (if (string-match "^\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\( .*\\)?$" item) - (concat "@" (match-string 1 item)))) - "['`‘]" "['’ ]"))) + :doc-spec `(("(texinfo)Command and Variable Index" + ;; Ignore Emacs commands and prepend a `@'. + ,(lambda (item) + (if (string-match "^\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\( .*\\)?$" item) + (concat "@" (match-string 1 item)))) + "['`‘]" "['’ ]"))) (info-lookup-maybe-add-help :mode 'm4-mode @@ -883,31 +883,31 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'autoconf-mode :regexp "A[CM]_[_A-Z0-9]+" - :doc-spec '(;; Autoconf Macro Index entries are without an "AC_" prefix, - ;; but with "AH_" or "AU_" for those. So add "AC_" if there - ;; isn't already an "A._". + :doc-spec `(;; Autoconf Macro Index entries are without an "AC_" prefix, + ;; but with "AH_" or "AU_" for those. So add "AC_" if there + ;; isn't already an "A._". ("(autoconf)Autoconf Macro Index" - (lambda (item) - (if (string-match "^A._" item) item (concat "AC_" item))) - "^[ \t]+-+ \\(Macro\\|Variable\\): .*\\<" "\\>") + ,(lambda (item) + (if (string-match "^A._" item) item (concat "AC_" item))) + "^[ \t]+-+ \\(Macro\\|Variable\\): .*\\<" "\\>") ;; M4 Macro Index entries are without "AS_" prefixes, and ;; mostly without "m4_" prefixes. "dnl" is an exception, not ;; wanting any prefix. So AS_ is added back to upper-case ;; names (if needed), m4_ to others which don't already an m4_. ("(autoconf)M4 Macro Index" - (lambda (item) - (let ((case-fold-search nil)) - (cond ((or (string-equal item "dnl") - (string-match "^m4_" item) - ;; Autoconf 2.62 index includes some macros - ;; (e.g., AS_HELP_STRING), so avoid prefixing. - (string-match "^AS_" item)) - item) - ((string-match "^[A-Z0-9_]+$" item) - (concat "AS_" item)) - (t - (concat "m4_" item))))) - "^[ \t]+-+ Macro: .*\\<" "\\>") + ,(lambda (item) + (let ((case-fold-search nil)) + (cond ((or (string-equal item "dnl") + (string-match "^m4_" item) + ;; Autoconf 2.62 index includes some macros + ;; (e.g., AS_HELP_STRING), so avoid prefixing. + (string-match "^AS_" item)) + item) + ((string-match "^[A-Z0-9_]+$" item) + (concat "AS_" item)) + (t + (concat "m4_" item))))) + "^[ \t]+-+ Macro: .*\\<" "\\>") ;; Autotest Macro Index entries are without "AT_". ("(autoconf)Autotest Macro Index" "AT_" "^[ \t]+-+ Macro: .*\\<" "\\>") @@ -926,48 +926,48 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'awk-mode :regexp "[_a-zA-Z]+" - :doc-spec '(("(gawk)Index" - (lambda (item) - (let ((case-fold-search nil)) - (cond - ;; `BEGIN' and `END'. - ((string-match "^\\([A-Z]+\\) special pattern\\b" item) - (match-string 1 item)) - ;; `if', `while', `do', ... - ((string-match "^\\([a-z]+\\) statement\\b" item) - (if (not (string-equal (match-string 1 item) "control")) - (match-string 1 item))) - ;; `NR', `NF', ... - ((string-match "^[A-Z]+$" item) - item) - ;; Built-in functions (matches to many entries). - ((string-match "^[a-z]+$" item) - item)))) - "['`‘]" "\\([ \t]*([^)]*)\\)?['’]"))) + :doc-spec `(("(gawk)Index" + ,(lambda (item) + (let ((case-fold-search nil)) + (cond + ;; `BEGIN' and `END'. + ((string-match "^\\([A-Z]+\\) special pattern\\b" item) + (match-string 1 item)) + ;; `if', `while', `do', ... + ((string-match "^\\([a-z]+\\) statement\\b" item) + (if (not (string-equal (match-string 1 item) "control")) + (match-string 1 item))) + ;; `NR', `NF', ... + ((string-match "^[A-Z]+$" item) + item) + ;; Built-in functions (matches to many entries). + ((string-match "^[a-z]+$" item) + item)))) + "['`‘]" "\\([ \t]*([^)]*)\\)?['’]"))) (info-lookup-maybe-add-help :mode 'perl-mode :regexp "[$@%][^a-zA-Z]\\|\\$\\^[A-Z]\\|[$@%]?[a-zA-Z][_a-zA-Z0-9]*" - :doc-spec '(("(perl5)Function Index" - (lambda (item) - (if (string-match "^\\([a-zA-Z0-9]+\\)" item) - (match-string 1 item))) - "^" "\\b") - ("(perl5)Variable Index" - (lambda (item) - ;; Work around bad formatted array variables. - (let ((sym (cond ((or (string-match "^\\$\\(.\\|@@\\)$" item) - (string-match "^\\$\\^[A-Z]$" item)) - item) - ((string-match - "^\\([$%@]\\|@@\\)?[_a-zA-Z0-9]+" item) - (match-string 0 item)) - (t "")))) - (if (string-match "@@" sym) - (setq sym (concat (substring sym 0 (match-beginning 0)) - (substring sym (1- (match-end 0)))))) - (if (string-equal sym "") nil sym))) - "^" "\\b")) + :doc-spec `(("(perl5)Function Index" + ,(lambda (item) + (if (string-match "^\\([a-zA-Z0-9]+\\)" item) + (match-string 1 item))) + "^" "\\b") + ("(perl5)Variable Index" + ,(lambda (item) + ;; Work around bad formatted array variables. + (let ((sym (cond ((or (string-match "^\\$\\(.\\|@@\\)$" item) + (string-match "^\\$\\^[A-Z]$" item)) + item) + ((string-match + "^\\([$%@]\\|@@\\)?[_a-zA-Z0-9]+" item) + (match-string 0 item)) + (t "")))) + (if (string-match "@@" sym) + (setq sym (concat (substring sym 0 (match-beginning 0)) + (substring sym (1- (match-end 0)))))) + (if (string-equal sym "") nil sym))) + "^" "\\b")) :parse-rule "[$@%]?\\([_a-zA-Z0-9]+\\|[^a-zA-Z]\\)") (info-lookup-maybe-add-help @@ -1116,19 +1116,19 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'octave-mode :regexp "[_a-zA-Z0-9]+\\|\\s.+\\|[-!=^|*/.\\,><~&+]\\{1,3\\}\\|[][();,\"']" - :doc-spec '(("(octave)Function Index" nil - "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil) - ("(octave)Variable Index" nil "^ -+ [^:]+:[ ]+" nil) + :doc-spec `(("(octave)Function Index" nil + "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil) + ("(octave)Variable Index" nil "^ -+ [^:]+:[ ]+" nil) ("(octave)Operator Index" nil nil nil) - ;; Catch lines of the form "xyz statement" - ("(octave)Concept Index" - (lambda (item) - (cond - ((string-match "^\\([A-Z]+\\) statement\\b" item) - (match-string 1 item)) - (t nil))) - nil; "^ -+ [^:]+:[ ]+" don't think this prefix is useful here. - nil))) + ;; Catch lines of the form "xyz statement" + ("(octave)Concept Index" + ,(lambda (item) + (cond + ((string-match "^\\([A-Z]+\\) statement\\b" item) + (match-string 1 item)) + (t nil))) + nil; "^ -+ [^:]+:[ ]+" don't think this prefix is useful here. + nil))) (info-lookup-maybe-add-help :mode 'maxima-mode @@ -1159,7 +1159,7 @@ Return nil if there is nothing appropriate in the buffer near point." ;; bash has "." and ":" in its index, but those chars will probably never ;; work in info, so don't bother matching them in the regexp. :regexp "\\([a-zA-Z0-9_-]+\\|[!{}@*#?$]\\|\\[\\[?\\|]]?\\)" - :doc-spec '(("(bash)Builtin Index" nil "^['`‘]" "[ .'’]") + :doc-spec `(("(bash)Builtin Index" nil "^['`‘]" "[ .'’]") ("(bash)Reserved Word Index" nil "^['`‘]" "[ .'’]") ("(bash)Variable Index" nil "^['`‘]" "[ .'’]") @@ -1170,30 +1170,30 @@ Return nil if there is nothing appropriate in the buffer near point." ;; versions have node "Index", look for both, whichever is ;; absent is quietly ignored ("(coreutils)Index" - (lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) + ,(lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) ("(coreutils)Concept Index" - (lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) + ,(lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) ;; diff (version 2.8.1) has only a few programs, index entries ;; are things like "foo invocation". ("(diff)Index" - (lambda (item) - (if (string-match "\\`\\([a-z]+\\) invocation\\'" item) - (match-string 1 item)))) + ,(lambda (item) + (if (string-match "\\`\\([a-z]+\\) invocation\\'" item) + (match-string 1 item)))) ;; there's no plain "sed" index entry as such, mung another ;; hopefully unique one to get to the invocation section ("(sed)Concept Index" - (lambda (item) - (if (string-equal item "Standard input, processing as input") - "sed"))) + ,(lambda (item) + (if (string-equal item "Standard input, processing as input") + "sed"))) ;; there's no plain "awk" or "gawk" index entries, mung other ;; hopefully unique ones to get to the command line options ("(gawk)Index" - (lambda (item) - (cond ((string-equal item "gawk, extensions, disabling") - "awk") - ((string-equal item "gawk, versions of, information about, printing") - "gawk")))))) + ,(lambda (item) + (cond ((string-equal item "gawk, extensions, disabling") + "awk") + ((string-equal item "gawk, versions of, information about, printing") + "gawk")))))) ;; This misses some things which occur as node names but not in the ;; index. Unfortunately it also picks up the wrong one of multiple @@ -1201,15 +1201,15 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'cfengine-mode :regexp "[[:alnum:]_]+\\(?:()\\)?" - :doc-spec '(("(cfengine-Reference)Variable Index" - (lambda (item) - ;; Index entries may be like `IsPlain()' - (if (string-match "\\([[:alnum:]_]+\\)()" item) - (match-string 1 item) - item)) - ;; This gets functions in evaluated classes. Other - ;; possible patterns don't seem to work too well. - "['`‘]" "("))) + :doc-spec `(("(cfengine-Reference)Variable Index" + ,(lambda (item) + ;; Index entries may be like `IsPlain()' + (if (string-match "\\([[:alnum:]_]+\\)()" item) + (match-string 1 item) + item)) + ;; This gets functions in evaluated classes. Other + ;; possible patterns don't seem to work too well. + "['`‘]" "("))) (info-lookup-maybe-add-help :mode 'Custom-mode commit 1094c3f91477e622e064fa52de7fd0f361e54d9b Author: Sean Whitton Date: Fri Oct 4 20:44:53 2024 +0800 find-function-mode: Define keys at a low precedence level * lisp/emacs-lisp/find-func.el (find-function-mode-map): Delete. (find-function-mode): Define keys at the precedence level of the global map for compatibility with the historical behavior of find-function-setup-keys. diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index c031ee427d4..f3ddf9f81c9 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -805,28 +805,30 @@ See `find-function-on-key'." (when (and symb (not (equal symb 0))) (find-variable-other-window symb)))) -(defvar-keymap find-function-mode-map - "C-x F" #'find-function - "C-x 4 F" #'find-function-other-window - "C-x 5 F" #'find-function-other-frame - - "C-x K" #'find-function-on-key - "C-x 4 K" #'find-function-on-key-other-window - "C-x 5 K" #'find-function-on-key-other-frame - - "C-x V" #'find-variable - "C-x 4 V" #'find-variable-other-window - "C-x 5 V" #'find-variable-other-frame - - "C-x L" #'find-library - "C-x 4 L" #'find-library-other-window - "C-x 5 L" #'find-library-other-frame) - ;;;###autoload (define-minor-mode find-function-mode "Enable some key bindings for the `find-function' family of functions." - :global t :lighter nil ; compat. with old `find-function-setup-keys' - :group 'find-function :version "31.1") + :group 'find-function :version "31.1" :global t :lighter nil + ;; For compatibility with the historical behavior of the old + ;; `find-function-setup-keys', define our bindings at the precedence + ;; level of the global map. + :keymap nil + (pcase-dolist (`(,map ,key ,cmd) + `((,ctl-x-map "F" find-function) + (,ctl-x-4-map "F" find-function-other-window) + (,ctl-x-5-map "F" find-function-other-frame) + (,ctl-x-map "K" find-function-on-key) + (,ctl-x-4-map "K" find-function-on-key-other-window) + (,ctl-x-5-map "K" find-function-on-key-other-frame) + (,ctl-x-map "V" find-variable) + (,ctl-x-4-map "V" find-variable-other-window) + (,ctl-x-5-map "V" find-variable-other-frame) + (,ctl-x-map "L" find-library) + (,ctl-x-4-map "L" find-library-other-window) + (,ctl-x-5-map "L" find-library-other-frame))) + (if find-function-mode + (keymap-set map key cmd) + (keymap-unset map key t)))) ;;;###autoload (defun find-function-setup-keys () commit ea7be865ac09d41844d04e5576dcd10a1d7d7d54 Author: Mattias Engdegård Date: Fri Oct 4 13:36:21 2024 +0200 * lisp/net/sieve-mode.el (sieve-tagged-arguments): Face name typo. diff --git a/lisp/net/sieve-mode.el b/lisp/net/sieve-mode.el index 4fbdd183973..a648cf1e1e0 100644 --- a/lisp/net/sieve-mode.el +++ b/lisp/net/sieve-mode.el @@ -67,7 +67,7 @@ "Face used for Sieve Test Commands.") (defface sieve-tagged-arguments - '((t :inherit font-lock-keyword face)) + '((t :inherit font-lock-keyword-face)) "Face used for Sieve Tagged Arguments.") commit 336e977f18f0f823af229e037f0df71505366839 Author: Mattias Engdegård Date: Fri Oct 4 10:19:26 2024 +0200 ; * lisp/doc-view.el (doc-view-djvused-program): allow nil in type diff --git a/lisp/doc-view.el b/lisp/doc-view.el index 3683f1f60d4..78dc472ddc3 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -222,7 +222,7 @@ are available (see Info node `(emacs)Document View')." "djvused") "Name of \"djvused\" program to generate imenu outline for DjVu files. This is part of DjVuLibre." - :type 'file + :type '(choice (const nil) file) :version "31.1") (defcustom doc-view-imenu-enabled (and (or (executable-find "mutool")