emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/auctex 40ba5b6 37/67: Improve handling of `TeX-insert-m


From: Tassilo Horn
Subject: [elpa] externals/auctex 40ba5b6 37/67: Improve handling of `TeX-insert-macro-default-style' in styles
Date: Fri, 8 Feb 2019 11:40:36 -0500 (EST)

branch: externals/auctex
commit 40ba5b6ca1623bc270d14eaeb5a9f6a197a3ced2
Author: Arash Esbati <address@hidden>
Commit: Arash Esbati <address@hidden>

    Improve handling of `TeX-insert-macro-default-style' in styles
    
    * latex.el (LaTeX-check-insert-macro-default-style): Add new
    macro.  This macro is intended for more complex functions in style
    files querying multiple optional and mandatory arguments and
    obeying the values of `TeX-insert-macro-default-style' and
    `current-prefix-arg'.
    
    * tex.el (TeX-parse-arguments): Add a comment about the new macro.
    
    * style/bicaption.el (LaTeX-arg-bicaption-bicaption):
    * style/caption.el (LaTeX-arg-caption-captionbox):
    * style/color.el (TeX-arg-color, TeX-arg-color-fcolorbox):
    * style/floatrow.el (LaTeX-floatrow-arg-floatbox):
    * style/xcolor.el (TeX-arg-xcolor-definecolor)
    (TeX-arg-xcolor-definecolorset, TeX-arg-xcolor)
    (TeX-arg-xcolor-fcolorbox): Use
    `LaTeX-check-insert-macro-default-style'.
---
 latex.el           |  20 +++++
 style/bicaption.el |  30 +++++---
 style/caption.el   |  31 ++++----
 style/color.el     | 218 ++++++++++++++++++++++++++++-------------------------
 style/floatrow.el  |  45 ++++++-----
 style/xcolor.el    |  64 ++++++++++------
 tex.el             |   3 +
 7 files changed, 243 insertions(+), 168 deletions(-)

diff --git a/latex.el b/latex.el
index b1d2901..3b8cc5c 100644
--- a/latex.el
+++ b/latex.el
@@ -6620,6 +6620,26 @@ function would return non-nil and `(match-string 1)' 
would return
                      (1+ any-col)
                    beg-col))))))))
 
+;; Utilities:
+
+(defmacro LaTeX-check-insert-macro-default-style (&rest body)
+  "Check for values of `TeX-insert-macro-default-style' and 
`current-prefix-arg'.
+This is a utility macro with code taken from
+`TeX-parse-arguments'.  It should be used inside more complex
+function within AUCTeX style files where optional and mandatory
+arguments are queried and inserted.  For examples, check the
+functions `TeX-arg-color' (style/color.el) or
+`LaTeX-arg-bicaption-bicaption' (style/bicaption.el)."
+  `(unless (if (eq TeX-insert-macro-default-style 'show-all-optional-args)
+              (equal current-prefix-arg '(4))
+            (or
+             (and (eq TeX-insert-macro-default-style 'show-optional-args)
+                  (equal current-prefix-arg '(4)))
+             (and (eq TeX-insert-macro-default-style 'mandatory-args-only)
+                  (null (equal current-prefix-arg '(4))))
+             last-optional-rejected))
+     ,@body))
+
 (provide 'latex)
 
 ;;; latex.el ends here
diff --git a/style/bicaption.el b/style/bicaption.el
index 47b139b..7bf4d1a 100644
--- a/style/bicaption.el
+++ b/style/bicaption.el
@@ -1,6 +1,6 @@
 ;;; bicaption.el --- AUCTeX style for `bicaption.sty' (v1.1-158)
 
-;; Copyright (C) 2016, 2017 Free Software Foundation, Inc.
+;; Copyright (C) 2016--2018 Free Software Foundation, Inc.
 
 ;; Author: Arash Esbati <address@hidden>
 ;; Maintainer: address@hidden
