Subject: 13.1.0; Company mode throws error when type "\lab" in a latex buffer

From: 吴锐扬 <[email-masked]>
Date: Tue, 22 Feb 2022 00:40:41 -0700

Hi there,

As the title suggests, when working in a latex buffer, if I type
something starting with a backslash which has possible completions, such
as "\lab", "\mak" "\tex", company mode will throw an error. The error
trace back is as follows:

> Debugger entered--Lisp error: (wrong-type-argument stringp (lambda nil (interactive) (insert "\\parens*{") (push-mark) (insert "}") (exchange-point-and-mark)))
>   LaTeX--completion-annotation-from-math-menu(#("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference))))
>   TeX--completion-annotation-function(#("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference))))
>   company-capf--annotation(#("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference))))
>   company-capf(annotation #("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference))))
>   apply(company-capf (annotation #("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference)))))
>   company-call-backend-raw(annotation #("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference))))
>   apply(company-call-backend-raw (annotation #("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference)))))
>   company--force-sync(company-call-backend-raw (annotation #("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference)))) company-capf)
>   company-call-backend(annotation #("label" 0 3 (face (completions-common-part)) 3 4 (face (completions-first-difference))))
>   company--create-lines(0 10)
>   company-pseudo-tooltip-show(1 1 0)
>   company-pseudo-tooltip-show-at-point(5 3)
>   company-pseudo-tooltip-frontend(post-command)
>   company-pseudo-tooltip-unless-just-one-frontend(post-command)
>   company-call-frontends(post-command)
>   company-post-command()
>   company-idle-begin(#<buffer test.tex> #<window 3 on test.tex> 401 5)
>   apply(company-idle-begin (#<buffer test.tex> #<window 3 on test.tex> 401 5))
>   timer-event-handler([t 25108 36699 942896 nil company-idle-begin (#<buffer test.tex> #<window 3 on test.tex> 401 5) nil 0])
>   read-event(nil t 3)
>   sit-for(3)
>   flyspell-check-word-p()
>   flyspell-post-command-hook()

The first line in the output above is because I have the following code
in my init.el file:
(setq LaTeX-math-list '(("C-9" (lambda () (interactive) (insert "\\parens*{") (push-mark) (insert "}") (exchange-point-and-mark)) nil nil)))

The problem seems to be the new function
LaTeX--completion-annotation-from-math-menu does not like the anonymous
function in LaTeX-math-list. Is this a bug or should I just use named
functions in LaTeX-math-list?

Thanks in advance,
Ruiyang Wu

Emacs  : GNU Emacs 27.2 (build 1, aarch64-apple-darwin20.6.0, Carbon Version 164 AppKit 2022.6)
of 2021-11-21
Package: 13.1.0

current state:
==============
(setq
AUCTeX-date "2022-02-21"
window-system 'mac
LaTeX-version "2e"
TeX-style-path '("~/.emacs.d/auctex" "/Users/ruiyangwu/.emacs.d/elpa/auctex-13.1.0/style"
		  "/Users/ruiyangwu/.emacs.d/auctex/auto" "/Users/ruiyangwu/.emacs.d/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 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"))
)