Hi all, I've just finished working on a small set of TikZ style patches and posting for a quick review to make sure there's nothing obviously wrong. The patches consist of adding a few more TikZ command prompts and a bit of code cleanup.
Thanks, -- Matt
>From c58162a642a1544dc5757c3ca0aabf80edb0e033 Mon Sep 17 00:00:00 2001 From: Matthew Leach <[email protected]> Date: Thu, 31 Mar 2016 13:37:31 +0100 Subject: [PATCH 1/5] TikZ: Add circle command. * style/tikz.el (TeX-TikZ-arg-circle): New. (TeX-TikZ-draw-arg-function-map): Add mapping from 'Circle' to `TeX-TikZ-arg-circle'. --- style/tikz.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/style/tikz.el b/style/tikz.el index be93110..d187d24 100644 --- a/style/tikz.el +++ b/style/tikz.el @@ -173,6 +173,11 @@ them as a list of strings, dropping the '()'." (TeX-TikZ-find-named-points)))) (concat " (" point-name ") "))) +(defun TeX-TikZ-arg-circle (_ignored) + "Prompt the user for the arguments to the circle command." + (let ((options (TeX-TikZ-arg-options t))) + (concat "circle" options))) + (defconst TeX-TikZ-point-function-map '(("Rect Point" TeX-TikZ-arg-rect-point) ("Polar Point" TeX-TikZ-arg-polar-point) @@ -194,7 +199,8 @@ A set of base connectors along with variants that have \" +\" and (defconst TeX-TikZ-draw-arg-function-map `(,@TeX-TikZ-point-function-map ,@TeX-TikZ-path-connector-function-map - ("Node" TeX-TikZ-arg-node)) + ("Node" TeX-TikZ-arg-node) + ("Circle" TeX-TikZ-arg-circle)) "An alist of argument names and functoins for TikZ's \draw.") (defun TeX-TikZ-draw-arg (_ignored) -- 2.7.4
>From 310008b94765bc324c6fd4813d1994833b4929f9 Mon Sep 17 00:00:00 2001 From: Matthew Leach <[email protected]> Date: Mon, 4 Apr 2016 20:59:38 +0100 Subject: [PATCH 2/5] TikZ: Add the arc command. * style/tikz.el (TeX-TikZ-arg-arc): New. (TeX-TikZ-draw-arg-function-map): Map the 'Arc' command to `Tex-TikZ-arg-arc'. --- style/tikz.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/style/tikz.el b/style/tikz.el index d187d24..b29abf8 100644 --- a/style/tikz.el +++ b/style/tikz.el @@ -178,6 +178,11 @@ them as a list of strings, dropping the '()'." (let ((options (TeX-TikZ-arg-options t))) (concat "circle" options))) +(defun TeX-TikZ-arg-arc (_ignored) + "Prompt the user for the arguments to the arc command." + (let ((options (TeX-TikZ-arg-options t))) + (concat "arc" options))) + (defconst TeX-TikZ-point-function-map '(("Rect Point" TeX-TikZ-arg-rect-point) ("Polar Point" TeX-TikZ-arg-polar-point) @@ -200,7 +205,8 @@ A set of base connectors along with variants that have \" +\" and `(,@TeX-TikZ-point-function-map ,@TeX-TikZ-path-connector-function-map ("Node" TeX-TikZ-arg-node) - ("Circle" TeX-TikZ-arg-circle)) + ("Circle" TeX-TikZ-arg-circle) + ("Arc" TeX-TikZ-arg-arc)) "An alist of argument names and functoins for TikZ's \draw.") (defun TeX-TikZ-draw-arg (_ignored) -- 2.7.4
>From ae6ed8b21742ae50189084e4a2d95baebb87052b Mon Sep 17 00:00:00 2001 From: Matthew Leach <[email protected]> Date: Mon, 4 Apr 2016 21:32:07 +0100 Subject: [PATCH 3/5] TikZ: make `TeX-TikZ-single-macro-arg' prompt required. * style/tikz.el (TeX-TikZ-get-arg-type): Make prompt non-optional. (TeX-TikZ-single-macro-arg): Likewise. (TeX-TikZ-macro-arg): Make prompt explicit. --- style/tikz.el | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/style/tikz.el b/style/tikz.el index b29abf8..d335cbc 100644 --- a/style/tikz.el +++ b/style/tikz.el @@ -94,17 +94,14 @@ string \"node[OPTIONS](NAME){TEXT}\"." (label (TeX-TikZ-arg-label nil))) (concat "node" options name label " "))) -(defun TeX-TikZ-get-arg-type (types &optional prompt) +(defun TeX-TikZ-get-arg-type (types prompt) "Prompt the user for an argument type. -TYPES is a list of possible types that the user can specify. If -PROMPT is non-nil use that prompt instead." - (let ((completion-ignore-case t) - (prompt (if prompt - prompt - "Next argument type (RET to finish): "))) +TYPES is a list of possible types that the user can specify. Use +PROMPT as the prompt for input." + (let ((completion-ignore-case t)) (completing-read prompt types nil t))) -(defun TeX-TikZ-single-macro-arg (function-alist &optional prompt) +(defun TeX-TikZ-single-macro-arg (function-alist prompt) "Prompt the user for a single argument to compose a TikZ macro. FUNCTION-ALIST is a mapping of argument-types to functions. The user is prompted for the argument type, the chosen function is @@ -128,7 +125,8 @@ is finished." ;; For the iterative version, we need to add "" to the ;; function-alist, allowing the user to end the macro. (function-alist-iterative `(,@function-alist ("" identity))) - (string-to-insert (TeX-TikZ-single-macro-arg function-alist-iterative))) + (prompt "Next argument type (RET to finish): ") + (string-to-insert (TeX-TikZ-single-macro-arg function-alist-iterative prompt))) ;; Insert the macro options. (insert options " ") @@ -138,7 +136,7 @@ is finished." (while (not (string= string-to-insert "")) (insert string-to-insert) (setq string-to-insert - (TeX-TikZ-single-macro-arg function-alist-iterative))) + (TeX-TikZ-single-macro-arg function-alist-iterative prompt))) ;; Finish the macro. (insert ";"))) -- 2.7.4
>From de0d445ea13a772d9cd842863c4d49217be7553b Mon Sep 17 00:00:00 2001 From: Matthew Leach <[email protected]> Date: Mon, 4 Apr 2016 21:38:18 +0100 Subject: [PATCH 4/5] TikZ: Add optional parameter to `TeX-TikZ-single-macro-arg'. * style/tikz.el (TeX-TikZ-single-macro-arg): New argument OPTIONAL. (TeX-TikZ-macro-arg): Use OPTIONAL argument when calling `TeX-TikZ-single-macro-arg'. --- style/tikz.el | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/style/tikz.el b/style/tikz.el index d335cbc..222be06 100644 --- a/style/tikz.el +++ b/style/tikz.el @@ -101,14 +101,18 @@ PROMPT as the prompt for input." (let ((completion-ignore-case t)) (completing-read prompt types nil t))) -(defun TeX-TikZ-single-macro-arg (function-alist prompt) +(defun TeX-TikZ-single-macro-arg (function-alist prompt &optional optional) "Prompt the user for a single argument to compose a TikZ macro. FUNCTION-ALIST is a mapping of argument-types to functions. The user is prompted for the argument type, the chosen function is then called and the value returned. PROMPT is used as the prompt -for the argument type." +for the argument type. When OPTIONAL is non-nil, add \"\" to +FUNCTION-ALIST with a mapping to `identity', permitting an +optional input." (let* ((argument-types (mapcar 'car function-alist)) (argument-type (TeX-TikZ-get-arg-type argument-types prompt))) + (when optional + (setq function-alist `(,@function-alist ("" identity)))) (funcall (cadr (assoc argument-type function-alist)) argument-type))) @@ -122,11 +126,8 @@ choose form the cars in FUNCTION-ALIST and the appropriate function is then called. If the user enters \"\", then the macro is finished." (let* ((options (TeX-TikZ-arg-options t)) - ;; For the iterative version, we need to add "" to the - ;; function-alist, allowing the user to end the macro. - (function-alist-iterative `(,@function-alist ("" identity))) (prompt "Next argument type (RET to finish): ") - (string-to-insert (TeX-TikZ-single-macro-arg function-alist-iterative prompt))) + (string-to-insert (TeX-TikZ-single-macro-arg function-alist prompt t))) ;; Insert the macro options. (insert options " ") @@ -136,7 +137,7 @@ is finished." (while (not (string= string-to-insert "")) (insert string-to-insert) (setq string-to-insert - (TeX-TikZ-single-macro-arg function-alist-iterative prompt))) + (TeX-TikZ-single-macro-arg function-alist prompt t))) ;; Finish the macro. (insert ";"))) -- 2.7.4
>From b66c10aa0ae12d3cf85cb75e097e82bd342278dc Mon Sep 17 00:00:00 2001 From: Matthew Leach <[email protected]> Date: Mon, 4 Apr 2016 21:53:06 +0100 Subject: [PATCH 5/5] TikZ: Add parabola command. * style/tikz.el (TeX-TikZ-arg-bend): New. (TeX-TikZ-arg-parabola): New. (TeX-TikZ-draw-arg-function-map): Add mapping from "Parabola" to `TeX-TikZ-arg-parabola'. --- style/tikz.el | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/style/tikz.el b/style/tikz.el index 222be06..9754347 100644 --- a/style/tikz.el +++ b/style/tikz.el @@ -182,6 +182,24 @@ them as a list of strings, dropping the '()'." (let ((options (TeX-TikZ-arg-options t))) (concat "arc" options))) +(defun TeX-TikZ-arg-bend (optional) + "Prompt the user for a bend argument. +If OPTIONAL is non-nil and the user doesn't provide a point, + return \"\"." + (let ((point + (TeX-TikZ-single-macro-arg TeX-TikZ-point-function-map + (TeX-argument-prompt optional nil "Bend point") + optional))) + (if (string= point "") + point + (concat " bend" point)))) + +(defun TeX-TikZ-arg-parabola (_ignored) + "Prompt the user for the arguments to the parabola command." + (let ((options (TeX-TikZ-arg-options t)) + (bend (TeX-TikZ-arg-bend t))) + (concat "parabola" options bend))) + (defconst TeX-TikZ-point-function-map '(("Rect Point" TeX-TikZ-arg-rect-point) ("Polar Point" TeX-TikZ-arg-polar-point) @@ -205,7 +223,8 @@ A set of base connectors along with variants that have \" +\" and ,@TeX-TikZ-path-connector-function-map ("Node" TeX-TikZ-arg-node) ("Circle" TeX-TikZ-arg-circle) - ("Arc" TeX-TikZ-arg-arc)) + ("Arc" TeX-TikZ-arg-arc) + ("Parabola" TeX-TikZ-arg-parabola)) "An alist of argument names and functoins for TikZ's \draw.") (defun TeX-TikZ-draw-arg (_ignored) -- 2.7.4
_______________________________________________ auctex-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/auctex-devel
