branch: externals/auctex commit 454f02a588dae8e3ea42f114cda1f7249c3e9b72 Author: Ikumi Keita <ik...@ikumi.que.jp> Commit: Ikumi Keita <ik...@ikumi.que.jp>
Take care of temporal buffers (bug#65912) * font-latex.el (font-latex-setup): Set up font lock in temporal buffers so that functions dependent on syntax propertization should work. * latex.el (docTeX-mode): Reset `font-lock-set-defaults' in case the above sets up has taken place already. (TeX-latex-mode): * plain-tex.el (TeX-plain-tex-mode, ams-tex-mode): Run style hooks in temporal buffers. * tests/context/context-test.el: * tests/latex/font-latex-test.el: * tests/latex/latex-test.el (): (LaTeX-filling, LaTeX-style-hook-with-class-option): * tests/latex/texmathp-test.el: Arrange in accord with the above changes. --- font-latex.el | 12 +++++++++++- latex.el | 13 ++++++++++++- plain-tex.el | 16 ++++++++++++++-- tests/context/context-test.el | 6 ------ tests/latex/font-latex-test.el | 6 ------ tests/latex/latex-test.el | 12 ++---------- tests/latex/texmathp-test.el | 2 -- 7 files changed, 39 insertions(+), 28 deletions(-) diff --git a/font-latex.el b/font-latex.el index 8fc567e292..95b88815e0 100644 --- a/font-latex.el +++ b/font-latex.el @@ -1353,7 +1353,17 @@ triggers Font Lock to recognize the change." ;; Make sure fontification will be refreshed if a user sets variables ;; influencing fontification in her file-local variables section. - (add-hook 'hack-local-variables-hook #'font-latex-after-hacking-local-variables t t)) + (add-hook 'hack-local-variables-hook #'font-latex-after-hacking-local-variables t t) + + ;; We may be using the mode programmatically to extract data, and we + ;; then need this to be set up first so that a command like + ;; `xref-find-references' doesn't bug out when matching hits in + ;; files that Emacs isn't visiting. (bug#65912) + ;; We need this treatment because the current syntax propertize + ;; facility depends on font lock machinery. We can remove this + ;; when syntax propertization decouples font lock. + (unless buffer-file-truename + (font-lock-set-defaults))) (defun font-latex-update-font-lock (&optional _syntactic-kws) "Tell font-lock about updates of fontification rules. diff --git a/latex.el b/latex.el index 3abb00f216..f374e558c4 100644 --- a/latex.el +++ b/latex.el @@ -8045,7 +8045,14 @@ of `LaTeX-mode-hook'." filladapt-mode) (turn-off-filladapt-mode)) ;; Set up flymake backend, see latex-flymake.el - (add-hook 'flymake-diagnostic-functions #'LaTeX-flymake nil t)) + (add-hook 'flymake-diagnostic-functions #'LaTeX-flymake nil t) + + ;; Complete style initialization in buffers which don't visit files + ;; and which are therefore missed by the setting of `find-file-hook' + ;; in `VirTeX-common-initialization'. This is necessary for + ;; `xref-find-references', for example. (bug#65912) + (unless buffer-file-truename + (TeX-update-style))) (TeX-abbrev-mode-setup doctex-mode) @@ -8068,6 +8075,10 @@ runs the hooks in `docTeX-mode-hook'." TeX-comment-start-regexp "\\(?:%\\(?:<[^>]+>\\)?\\)") (setq TeX-base-mode-name "docTeX") (TeX-set-mode-name) + ;; We can remove the next `setq' when syntax propertization + ;; decouples font lock and `font-latex-setup' stops calling + ;; `font-lock-set-defaults'. + (setq font-lock-set-defaults nil) (funcall TeX-install-font-lock)) ;; Enable LaTeX abbrevs in docTeX mode buffer. diff --git a/plain-tex.el b/plain-tex.el index 0800b2f3da..b4c78fe489 100644 --- a/plain-tex.el +++ b/plain-tex.el @@ -135,7 +135,13 @@ of `plain-TeX-mode-hook'." (add-hook 'tool-bar-mode-hook #'plain-TeX-maybe-install-toolbar nil t) (plain-TeX-maybe-install-toolbar) (run-mode-hooks 'text-mode-hook 'TeX-mode-hook 'plain-TeX-mode-hook) - (TeX-set-mode-name)) + (TeX-set-mode-name) + ;; Complete style initialization in buffers which don't visit files + ;; and which are therefore missed by the setting of `find-file-hook' + ;; in `VirTeX-common-initialization'. This is necessary for + ;; `xref-find-references', for example. (bug#65912) + (unless buffer-file-truename + (TeX-update-style))) (defun plain-TeX-common-initialization () "Common initialization for plain TeX like modes." @@ -308,7 +314,13 @@ of `AmS-TeX-mode-hook'." (setq TeX-base-mode-name "AmS-TeX") (setq TeX-command-default "AmSTeX") (run-mode-hooks 'text-mode-hook 'TeX-mode-hook 'AmS-TeX-mode-hook) - (TeX-set-mode-name)) + (TeX-set-mode-name) + ;; Complete style initialization in buffers which don't visit files + ;; and which are therefore missed by the setting of `find-file-hook' + ;; in `VirTeX-common-initialization'. This is necessary for + ;; `xref-find-references', for example. (bug#65912) + (unless buffer-file-truename + (TeX-update-style))) (defcustom AmSTeX-clean-intermediate-suffixes TeX-clean-default-intermediate-suffixes diff --git a/tests/context/context-test.el b/tests/context/context-test.el index cc7c8d549f..4eeab4b67a 100644 --- a/tests/context/context-test.el +++ b/tests/context/context-test.el @@ -24,12 +24,6 @@ (require 'ert) (require 'context) -;; We need to ensure that font-lock has put the syntax properties -;; already which won't happen in batch mode. So trigger font-lock -;; immediately. -(define-advice ConTeXt-mode-common-initialization (:after ()) - (font-lock-ensure)) - (AUCTeX-set-ert-path 'ConTeXt-indent-test/in "context-indentation-in.tex" diff --git a/tests/latex/font-latex-test.el b/tests/latex/font-latex-test.el index 40f9633a1a..94150ac04d 100644 --- a/tests/latex/font-latex-test.el +++ b/tests/latex/font-latex-test.el @@ -27,12 +27,6 @@ (defvar font-lock-beg) (defvar font-lock-end) -;; We need to ensure that font-lock has put the syntax properties -;; already which won't happen in batch mode. So trigger font-lock -;; immediately. -(define-advice LaTeX-common-initialization (:after ()) - (font-lock-ensure)) - (ert-deftest font-latex-three-dollars () "Test three consecutive dollar is ignored." ;; When the function `font-latex-match-dollar-math' encounters three diff --git a/tests/latex/latex-test.el b/tests/latex/latex-test.el index fbd64e0953..13cbf4820d 100644 --- a/tests/latex/latex-test.el +++ b/tests/latex/latex-test.el @@ -24,12 +24,6 @@ (require 'ert) (require 'latex) -;; We need to ensure that font-lock has put the syntax properties -;; already which won't happen in batch mode. So trigger font-lock -;; immediately. -(define-advice LaTeX-common-initialization (:after ()) - (font-lock-ensure)) - (AUCTeX-set-ert-path 'LaTeX-indent-tabular-test/in "tabular-in.tex" @@ -174,11 +168,10 @@ (should (string= (with-temp-buffer (insert-file-contents LaTeX-filling/in) - (LaTeX-mode) (let ((fill-column 70) (LaTeX-shortvrb-chars '(?\")) (TeX-parse-self t)) - (TeX-update-style t) + (LaTeX-mode) (search-forward "Lorem") (fill-paragraph) @@ -416,9 +409,8 @@ backend=biber % here is a comment ;; dvipdfmx option should not trigger `TeX-PDF-from-DVI' for ;; XeLaTeX document - (latex-mode) (let ((TeX-engine 'xetex)) - (TeX-update-style)) + (LaTeX-mode)) (should TeX-PDF-mode) (should (not (TeX-PDF-from-DVI))) (should (not (member "dvipdfmx" TeX-active-styles))) diff --git a/tests/latex/texmathp-test.el b/tests/latex/texmathp-test.el index 121af22c7f..a18df63acd 100644 --- a/tests/latex/texmathp-test.el +++ b/tests/latex/texmathp-test.el @@ -55,7 +55,6 @@ (should-not (with-temp-buffer (insert "a $b$ \\verb|$| c ") (LaTeX-mode) - (font-lock-ensure) (texmathp))) (should-not (with-temp-buffer @@ -67,7 +66,6 @@ $ \\end{verbatim} c") (LaTeX-mode) - (font-lock-ensure) (texmathp))))) ;;; texmathp-test.el ends here