branch: main
commit f9a817b8ac20ea42ee08fbfddc32ad8a756112f9
Author: Arash Esbati <[email protected]>
Commit: Arash Esbati <[email protected]>
Fix parsing for multifile documents
* style/minted.el (LaTeX-minted-newmint-regexp):
* style/minted2.el (LaTeX-minted2-newmint-regexp): Add the entire
match to parsed results. This will prevent deleting items when
`LaTeX-minted-newmint-list' is called where the optional argument
of \newmint* macro is empty.
* style/minted.el (LaTeX-minted-auto-cleanup):
* style/minted2.el (LaTeX-minted2-auto-cleanup): Adjust
accordingly and use the functions `LaTeX-minted-newmint-list' and
`LaTeX-minted2-newmint-list' again. This setup works correctly in
multifile documents. Issue reported by
Dirk Ullrich <[email protected]>:
https://lists.gnu.org/archive/html/auctex-devel/2025-05/msg00000.html
Use `pcase' instead of `cond'.
---
style/minted.el | 111 +++++++++++++++++++++++++--------------------------
style/minted2.el | 119 +++++++++++++++++++++++++++----------------------------
2 files changed, 112 insertions(+), 118 deletions(-)
diff --git a/style/minted.el b/style/minted.el
index 4343cef4..0009aeaa 100644
--- a/style/minted.el
+++ b/style/minted.el
@@ -255,7 +255,7 @@ Update the variable `LaTeX-minted-style-list' if still nil."
(defvar LaTeX-minted-newmint-regexp
'("\\\\newmint\\(edfile\\|inline\\|ed\\)?\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}"
- (2 3 1) LaTeX-auto-minted-newmint)
+ (0 2 3 1) LaTeX-auto-minted-newmint)
"Match the arguments of \\newmint* macros from minted package.")
(defun LaTeX-minted-auto-prepare ()
@@ -264,64 +264,61 @@ Update the variable `LaTeX-minted-style-list' if still
nil."
(defun LaTeX-minted-auto-cleanup ()
"Process the parsed results from minted package."
- (dolist (mint LaTeX-auto-minted-newmint)
- (cond ((string= (nth 2 mint) "ed")
- ;; \newminted{lang}{opts} => new langcode env.
- ;; \newminted[envname]{lang}{opts} => new envname env.
- (let* ((env (if (string-empty-p (car mint))
- (concat (cadr mint) "code")
- (car mint))))
- (LaTeX-add-environments
- (list env
- #'LaTeX-env-args
- [TeX-arg-key-val (LaTeX-minted-key-val-options)]))
- (add-to-list 'LaTeX-indent-environment-list
- `(,env current-indentation) t)
- (add-to-list 'LaTeX-verbatim-environments-local env)))
- ;; \newmintinline{foo}{opts} => \fooinline[key=vals]|code| or
- ;; \fooinline[key=vals]{code}
- ;; \newmintinline[macname]{foo}{opts} => \macname[key=vals]|code| or
- ;; \macname[key=vals]{code}
- ((string= (nth 2 mint) "inline")
- (let ((lang (if (string-empty-p (car mint))
- (concat (cadr mint) "inline")
- (car mint))))
- (TeX-add-symbols `(,lang
- [TeX-arg-key-val
(LaTeX-minted-key-val-options)]
- TeX-arg-verb-delim-or-brace))
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
- (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,lang "[")) 'textual))))
- ;; \newmintedfile{foo}{opts} => \foofile[key=vals]{file-name}
- ;; \newmintedfile[macname]{foo}{opts} =>
\macname[key=vals]{file-name}
- ((string= (nth 2 mint) "edfile")
- (let ((lang (if (string-empty-p (car mint))
- (concat (cadr mint) "file")
- (car mint))))
- (TeX-add-symbols `(,lang
- [TeX-arg-key-val
(LaTeX-minted-key-val-options)]
- TeX-arg-file))))
- ;; \newmint{foo}{opts} => \foo[key=vals]|code| or
- ;; \foo[key=vals]{code}
- ;; \newmint[macname]{foo}{opts} => \macname[key=vals]|code| or
- ;; \macname[key=vals]{code}
- (t
- (let ((lang (if (string-empty-p (car mint))
- (cadr mint)
- (car mint))))
- (TeX-add-symbols `(,lang
- [TeX-arg-key-val
(LaTeX-minted-key-val-options)]
- TeX-arg-verb-delim-or-brace))
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
- (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,lang "[")) 'textual))))))
+ (dolist (mint (LaTeX-minted-newmint-list))
+ (pcase (nth 3 mint)
+ ;; \newminted{lang}{opts} => new langcode env.
+ ;; \newminted[envname]{lang}{opts} => new envname env.
+ ("ed" (let ((env (if (string-empty-p (nth 1 mint))
+ (concat (nth 2 mint) "code")
+ (nth 1 mint))))
+ (LaTeX-add-environments
+ (list env
+ #'LaTeX-env-args
+ [TeX-arg-key-val (LaTeX-minted-key-val-options)]))
+ (add-to-list 'LaTeX-indent-environment-list
+ `(,env current-indentation) t)
+ (add-to-list 'LaTeX-verbatim-environments-local env)))
+ ;; \newmintinline{foo}{opts} => \fooinline[key=vals]|code| or
+ ;; \fooinline[key=vals]{code}
+ ;; \newmintinline[macname]{foo}{opts} => \macname[key=vals]|code| or
+ ;; \macname[key=vals]{code}
+ ("inline" (let ((lang (if (string-empty-p (nth 1 mint))
+ (concat (nth 2 mint) "inline")
+ (nth 1 mint))))
+ (TeX-add-symbols
+ `(,lang [TeX-arg-key-val (LaTeX-minted-key-val-options)]
+ TeX-arg-verb-delim-or-brace))
+ (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
+ (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
+ (when (and (fboundp 'font-latex-add-keywords)
+ (eq TeX-install-font-lock 'font-latex-setup))
+ (font-latex-add-keywords `((,lang "[")) 'textual))))
+ ;; \newmintedfile{foo}{opts} => \foofile[key=vals]{file-name}
+ ;; \newmintedfile[macname]{foo}{opts} => \macname[key=vals]{file-name}
+ ("edfile" (let ((lang (if (string-empty-p (nth 1 mint))
+ (concat (nth 2 mint) "file")
+ (nth 1 mint))))
+ (TeX-add-symbols
+ `(,lang [TeX-arg-key-val (LaTeX-minted-key-val-options)]
+ TeX-arg-file))))
+ ;; \newmint{foo}{opts} => \foo[key=vals]|code| or
+ ;; \foo[key=vals]{code}
+ ;; \newmint[macname]{foo}{opts} => \macname[key=vals]|code| or
+ ;; \macname[key=vals]{code}
+ (_ (let ((lang (if (string-empty-p (nth 1 mint))
+ (nth 2 mint)
+ (nth 1 mint))))
+ (TeX-add-symbols
+ `(,lang [TeX-arg-key-val (LaTeX-minted-key-val-options)]
+ TeX-arg-verb-delim-or-brace))
+ (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
+ (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
+ (when (and (fboundp 'font-latex-add-keywords)
+ (eq TeX-install-font-lock 'font-latex-setup))
+ (font-latex-add-keywords `((,lang "[")) 'textual))))))
;; Refresh font-locking so that the verbatim envs take effect only
;; when there are defined shortcuts:
- (when (and LaTeX-auto-minted-newmint
+ (when (and (LaTeX-minted-newmint-list)
(fboundp 'font-latex-set-syntactic-keywords)
(eq TeX-install-font-lock 'font-latex-setup))
(font-latex-set-syntactic-keywords)))
diff --git a/style/minted2.el b/style/minted2.el
index ec6942fe..f7570dd1 100644
--- a/style/minted2.el
+++ b/style/minted2.el
@@ -232,7 +232,7 @@ Update the variable `LaTeX-minted2-style-list' if still
nil."
(defvar LaTeX-minted2-newmint-regexp
'("\\\\newmint\\(edfile\\|inline\\|ed\\)?\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}"
- (2 3 1) LaTeX-auto-minted2-newmint)
+ (0 2 3 1) LaTeX-auto-minted2-newmint)
"Match the arguments of \\newmint* macros from minted2 package.")
(defun LaTeX-minted2-auto-prepare ()
@@ -241,68 +241,65 @@ Update the variable `LaTeX-minted2-style-list' if still
nil."
(defun LaTeX-minted2-auto-cleanup ()
"Process the parsed results from minted2 package."
- (dolist (mint LaTeX-auto-minted2-newmint)
- (cond ((string= (nth 2 mint) "ed")
- ;; \newminted{lang}{opts} => new langcode and langcode* envs.
- ;; \newminted[envname]{lang}{opts} => new envname/envname* envs.
- (let* ((env (if (string-empty-p (car mint))
- (concat (cadr mint) "code")
- (car mint)))
- (env* (concat env "*")))
- (LaTeX-add-environments (list env))
- (LaTeX-add-environments (list env* #'LaTeX-env-args
- '(TeX-arg-key-val
- (LaTeX-minted2-key-val-options))))
- (add-to-list 'LaTeX-indent-environment-list
- `(,env current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list
- `(,env* current-indentation) t)
- (add-to-list 'LaTeX-verbatim-environments-local env)
- (add-to-list 'LaTeX-verbatim-environments-local env*)))
- ;; \newmintinline{foo}{opts} => \fooinline[key=vals]|code| or
- ;; \fooinline[key=vals]{code}
- ;; \newmintinline[macname]{foo}{opts} => \macname[key=vals]|code| or
- ;; \macname[key=vals]{code}
- ((string= (nth 2 mint) "inline")
- (let ((lang (if (string-empty-p (car mint))
- (concat (cadr mint) "inline")
- (car mint))))
- (TeX-add-symbols `(,lang
- [TeX-arg-key-val
(LaTeX-minted2-key-val-options)]
- TeX-arg-verb-delim-or-brace))
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
- (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,lang "[")) 'textual))))
- ;; \newmintedfile{foo}{opts} => \foofile[key=vals]{file-name}
- ;; \newmintedfile[macname]{foo}{opts} =>
\macname[key=vals]{file-name}
- ((string= (nth 2 mint) "edfile")
- (let ((lang (if (string-empty-p (car mint))
- (concat (cadr mint) "file")
- (car mint))))
- (TeX-add-symbols `(,lang
- [TeX-arg-key-val
(LaTeX-minted2-key-val-options)]
- TeX-arg-file))))
- ;; \newmint{foo}{opts} => \foo[key=vals]|code| or
- ;; \foo[key=vals]{code}
- ;; \newmint[macname]{foo}{opts} => \macname[key=vals]|code| or
- ;; \macname[key=vals]{code}
- (t
- (let ((lang (if (string-empty-p (car mint))
- (cadr mint)
- (car mint))))
- (TeX-add-symbols `(,lang
- [TeX-arg-key-val
(LaTeX-minted2-key-val-options)]
- TeX-arg-verb-delim-or-brace))
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
- (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,lang "[")) 'textual))))))
+ (dolist (mint (LaTeX-minted2-newmint-list))
+ (pcase (nth 3 mint)
+ ;; \newminted{lang}{opts} => new langcode and langcode* envs.
+ ;; \newminted[envname]{lang}{opts} => new envname/envname* envs.
+ ("ed" (let* ((env (if (string-empty-p (nth 1 mint))
+ (concat (nth 2 mint) "code")
+ (nth 1 mint)))
+ (env* (concat env "*")))
+ (LaTeX-add-environments (list env))
+ (LaTeX-add-environments (list env* #'LaTeX-env-args
+ '(TeX-arg-key-val
+
(LaTeX-minted2-key-val-options))))
+ (add-to-list 'LaTeX-indent-environment-list
+ `(,env current-indentation) t)
+ (add-to-list 'LaTeX-indent-environment-list
+ `(,env* current-indentation) t)
+ (add-to-list 'LaTeX-verbatim-environments-local env)
+ (add-to-list 'LaTeX-verbatim-environments-local env*)))
+ ;; \newmintinline{foo}{opts} => \fooinline[key=vals]|code| or
+ ;; \fooinline[key=vals]{code}
+ ;; \newmintinline[macname]{foo}{opts} => \macname[key=vals]|code| or
+ ;; \macname[key=vals]{code}
+ ("inline" (let ((lang (if (string-empty-p (nth 1 mint))
+ (concat (nth 2 mint) "inline")
+ (nth 1 mint))))
+ (TeX-add-symbols
+ `(,lang [TeX-arg-key-val (LaTeX-minted2-key-val-options)]
+ TeX-arg-verb-delim-or-brace))
+ (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
+ (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
+ (when (and (fboundp 'font-latex-add-keywords)
+ (eq TeX-install-font-lock 'font-latex-setup))
+ (font-latex-add-keywords `((,lang "[")) 'textual))))
+ ;; \newmintedfile{foo}{opts} => \foofile[key=vals]{file-name}
+ ;; \newmintedfile[macname]{foo}{opts} => \macname[key=vals]{file-name}
+ ("edfile" (let ((lang (if (string-empty-p (nth 1 mint))
+ (concat (nth 2 mint) "file")
+ (nth 1 mint))))
+ (TeX-add-symbols
+ `(,lang [TeX-arg-key-val (LaTeX-minted2-key-val-options)]
+ TeX-arg-file))))
+ ;; \newmint{foo}{opts} => \foo[key=vals]|code| or
+ ;; \foo[key=vals]{code}
+ ;; \newmint[macname]{foo}{opts} => \macname[key=vals]|code| or
+ ;; \macname[key=vals]{code}
+ (_ (let ((lang (if (string-empty-p (nth 1 mint))
+ (nth 2 mint)
+ (nth 1 mint))))
+ (TeX-add-symbols
+ `(,lang [TeX-arg-key-val (LaTeX-minted2-key-val-options)]
+ TeX-arg-verb-delim-or-brace))
+ (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
+ (add-to-list 'LaTeX-verbatim-macros-with-braces-local lang)
+ (when (and (fboundp 'font-latex-add-keywords)
+ (eq TeX-install-font-lock 'font-latex-setup))
+ (font-latex-add-keywords `((,lang "[")) 'textual))))))
;; Refresh font-locking so that the verbatim envs take effect only
;; when there are defined shortcuts:
- (when (and LaTeX-auto-minted2-newmint
+ (when (and (LaTeX-minted2-newmint-list)
(fboundp 'font-latex-set-syntactic-keywords)
(eq TeX-install-font-lock 'font-latex-setup))
(font-latex-set-syntactic-keywords)))