1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

(widget-convert): Handle an argument that's a keyword.

Recognize explicit :args specification.
This commit is contained in:
Richard M. Stallman 2002-07-23 19:20:53 +00:00
parent 608dc4173f
commit ab6a36685e

View File

@ -722,18 +722,32 @@ The optional ARGS are additional keyword arguments."
(list type)
(copy-sequence type)))
(current widget)
done
(keys args))
;; First set the :args keyword.
(while (cdr current) ;Look in the type.
(if (keywordp (car (cdr current)))
(setq current (cdr (cdr current)))
(if (and (keywordp (cadr current))
;; If the last element is a keyword,
;; it is still the :args element,
;; even though it is a keyword.
(cddr current))
(if (eq (cadr current) :args)
;; If :args is explicitly specified, obey it.
(setq current nil)
;; Some other irrelevant keyword.
(setq current (cdr (cdr current))))
(setcdr current (list :args (cdr current)))
(setq current nil)))
(while args ;Look in the args.
(if (keywordp (nth 0 args))
(setq args (nthcdr 2 args))
(widget-put widget :args args)
(setq args nil)))
(while (and args (not done)) ;Look in ARGS.
(cond ((eq (car args) :args)
;; Handle explicit specification of :args.
(setq args (cadr args)
done t))
((keywordp (car args))
(setq args (cddr args)))
(t (setq done t))))
(when done
(widget-put widget :args args))
;; Then Convert the widget.
(setq type widget)
(while type