-;;; wid-browse.el --- Functions for browsing widgets.
+;;; wid-browse.el --- functions for browsing widgets
;;
;; Copyright (C) 1997 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
;; Keywords: extensions
-;; Version: 1.84
-;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
;;
(require 'easymenu)
(require 'custom)
(require 'wid-edit)
-(require 'cl)
+(eval-when-compile (require 'cl))
(defgroup widget-browse nil
"Customization support for browsing widgets."
(easy-menu-add widget-browse-mode-menu)
(run-hooks 'widget-browse-mode-hook))
+(put 'widget-browse-mode 'mode-class 'special)
+
;;; Commands.
;;;###autoload
(defun widget-browse-at (pos)
"Browse the widget under point."
(interactive "d")
- (let* ((field (get-text-property pos 'field))
- (button (get-text-property pos 'button))
- (doc (get-text-property pos 'widget-doc))
+ (let* ((field (get-char-property pos 'field))
+ (button (get-char-property pos 'button))
+ (doc (get-char-property pos 'widget-doc))
(text (cond (field "This is an editable text area.")
(button "This is an active area.")
(doc "This is documentation text.")
(get widget 'widget-type)
(and (consp widget)
(get (widget-type widget) 'widget-type)))
- (error "Not a widget."))
+ (error "Not a widget"))
;; Create the buffer.
(if (symbolp widget)
(let ((buffer (format "*Browse %s Widget*" widget)))
(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)))
+ ((<= arg 0)
+ (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)
-;; wid-browse.el ends here
+;;; wid-browse.el ends here