;;
;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
;; Keywords: extensions
-;; Version: 1.71
+;; Version: 1.90
;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
;;; Commentary:
(require 'easymenu)
(require 'custom)
(require 'wid-edit)
-(require 'cl)
+(eval-when-compile (require 'cl))
(defgroup widget-browse nil
"Customization support for browsing widgets."
(unless widget-browse-mode-map
(setq widget-browse-mode-map (make-sparse-keymap))
- (set-keymap-parent widget-browse-mode-map widget-keymap))
+ (set-keymap-parent widget-browse-mode-map widget-keymap)
+ (define-key widget-browse-mode-map "q" 'bury-buffer))
+
+(easy-menu-define widget-browse-mode-customize-menu
+ widget-browse-mode-map
+ "Menu used in widget browser buffers."
+ (customize-menu-create 'widgets))
(easy-menu-define widget-browse-mode-menu
widget-browse-mode-map
(setq major-mode 'widget-browse-mode
mode-name "Widget")
(use-local-map widget-browse-mode-map)
+ (easy-menu-add widget-browse-mode-customize-menu)
(easy-menu-add widget-browse-mode-menu)
(run-hooks 'widget-browse-mode-hook))
(defvar widget-browse-history nil)
+;;;###autoload
(defun widget-browse (widget)
"Create a widget browser for WIDGET."
(interactive (list (completing-read "Widget: "
(widget-browse-mode)
;; Quick way to get out.
- (widget-create 'push-button
- :action (lambda (widget &optional event)
- (bury-buffer))
- "Quit")
- (widget-insert "\n")
+;; (widget-create 'push-button
+;; :action (lambda (widget &optional event)
+;; (bury-buffer))
+;; "Quit")
+;; (widget-insert "\n")
;; Top text indicating whether it is a class or object browser.
(if (listp widget)
(widget-setup)
(goto-char (point-min)))
+;;;###autoload
+(defun widget-browse-other-window (&optional widget)
+ "Show widget browser for WIDGET in other window."
+ (interactive)
+ (let ((window (selected-window)))
+ (switch-to-buffer-other-window "*Browse Widget*")
+ (if widget
+ (widget-browse widget)
+ (call-interactively 'widget-browse))
+ (select-window window)))
+
+
;;; The `widget-browse' Widget.
(define-widget 'widget-browse 'push-button
(put :button 'widget-keyword-printer 'widget-browse-widget)
(put :args 'widget-keyword-printer 'widget-browse-sexps)
+;;; Widget Minor Mode.
+
+(defvar widget-minor-mode nil
+ "I non-nil, we are in Widget Minor Mode.")
+ (make-variable-buffer-local 'widget-minor-mode)
+
+(defvar widget-minor-mode-map nil
+ "Keymap used in Widget Minor Mode.")
+
+(unless widget-minor-mode-map
+ (setq widget-minor-mode-map (make-sparse-keymap))
+ (set-keymap-parent widget-minor-mode-map widget-keymap))
+
+;;;###autoload
+(defun widget-minor-mode (&optional arg)
+ "Togle minor mode for traversing widgets.
+With arg, turn widget mode on if and only if arg is positive."
+ (interactive "P")
+ (cond ((null arg)
+ (setq widget-minor-mode (not widget-minor-mode)))
+ ((<= 0 arg)
+ (setq widget-minor-mode nil))
+ (t
+ (setq widget-minor-mode t)))
+ (force-mode-line-update))
+
+(add-to-list 'minor-mode-alist '(widget-minor-mode " Widget"))
+
+(add-to-list 'minor-mode-map-alist
+ (cons 'widget-minor-mode widget-minor-mode-map))
+
;;; The End:
(provide 'wid-browse)