Function: widget-browse
widget-browse is an autoloaded, interactive and byte-compiled function
defined in wid-browse.el.gz.
Signature
(widget-browse WIDGET)
Documentation
Create a widget browser for WIDGET.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/wid-browse.el.gz
;;;###autoload
(defun widget-browse (widget)
"Create a widget browser for WIDGET."
(interactive (list (completing-read "Widget: "
obarray
(lambda (symbol)
(get symbol 'widget-type))
t nil 'widget-browse-history)))
(if (stringp widget)
(setq widget (intern widget)))
(unless (if (symbolp widget)
(get widget 'widget-type)
(and (consp widget)
(get (widget-type widget) 'widget-type)))
(error "Not a widget"))
;; Create the buffer.
(if (symbolp widget)
(let ((buffer (format "*Browse %s Widget*" widget)))
(kill-buffer (get-buffer-create buffer))
(switch-to-buffer (get-buffer-create buffer)))
(kill-buffer (get-buffer-create "*Browse Widget*"))
(switch-to-buffer (get-buffer-create "*Browse Widget*")))
(widget-browse-mode)
;; Top text indicating whether it is a class or object browser.
(if (listp widget)
(widget-insert "Widget object browser.\n\nClass: ")
(widget-insert "Widget class browser.\n\n")
(widget-create 'widget-browse
:format "%[%v%]\n%d"
:doc (get widget 'widget-documentation)
widget)
(unless (eq (preceding-char) ?\n)
(widget-insert "\n"))
(widget-insert "\nSuper: ")
(setq widget (get widget 'widget-type)))
;; Now show the attributes.
(let ((name (car widget))
(items (cdr widget))
key value printer)
(widget-create 'widget-browse
:format "%[%v%]"
name)
(widget-insert "\n")
(while items
(setq key (nth 0 items)
value (nth 1 items)
printer (or (get key 'widget-keyword-printer)
#'widget-browse-sexp)
items (cdr (cdr items)))
(widget-insert "\n" (symbol-name key) "\n\t")
(funcall printer widget key value)
(widget-insert "\n")))
(widget-setup)
(goto-char (point-min)))