GNU bug report logs - #69373
14.0.3; hack-local-variables misbehaves after loading AUCTeX

Previous Next

Package: auctex;

Reported by: Tony Zorman <soliditsallgood <at> mailbox.org>

Date: Sun, 25 Feb 2024 07:46:02 UTC

Severity: normal

Found in version 14.0.3

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 69373 in the body.
You can then email your comments to 69373 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 07:46:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Tony Zorman <soliditsallgood <at> mailbox.org>:
New bug report received and forwarded. Copy sent to bug-auctex <at> gnu.org. (Sun, 25 Feb 2024 07:46:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tony Zorman <soliditsallgood <at> mailbox.org>
To: bug-auctex <at> gnu.org
Subject: 14.0.3; hack-local-variables misbehaves after loading AUCTeX
Date: Sun, 25 Feb 2024 08:09:26 +0100
Hi,

AUCTeX 14.x changed major-mode names from latex-mode to LaTeX-mode. As
indicated in the relevant changes file, the local variables added by
AUCTeX at the bottom of a file are now

    %%% Local Variables:
    %%% mode: LaTeX      <-- not `latex'
    %%% End:

However, it seems like this is not enough. It might be that a minor mode
calls hack-local-variables after AUCTeX is loaded; what will happen then
is that the regular latex-mode is activated, and AUCTeX vanishes!

The reason for that is that hack-local-variables eventually calls
hack-one-local-variable, which features this piece of code:

    (defun hack-one-local-variable (var val)
      "...DOCSTRING..."
      (pcase var
        ('mode                      ; vvvvvvvv
         (let ((mode (intern (concat (downcase (symbol-name val))
                                     "-mode"))))
           (unless (eq (indirect-function mode)
                       (indirect-function major-mode))
             (funcall mode))))
        …))

In other words, LaTeX-mode gets turned into latex-mode anyways.
Curiously, executing this does indeed drop one down into the built in
latex-mode—it seems that the settings in major-mode-remap-alist are
ignored somehow.

This is not a theoretical issue, and has happened with a particular
minor mode (that issue was fixed, but I reckon there are potentially
more modes out there that do something like this).

I'm not sure there to report this (Is this an Emacs bug with repect to
major-mode-remap-alist not being respected? or hack-one-local-variable
just downcasing the mode?) so I will try here first.

Thanks!
  Tony

Emacs  : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, Motif Version 2.3.8, cairo version 1.18.0)
Package: 14.0.3

current state:
==============
(setq
 AUCTeX-date "2024-02-20"
 window-system 'x
 LaTeX-version "2e"
 TeX-style-path '("~/.emacs.d/auctex"
                  "/nix/store/2q9acgmrj6bya64wn83y5h2kw8ravgij-emacs-packages-deps/share/emacs/site-lisp/elpa/auctex-14.0.3/style"
                  "/home/slot/.config/emacs/auctex/auto" "/home/slot/.config/emacs/auctex/style" "auto" "style")
 TeX-auto-save t
 TeX-parse-self t
 TeX-master t
 TeX-command-list '(("TeX" "%(PDF)%(tex) %(file-line-error) %`%(extraopts) %S%(PDFout)%(mode)%' %(output-dir) %t" TeX-run-TeX nil
                     (plain-TeX-mode AmSTeX-mode Texinfo-mode) :help "Run plain TeX")
                    ("LaTeX" "%`%l%(mode)%' %T" TeX-run-TeX nil (LaTeX-mode docTeX-mode) :help "Run LaTeX")
                    ("Makeinfo" "makeinfo %(extraopts) %(o-dir) %t" TeX-run-compile nil (Texinfo-mode) :help
                     "Run Makeinfo with Info output")
                    ("Makeinfo HTML" "makeinfo %(extraopts) %(o-dir) --html %t" TeX-run-compile nil (Texinfo-mode) :help
                     "Run Makeinfo with HTML output")
                    ("AmSTeX" "amstex %(PDFout) %`%(extraopts) %S%(mode)%' %(output-dir) %t" TeX-run-TeX nil (AmSTeX-mode) :help
                     "Run AMSTeX")
                    ("ConTeXt" "%(cntxcom) --once --texutil %(extraopts) %(execopts)%t" TeX-run-TeX nil (ConTeXt-mode) :help
                     "Run ConTeXt once")
                    ("ConTeXt Full" "%(cntxcom) %(extraopts) %(execopts)%t" TeX-run-TeX nil (ConTeXt-mode) :help
                     "Run ConTeXt until completion")
                    ("BibTeX" "bibtex %(O?aux)" TeX-run-BibTeX nil
                     (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode ConTeXt-mode) :help "Run BibTeX")
                    ("Biber" "biber %(output-dir) %s" TeX-run-Biber nil
                     (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Run Biber")
                    ("Texindex" "texindex %s.??" TeX-run-command nil (Texinfo-mode) :help "Run Texindex")
                    ("Texi2dvi" "%(PDF)texi2dvi %t" TeX-run-command nil (Texinfo-mode) :help "Run Texi2dvi or Texi2pdf")
                    ("View" "%V" TeX-run-discard-or-function t t :help "Run Viewer")
                    ("Print" "%p" TeX-run-command t t :help "Print the file")
                    ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command)
                    ("File" "%(o?)dvips %d -o %f " TeX-run-dvips t (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode)
                     :help "Generate PostScript file")
                    ("Dvips" "%(o?)dvips %d -o %f " TeX-run-dvips nil
                     (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Convert DVI file to PostScript")
                    ("Dvipdfmx" "dvipdfmx -o %(O?pdf) %d" TeX-run-dvipdfmx nil
                     (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Convert DVI file to PDF with dvipdfmx")
                    ("Ps2pdf" "ps2pdf %f %(O?pdf)" TeX-run-ps2pdf nil
                     (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Convert PostScript file to PDF")
                    ("Glossaries" "makeglossaries %(d-dir) %s" TeX-run-command nil
                     (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help
                     "Run makeglossaries to create glossary file")
                    ("Index" "makeindex %(O?idx)" TeX-run-index nil (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode)
                     :help "Run makeindex to create index file")
                    ("upMendex" "upmendex %(O?idx)" TeX-run-index t (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode)
                     :help "Run upmendex to create index file")
                    ("Xindy" "texindy %s" TeX-run-command nil (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help
                     "Run xindy to create index file")
                    ("Check" "lacheck %s" TeX-run-compile nil (LaTeX-mode) :help "Check LaTeX file for correctness")
                    ("ChkTeX" "chktex -v6 %s" TeX-run-compile nil (LaTeX-mode) :help "Check LaTeX file for common mistakes")
                    ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document")
                    ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files")
                    ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files")
                    ("Other" "" TeX-run-command t t :help "Run an arbitrary command"))
 )

-- 
Tony Zorman | https://tony-zorman.com/




Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 14:12:03 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Arash Esbati <arash <at> gnu.org>
To: Tony Zorman via bug-auctex via Bug reporting list for AUCTeX
 <bug-auctex <at> gnu.org>
Cc: Tony Zorman <soliditsallgood <at> mailbox.org>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>, 69373 <at> debbugs.gnu.org
Subject: Re: bug#69373: 14.0.3; hack-local-variables misbehaves after
 loading AUCTeX
Date: Sun, 25 Feb 2024 15:10:56 +0100
Hi Tony,

Thanks for the report.  I think this is more an Emacs issue than AUCTeX
and should be assigned/fixed there.

@Stefan: Can you please also have a look at the report below?  Do you
have an idea how and where it should be fixed?  TIA.

Best, Arash

Tony Zorman via bug-auctex via Bug reporting list for AUCTeX <bug-auctex <at> gnu.org> writes:

> Hi,
>
> AUCTeX 14.x changed major-mode names from latex-mode to LaTeX-mode. As
> indicated in the relevant changes file, the local variables added by
> AUCTeX at the bottom of a file are now
>
>     %%% Local Variables:
>     %%% mode: LaTeX      <-- not `latex'
>     %%% End:
>
> However, it seems like this is not enough. It might be that a minor mode
> calls hack-local-variables after AUCTeX is loaded; what will happen then
> is that the regular latex-mode is activated, and AUCTeX vanishes!
>
> The reason for that is that hack-local-variables eventually calls
> hack-one-local-variable, which features this piece of code:
>
>     (defun hack-one-local-variable (var val)
>       "...DOCSTRING..."
>       (pcase var
>         ('mode                      ; vvvvvvvv
>          (let ((mode (intern (concat (downcase (symbol-name val))
>                                      "-mode"))))
>            (unless (eq (indirect-function mode)
>                        (indirect-function major-mode))
>              (funcall mode))))
>         …))
>
> In other words, LaTeX-mode gets turned into latex-mode anyways.
> Curiously, executing this does indeed drop one down into the built in
> latex-mode—it seems that the settings in major-mode-remap-alist are
> ignored somehow.
>
> This is not a theoretical issue, and has happened with a particular
> minor mode (that issue was fixed, but I reckon there are potentially
> more modes out there that do something like this).
>
> I'm not sure there to report this (Is this an Emacs bug with repect to
> major-mode-remap-alist not being respected? or hack-one-local-variable
> just downcasing the mode?) so I will try here first.
>
> Thanks!
>   Tony
>
> Emacs  : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, Motif Version 2.3.8, cairo version 1.18.0)
> Package: 14.0.3
>
> current state:
> ==============
> (setq
>  AUCTeX-date "2024-02-20"
>  window-system 'x
>  LaTeX-version "2e"
>  TeX-style-path '("~/.emacs.d/auctex"
>                   "/nix/store/2q9acgmrj6bya64wn83y5h2kw8ravgij-emacs-packages-deps/share/emacs/site-lisp/elpa/auctex-14.0.3/style"
>                   "/home/slot/.config/emacs/auctex/auto" "/home/slot/.config/emacs/auctex/style" "auto" "style")
>  TeX-auto-save t
>  TeX-parse-self t
>  TeX-master t
>  TeX-command-list '(("TeX" "%(PDF)%(tex) %(file-line-error) %`%(extraopts) %S%(PDFout)%(mode)%' %(output-dir) %t" TeX-run-TeX nil
>                      (plain-TeX-mode AmSTeX-mode Texinfo-mode) :help "Run plain TeX")
>                     ("LaTeX" "%`%l%(mode)%' %T" TeX-run-TeX nil (LaTeX-mode docTeX-mode) :help "Run LaTeX")
>                     ("Makeinfo" "makeinfo %(extraopts) %(o-dir) %t" TeX-run-compile nil (Texinfo-mode) :help
>                      "Run Makeinfo with Info output")
>                     ("Makeinfo HTML" "makeinfo %(extraopts) %(o-dir) --html %t" TeX-run-compile nil (Texinfo-mode) :help
>                      "Run Makeinfo with HTML output")
>                     ("AmSTeX" "amstex %(PDFout) %`%(extraopts) %S%(mode)%' %(output-dir) %t" TeX-run-TeX nil (AmSTeX-mode) :help
>                      "Run AMSTeX")
>                     ("ConTeXt" "%(cntxcom) --once --texutil %(extraopts) %(execopts)%t" TeX-run-TeX nil (ConTeXt-mode) :help
>                      "Run ConTeXt once")
>                     ("ConTeXt Full" "%(cntxcom) %(extraopts) %(execopts)%t" TeX-run-TeX nil (ConTeXt-mode) :help
>                      "Run ConTeXt until completion")
>                     ("BibTeX" "bibtex %(O?aux)" TeX-run-BibTeX nil
>                      (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode ConTeXt-mode) :help "Run BibTeX")
>                     ("Biber" "biber %(output-dir) %s" TeX-run-Biber nil
>                      (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Run Biber")
>                     ("Texindex" "texindex %s.??" TeX-run-command nil (Texinfo-mode) :help "Run Texindex")
>                     ("Texi2dvi" "%(PDF)texi2dvi %t" TeX-run-command nil (Texinfo-mode) :help "Run Texi2dvi or Texi2pdf")
>                     ("View" "%V" TeX-run-discard-or-function t t :help "Run Viewer")
>                     ("Print" "%p" TeX-run-command t t :help "Print the file")
>                     ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command)
>                     ("File" "%(o?)dvips %d -o %f " TeX-run-dvips t (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode)
>                      :help "Generate PostScript file")
>                     ("Dvips" "%(o?)dvips %d -o %f " TeX-run-dvips nil
>                      (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Convert DVI file to PostScript")
>                     ("Dvipdfmx" "dvipdfmx -o %(O?pdf) %d" TeX-run-dvipdfmx nil
>                      (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Convert DVI file to PDF with dvipdfmx")
>                     ("Ps2pdf" "ps2pdf %f %(O?pdf)" TeX-run-ps2pdf nil
>                      (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help "Convert PostScript file to PDF")
>                     ("Glossaries" "makeglossaries %(d-dir) %s" TeX-run-command nil
>                      (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help
>                      "Run makeglossaries to create glossary file")
>                     ("Index" "makeindex %(O?idx)" TeX-run-index nil (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode)
>                      :help "Run makeindex to create index file")
>                     ("upMendex" "upmendex %(O?idx)" TeX-run-index t (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode)
>                      :help "Run upmendex to create index file")
>                     ("Xindy" "texindy %s" TeX-run-command nil (plain-TeX-mode LaTeX-mode docTeX-mode AmSTeX-mode Texinfo-mode) :help
>                      "Run xindy to create index file")
>                     ("Check" "lacheck %s" TeX-run-compile nil (LaTeX-mode) :help "Check LaTeX file for correctness")
>                     ("ChkTeX" "chktex -v6 %s" TeX-run-compile nil (LaTeX-mode) :help "Check LaTeX file for common mistakes")
>                     ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document")
>                     ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files")
>                     ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files")
>                     ("Other" "" TeX-run-command t t :help "Run an arbitrary command"))
>  )




Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 14:12:03 GMT) Full text and rfc822 format available.

Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 15:34:02 GMT) Full text and rfc822 format available.

Message #14 received at 69373 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Arash Esbati <arash <at> gnu.org>
Cc: Tony Zorman via bug-auctex via Bug reporting list for AUCTeX
 <bug-auctex <at> gnu.org>, Tony Zorman <soliditsallgood <at> mailbox.org>,
 69373 <at> debbugs.gnu.org
Subject: Re: bug#69373: 14.0.3; hack-local-variables misbehaves after
 loading AUCTeX
Date: Sun, 25 Feb 2024 10:32:40 -0500
> Thanks for the report.  I think this is more an Emacs issue than AUCTeX
> and should be assigned/fixed there.

Agreed.
I think the patch below is needed.
Tony, are you able to recompile your own Emacs to test that patch?
If so, I'd appreciate if you could try it to confirm that it fixes the
problem for you as well.


        Stefan


diff --git a/lisp/files.el b/lisp/files.el
index 524385edc84..d1b7ab04b6f 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4353,9 +4366,7 @@ hack-one-local-variable
     ('mode
      (let ((mode (intern (concat (downcase (symbol-name val))
                                  "-mode"))))
-       (unless (eq (indirect-function mode)
-                   (indirect-function major-mode))
-         (funcall mode))))
+       (set-auto-mode-0 mode t)))
     ('eval
      (pcase val
        (`(add-hook ',hook . ,_) (hack-one-local-variable--obsolete hook)))





Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 15:57:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 16:28:02 GMT) Full text and rfc822 format available.

Message #20 received at 69373 <at> debbugs.gnu.org (full text, mbox):

From: Tony Zorman <soliditsallgood <at> mailbox.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>, Arash Esbati <arash <at> gnu.org>
Cc: Tony Zorman via bug-auctex via Bug reporting list for AUCTeX
 <bug-auctex <at> gnu.org>, 69373 <at> debbugs.gnu.org
Subject: Re: bug#69373: 14.0.3; hack-local-variables misbehaves after
 loading AUCTeX
Date: Sun, 25 Feb 2024 17:26:03 +0100
On Sun, Feb 25 2024 10:32, Stefan Monnier wrote:
>> Thanks for the report.  I think this is more an Emacs issue than AUCTeX
>> and should be assigned/fixed there.
>
> Agreed.
> I think the patch below is needed.
> Tony, are you able to recompile your own Emacs to test that patch?
> If so, I'd appreciate if you could try it to confirm that it fixes the
> problem for you as well.

Yup, things are working as expected with that patch applied. Thank you!

  Tony

-- 
Tony Zorman | https://tony-zorman.com/




Reply sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
You have taken responsibility. (Sun, 25 Feb 2024 16:58:01 GMT) Full text and rfc822 format available.

Notification sent to Tony Zorman <soliditsallgood <at> mailbox.org>:
bug acknowledged by developer. (Sun, 25 Feb 2024 16:58:02 GMT) Full text and rfc822 format available.

Message #25 received at 69373-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Tony Zorman <soliditsallgood <at> mailbox.org>
Cc: Tony Zorman via bug-auctex via Bug reporting list for AUCTeX
 <bug-auctex <at> gnu.org>, Arash Esbati <arash <at> gnu.org>, 69373-done <at> debbugs.gnu.org
Subject: Re: bug#69373: 14.0.3; hack-local-variables misbehaves after
 loading AUCTeX
Date: Sun, 25 Feb 2024 11:47:34 -0500
> Yup, things are working as expected with that patch applied. Thank you!

Great, thank you, pushed.

[ That was an oversight from many years ago (until Emacs-28, that code
  was identical to the body of `set-auto-mode-0` and that was short
  enough that it wasn't important to use the function) which I failed to
  noticed when I changed `set-auto-mode-0` for Emacs-29.1.  ]


        Stefan





Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 17:05:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 17:05:04 GMT) Full text and rfc822 format available.

Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 17:44:02 GMT) Full text and rfc822 format available.

Message #34 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Arash Esbati <arash <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Tony Zorman via bug-auctex via Bug reporting list for AUCTeX
 <bug-auctex <at> gnu.org>, Tony Zorman <soliditsallgood <at> mailbox.org>,
 69373 <at> debbugs.gnu.org
Subject: Re: bug#69373: 14.0.3; hack-local-variables misbehaves after
 loading AUCTeX
Date: Sun, 25 Feb 2024 18:19:29 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> Great, thank you, pushed.

Thanks for the quick fix.

Best, Arash




Information forwarded to bug-auctex <at> gnu.org:
bug#69373; Package auctex. (Sun, 25 Feb 2024 18:41:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 27 Mar 2024 11:24:17 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 82 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.