Commit ab6a3668 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

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

Recognize explicit :args specification.
parent 608dc417
......@@ -722,18 +722,32 @@ The optional ARGS are additional keyword arguments."
(list type)
(copy-sequence type)))
(current widget)
(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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment