auctex-diffs
[Top][All Lists]
Advanced

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

[AUCTeX-diffs] GNU AUCTeX branch, master, updated. ba1cbd217bc5ed5238c98


From: Arash Esbati
Subject: [AUCTeX-diffs] GNU AUCTeX branch, master, updated. ba1cbd217bc5ed5238c9847f2a46c38f074de8fe
Date: Sun, 21 Nov 2021 08:47:37 -0500 (EST)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU AUCTeX".

The branch, master has been updated
       via  ba1cbd217bc5ed5238c9847f2a46c38f074de8fe (commit)
      from  df0d719f0ceae40d79473ffbeb3499ef8598f0f9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ba1cbd217bc5ed5238c9847f2a46c38f074de8fe
Author: Arash Esbati <arash@gnu.org>
Date:   Sun Nov 21 14:46:20 2021 +0100

    Improve handling of key=vals in style/caption.el
    
    * style/caption.el (LaTeX-caption-key-val-options-local)
    (LaTeX-caption-update-key-val-options): Remove now unused variable
    and function.
    (LaTeX-arg-caption-command): Remove function since the
    functionality is now provided by `TeX-arg-key-val' which is used
    in the hook.
    ("caption"): Use `completing-read' to read a single key from
    provided key=vals for the macros \clearcaptionsetup*?.
    Various docstring fixes.
    
    * style/subcaption.el ("subcaption"): Don't use removed variable
    `LaTeX-caption-key-val-options-local' anymore.
    Various docstring fixes.

diff --git a/style/caption.el b/style/caption.el
index 988a9bb..134157a 100644
--- a/style/caption.el
+++ b/style/caption.el
@@ -1,6 +1,6 @@
 ;;; caption.el --- AUCTeX style for `caption.sty' (v3.4a)  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2015--2020 Free Software Foundation, Inc.
+;; Copyright (C) 2015--2021 Free Software Foundation, Inc.
 
 ;; Author: Arash Esbati <arash@gnu.org>
 ;; Maintainer: auctex-devel@gnu.org
@@ -50,8 +50,11 @@
 
 (declare-function LaTeX-babel-active-languages "babel" ())
 (declare-function LaTeX-polyglossia-active-languages "polyglossia" ())
+(declare-function LaTeX-newfloat-DeclareFloatingEnvironment-list
+                  "newfloat" ())
 
 (defvar LaTeX-bicaption-key-val-options)
+(defvar LaTeX-subcaption-key-val-options)
 
 (defvar LaTeX-caption-key-val-options
   '(("aboveskip")
@@ -113,9 +116,93 @@
     ("width"))
   "Key=value options for caption macros.")
 
