From: Juri Linkov Date: Wed, 5 Feb 2020 22:38:53 +0000 (+0200) Subject: Wrap some set-auto-mode calls with delay-mode-hooks (bug#39190) X-Git-Tag: emacs-27.0.90~68 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=09eed01afb4968a93247fb8eb7b5301a5bfb6342;p=emacs.git Wrap some set-auto-mode calls with delay-mode-hooks (bug#39190) * lisp/gnus/mm-view.el (mm-display-inline-fontify): * lisp/vc/diff-mode.el (diff-syntax-fontify-props): * lisp/vc/vc.el (vc-find-revision-no-save): Add delay-mode-hooks around set-auto-mode calls to not run hooks that might assume buffer-file-name really associates buffer with a file. --- diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el index a6be04e313d..828ac633dc5 100644 --- a/lisp/gnus/mm-view.el +++ b/lisp/gnus/mm-view.el @@ -497,7 +497,9 @@ If MODE is not set, try to find mode automatically." (let ((auto-mode-alist (delq (rassq 'doc-view-mode-maybe auto-mode-alist) (copy-sequence auto-mode-alist)))) - (set-auto-mode) + ;; Don't run hooks that might assume buffer-file-name + ;; really associates buffer with a file (bug#39190). + (delay-mode-hooks (set-auto-mode)) (setq mode major-mode))) ;; Do not fontify if the guess mode is fundamental. (unless (eq major-mode 'fundamental-mode) diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index 2dbab802086..d61c363c821 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -2719,7 +2719,9 @@ hunk text is not found in the source file." (cl-assert (null buffer-file-name)) (let ((enable-local-variables :safe) ;; to find `mode:' (buffer-file-name file)) - (set-auto-mode) + ;; Don't run hooks that might assume buffer-file-name + ;; really associates buffer with a file (bug#39190). + (delay-mode-hooks (set-auto-mode)) ;; FIXME: Is this really worth the trouble? (when (and (fboundp 'generic-mode-find-file-hook) (memq #'generic-mode-find-file-hook diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index f64b6c06310..ec252b74d47 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -2098,7 +2098,9 @@ Unlike `vc-find-revision-save', doesn't save the buffer to the file." ;; For non-interactive, skip any questions (let ((enable-local-variables :safe) ;; to find `mode:' (buffer-file-name file)) - (ignore-errors (set-auto-mode))) + ;; Don't run hooks that might assume buffer-file-name + ;; really associates buffer with a file (bug#39190). + (ignore-errors (delay-mode-hooks (set-auto-mode)))) (normal-mode)) (set-buffer-modified-p nil) (setq buffer-read-only t))