Mercurial > hg > xemacs-beta
diff lisp/w3/widget.el @ 14:9ee227acff29 r19-15b90
Import from CVS: tag r19-15b90
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:48:42 +0200 |
parents | 376386a54a3c |
children | 0293115a14e9 6a378aca36af |
line wrap: on
line diff
--- a/lisp/w3/widget.el Mon Aug 13 08:48:18 2007 +0200 +++ b/lisp/w3/widget.el Mon Aug 13 08:48:42 2007 +0200 @@ -4,12 +4,12 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, extensions, faces, hypermedia -;; Version: 0.4 +;; Version: 1.13 +;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: ;; -;; The documentation for the unbundled version of this library is -;; available in `custom.texi'. +;; If you want to use this code, please visit the URL above. ;; ;; This file only contain the code needed to define new widget types. ;; Everything else is autoloaded from `widget-edit.el'. @@ -18,23 +18,33 @@ (eval-when-compile (require 'cl)) -(let ((keywords - '(:create :convert-widget :format :value-create :tag :doc :from :to - :args :value :value-from :value-to :action :value-set - :value-delete :match :parent :delete :menu-tag-get - :value-get :choice :void :menu-tag :on :off :on-type - :off-type :notify :entry-format :button :children - :buttons :insert-before :delete-at :format-handler - :widget :value-pos :value-to-internal :indent - :help-echo - :value-to-external :validate :error :directory :must-match - :initial :type-error :value-inline :inline :match-inline - :greedy :button-face :value-face :keymap :size))) - (while keywords - (or (boundp (car keywords)) - (set (car keywords) (car keywords))) - (setq keywords (cdr keywords)))) +(defmacro define-widget-keywords (&rest keys) + (` + (eval-and-compile + (let ((keywords (quote (, keys)))) + (while keywords + (or (boundp (car keywords)) + (set (car keywords) (car keywords))) + (setq keywords (cdr keywords))))))) +(define-widget-keywords :case-fold :widget-doc + :create :convert-widget :format :value-create :offset :extra-offset + :tag :doc :from :to :args :value :value-from :value-to :action + :value-set :value-delete :match :parent :delete :menu-tag-get + :value-get :choice :void :menu-tag :on :off :on-type :off-type + :notify :entry-format :button :children :buttons :insert-before + :delete-at :format-handler :widget :value-pos :value-to-internal + :indent :size :value-to-external :validate :error :directory + :must-match :type-error :value-inline :inline :match-inline :greedy + :button-face-get :button-face :value-face :keymap :entry-from + :entry-to :help-echo :documentation-property :hide-front-space + :hide-rear-space) + +;; These autoloads should be deleted when the file is added to Emacs. +(autoload 'widget-create "widget-edit") +(autoload 'widget-insert "widget-edit") + +;;;###autoload (defun define-widget (name class doc &rest args) "Define a new widget type named NAME from CLASS. @@ -52,25 +62,6 @@ (put name 'widget-type (cons class args)) (put name 'widget-documentation doc)) -(autoload 'widget-create "widget-edit") -(autoload 'widget-insert "widget-edit") - -(defun define-widget-group (name class doc &rest args) - "Define a new widget group named NAME. - -CLASS should be nil, it is reserved for future use. - -MATCH should be a function taking a widget group and a list of match -types as an argument, and returning the remaining part of the list if -the widget group matches the beginning of the list, or throwing -`no-match' if not. - -CREATE should be a function taking a widget group and a list of values -as arguments, and returning a cons whose car is a list of widgets -representing the matches values and whose cdr is the remaining -unmatched values." - (put name 'widget-group (cons class args))) - ;;; The End. (provide 'widget)