Function: gnus-interactive
gnus-interactive is a byte-compiled function defined in gnus.el.gz.
Signature
(gnus-interactive STRING)
Documentation
Return a list that can be fed to interactive.
See interactive for full documentation.
Adds the following specs:
y -- The current symbolic prefix. Y -- A list of the current symbolic prefix(es). A -- Article number. H -- Article header. g -- Group name.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus.el.gz
(defun gnus-interactive (string)
"Return a list that can be fed to `interactive'.
See `interactive' for full documentation.
Adds the following specs:
y -- The current symbolic prefix.
Y -- A list of the current symbolic prefix(es).
A -- Article number.
H -- Article header.
g -- Group name."
(let ((i 0)
out c prompt)
(while (< i (length string))
(string-match ".\\([^\n]*\\)\n?" string i)
(setq c (aref string i))
(when (match-end 1)
(setq prompt (match-string 1 string)))
(setq i (match-end 0))
;; We basically emulate just about everything that
;; `interactive' does, but add the specs listed above.
(push
(cond
((= c ?a)
(completing-read prompt obarray 'fboundp t))
((= c ?b)
(read-buffer prompt (current-buffer) t))
((= c ?B)
(read-buffer prompt (other-buffer (current-buffer))))
((= c ?c)
(read-char))
((= c ?C)
(completing-read prompt obarray 'commandp t))
((= c ?d)
(point))
((= c ?D)
(read-directory-name prompt nil default-directory 'lambda))
((= c ?f)
(read-file-name prompt nil nil 'lambda))
((= c ?F)
(read-file-name prompt))
((= c ?k)
(read-key-sequence prompt))
((= c ?K)
(error "Not implemented spec"))
((= c ?e)
(error "Not implemented spec"))
((= c ?m)
(mark))
((= c ?N)
(error "Not implemented spec"))
((= c ?n)
(string-to-number (read-from-minibuffer prompt)))
((= c ?p)
(prefix-numeric-value current-prefix-arg))
((= c ?P)
current-prefix-arg)
((= c ?r)
'gnus-prefix-nil)
((= c ?s)
(read-string prompt))
((= c ?S)
(intern (read-string prompt)))
((= c ?v)
(read-variable prompt))
((= c ?x)
(read-minibuffer prompt))
((= c ?x)
(eval-minibuffer prompt))
;; And here the new specs come.
((= c ?y)
gnus-current-prefix-symbol)
((= c ?Y)
gnus-current-prefix-symbols)
((= c ?g)
(gnus-group-group-name))
((= c ?A)
(gnus-summary-skip-intangible)
(or (get-text-property (point) 'gnus-number)
(gnus-summary-last-subject)))
((= c ?H)
(gnus-data-header (gnus-data-find (gnus-summary-article-number))))
(t
(error "Non-implemented spec")))
out)
(cond
((= c ?r)
(push (if (< (point) (mark)) (point) (mark)) out)
(push (if (> (point) (mark)) (point) (mark)) out))))
(setq out (delq 'gnus-prefix-nil out))
(nreverse out)))