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.
This commit is contained in:
Stefan Monnier 2025-04-04 16:17:36 -04:00
parent 03fc0e0fd5
commit 9983551f46

View file

@ -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)
(defvar reftex-syntax-table
(let ((st (make-syntax-table)))
(modify-syntax-entry ?\( "." st)
(modify-syntax-entry ?\) "." st)
st))
(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-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.