auctex-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/auctex 38a883d37c 17/30: Save regexp groups in style/mi


From: Tassilo Horn
Subject: [elpa] externals/auctex 38a883d37c 17/30: Save regexp groups in style/minted.el
Date: Thu, 7 Dec 2023 03:51:08 -0500 (EST)

branch: externals/auctex
commit 38a883d37c43f4841342ed3ef8d95040d7cfc010
Author: Arash Esbati <arash@gnu.org>
Commit: Arash Esbati <arash@gnu.org>

    Save regexp groups in style/minted.el
    
    * style/minted.el (LaTeX-minted-pygmentize-program): Add
    docstring.
    (LaTeX-minted-language-list, LaTeX-minted-style-list): Add
    variables to `TeX-normal-mode-reset-list' so the variables aren't
    reset upon regular re-parsing.
    (LaTeX-minted-newmint-regexp): Extend regexp to cover all
    \newmint* variations.  Delete other regexp additions to the
    parser.
    (LaTeX-minted-auto-prepare, LaTeX-minted-auto-cleanup): Adjust
    functions to the above regexp change.
    (LaTeX-minted-add-syntactic-keywords-extra): Improve docstring.
    ("minted"): Don't add deleted regexp's to the parser.
    Accept also braces as delimiters for \mint macro.
---
 style/minted.el | 172 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 86 insertions(+), 86 deletions(-)

diff --git a/style/minted.el b/style/minted.el
index 2f39b782f6..10bc0b357c 100644
--- a/style/minted.el
+++ b/style/minted.el
@@ -176,10 +176,16 @@ prepends them to variable `LaTeX-minted-key-val-options'."
          (push (list key colors) result))))
    LaTeX-minted-key-val-options))
 
-(defvar LaTeX-minted-pygmentize-program (executable-find "pygmentize"))
+(defvar LaTeX-minted-pygmentize-program (executable-find "pygmentize")
+  "Absolute file name to pygmentize program.")
 
 (defvar LaTeX-minted-language-list nil
-  "List containing languages provided by pymentize program.")
+  "List containing languages provided by pymentize program.
+Initialized once at the first prompt for a Pygments language.
+May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.")
+
+;; Add the variable to `TeX-normal-mode-reset-list':
+(add-to-list 'TeX-normal-mode-reset-list 'LaTeX-minted-language-list)
 
 (defun LaTeX-minted-language-list (&rest _ignored)
   "Return a list of languages provided by pymentize program.
@@ -198,7 +204,12 @@ Update the variable `LaTeX-minted-language-list' if still 
nil."
           LaTeX-minted-language-list))))
 
 (defvar LaTeX-minted-style-list nil
-  "List containing styles provided by pymentize program.")
+  "List containing styles provided by pymentize program.
+Initialized once at the first prompt for a Pygments style.
+May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.")
+
+;; Add the variable to `TeX-normal-mode-reset-list':
+(add-to-list 'TeX-normal-mode-reset-list 'LaTeX-minted-style-list)
 
 (defun LaTeX-minted-style-list (&rest _ignored)
   "Return a list of styles provided by pymentize program.
@@ -216,91 +227,83 @@ Update the variable `LaTeX-minted-style-list' if still 
nil."
             (setq LaTeX-minted-style-list styles))
           LaTeX-minted-style-list))))
 
-(defvar LaTeX-minted-auto-newminted nil)
-(defvar LaTeX-minted-newminted-regexp
-  '("\\\\newminted\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}{[^}]*}"
-    (1 2) LaTeX-minted-auto-newminted))
+(TeX-auto-add-type "minted-newmint" "LaTeX")
 
