annotate lisp/widget.el @ 98007:883843ca3292

* verilog-mode.el (verilog-library-extensions): Enable .sv filename extensions to call verilog-mode. (verilog-auto, verilog-auto-inst, verilog-faq) (verilog-submit-bug-report): Update author support URLs. (verilog-delete-auto, verilog-auto-inout-module) (verilog-auto-inout-comp, verilog-auto): Add AUTOINOUTCOMP for creating complemented testbench modules. Suggested by Yishay Belkind. (verilog-auto-inst-port, verilog-simplify-range-expression): When verilog-auto-inst-param-value is set, don't require a AUTO_TEMPLATE to expand parameter substitutions. Suggested by Yishay Belkind. (verilog-auto-inst-param-value): Add safe variable. (verilog-re-search-forward, verilog-re-search-backward): Fix returning wrong search results on Emacs 22.1. (verilog-modi-cache-results, verilog-auto): Fix warning message about "toggling font-lock-mode." (verilog-auto): Fix loosing font-lock on errors. (verilog-auto-inst-param-value, verilog-mode-version) (verilog-mode-version-date, verilog-read-inst-param-value) (verilog-auto-inst, verilog-auto-inst-param) (verilog-auto-inst-port, verilog-simplify-range-expression): Allow parameters to be replaced with their values, on the expansion of an AUTOINST with Verilog 2001 style parameter settings. Suggested by David Rogoff. * verilog-mode.el (verilog-beg-block-re-ordered, verilog-calc-1): Better support for the property statement. Sometimes this keyword introduces a statement which requires an endproperty keyword, and sometimes it doesn't, dependening on the work before the property word. If property is prefixed with assert, assume or cover keyword, then the statement is ended with a ';' Otherwise, property is like task or specify, and is followed by some number of statements, which are ended with an endproperty keyword. (electric-verilog-tab): Support Emacs 22.2 style handling of tab in a highlighted region: indent each line in region according to mode. Supply this so it works in XEmacs and older Emacs.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 05 Sep 2008 22:13:55 +0000
parents ee5932bf781d
children a9dc0e7c3f2b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2 ;;
74442
b2e5081b9320 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
3 ;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
5 ;;
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
6 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
9 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
10
17520
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
11 ;; This file is part of GNU Emacs.
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
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
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
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
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
17
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
21 ;; GNU General Public License for more details.
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
22
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
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
f33d7729b6a1 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
25
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
32 ;; Everything else is autoloaded from `wid-edit.el'.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
33
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
34 ;;; Code:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
73 (defun define-widget (name class doc &rest args)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
74 "Define a new widget type named NAME from CLASS.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
75
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
76 NAME and CLASS should both be symbols, CLASS should be one of the
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
77 existing widget types, or nil to create the widget from scratch.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
78
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
79 After the new widget has been defined, the following two calls will
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
80 create identical widgets:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
81
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
82 * (widget-create NAME)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
83
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
84 * (apply 'widget-create CLASS ARGS)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
85
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
86 The third argument DOC is a documentation string for the widget."
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
90
30147
490de0786afa (widget-plist-member): New alias.
Dave Love <fx@gnu.org>
parents: 25179
diff changeset
91 ;; This is used by external widget code (in W3, at least).
490de0786afa (widget-plist-member): New alias.
Dave Love <fx@gnu.org>
parents: 25179
diff changeset
92 (defalias 'widget-plist-member 'plist-member)
490de0786afa (widget-plist-member): New alias.
Dave Love <fx@gnu.org>
parents: 25179
diff changeset
93
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
94 ;;; The End.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
95
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
96 (provide 'widget)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
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