Hi,

When `TeX-debug-warnings' and `TeX-suppress-ignored-warnings' are enabled, 
invoking `TeX-previous-error' can lead to an infinite loop in `TeX-parse-TeX'. 
As the `unless' condition always fails, `arg' is never incremented to 0, hence 
the value of `TeX-error-last-visited' decrements forever. There are no issues 
when invoking `TeX-next-error'.

The attached patch seems to fix this bug with `TeX-previous-error'.

Kind regards,

Bram Adams


Emacs  : GNU Emacs 30.1 (build 1, aarch64-apple-darwin24.3.0, NS appkit-2575.40 
Version 15.3 (Build 24D60))
 of 2025-03-06
Package: 14.0.9

current state:
==============
(setq
 window-system 'ns
 LaTeX-version "2e"
 TeX-style-path '("~/.emacs.d/auctex/" "~/.emacs.d/elpaca/builds/auctex/style" 
"~/.emacs.d/auctex/auto" "~/.emacs.d/auctex/style" "auto" "style")
 TeX-auto-save nil
 TeX-parse-self nil
 TeX-master t
 TeX-command-list '(("LatexMk" "latexmk %(-PDF)%S%(mode) %(file-line-error) 
%(extraopts) %t" TeX-run-latexmk nil (LaTeX-mode plain-tex-mode latex-mode 
doctex-mode) :help "Run LatexMk") ("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 %(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") ("LaTeXMk" "latexmk %(latexmk-out) %(file-line-error) 
%(output-dir) %`%(extraopts) %S%(mode)%' %t" TeX-run-TeX nil (LaTeX-mode 
docTeX-mode) :help "Run LaTeXMk")
                    ("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"))
 )

diff --git a/tex.el b/tex.el
index 5a3345a..8f00bbc 100644
--- a/tex.el
+++ b/tex.el
@@ -9491,13 +9491,16 @@ already in an Emacs buffer) and the cursor is placed at the error."
                       (1- TeX-error-last-visited))
                     item (nth TeX-error-last-visited TeX-error-list))
               ;; Increase or decrease `arg' only if the warning isn't to be
-              ;; skipped.
-              (unless (TeX-error-list-skip-warning-p (nth 0 item) (nth 10 item))
-                ;; Note: `signum' is a function from `cl' library, do not be
-                ;; tempted to use it.
-                (setq arg (if (> arg 0)
-                              (1- arg)
-                            (1+ arg)))))
+              ;; skipped, or `TeX-error-last-visited' has dropped below 0
+              ;; with a negative `arg'.
+              (if (or (and (< arg 0)
+                           (< TeX-error-last-visited 0))
+                      (not (TeX-error-list-skip-warning-p (nth 0 item) (nth 10 item))))
+                  ;; Note: `signum' is a function from `cl' library, do not be
+                  ;; tempted to use it.
+                  (setq arg (if (> arg 0)
+                                (1- arg)
+                              (1+ arg)))))
             (if (< TeX-error-last-visited -1)
                 (setq TeX-error-last-visited -1))
             (cond ((or (null item)
_______________________________________________
bug-auctex mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-auctex

Reply via email to