diff --git a/lisp/dired-x.el b/lisp/dired-x.el index dccaa9e96ca..088ca81ed8d 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el @@ -816,12 +816,11 @@ If in a Dired buffer, reverts it." (interactive) (if (file-exists-p dired-local-variables-file) (error "Old-style dired-local-variables-file `./%s' found; -replace it with a dir-locals-file `./%s.el'" +replace it with a dir-locals-file `./%s'" dired-local-variables-file dir-locals-file)) - (if (dir-locals--all-files default-directory) - (message "File `./%s' already exists." - (car (dir-locals--all-files default-directory))) + (if (file-exists-p dir-locals-file) + (message "File `./%s' already exists." dir-locals-file) (add-dir-local-variable 'dired-mode 'subdirs nil) (add-dir-local-variable 'dired-mode 'dired-omit-mode t) ;; Run extra-hooks and revert directory. diff --git a/lisp/dired.el b/lisp/dired.el index 24b128f2944..ef22d457bca 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -4428,7 +4428,7 @@ instead. ;;;*** -;;;### (autoloads nil "dired-x" "dired-x.el" "8dae922d1549647835460b6cb70af4df") +;;;### (autoloads nil "dired-x" "dired-x.el" "f00ad5ec7383d017263855ad8add60a3") ;;; Generated autoloads from dired-x.el (autoload 'dired-jump "dired-x" "\ diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 495ba7cb859..1d8f0cb8f5d 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1493,7 +1493,10 @@ should not be computed on the basis of the following token." (let ((endpos (point))) (goto-char pos) (forward-line 1) - (and (equal res (smie-indent-forward-token)) + ;; As seen in bug#22960, pos may be inside + ;; a string, and forward-token may then stumble. + (and (ignore-errors + (equal res (smie-indent-forward-token))) (eq (point) endpos))))) nil (goto-char pos) diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index f70877dc63a..3ea63c74034 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -30,6 +30,7 @@ (autoload 'gnus-map-function "gnus-util") (autoload 'gnus-replace-in-string "gnus-util") (autoload 'gnus-read-shell-command "gnus-util") +(autoload 'gnus-format-message "gnus-util") (autoload 'mm-inline-partial "mm-partial") (autoload 'mm-inline-external-body "mm-extern") diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el index 3ac3da0127d..254c427299e 100644 --- a/lisp/gnus/mml-sec.el +++ b/lisp/gnus/mml-sec.el @@ -27,6 +27,8 @@ (require 'gnus-util) (require 'epg) +(require 'password-cache) +(require 'mm-encode) (autoload 'mail-strip-quoted-names "mail-utils") (autoload 'mml2015-sign "mml2015") @@ -35,6 +37,7 @@ (autoload 'mml1991-encrypt "mml1991") (autoload 'message-fetch-field "message") (autoload 'message-goto-body "message") +(autoload 'message-options-get "message") (autoload 'mml-insert-tag "mml") (autoload 'mml-smime-sign "mml-smime") (autoload 'mml-smime-encrypt "mml-smime") @@ -44,6 +47,8 @@ (autoload 'mml-smime-verify-test "mml-smime") (autoload 'epa--select-keys "epa") +(declare-function message-options-set "message" (symbol value)) + (defvar mml-sign-alist '(("smime" mml-smime-sign-buffer mml-smime-sign-query) ("pgp" mml-pgp-sign-buffer list) @@ -110,20 +115,15 @@ details." :group 'message :type 'boolean) -(defcustom mml-secure-cache-passphrase - (if (boundp 'password-cache) - password-cache - t) +;; FIXME If it's "NOT recommended", why is it the default? +(defcustom mml-secure-cache-passphrase password-cache "If t, cache OpenPGP or S/MIME passphrases inside Emacs. Passphrase caching in Emacs is NOT recommended. Use gpg-agent instead. See Info node `(message) Security'." :group 'message :type 'boolean) -(defcustom mml-secure-passphrase-cache-expiry - (if (boundp 'password-cache-expiry) - password-cache-expiry - 16) +(defcustom mml-secure-passphrase-cache-expiry password-cache-expiry "How many seconds the passphrase is cached. Whether the passphrase is cached at all is controlled by `mml-secure-cache-passphrase'." diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el index 248e63682c8..502c65b2463 100644 --- a/lisp/gnus/mml-smime.el +++ b/lisp/gnus/mml-smime.el @@ -356,10 +356,6 @@ Whether the passphrase is cached at all is controlled by (autoload 'mml-compute-boundary "mml") -;; We require mm-decode, which requires mm-bodies, which autoloads -;; message-options-get (!). -(declare-function message-options-set "message" (symbol value)) - (defun mml-smime-epg-sign (cont) (let ((inhibit-redisplay t) (boundary (mml-compute-boundary cont))) diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el index bb5c940f173..568dc564d91 100644 --- a/lisp/gnus/mml1991.el +++ b/lisp/gnus/mml1991.el @@ -25,11 +25,6 @@ ;;; Code: -(eval-and-compile - (if (locate-library "password-cache") - (require 'password-cache) - (require 'password))) - (eval-when-compile (require 'cl) (require 'mm-util)) diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el index e2e99771801..61ca53624d3 100644 --- a/lisp/gnus/mml2015.el +++ b/lisp/gnus/mml2015.el @@ -27,11 +27,6 @@ ;;; Code: -(eval-and-compile - (if (locate-library "password-cache") - (require 'password-cache) - (require 'password))) - (eval-when-compile (require 'cl)) (require 'mm-decode) (require 'mm-util) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 70b0f232ce6..10ba5b38031 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -4582,6 +4582,8 @@ Argument MIME is non-nil if this is a mime message." (list armor-start (- (point-max) after-end) mime armor-end-regexp))) +(declare-function rmail-mime-entity-truncated "rmailmm" (entity)) + ;; Should this have a key-binding, or be in a menu? ;; There doesn't really seem to be an appropriate menu. ;; Eg the edit command is not in a menu either. diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 69e6a154ae5..feed0fb36d9 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -436,6 +436,8 @@ If SELECT is non-nil, select the target window." ;;; XREF buffer (part of the UI) ;; The xref buffer is used to display a set of xrefs. +(defconst xref-buffer-name "*xref*" + "The name of the buffer to show xrefs.") (defmacro xref--with-dedicated-window (&rest body) `(let* ((xref-w (get-buffer-window xref-buffer-name)) @@ -470,6 +472,9 @@ If SELECT is non-nil, select the target window." (xref--show-pos-in-buf marker buf select)) (user-error (message (error-message-string err))))) +(defvar-local xref--window nil + "The original window this xref buffer was created from.") + (defun xref-show-location-at-point () "Display the source of xref at point in the appropriate window, if any." (interactive) @@ -500,9 +505,6 @@ If SELECT is non-nil, select the target window." (back-to-indentation) (get-text-property (point) 'xref-item))) -(defvar-local xref--window nil - "The original window this xref buffer was created from.") - (defun xref-goto-xref () "Jump to the xref on the current line and select its window." (interactive) @@ -624,9 +626,6 @@ references displayed in the current *xref* buffer." (t (error "No %s xref" (if backward "previous" "next")))))) -(defconst xref-buffer-name "*xref*" - "The name of the buffer to show xrefs.") - (defvar xref--button-map (let ((map (make-sparse-keymap))) (define-key map [(control ?m)] #'xref-goto-xref) diff --git a/lisp/xml.el b/lisp/xml.el index 1802d04dfaf..414300cb402 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -580,7 +580,7 @@ Return one of: ;; However, if we're parsing incrementally, then we need to deal ;; with stray CDATA. (let ((s (xml-parse-string))) - (when (string-empty-p s) + (when (zerop (length s)) ;; We haven't consumed any input! We must throw an error in ;; order to prevent looping forever. (error "XML: (Not Well-Formed) Could not parse: %s"