Mercurial > emacs
annotate lisp/widget.el @ 97528:184bb2071e3f
mail/: Add new (temporary) libaries for which to test Rmail/mbox such
that Rmail/babyl is not affected. This creates a facility/feature
called "pmail" (analagous to "rmail") that can be used independently
from Rmail for testing purposes. The plan is to replace the "rmail"
files eventually and remove "pmail" entirely at that point. In the
interim, interested developers can use either Rmail or Pmail or both
(which is not recommended for the casual User or the faint of heart).
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Mon, 18 Aug 2008 04:51:28 +0000 |
parents | ee5932bf781d |
children | a9dc0e7c3f2b |
rev | line source |
---|---|
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
30147
diff
changeset
|
1 ;;; widget.el --- a library of user interface components |
17334 | 2 ;; |
74442 | 3 ;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, |
79721 | 4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
17334 | 5 ;; |
6 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> | |
7 ;; Keywords: help, extensions, faces, hypermedia | |
18258
e83bc8150072
Synched with 1.9920.
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
18139
diff
changeset
|
8 ;; Version: 1.9920 |
17334 | 9 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ |
10 | |
17520 | 11 ;; This file is part of GNU Emacs. |
12 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
17520 | 14 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
16 ;; (at your option) any later version. |
17520 | 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 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
17520 | 25 |
17334 | 26 ;;; Commentary: |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
38436
diff
changeset
|
27 ;; |
25179
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
28 ;; The widget library is partially documented in the `widget' Info |
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
29 ;; file. |
17334 | 30 ;; |
25179
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
31 ;; This file only contains the code needed to define new widget types. |
17334 | 32 ;; Everything else is autoloaded from `wid-edit.el'. |
33 | |
34 ;;; Code: | |
35 | |
25179
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
36 ;; Doing this is unnecessary in Emacs 20. Kept as dummy in case |
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
37 ;; external libraries call it. We save a kb or two of purespace by |
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
38 ;; dummying-out such definitions generally. |
17334 | 39 (defmacro define-widget-keywords (&rest keys) |
66401
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
40 ;; ;; Don't use backquote, since that makes trouble trying to |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
41 ;; ;; re-bootstrap from just the .el files. |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
42 ;; (list 'eval-and-compile |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
43 ;; (list 'let (list (list 'keywords (list 'quote keys))) |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
44 ;; (list 'while 'keywords |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
45 ;; (list 'or (list 'boundp (list 'car 'keywords)) |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
46 ;; (list 'set (list 'car 'keywords) (list 'car 'keywords))) |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
47 ;; (list 'setq 'keywords (list 'cdr 'keywords))))) |
25179
c7ee317291f8
(define-widget-keywords): Make dummy definition and comment-out its use.
Dave Love <fx@gnu.org>
parents:
21788
diff
changeset
|
48 ) |
17334 | 49 |
66401
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
50 ;;(define-widget-keywords :documentation-indent |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
51 ;; :complete-function :complete :button-overlay |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
52 ;; :field-overlay |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
53 ;; :documentation-shown :button-prefix |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
54 ;; :button-suffix :mouse-down-action :glyph-up :glyph-down :glyph-inactive |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
55 ;; :prompt-internal :prompt-history :prompt-match |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
56 ;; :prompt-value :deactivate :active |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
57 ;; :inactive :activate :sibling-args :delete-button-args |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
58 ;; :insert-button-args :append-button-args :button-args |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
59 ;; :tag-glyph :off-glyph :on-glyph :valid-regexp |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
60 ;; :secret :sample-face :sample-face-get :case-fold |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
61 ;; :create :convert-widget :format :value-create :offset :extra-offset |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
62 ;; :tag :doc :from :to :args :value :action |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
63 ;; :value-set :value-delete :match :parent :delete :menu-tag-get |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
64 ;; :value-get :choice :void :menu-tag :on :off :on-type :off-type |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
65 ;; :notify :entry-format :button :children :buttons :insert-before |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
66 ;; :delete-at :format-handler :widget :value-pos :value-to-internal |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
67 ;; :indent :size :value-to-external :validate :error :directory |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
68 ;; :must-match :type-error :value-inline :inline :match-inline :greedy |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
69 ;; :button-face-get :button-face :value-face :keymap :entry-from |
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
70 ;; :entry-to :help-echo :documentation-property :tab-order) |
17334 | 71 |
67059
005159df0f00
(define-widget): Don't use declare for the doc-string-elt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66401
diff
changeset
|
72 (put 'define-widget 'doc-string-elt 3) ;`declare' doesn't work in functions. |
17334 | 73 (defun define-widget (name class doc &rest args) |
74 "Define a new widget type named NAME from CLASS. | |
75 | |
76 NAME and CLASS should both be symbols, CLASS should be one of the | |
77 existing widget types, or nil to create the widget from scratch. | |
78 | |
79 After the new widget has been defined, the following two calls will | |
80 create identical widgets: | |
81 | |
82 * (widget-create NAME) | |
83 | |
84 * (apply 'widget-create CLASS ARGS) | |
85 | |
86 The third argument DOC is a documentation string for the widget." | |
87 (put name 'widget-type (cons class args)) | |
17550
d6545cfb6c5a
Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
17520
diff
changeset
|
88 (put name 'widget-documentation doc) |
d6545cfb6c5a
Synched with custom 1.90.
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
17520
diff
changeset
|
89 name) |
17334 | 90 |
30147 | 91 ;; This is used by external widget code (in W3, at least). |
92 (defalias 'widget-plist-member 'plist-member) | |
93 | |
17334 | 94 ;;; The End. |
95 | |
96 (provide 'widget) | |
97 | |
66401
a8bf0a9de6ac
(define-widget): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64762
diff
changeset
|
98 ;; arch-tag: 932c71a3-9aeb-4827-a293-8b88b26d5c58 |
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
30147
diff
changeset
|
99 ;;; widget.el ends here |