From: Stefan Monnier Date: Fri, 4 Apr 2025 20:17:36 +0000 (-0400) Subject: Handle `TeX-master` holding a buffer X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=09eabb81cf189f3a8e2aeff825983f4d8b5de30b;p=emacs.git Handle `TeX-master` holding a buffer Cleanup initialization of the syntax tables, while we're at it. * lisp/textmodes/reftex.el (reftex-syntax-table) (reftex-syntax-table-for-bib): Move initialization into the declaration. (reftex--prepare-syntax-tables): Delete function. (reftex-mode): Delete call to it. (reftex-TeX-master-file): Handle the case where `TeX-master` holds a buffer (e.g. because of `reftex-find-duplicate-labels`). Consolidate the two cases where we prompt the user. (cherry picked from commit 9983551f468405a5af443796c0eb7b53f735edb9) --- diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el index a4eeec83f28..6da4413bcbe 100644 --- a/lisp/textmodes/reftex.el +++ b/lisp/textmodes/reftex.el @@ -133,24 +133,21 @@ "Keymap for RefTeX mode.") (defvar reftex-mode-menu nil) -(defvar reftex-syntax-table nil) -(defvar reftex-syntax-table-for-bib nil) - -(defun reftex--prepare-syntax-tables () - (setq reftex-syntax-table (copy-syntax-table)) - (modify-syntax-entry ?\( "." reftex-syntax-table) - (modify-syntax-entry ?\) "." reftex-syntax-table) - - (setq reftex-syntax-table-for-bib (copy-syntax-table)) - (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib) - (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib) - (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib) - (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib) - (modify-syntax-entry ?\( "." reftex-syntax-table-for-bib) - (modify-syntax-entry ?\) "." reftex-syntax-table-for-bib)) - -(unless (and reftex-syntax-table reftex-syntax-table-for-bib) - (reftex--prepare-syntax-tables)) +(defvar reftex-syntax-table + (let ((st (make-syntax-table))) + (modify-syntax-entry ?\( "." st) + (modify-syntax-entry ?\) "." st) + st)) + +(defvar reftex-syntax-table-for-bib + (let ((st (make-syntax-table))) + (modify-syntax-entry ?\' "." st) + (modify-syntax-entry ?\" "." st) + (modify-syntax-entry ?\[ "." st) + (modify-syntax-entry ?\] "." st) + (modify-syntax-entry ?\( "." st) + (modify-syntax-entry ?\) "." st) + st)) ;; The following definitions are out of place, but I need them here ;; to make the compilation of reftex-mode not complain. @@ -212,9 +209,6 @@ on the menu bar. (reftex-toggle-auto-toc-recenter)) (put 'reftex-auto-recenter-toc 'initialized t)) - ;; Prepare the special syntax tables. - (reftex--prepare-syntax-tables) - (run-hooks 'reftex-mode-hook)))) (defvar reftex-docstruct-symbol) @@ -415,10 +409,7 @@ If the symbols for the current master file do not exist, they are created." (cond ((eq TeX-master t) (buffer-file-name)) - ((eq TeX-master 'shared) - (setq TeX-master (read-file-name "Master file: " - nil nil t nil))) - (TeX-master) + ((or (stringp TeX-master) (bufferp TeX-master)) TeX-master) (t (setq TeX-master (read-file-name "Master file: " nil nil t nil))))) @@ -437,7 +428,7 @@ If the symbols for the current master file do not exist, they are created." (t (buffer-file-name))))) (cond - ((null master)) + ((not (stringp master))) ((or (file-exists-p (concat master ".tex")) (find-buffer-visiting (concat master ".tex"))) ;; Ahh, an extra .tex was missing... @@ -449,9 +440,9 @@ If the symbols for the current master file do not exist, they are created." (t ;; Use buffer file name. (setq master (buffer-file-name)))) - (if master + (if (stringp master) (expand-file-name master) - (current-buffer))))) + (or master (current-buffer)))))) (defun reftex-is-multi () ;; Tell if this is a multifile document. When not sure, say yes.