Function: TeX-parse-argument
TeX-parse-argument is a byte-compiled function defined in tex.el.
Signature
(TeX-parse-argument OPTIONAL ARG)
Documentation
Depending on OPTIONAL, insert TeX macro argument ARG.
If OPTIONAL is set, only insert if there is anything to insert, and then use square brackets instead of curly braces.
See TeX-parse-macro for details.
Source Code
;; Defined in ~/.emacs.d/elpa/auctex-14.1.2/tex.el
(defun TeX-parse-argument (optional arg)
"Depending on OPTIONAL, insert TeX macro argument ARG.
If OPTIONAL is set, only insert if there is anything to insert, and
then use square brackets instead of curly braces.
See `TeX-parse-macro' for details."
(let (insert-flag)
(cond ((stringp arg)
(TeX-arg-string optional arg)
(setq insert-flag t))
((numberp arg)
(cond ((< arg 0)
(when (TeX-active-mark)
;; Put both the macro and the marked region in a TeX group.
(let ((beg (min (point) (mark)))
(end (set-marker (make-marker) (max (point) (mark)))))
(insert " ")
(goto-char beg)
(skip-chars-backward "^\\\\")
(backward-char)
(insert TeX-arg-opening-brace)
(goto-char (marker-position end))
(insert TeX-arg-closing-brace)
(setq insert-flag t)
(set-marker end nil))))
((= arg 0)) ; nop for clarity
((> arg 0)
(TeX-parse-argument optional t)
(while (> arg 1)
(TeX-parse-argument optional nil)
(setq arg (- arg 1))))))
((null arg)
(insert TeX-arg-opening-brace)
(when (and (not optional) (TeX-active-mark))
(exchange-point-and-mark))
(insert TeX-arg-closing-brace)
(setq insert-flag t))
((eq arg t)
(insert TeX-arg-opening-brace)
(if (and (not optional) (TeX-active-mark))
(progn
(exchange-point-and-mark))
(set-marker TeX-exit-mark (point)))
(insert TeX-arg-closing-brace)
(setq insert-flag t))
((functionp arg)
(funcall arg optional))
((listp arg)
(let ((head (car arg))
(tail (cdr arg)))
(cond ((stringp head)
(apply #'TeX-arg-string optional arg))
((symbolp head)
(apply head optional tail))
(t (error "Unknown list argument type %s"
(prin1-to-string head))))))
(t (error "Unknown argument type %s" (prin1-to-string arg))))
(when (and insert-flag (not optional) (TeX-active-mark))
(deactivate-mark))))