-(defvar LaTeX-minted-auto-newmint nil)
 (defvar LaTeX-minted-newmint-regexp
-  '("\\\\newmint\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}{[^}]*}"
-    (1 2) LaTeX-minted-auto-newmint))
-
-(defvar LaTeX-minted-auto-newmintinline nil)
-(defvar LaTeX-minted-newmintinline-regexp
-  '("\\\\newmintinline\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}{[^}]*}"
-    (1 2) LaTeX-minted-auto-newmintinline))
-
-(defvar LaTeX-minted-auto-newmintedfile nil)
-(defvar LaTeX-minted-newmintedfile-regexp
-  '("\\\\newmintedfile\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}{[^}]*}"
-    (1 2) LaTeX-minted-auto-newmintedfile))
+  
'("\\\\newmint\\(edfile\\|inline\\|ed\\)?\\(?:\\[\\([^]]+\\)\\]\\)?{\\([^}]+\\)}"
+    (2 3 1) LaTeX-auto-minted-newmint)
+  "Match the arguments of \\newmint* macros from minted package.")
 
 (defun LaTeX-minted-auto-prepare ()
-  (setq LaTeX-minted-auto-newminted     nil
-        LaTeX-minted-auto-newmint       nil
-        LaTeX-minted-auto-newmintinline nil
-        LaTeX-minted-auto-newmintedfile nil
-        LaTeX-minted-language-list      nil
-        LaTeX-minted-style-list         nil))
+  "Reset `LaTeX-auto-minted-newmint' before parsing."
+  (setq LaTeX-auto-minted-newmint nil))
 
 (defun LaTeX-minted-auto-cleanup ()
-  ;; \newminted{lang}{opts} => new langcode and langcode* envs.
-  ;; \newminted[envname]{lang}{opts} => new envname/envname* envs.
-  (dolist (name-lang LaTeX-minted-auto-newminted)
-    (let* ((env (if (> (length (car name-lang)) 0)
-                    (car name-lang)
-                  (concat (cadr name-lang) "code")))
-           (env* (concat env "*")))
-      (add-to-list 'LaTeX-auto-environment (list env))
-      (add-to-list 'LaTeX-auto-environment
-                   (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-indent-environment-list `(,env* current-indentation) 
t)
-      (add-to-list 'LaTeX-verbatim-environments-local env)
-      (add-to-list 'LaTeX-verbatim-environments-local env*)))
-  ;; \newmint{foo}{opts} => \foo[key=vals]|code|
-  ;; \newmint[macname]{foo}{opts} => \macname[key=vals]|code|
-  (dolist (name-lang LaTeX-minted-auto-newmint)
-    (let ((lang (if (> (length (car name-lang)) 0)
-                    (car name-lang)
-                  (cadr name-lang))))
-      (add-to-list 'TeX-auto-symbol
-                   `(,lang [TeX-arg-key-val (LaTeX-minted-key-val-options)]
-                           TeX-arg-verb))
-      (add-to-list 'LaTeX-verbatim-macros-with-delims-local lang)
-      (when (and (fboundp 'font-latex-add-keywords)
-                 (eq TeX-install-font-lock 'font-latex-setup))
-        (font-latex-add-keywords `((,lang "[")) 'textual))))
-  ;; \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}
-  (dolist (name-lang LaTeX-minted-auto-newmintinline)
-    (let ((lang (if (> (length (car name-lang)) 0)
-                    (car name-lang)
-                  (concat (cadr name-lang) "inline"))))
-      (add-to-list 'TeX-auto-symbol
-                   `(,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}
-  (dolist (name-lang LaTeX-minted-auto-newmintedfile)
-    (let ((lang (if (> (length (car name-lang)) 0)
-                    (car name-lang)
-                  (concat (cadr name-lang) "file"))))
-      (add-to-list 'TeX-auto-symbol
-                   `(,lang [TeX-arg-key-val (LaTeX-minted-key-val-options)]
-                           TeX-arg-file))))
-  (when (and (fboundp 'font-latex-set-syntactic-keywords)
+  "Process the parsed results from minted package."
+  (dolist (mint (LaTeX-minted-newmint-list))
+    (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-minted-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-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))))))
+  ;; Refresh font-locking so that the verbatim envs take effect only
+  ;; when there are defined shortcuts:
+  (when (and (LaTeX-minted-newmint-list)
+             (fboundp 'font-latex-set-syntactic-keywords)
              (eq TeX-install-font-lock 'font-latex-setup))
-    ;; Refresh font-locking so that the verbatim envs take effect.
     (font-latex-set-syntactic-keywords)))
 
 (add-hook 'TeX-auto-prepare-hook #'LaTeX-minted-auto-prepare t)
@@ -308,7 +311,7 @@ Update the variable `LaTeX-minted-style-list' if still nil."
 (add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
 
 (defun LaTeX-minted-add-syntactic-keywords-extra (type macro)
-  "Add MACRO from minted.sty to `font-latex-syntactic-keywords-extra'.
+  "Add TYPE of MACRO to `font-latex-syntactic-keywords-extra'.
 TYPE is one of the symbols `brace' or `delim' indicating how
 verbatim text is enclosed after the macro.  MACRO is a string or
 a list of strings."
@@ -356,7 +359,7 @@ a list of strings."
     '("mint"
       [TeX-arg-key-val (LaTeX-minted-key-val-options)]
       (TeX-arg-completing-read (LaTeX-minted-language-list) "Language")
-      TeX-arg-verb)
+      TeX-arg-verb-delim-or-brace)
     '("mintinline"
       [TeX-arg-key-val (LaTeX-minted-key-val-options)]
       (TeX-arg-completing-read (LaTeX-minted-language-list) "Language")
@@ -417,10 +420,7 @@ a list of strings."
         '(("listing" ?l "lst:" "~\\ref{%s}" caption nil nil)))))
 
    ;; Add to the auto parser
-   (TeX-auto-add-regexp LaTeX-minted-newminted-regexp)
    (TeX-auto-add-regexp LaTeX-minted-newmint-regexp)
-   (TeX-auto-add-regexp LaTeX-minted-newmintinline-regexp)
-   (TeX-auto-add-regexp LaTeX-minted-newmintedfile-regexp)
 
    ;; Filling
    (add-to-list (make-local-variable 'LaTeX-indent-environment-list)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]