Subject: 13.1.10; LaTeX-xparse-macro-parse in xparse.el fails when opening a LaTeX file
From: Yuki Nishida <[email-masked]>
To: [email-masked]
Date: Fri, 21 Apr 2023 19:00:26 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

In a particular environment,  opening a LaTeX file for the first time fails with the *Backtrace* buffer that says LaTeX-xparse-macro-parse fails with (scan-error “Unbalanced parentheses” ...)

It seems to be caused by an xparse macro definition containing '(' as a token in an argument's specification like:

\NewDocumentCommand\FOO{>{\SplitArgument{1}{(}}m}

I suspect the implementation interprets '(}' as balanced parentheses and causes the scan-error.

Best regards,
Yuki

Emacs  : GNU Emacs 28.2 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version 10.14.6 (Build 18G95))
of 2022-09-13
Package: 13.1.10

current state:
==============
(setq
AUCTeX-date "2023-03-05"
window-system 'ns
LaTeX-version "2e"
TeX-style-path '("/usr/local/var/auctex" "/Users/nishida/.emacs.d/elpa/auctex-13.1.10/style"
                 "/Users/nishida/.emacs.d/auctex/auto" "/Users/nishida/.emacs.d/auctex/style"
                 "auto" "style")
TeX-auto-save t
TeX-parse-self t
TeX-master nil
TeX-command-list '(("Latexmk" "latexmk %t" TeX-run-TeX nil (latex-mode) :help "Run Latexmk")
                   ("Make" "make -j" TeX-run-TeX nil t)
                   ("TeX"
                    "%(PDF)%(tex) %(file-line-error) %`%(extraopts) %S%(PDFout)%(mode)%' %(output-dir) %t"
                    TeX-run-TeX nil (plain-tex-mode ams-tex-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 (ams-tex-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 ams-tex-mode texinfo-mode context-mode)
                    :help "Run BibTeX")
                   ("Biber" "biber %(output-dir) %s" TeX-run-Biber nil
                    (plain-tex-mode latex-mode doctex-mode ams-tex-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 ams-tex-mode texinfo-mode) :help
                    "Generate PostScript file")
                   ("Dvips" "%(o?)dvips %d -o %f " TeX-run-dvips nil
                    (plain-tex-mode latex-mode doctex-mode ams-tex-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 ams-tex-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 ams-tex-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 ams-tex-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 ams-tex-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 ams-tex-mode texinfo-mode) :help
                    "Run upmendex to create index file")
                   ("Xindy" "texindy %s" TeX-run-command nil
                    (plain-tex-mode latex-mode doctex-mode ams-tex-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"))
)