-(defvar LaTeX-caption-key-val-options-local nil
-  "Buffer-local key=value options for caption macros.")
-(make-variable-buffer-local 'LaTeX-caption-key-val-options-local)
+(defun LaTeX-caption-key-val-options ()
+  "Return an updated list of key=vals from caption package.
+The key=val list will also contain elements from subcaption
+package if loaded."
+  ;; Update the style list once so we don't run this function more
+  ;; than once:
+  (TeX-style-list)
+  (append
+   ;; Check if `subcaption.el' is loaded:
+   (when (member "subcaption" TeX-active-styles)
+     ;; If loaded, update also the entry for `subrefformat' when
+     ;; processing the `labelformat'.  `subrefformat' keys takes the
+     ;; same values as `labelformat'.  We have to check if we have an
+     ;; entry for `\DeclareCaptionLabelFormat', otherwise there is no
+     ;; need to run this procedure:
+     (if (and (LaTeX-caption-DeclareCaption-list)
+              (string-match
+               "\\\\DeclareCaptionLabelFormat"
+               (mapconcat #'identity
+                          (mapcar #'car
+                                  (LaTeX-caption-DeclareCaption-list))
+                          "|")))
+         (progn
+           (let (result)
+             (dolist (keyvals (LaTeX-caption-DeclareCaption-list) result)
+               (when (string-equal (nth 1 keyvals) "LabelFormat")
+                 (let* ((key "subrefformat")
+                        (val (nth 2 keyvals))
+                        (vals-predefined
+                         (cadr (assoc key
+                                      LaTeX-subcaption-key-val-options)))
+                        (vals-parsed
+                         (cadr (assoc key result))))
+                   (cl-pushnew (list key (TeX-delete-duplicate-strings
+                                          (append vals-predefined
+                                                  vals-parsed
+                                                  (list val))))
+                               result :test #'equal))))))
+       LaTeX-subcaption-key-val-options))
+   ;; Check if `bicaption.el' is loaded:
+   (when (member "bicaption" TeX-active-styles)
+     (append
+      (cond ((and (member "babel" TeX-active-styles)
+                  (LaTeX-babel-active-languages))
+             `(,(list "language"
+                      (butlast (LaTeX-babel-active-languages)))))
+            ((and (member "polyglossia" TeX-active-styles)
+                  (LaTeX-polyglossia-active-languages))
+             `(,(list "language"
+                      (butlast (LaTeX-polyglossia-active-languages)))))
+            (t nil))
+      LaTeX-bicaption-key-val-options))
+   ;; Support for environments defined with `newfloat.sty': These
+   ;; environments are added to `type' and `type*' keys:
+   (when (and (member "newfloat" TeX-active-styles)
+              (LaTeX-newfloat-DeclareFloatingEnvironment-list))
+     (let (result)
+       (dolist (key '("type" "type*") result)
+         (let ((val (mapcar #'car
+                            (LaTeX-newfloat-DeclareFloatingEnvironment-list)))
+               (vals-predefined
+                (cadr (assoc key LaTeX-caption-key-val-options))))
+           (cl-pushnew (list key (TeX-delete-duplicate-strings
+                                  (append vals-predefined
+                                          val)))
+                       result :test #'equal)))))
+   ;; Update to standard key-vals from `caption.el':
+   (when (LaTeX-caption-DeclareCaption-list)
+     (let (result)
+       (dolist (keyvals (LaTeX-caption-DeclareCaption-list) result)
+         (let* ((key (if (string-equal (nth 1 keyvals) "LabelSeparator")
+                         (downcase (substring (nth 1 keyvals) 0 8))
+                       (downcase (nth 1 keyvals))))
+                (val (nth 2 keyvals))
+                (vals-predefined
+                 (cadr (assoc key LaTeX-caption-key-val-options)))
+                (vals-parsed (cadr (assoc key result))))
+           ;; For `\DeclareCaptionOption', only add the value
+           ;; (remember:      key=^^^^^^, val="defined key")
+           (if (string-equal key "option")
+               (cl-pushnew (list val) result :test #'equal)
+             (cl-pushnew (list key (TeX-delete-duplicate-strings
+                                    (append vals-predefined
+                                            vals-parsed
+                                            (list val))))
+                         result :test #'equal))))))
+   LaTeX-caption-key-val-options))
 
 (defvar LaTeX-caption-supported-float-types
   '("figure" "table" "ContinuedFloat"   ; Standard caption.sty
@@ -130,9 +217,9 @@
     "SCfigure" "SCtable"                ; sidecap.sty
     "supertabular" "xtabular"           ; supertabular.sty & xtab.sty
     "threeparttable" "measuredfigure"   ; threeparttable.sty
-    "wrapfigure" "wraptable")           ; wrapfigure
-  "List of float types provided by other LaTeX packages and
-supported by `caption.sty'.")
+    "wrapfigure" "wraptable")           ; wrapfigure.sty
+  "List of float types supported by `caption.sty'.
+These types are provided by other LaTeX packages.")
 
 ;; Setup for various \DeclareCaption's:
 (TeX-auto-add-type "caption-DeclareCaption" "LaTeX")
@@ -149,8 +236,7 @@ supported by `caption.sty'.")
              "[ \t\n\r%]*"
              "{\\([^}]+\\)}")
     (0 1 2) LaTeX-auto-caption-DeclareCaption)
-  "Matches the arguments of different `\\DeclareCaption*' from
-`caption.sty'.")
+  "Matches the arguments of different `\\DeclareCaption*' from `caption.sty'.")
 
 (defun LaTeX-caption-auto-prepare ()
   "Clear `LaTeX-auto-caption-DeclareCaption' before parsing."
@@ -159,75 +245,14 @@ supported by `caption.sty'.")
 (add-hook 'TeX-auto-prepare-hook #'LaTeX-caption-auto-prepare t)
 (add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
 
-(defun LaTeX-caption-update-key-val-options ()
-  "Update the buffer-local key-val options before offering them
-in `caption'-completions."
-  (dolist (keyvals (LaTeX-caption-DeclareCaption-list))
-    (let* ((key (cond ((string-equal (nth 1 keyvals) "LabelSeparator")
-                       (downcase (substring (nth 1 keyvals) 0 8)))
-                      (t (downcase (nth 1 keyvals)))))
-           (val (nth 2 keyvals))
-           (val-match (cdr (assoc key LaTeX-caption-key-val-options-local)))
-           (temp (copy-alist LaTeX-caption-key-val-options-local))
-           ;; If `subcaption.el' is loaded, delete and update also the
-           ;; entry for `subrefformat' when processing the `labelformat'.
-           (opts (progn
-                   (when (and (string-equal key "labelformat")
-                              (boundp 'LaTeX-subcaption-key-val-options))
-                     (setq temp
-                           (assq-delete-all
-                            (car (assoc (caar 
LaTeX-subcaption-key-val-options) temp))
-                            temp)))
-                   (assq-delete-all (car (assoc key temp)) temp))))
-      ;; For `\DeclareCaptionOption', only add the value
-      ;; (remember:      key=^^^^^^, val="defined key")
-      (if (string-equal key "option")
-          (cl-pushnew (list val) opts :test #'equal)
-        ;; For anything but `\DeclareCaptionOption', do the standard
-        ;; procedure.  Again, take care of `subrefformat' for `subcaption.el'.
-        (if val-match
-            (progn
-              (when (and (string-equal key "labelformat")
-                         (boundp 'LaTeX-subcaption-key-val-options))
-                (cl-pushnew (list "subrefformat"
-                                  (TeX-delete-duplicate-strings (apply 
#'append (list val) val-match)))
-                            opts :test #'equal))
-              (cl-pushnew (list key (TeX-delete-duplicate-strings (apply 
#'append (list val) val-match)))
-                          opts :test #'equal))
-          (cl-pushnew (list key (list val)) opts :test #'equal)))
-      (setq LaTeX-caption-key-val-options-local (copy-alist opts))))
-  ;; Support for environments defined with newfloat.sty: These
-  ;; environments are added to "type" and "type*" key:
-  (when (and (member "newfloat" (TeX-style-list))
-             (fboundp 'LaTeX-newfloat-DeclareFloatingEnvironment-list)
-             (LaTeX-newfloat-DeclareFloatingEnvironment-list))
-    (dolist (key '("type" "type*"))
-      (let* ((val (mapcar #'car 
(LaTeX-newfloat-DeclareFloatingEnvironment-list)))
-             (val-match (cdr (assoc key LaTeX-caption-key-val-options-local)))
-             (temp (copy-alist LaTeX-caption-key-val-options-local))
-             (opts (assq-delete-all (car (assoc key temp)) temp)))
-        (cl-pushnew (list key (TeX-delete-duplicate-strings (apply #'append 
val val-match)))
-                    opts :test #'equal)
-        (setq LaTeX-caption-key-val-options-local (copy-alist opts))))))
-
-(defun LaTeX-arg-caption-command (optional &optional prompt)
-  "Insert caption-commands from `caption.sty'. If OPTIONAL,
-indicate `(Optional)' while reading key=val and insert it in
-square brackets.  PROMPT replaces the standard one."
-  (LaTeX-caption-update-key-val-options)
-  (let ((opts (TeX-read-key-val optional
-                                LaTeX-caption-key-val-options-local
-                                prompt)))
-    (TeX-argument-insert opts optional)))
-
 ;; In `LaTeX-caption-DeclareCaption-regexp', we match (0 1 2).  When
 ;; adding a new `Name', we need something unique for `0'-match until
 ;; the next `C-c C-n'.  We mimic that regex-match bei concat'ing the
 ;; elements.  It will vanish upon next `C-c C-n'.
 (defun LaTeX-arg-caption-DeclareCaption (optional format)
-  "Insert various `\\DeclareCaptionFORMAT' commands.  If
-OPTIONAL, insert argument in square brackets.  FORMAT is the
-suffix of the command."
+  "Insert various `\\DeclareCaptionFORMAT' commands.
+If OPTIONAL, insert argument in square brackets.  FORMAT is the
+suffix of the LaTeX macro."
   (let ((name (TeX-read-string "Name: ")))
     (LaTeX-add-caption-DeclareCaptions
      (list (concat "\\DeclareCaption" format "{" name "}")
@@ -251,6 +276,7 @@ suffix of the command."
 
 (defun LaTeX-arg-caption-captionbox (optional &optional star)
   "Query for the arguments of \"\\captionbox\" incl. a label and insert them.
+If OPTIONAL is non-nil, indicate it while reading the caption.
 If STAR is non-nil, then do not query for a \\label and a short
 caption, insert only a caption."
   (let* ((currenv (LaTeX-current-environment))
@@ -339,25 +365,6 @@ STAR is non-nil, do not query for a short-caption and a 
label."
    ;; Add caption to the parser.
    (TeX-auto-add-regexp LaTeX-caption-DeclareCaption-regexp)
 
-   ;; Activate the buffer-local version of key-vals.
-   (setq LaTeX-caption-key-val-options-local
-         (copy-alist LaTeX-caption-key-val-options))
-
-   ;; Append key=vals from bicaption.sty if loaded: "language" key
-   ;; depends on the active languages, it is appended extra where main
-   ;; language is removed from the list:
-   (when (and (member "bicaption" (TeX-style-list))
-              ;; Make sure that one of these packages is loaded:
-              (or (fboundp 'LaTeX-babel-active-languages)
-                  (fboundp 'LaTeX-polyglossia-active-languages)))
-     (setq LaTeX-caption-key-val-options-local
-           (append
-            `(,(list "language"
-                     (or (butlast (LaTeX-babel-active-languages))
-                         (butlast (LaTeX-polyglossia-active-languages)))))
-            LaTeX-bicaption-key-val-options
-            LaTeX-caption-key-val-options-local)))
-
    ;; Caption commands:
    (TeX-add-symbols
     '("caption*" t)
@@ -377,7 +384,7 @@ STAR is non-nil, do not query for a short-caption and a 
label."
                            ([TeX-arg-eval completing-read
                                           (TeX-argument-prompt t nil "Float 
type")
                                           
LaTeX-caption-supported-float-types]))
-      (LaTeX-arg-caption-command))
+      (TeX-arg-key-val (LaTeX-caption-key-val-options)))
 
     '("captionsetup*"
       (TeX-arg-conditional (member "bicaption" (TeX-style-list))
@@ -385,15 +392,19 @@ STAR is non-nil, do not query for a short-caption and a 
label."
                            ([TeX-arg-eval completing-read
                                           (TeX-argument-prompt t nil "Float 
type")
                                           
LaTeX-caption-supported-float-types]))
-      (LaTeX-arg-caption-command))
+      (TeX-arg-key-val (LaTeX-caption-key-val-options)))
 
     '("clearcaptionsetup"
-      [LaTeX-arg-caption-command "Single key"]
+      [TeX-arg-eval completing-read
+                    (TeX-argument-prompt t nil "Single key")
+                    (LaTeX-caption-key-val-options)]
       (TeX-arg-eval completing-read (TeX-argument-prompt nil nil "Float type")
                     LaTeX-caption-supported-float-types))
 
     '("clearcaptionsetup*"
-      [LaTeX-arg-caption-command "Single key"]
+      [TeX-arg-eval completing-read
+                    (TeX-argument-prompt t nil "Single key")
+                    (LaTeX-caption-key-val-options)]
       (TeX-arg-eval completing-read (TeX-argument-prompt nil nil "Float type")
                     LaTeX-caption-supported-float-types))
 
@@ -433,8 +444,8 @@ STAR is non-nil, do not query for a short-caption and a 
label."
 
     '("DeclareCaptionStyle"
       (LaTeX-arg-caption-DeclareCaption "Style")
-      [LaTeX-arg-caption-command "Additional options"]
-      (LaTeX-arg-caption-command "Options"))
+      [TeX-arg-key-val (LaTeX-caption-key-val-options) "Additional options"]
+      (TeX-arg-key-val (LaTeX-caption-key-val-options) "Options"))
 
     '("DeclareCaptionTextFormat"
       (LaTeX-arg-caption-DeclareCaption "TextFormat") t)
diff --git a/style/subcaption.el b/style/subcaption.el
index 5f3122f..e40dc80 100644
--- a/style/subcaption.el
+++ b/style/subcaption.el
@@ -1,6 +1,6 @@
 ;;; subcaption.el --- AUCTeX style for `subcaption.sty' (v1.3)  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2015--2020 Free Software Foundation, Inc.
+;; Copyright (C) 2015--2021 Free Software Foundation, Inc.
 
 ;; Author: Arash Esbati <arash@gnu.org>
 ;; Maintainer: auctex-devel@gnu.org
@@ -38,17 +38,17 @@
 (declare-function font-latex-add-keywords
                   "font-latex"
                   (keywords class))
-
-(defvar LaTeX-caption-key-val-options-local)
 (defvar LaTeX-caption-key-val-options)
 
 (defvar LaTeX-subcaption-key-val-options
   '(("subrefformat" ("default" "empty" "simple" "brace" "parens")))
-  "Key=value options for subcaption package.  This key takes the
-same values as \"labelformat\" from caption package.")
+  "Key=value options for subcaption package.
+This key takes the same values as \"labelformat\" from caption
+package.")
 
 (defun LaTeX-arg-subcaption-subcaption (optional &optional star)
   "Query for the arguments of \"\\subcaption\" incl. a label and insert them.
+If OPTIONAL is non-nil, indicate it while reading the caption.
 If STAR is non-nil, then do not query for a \\label and a short
 caption, insert only a caption."
   (let* (;; \subcaption needs an environment, "minipage" will be
@@ -79,6 +79,7 @@ caption, insert only a caption."
 
 (defun LaTeX-arg-subcaption-subcaptionbox (optional &optional star)
   "Query for the arguments of \"\\subcaptionbox\" incl. a label and insert 
them.
+If OPTIONAL is non-nil, indicate it while reading the caption.
 If STAR is non-nil, then do not query for a \\label and a short
 caption, insert only a caption."
   (let* ((currenv (LaTeX-current-environment))
@@ -117,17 +118,13 @@ caption, insert only a caption."
    ;; Run style hook for caption.el
    (TeX-run-style-hooks "caption")
 
-   ;; Make "subrefformat" available in key-vals of caption.el:
-   (setq LaTeX-caption-key-val-options-local
-         (append LaTeX-subcaption-key-val-options
-                 LaTeX-caption-key-val-options-local))
 
    (TeX-add-symbols
     ;; Basic commands
     '("subcaption"     (LaTeX-arg-subcaption-subcaption))
-    '("subcaption*"    (LaTeX-arg-subcaption-subcaption t))
+    '("subcaption*"    (LaTeX-arg-subcaption-subcaption     t)  )
     '("subcaptionbox"  (LaTeX-arg-subcaption-subcaptionbox) t)
-    '("subcaptionbox*" (LaTeX-arg-subcaption-subcaptionbox t) t)
+    '("subcaptionbox*" (LaTeX-arg-subcaption-subcaptionbox  t) t)
     '("subref"         TeX-arg-ref)
     ;; \subref* is only available with hyperref.sty loaded, we don't
     ;; check if hyperref.el is loaded and make it available directly.

-----------------------------------------------------------------------

Summary of changes:
 style/caption.el    | 207 +++++++++++++++++++++++++++-------------------------
 style/subcaption.el |  19 ++---
 2 files changed, 117 insertions(+), 109 deletions(-)


hooks/post-receive
-- 
GNU AUCTeX



reply via email to

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