Subject: bug#76615: 14.0.9; error with amsmath style hooks

From: Ikumi Keita <[email-masked]>
Date: Wed, 26 Mar 2025 18:15:00 +0900

>>>>> "Paul D. Nelson" <[email-masked]> writes:
> Hi Ikumi, your last patch looks good and seems to work fine for me.
> Thanks, best,  Paul

Thank you, Paul.

Then I'd like someone with write permission of emacs repository to
install the attached patch, please. Then I'll commit the following fix
to the AUCTeX repository.

>From b23971c2e37fde9ccfbb8e518c9c0f6f3430a131 Mon Sep 17 00:00:00 2001
From: Ikumi Keita <[email-masked]>
Date: Wed, 5 Mar 2025 02:37:13 +0900
Subject: [PATCH] Suppress RefTeX error in non-file buffer

* tex.el (TeX-mode-cleanup): In non-file buffer, set up dirty hack for
RefTeX and turn off RefTeX.
---
 tex.el | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tex.el b/tex.el
index 3d28b2c6..2f650b39 100644
--- a/tex.el
+++ b/tex.el
@@ -102,6 +102,7 @@
 (defvar ispell-parser)                  ; ispell.el
 (defvar compilation-error-regexp-alist) ; compile.el
 (defvar compilation-in-progress)        ; compile.el
+(defvar reftex--suppress-nonfile-error) ; reftex.el
 
 (defconst TeX-mode-comparison-alist
   '((plain-tex-mode . plain-TeX-mode)
@@ -3929,7 +3930,12 @@ Run after mode hooks and file local variables application."
   ;; `find-file-hook'.  This is necessary for `xref-find-references',
   ;; for example. (bug#65912)
   (unless buffer-file-truename
-    (TeX-update-style))
+    (TeX-update-style)
+
+    ;; Suppress RefTeX error in non-file buffer. (Bug#76615)
+    (when (featurep 'reftex)
+      (setq-local reftex--suppress-nonfile-error t)
+      (reftex-mode -1)))
 
   (TeX-set-mode-name))
 
-- 
2.48.1

Regards,
Ikumi Keita
#StandWithUkraine #StopWarInUkraine
#Gaza #StopMassiveKilling #CeasefireNOW

diff -r 3eca07415d50 lisp/textmodes/reftex.el
--- a/lisp/textmodes/reftex.el	Sun Mar 23 02:56:31 2025 +0900
+++ b/lisp/textmodes/reftex.el	Wed Mar 26 18:09:26 2025 +0900
@@ -62,6 +62,12 @@
     (setq reftex-tables-dirty t)
     (set symbol value)))
 
+(defvar reftex--suppress-nonfile-error nil
+  "When non-nil, don't signal error in non-file buffer.
+
+Note that this is just a quick and dirty hack and is _not_ reliable at
+all.  It only circumvents disastrous error in `reftex-TeX-master-file',
+in case that the user turns on RefTeX in latex mode hook.")
 
 ;; Configuration variables
 (require 'reftex-vars)
@@ -378,7 +384,8 @@
           (buffer-file-name)))))
     (cond
      ((null master)
-      (error "Need a filename for this buffer, please save it first"))
+      (or reftex--suppress-nonfile-error
+          (error "Need a filename for this buffer, please save it first")))
      ((or (file-exists-p (concat master ".tex"))
           (find-buffer-visiting (concat master ".tex")))
       ;; Ahh, an extra .tex was missing...
@@ -390,7 +397,10 @@
      (t
       ;; Use buffer file name.
       (setq master (buffer-file-name))))
-    (expand-file-name master)))
+    (if (and (not master)
+             reftex--suppress-nonfile-error)
+        "<none>.tex"
+      (expand-file-name master))))
 
 (defun reftex-is-multi ()
   ;; Tell if this is a multifile document.  When not sure, say yes.