@@ -34,6 +34,9 @@
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'latex))
+
 (defvar LaTeX-bicaption-key-val-options
   '(("bi-lang" ("first" "second" "both"))
     ("bi-singlelinecheck" ("false" "no" "off" "0" "true" "yes" "on" "1"))
@@ -50,6 +53,9 @@ If CAP-BOX is non-nil, also query and include optional 
arguments
 for the box command.  If LABEL-INSIDE is non-nil, insert \\label
 inside the first mandatory argument, otherwise after all
 arguments."
+  ;; \bicaption   [<list entry #1>]{<heading #1>}[<list entry #2>]{<heading 
#2>}
+  ;; \bicaptionbox[<list entry #1>]{<heading #1>}[<list entry #2>]{<heading 
#2>}
+  ;;              [<width>][<inner-pos>]{<contents>}
   (let* (;; \bisubcaption needs an environment, "minipage" will be
         ;; popular.  If so, check next higher environment to find out
         ;; where we are
@@ -100,15 +106,19 @@ arguments."
     (when cap-box
       (let* ((TeX-arg-opening-brace "[")
             (TeX-arg-closing-brace "]")
-            (width (completing-read (TeX-argument-prompt t nil "Width")
-                                    (mapcar (lambda (elt) (concat TeX-esc (car 
elt)))
-                                            (LaTeX-length-list))))
-            (inpos (if (and width (not (string-equal width "")))
-                       (completing-read (TeX-argument-prompt t nil "Inner 
position")
-                                        '("c" "l" "r" "s"))
-                     "")))
-       (TeX-argument-insert width t)
-       (TeX-argument-insert inpos t)))
+            (last-optional-rejected nil)
+            (width (LaTeX-check-insert-macro-default-style
+                    (completing-read (TeX-argument-prompt t nil "Width")
+                                     (mapcar (lambda (elt) (concat TeX-esc 
(car elt)))
+                                             (LaTeX-length-list)))))
+            (last-optional-rejected (and width (string= width "")))
+            (inpos (LaTeX-check-insert-macro-default-style
+                    (if (and width (not (string-equal width "")))
+                        (completing-read (TeX-argument-prompt t nil "Inner 
position")
+                                         '("c" "l" "r" "s"))
+                      ""))))
+       (and width (TeX-argument-insert width t))
+       (and inpos (TeX-argument-insert inpos t))))
     (LaTeX-fill-paragraph)
     ;; Insert label -- a new line is inserted only if label is there:
     (when (and (not label-inside) (not star)
diff --git a/style/caption.el b/style/caption.el
index f23e59d..0b2cac7 100644
--- a/style/caption.el
+++ b/style/caption.el
@@ -1,6 +1,6 @@
 ;;; caption.el --- AUCTeX style for `caption.sty' (v3.3-111)
 
-;; Copyright (C) 2015--2017 Free Software Foundation, Inc.
+;; Copyright (C) 2015--2018 Free Software Foundation, Inc.
 
 ;; Author: Arash Esbati <address@hidden>
 ;; Maintainer: address@hidden
@@ -35,7 +35,8 @@
 ;;; Code:
 
 (eval-when-compile
-  (require 'cl-lib))
+  (require 'cl-lib)
+  (require 'latex))
 
 ;; Needed for auto-parsing.
 (require 'tex)
@@ -176,10 +177,10 @@ in `caption'-completions."
              (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)))
+                                 (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))
+                         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
@@ -255,15 +256,19 @@ caption, insert only a caption."
     (insert TeX-grcl))
   (let* ((TeX-arg-opening-brace "[")
         (TeX-arg-closing-brace "]")
-        (width (completing-read (TeX-argument-prompt t nil "Width")
-                                (mapcar (lambda (elt) (concat TeX-esc (car 
elt)))
-                                        (LaTeX-length-list))))
-        (inpos (if (and width (not (string-equal width "")))
-                   (completing-read (TeX-argument-prompt t nil "Inner 
position")
-                                    '("c" "l" "r" "s"))
-                 "")))
-    (TeX-argument-insert width t)
-    (TeX-argument-insert inpos t))
+        (last-optional-rejected nil)
+        (width (LaTeX-check-insert-macro-default-style
+                (completing-read (TeX-argument-prompt t nil "Width")
+                                 (mapcar (lambda (elt) (concat TeX-esc (car 
elt)))
+                                         (LaTeX-length-list)))))
+        (last-optional-rejected (and width (string= width "")))
+        (inpos (LaTeX-check-insert-macro-default-style
+                (if (and width (not (string-equal width "")))
+                    (completing-read (TeX-argument-prompt t nil "Inner 
position")
+                                     '("c" "l" "r" "s"))
+                  ""))))
+    (and width (TeX-argument-insert width t))
+    (and inpos (TeX-argument-insert inpos t)))
   ;; Fill the paragraph before inserting {}.  We can use
   ;; `LaTeX-fill-paragraph' without messing up the code since
   ;; \caption starts a new paragraph with AUCTeX
diff --git a/style/color.el b/style/color.el
index 0a9c74a..753ab7c 100644
--- a/style/color.el
+++ b/style/color.el
@@ -1,6 +1,6 @@
 ;;; color.el --- AUCTeX style for `color.sty' (v1.1a)
 
-;; Copyright (C) 2015--2017 Free Software Foundation, Inc.
+;; Copyright (C) 2015--2018 Free Software Foundation, Inc.
 
 ;; Author: Arash Esbati <address@hidden>
 ;; Maintainer: address@hidden
@@ -34,6 +34,9 @@
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'latex))
+
 (defvar LaTeX-color-colour-models
   '("cmyk" "gray" "named" "rgb")
   "List of color models provided by `color.sty'.")
@@ -118,111 +121,124 @@
 
 (defun TeX-arg-color (optional &optional prompt)
   "Insert arguments of various color commands from `color.sty'."
-  ;; \color{<name>} or \color[<model>]{<color spec>}
-  ;; First, ask for <model>.  `named' is removed here from completion
-  ;; if package option is not given
-  (let ((model (completing-read
-               (TeX-argument-prompt t prompt "Color model")
-               (if (not (or (LaTeX-provided-package-options-member "color" 
"dvips")
-                            (LaTeX-provided-package-options-member "color" 
"dvipsnames")))
-                   (remove "named" LaTeX-color-colour-models)
-                 LaTeX-color-colour-models))))
-    (if (string-equal model "")
-       ;; if empty, ask for <name> with completion
-       (let ((color (completing-read
-                     (TeX-argument-prompt optional prompt "Color name")
-                     (LaTeX-color-definecolor-list))))
-         (TeX-argument-insert color optional))
-      ;; if not empty, insert [<model>] and proceed
-      (insert (concat LaTeX-optop model LaTeX-optcl))
-      (cond (;; <cmyk> model
-            (string-equal model "cmyk")
-            (let ((cyan    (TeX-read-string "Value Cyan (between 0,1): "))
-                  (magenta (TeX-read-string "Value Magenta (between 0,1): "))
-                  (yellow  (TeX-read-string "Value Yellow (between 0,1): "))
-                  (black   (TeX-read-string "Value Black (between 0,1): ")))
-              (TeX-argument-insert
-               (concat cyan "," magenta "," yellow "," black) optional)))
-           ;; <rgb> model
-           ((string-equal model "rgb")
-            (let ((red   (TeX-read-string "Value Red (between 0,1): "))
-                  (green (TeX-read-string "Value Green (between 0,1): "))
-                  (blue  (TeX-read-string "Value Blue (between 0,1): ")))
-              (TeX-argument-insert
-               (concat red "," green "," blue) optional)))
-           ;; <gray> model
-           ((string-equal model "gray")
-            (let ((grayness (TeX-read-string "Value Gray (between 0,1): ")))
-              (TeX-argument-insert grayness optional)))
-           ;; <named> model; allowed are dvipsnames.
-           ((string-equal model "named")
-            (let ((color (completing-read "Named Color: "
-                                          LaTeX-color-dvipsnames-colors)))
-              (TeX-argument-insert color optional)))))))
+  ;; \color{<name>} or \color[<model>]{<color spec>} First, ask for
+  ;; <model>.  This happens depending on the values of
+  ;; `TeX-insert-macro-default-style' and if `current-prefix-arg'.
+  ;; `named' is removed here from completion if package option is not
+  ;; given.
+  (let* ((last-optional-rejected nil)
+         (model (LaTeX-check-insert-macro-default-style
+                 (completing-read
+                  (TeX-argument-prompt t prompt "Color model")
+                  (if (not (or (LaTeX-provided-package-options-member "color" 
"dvips")
+                               (LaTeX-provided-package-options-member "color" 
"dvipsnames")))
+                      (remove "named" LaTeX-color-colour-models)
+                    LaTeX-color-colour-models)))))
+    ;; If <model> is non-nil because of 'mandatory-args-only and not
+    ;; an empty string, then insert it
+    (if (and model (not (string-equal model "")))
+        (progn
+          (insert (concat LaTeX-optop model LaTeX-optcl))
+          (cond (;; <cmyk> model
+                 (string-equal model "cmyk")
+                 (let ((cyan    (TeX-read-string "Value Cyan (between 0,1): "))
+                       (magenta (TeX-read-string "Value Magenta (between 0,1): 
"))
+                       (yellow  (TeX-read-string "Value Yellow (between 0,1): 
"))
+                       (black   (TeX-read-string "Value Black (between 0,1): 
")))
+                   (TeX-argument-insert
+                    (concat cyan "," magenta "," yellow "," black) optional)))
+                ;; <rgb> model
+                ((string-equal model "rgb")
+                 (let ((red   (TeX-read-string "Value Red (between 0,1): "))
+                       (green (TeX-read-string "Value Green (between 0,1): "))
+                       (blue  (TeX-read-string "Value Blue (between 0,1): ")))
+                   (TeX-argument-insert
+                    (concat red "," green "," blue) optional)))
+                ;; <gray> model
+                ((string-equal model "gray")
+                 (let ((grayness (TeX-read-string "Value Gray (between 0,1): 
")))
+                   (TeX-argument-insert grayness optional)))
+                ;; <named> model; allowed are dvipsnames.
+                ((string-equal model "named")
+                 (let ((color (completing-read "Named Color: "
+                                               LaTeX-color-dvipsnames-colors)))
+                   (TeX-argument-insert color optional)))))
+      ;; if empty, ask for <name> with completion
+      (let ((color (completing-read
+                    (TeX-argument-prompt optional prompt "Color name")
+                    (LaTeX-color-definecolor-list))))
+        (TeX-argument-insert color optional)))))
 
 (defun TeX-arg-color-fcolorbox (optional &optional prompt)
   "Insert arguments of `\\fcolorbox' from `color.sty'. "
   ;; \fcolorbox{<frame color name>}{<box color name>}{<text>} or
   ;; \fcolorbox[<model>]{<frame color spec>}{<box color spec>}{<text>}
-  ;; First, ask for <model>; remove `named' again
-  (let ((model (completing-read
-               (TeX-argument-prompt t prompt "Color model")
-               (if (not (or (LaTeX-provided-package-options-member "color" 
"dvips")
-                            (LaTeX-provided-package-options-member "color" 
"dvipsnames")))
-                   (remove "named" LaTeX-color-colour-models)
-                 LaTeX-color-colour-models))))
-    (if (string-equal model "")
-       ;; if empty, ask for <frame color spce> with completion
-       (let ((frame-color (completing-read
-                           (TeX-argument-prompt optional prompt "Frame color 
name")
-                           (LaTeX-color-definecolor-list)))
-             (box-color   (completing-read
-                           (TeX-argument-prompt optional prompt "Box color 
name")
-                           (LaTeX-color-definecolor-list))))
-         (TeX-argument-insert frame-color optional)
-         (TeX-argument-insert box-color   optional))
-      ;; if not empty, insert [<model>] and cater for 2 mandatory args.
-      (insert (concat LaTeX-optop model LaTeX-optcl))
-      (cond (;; <cmyk> model
-            (string-equal model "cmyk")
-            (let ((cyan    (TeX-read-string "Frame value Cyan (between 0,1): 
"))
-                  (magenta (TeX-read-string "Frame value Magenta (between 
0,1): "))
-                  (yellow  (TeX-read-string "Frame value Yellow (between 0,1): 
"))
-                  (black   (TeX-read-string "Frame value Black (between 0,1): 
")))
-              (TeX-argument-insert
-               (concat cyan "," magenta "," yellow "," black) optional))
-            (let ((cyan    (TeX-read-string "Box value Cyan (between 0,1): "))
-                  (magenta (TeX-read-string "Box value Magenta (between 0,1): 
"))
-                  (yellow  (TeX-read-string "Box value Yellow (between 0,1): 
"))
-                  (black   (TeX-read-string "Box value Black (between 0,1): 
")))
-              (TeX-argument-insert
-               (concat cyan "," magenta "," yellow "," black) optional)))
-           ;; <rgb> model
-           ((string-equal model "rgb")
-            (let ((red   (TeX-read-string "Frame value Red (between 0,1): "))
-                  (green (TeX-read-string "Frame value Green (between 0,1): "))
-                  (blue  (TeX-read-string "Frame value Blue (between 0,1): ")))
-              (TeX-argument-insert
-               (concat red "," green "," blue) optional))
-            (let ((red   (TeX-read-string "Box value Red (between 0,1): "))
-                  (green (TeX-read-string "Box value Green (between 0,1): "))
-                  (blue  (TeX-read-string "box value Blue (between 0,1): ")))
-              (TeX-argument-insert
-               (concat red "," green "," blue) optional)))
-           ;; <gray> model
-           ((string-equal model "gray")
-            (let ((grayness (TeX-read-string "Frame value Gray (between 0,1): 
")))
-              (TeX-argument-insert grayness optional))
-            (let ((grayness (TeX-read-string "Box value Gray (between 0,1): 
")))
-              (TeX-argument-insert grayness optional)))
-           ;; <named> model; allowed are dvipsnames.
-           ((string-equal model "named")
-            (let ((color (completing-read "Frame named Color: "
-                                          LaTeX-color-dvipsnames-colors)))
-              (TeX-argument-insert color optional))
-            (let ((color (completing-read "Box named Color: "
-                                          LaTeX-color-dvipsnames-colors)))
-              (TeX-argument-insert color optional)))))))
+  ;; First, ask for <model> depending on
+  ;; `TeX-insert-macro-default-style' and `current-prefix-arg'.
+  ;; Remove `named' if necessary.
+  (let* ((last-optional-rejected nil)
+        (model (LaTeX-check-insert-macro-default-style
+                 (completing-read
+                  (TeX-argument-prompt t prompt "Color model")
+                  (if (not (or (LaTeX-provided-package-options-member "color" 
"dvips")
+                               (LaTeX-provided-package-options-member "color" 
"dvipsnames")))
+                      (remove "named" LaTeX-color-colour-models)
+                    LaTeX-color-colour-models)))))
+    ;; If <model> is non-nil because of 'mandatory-args-only and not
+    ;; an empty string, then insert [<model>] and cater for 2
+    ;; mandatory args.
+    (if (and model (not (string-equal model "")))
+       (progn
+         (insert (concat LaTeX-optop model LaTeX-optcl))
+         (cond (;; <cmyk> model
+                (string-equal model "cmyk")
+                (let ((cyan    (TeX-read-string "Frame value Cyan (between 
0,1): "))
+                      (magenta (TeX-read-string "Frame value Magenta (between 
0,1): "))
+                      (yellow  (TeX-read-string "Frame value Yellow (between 
0,1): "))
+                      (black   (TeX-read-string "Frame value Black (between 
0,1): ")))
+                  (TeX-argument-insert
+                   (concat cyan "," magenta "," yellow "," black) optional))
+                (let ((cyan    (TeX-read-string "Box value Cyan (between 0,1): 
"))
+                      (magenta (TeX-read-string "Box value Magenta (between 
0,1): "))
+                      (yellow  (TeX-read-string "Box value Yellow (between 
0,1): "))
+                      (black   (TeX-read-string "Box value Black (between 
0,1): ")))
+                  (TeX-argument-insert
+                   (concat cyan "," magenta "," yellow "," black) optional)))
+               ;; <rgb> model
+               ((string-equal model "rgb")
+                (let ((red   (TeX-read-string "Frame value Red (between 0,1): 
"))
+                      (green (TeX-read-string "Frame value Green (between 
0,1): "))
+                      (blue  (TeX-read-string "Frame value Blue (between 0,1): 
")))
+                  (TeX-argument-insert
+                   (concat red "," green "," blue) optional))
+                (let ((red   (TeX-read-string "Box value Red (between 0,1): "))
+                      (green (TeX-read-string "Box value Green (between 0,1): 
"))
+                      (blue  (TeX-read-string "box value Blue (between 0,1): 
")))
+                  (TeX-argument-insert
+                   (concat red "," green "," blue) optional)))
+               ;; <gray> model
+               ((string-equal model "gray")
+                (let ((grayness (TeX-read-string "Frame value Gray (between 
0,1): ")))
+                  (TeX-argument-insert grayness optional))
+                (let ((grayness (TeX-read-string "Box value Gray (between 
0,1): ")))
+                  (TeX-argument-insert grayness optional)))
+               ;; <named> model; allowed are dvipsnames.
+               ((string-equal model "named")
+                (let ((color (completing-read "Frame named Color: "
+                                              LaTeX-color-dvipsnames-colors)))
+                  (TeX-argument-insert color optional))
+                (let ((color (completing-read "Box named Color: "
+                                              LaTeX-color-dvipsnames-colors)))
+                  (TeX-argument-insert color optional)))))
+      ;; if empty, ask for {<frame color spce>}{<box color name>} with 
completion
+      (let ((frame-color (completing-read
+                         (TeX-argument-prompt optional prompt "Frame color 
name")
+                         (LaTeX-color-definecolor-list)))
+           (box-color   (completing-read
+                         (TeX-argument-prompt optional prompt "Box color name")
+                         (LaTeX-color-definecolor-list))))
+       (TeX-argument-insert frame-color optional)
+       (TeX-argument-insert box-color   optional)))))
 
 (TeX-add-style-hook
  "color"
diff --git a/style/floatrow.el b/style/floatrow.el
index 4b917b2..8032cd0 100644
--- a/style/floatrow.el
+++ b/style/floatrow.el
@@ -58,9 +58,10 @@
 
 ;;; Code:
 
-;; Needed for compiling `cl-pushnew':
+;; Needed for compiling `cl-pushnew' & 
`LaTeX-check-insert-macro-default-style':
 (eval-when-compile
-  (require 'cl-lib))
+  (require 'cl-lib)
+  (require 'latex))
 
 ;; Needed for auto-parsing.
 (require 'tex)
@@ -337,27 +338,33 @@ If OPTIONAL is non-nil, indicate optional argument during 
query."
   ;; `TeX-argument-insert':
   (let* ((TeX-arg-opening-brace "[")
         (TeX-arg-closing-brace "]")
-        (width (completing-read
-                (TeX-argument-prompt t nil "Width")
-                (mapcar (lambda (x) (concat TeX-esc (car x)))
-                        (LaTeX-length-list))))
-        (height (completing-read
-                 (TeX-argument-prompt t nil "Height")
-                (mapcar (lambda (x) (concat TeX-esc (car x)))
-                        (LaTeX-length-list))))
-        (vertpos (if (string= height "")
-                     ""
-                   (completing-read
-                    (TeX-argument-prompt t nil "Vertical alignment")
-                    '("t" "c" "b" "s")))))
-    (TeX-argument-insert width t)
+        (last-optional-rejected nil)
+        (width (LaTeX-check-insert-macro-default-style
+                (completing-read
+                 (TeX-argument-prompt t nil "Width")
+                 (mapcar (lambda (x) (concat TeX-esc (car x)))
+                         (LaTeX-length-list)))))
+        (last-optional-rejected (and width (string= width "")))
+        (height (LaTeX-check-insert-macro-default-style
+                 (completing-read
+                  (TeX-argument-prompt t nil "Height")
+                  (mapcar (lambda (x) (concat TeX-esc (car x)))
+                          (LaTeX-length-list)))))
+        (last-optional-rejected (and height (string= height "")))
+        (vertpos (LaTeX-check-insert-macro-default-style
+                  (if (string= height "")
+                      ""
+                    (completing-read
+                     (TeX-argument-prompt t nil "Vertical alignment")
+                     '("t" "c" "b" "s"))))))
+    (and width (TeX-argument-insert width t))
     ;; Insert an extra pair of brackets if only `height' is given,
     ;; otherwise it will become `width'
-    (when (and (string= width "")
+    (when (and width (string= width "")
               height (not (string= height "")))
       (insert "[]"))
-    (TeX-argument-insert height t)
-    (TeX-argument-insert vertpos t))
+    (and (TeX-argument-insert height t))
+    (and (TeX-argument-insert vertpos t)))
   ;; Now query for the (short-)caption.  Also check for the
   ;; float-type; if we're inside (sub)?floatrow*?, then check for the
   ;; next outer environment:
diff --git a/style/xcolor.el b/style/xcolor.el
index 174493f..f7b1b5b 100644
--- a/style/xcolor.el
+++ b/style/xcolor.el
@@ -44,6 +44,9 @@
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'latex))
+
 (defvar LaTeX-xcolor-core-color-models
   '("rgb" "cmy" "cmyk" "hsb" "gray")
   "List of core color models provided by xcolor.sty.")
@@ -274,12 +277,13 @@ xcolor package.")
 (add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
 
 (defun TeX-arg-xcolor-definecolor (optional)
-  "Insert arguments of \\definecolor and similar macros from
-xcolor.sty."
+  "Insert arguments of \\definecolor and similar macros from xcolor.sty."
   ;; \definecolor[<type>]{<name>}{<model-list>}{<spec-list>}
-  (let* ((xcoltype  (completing-read
-                    (TeX-argument-prompt t nil "Type")
-                    LaTeX-xcolor-type-color-models))
+  (let* ((last-optional-rejected nil)
+        (xcoltype  (LaTeX-check-insert-macro-default-style
+                    (completing-read
+                     (TeX-argument-prompt t nil "Type")
+                     LaTeX-xcolor-type-color-models)))
         (xcolname  (TeX-read-string
                     (TeX-argument-prompt optional nil "Color name")))
         (xcolmodel (completing-read
@@ -301,14 +305,15 @@ xcolor.sty."
     (TeX-argument-insert xcolspec optional)))
 
 (defun TeX-arg-xcolor-definecolorset (optional)
-  "Insert arguments of \\definecolorset and similar macros from
-xcolor.sty."
-  (let ((xcoltype (completing-read
-                  (TeX-argument-prompt t nil "Type")
-                  LaTeX-xcolor-type-color-models))
-       (xcolmodel (completing-read
-                   (TeX-argument-prompt optional nil "Model")
-                   (LaTeX-xcolor-color-models t))))
+  "Insert arguments of \\definecolorset and similar macros from xcolor.sty."
+  (let* ((last-optional-rejected nil)
+        (xcoltype (LaTeX-check-insert-macro-default-style
+                   (completing-read
+                    (TeX-argument-prompt t nil "Type")
+                    LaTeX-xcolor-type-color-models)))
+        (xcolmodel (completing-read
+                    (TeX-argument-prompt optional nil "Model")
+                    (LaTeX-xcolor-color-models t))))
     (when (and xcoltype (not (string= xcoltype "")))
       (insert (format "[%s]" xcoltype)))
     (TeX-argument-insert xcolmodel optional)))
@@ -316,9 +321,11 @@ xcolor.sty."
 (defun TeX-arg-xcolor (optional)
   "Insert arguments of various color commands from xcolor.sty."
   ;; \color{<name>} or \color[<model-list>]{<spec-list>}
-  (let* ((xcolmodel (completing-read
-                    (TeX-argument-prompt t nil "Model (list)")
-                    (LaTeX-xcolor-color-models t)))
+  (let* ((last-optional-rejected nil)
+        (xcolmodel (LaTeX-check-insert-macro-default-style
+                    (completing-read
+                     (TeX-argument-prompt t nil "Model (list)")
+                     (LaTeX-xcolor-color-models t))))
         (xcolor (if (and xcolmodel (not (string= xcolmodel "")))
                     (TeX-read-string
                      (TeX-argument-prompt optional nil (concat xcolmodel " 
spec (list)")))
@@ -332,21 +339,29 @@ xcolor.sty."
 (defun TeX-arg-xcolor-fcolorbox (optional)
   "Insert arguments of \\fcolorbox from xcolor.sty."
   ;;\fcolorbox[<frame model>]{<frame spec>}[<background model>]{<background 
spec>}{<text>}
-  (let* ((xfrmodel (completing-read
-                   (TeX-argument-prompt t nil "(Frame) Color model")
-                   LaTeX-xcolor-color-models))
-        (xfrspec  (if (or (string= xfrmodel "")
+  (let* ((last-optional-rejected nil)
+        (xfrmodel (LaTeX-check-insert-macro-default-style
+                   (completing-read
+                    (TeX-argument-prompt t nil "(Frame) Color model")
+                    LaTeX-xcolor-color-models)))
+        ;; Set `last-optional-rejected' acc. to `xfrmodel'
+        (last-optional-rejected (and xfrmodel (string= xfrmodel "")))
+        (xfrspec  (if (or (null xfrmodel)
+                          (string= xfrmodel "")
                           (string= xfrmodel "named"))
                       (completing-read
                        (TeX-argument-prompt optional nil "Frame color spec")
                        (LaTeX-xcolor-definecolor-list))
                     (TeX-read-string
                      (TeX-argument-prompt optional nil "Frame color spec"))))
-        (xbgmodel (completing-read
-                   (TeX-argument-prompt t nil "Background Color model")
-                   LaTeX-xcolor-color-models))
-        (xbgspec  (if (or (string= xfrmodel "")
+        (xbgmodel (LaTeX-check-insert-macro-default-style
+                   (completing-read
+                    (TeX-argument-prompt t nil "Background Color model")
+                    LaTeX-xcolor-color-models)))
+        (xbgspec  (if (or (null xfrmodel)
+                          (string= xfrmodel "")
                           (string= xfrmodel "named")
+                          (null xbgmodel)
                           (string= xbgmodel "")
                           (string= xbgmodel "named"))
                       (completing-read
@@ -361,7 +376,6 @@ xcolor.sty."
       (insert (format "[%s]" xbgmodel)))
     (TeX-argument-insert xbgspec optional)))
 
-
 (TeX-add-style-hook
  "xcolor"
  (lambda ()
diff --git a/tex.el b/tex.el
index e2a2d45..2e6ec0c 100644
--- a/tex.el
+++ b/tex.el
@@ -3379,6 +3379,9 @@ See `TeX-parse-macro' for details."
       (if (vectorp (car args))
          ;; Maybe get rid of all optional arguments.  See `TeX-insert-macro'
          ;; for more comments.  See `TeX-insert-macro-default-style'.
+         ;; The macro `LaTeX-check-insert-macro-default-style' in
+         ;; `latex.el' uses the code inside (unless ...)  This macro
+         ;; should be adapted if the code here changs.
          (unless (if (eq TeX-insert-macro-default-style 
'show-all-optional-args)
                      (equal current-prefix-arg '(4))
                    (or



reply via email to

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