1;;; widget.el --- a library of user interface components 2;; 3;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 4;; 2005, 2006, 2007 Free Software Foundation, Inc. 5;; 6;; Author: Per Abrahamsen <abraham@dina.kvl.dk> 7;; Keywords: help, extensions, faces, hypermedia 8;; Version: 1.9920 9;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ 10 11;; This file is part of GNU Emacs. 12 13;; GNU Emacs is free software; you can redistribute it and/or modify 14;; it under the terms of the GNU General Public License as published by 15;; the Free Software Foundation; either version 2, or (at your option) 16;; any later version. 17 18;; GNU Emacs is distributed in the hope that it will be useful, 19;; but WITHOUT ANY WARRANTY; without even the implied warranty of 20;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21;; GNU General Public License for more details. 22 23;; You should have received a copy of the GNU General Public License 24;; along with GNU Emacs; see the file COPYING. If not, write to the 25;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 26;; Boston, MA 02110-1301, USA. 27 28;;; Commentary: 29;; 30;; The widget library is partially documented in the `widget' Info 31;; file. 32;; 33;; This file only contains the code needed to define new widget types. 34;; Everything else is autoloaded from `wid-edit.el'. 35 36;;; Code: 37 38;; Doing this is unnecessary in Emacs 20. Kept as dummy in case 39;; external libraries call it. We save a kb or two of purespace by 40;; dummying-out such definitions generally. 41(defmacro define-widget-keywords (&rest keys) 42 ;; ;; Don't use backquote, since that makes trouble trying to 43 ;; ;; re-bootstrap from just the .el files. 44 ;; (list 'eval-and-compile 45 ;; (list 'let (list (list 'keywords (list 'quote keys))) 46 ;; (list 'while 'keywords 47 ;; (list 'or (list 'boundp (list 'car 'keywords)) 48 ;; (list 'set (list 'car 'keywords) (list 'car 'keywords))) 49 ;; (list 'setq 'keywords (list 'cdr 'keywords))))) 50 ) 51 52;;(define-widget-keywords :documentation-indent 53;; :complete-function :complete :button-overlay 54;; :field-overlay 55;; :documentation-shown :button-prefix 56;; :button-suffix :mouse-down-action :glyph-up :glyph-down :glyph-inactive 57;; :prompt-internal :prompt-history :prompt-match 58;; :prompt-value :deactivate :active 59;; :inactive :activate :sibling-args :delete-button-args 60;; :insert-button-args :append-button-args :button-args 61;; :tag-glyph :off-glyph :on-glyph :valid-regexp 62;; :secret :sample-face :sample-face-get :case-fold 63;; :create :convert-widget :format :value-create :offset :extra-offset 64;; :tag :doc :from :to :args :value :action 65;; :value-set :value-delete :match :parent :delete :menu-tag-get 66;; :value-get :choice :void :menu-tag :on :off :on-type :off-type 67;; :notify :entry-format :button :children :buttons :insert-before 68;; :delete-at :format-handler :widget :value-pos :value-to-internal 69;; :indent :size :value-to-external :validate :error :directory 70;; :must-match :type-error :value-inline :inline :match-inline :greedy 71;; :button-face-get :button-face :value-face :keymap :entry-from 72;; :entry-to :help-echo :documentation-property :tab-order) 73 74(put 'define-widget 'doc-string-elt 3) ;`declare' doesn't work in functions. 75(defun define-widget (name class doc &rest args) 76 "Define a new widget type named NAME from CLASS. 77 78NAME and CLASS should both be symbols, CLASS should be one of the 79existing widget types, or nil to create the widget from scratch. 80 81After the new widget has been defined, the following two calls will 82create identical widgets: 83 84* (widget-create NAME) 85 86* (apply 'widget-create CLASS ARGS) 87 88The third argument DOC is a documentation string for the widget." 89 (put name 'widget-type (cons class args)) 90 (put name 'widget-documentation doc) 91 name) 92 93;; This is used by external widget code (in W3, at least). 94(defalias 'widget-plist-member 'plist-member) 95 96;;; The End. 97 98(provide 'widget) 99 100;; arch-tag: 932c71a3-9aeb-4827-a293-8b88b26d5c58 101;;; widget.el ends here 102