]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle `TeX-master` holding a buffer
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 4 Apr 2025 20:17:36 +0000 (16:17 -0400)
committerEshel Yaron <me@eshelyaron.com>
Tue, 8 Apr 2025 05:40:57 +0000 (07:40 +0200)
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)

lisp/textmodes/reftex.el

index a4eeec83f2853e470ece559c8e4df9fc3da536fe..6da4413bcbe848f87aa78c801dfee616f19e2ed4 100644 (file)
   "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.