;ELC   
;;; compiled by amu@tux.mit.edu on Sun Jan  3 22:58:25 1999
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/custom-1.9962/wid-edit.el
;;; emacs version 19.34.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`wid-edit.el' was compiled for Emacs 19.29 or later"))


(byte-code "!\"\"$\"\" Ϗ\"1 M5 M\"C ՂD \"؏!W ! MMM$$@!v $@$@L$A$f )! \"\"\"! M! M! M! M888<>>@ &A ɁB >%C ɁD >>E &" [require widget autoload pp-to-string "pp" Info-goto-node "info" finder-commentary "finder" nil t string-match "XEmacs" emacs-version (byte-code "!" [require overlay] 2) ((error (load-library "x-overlay"))) widget-event-point #[(event) "	!	 	!" [mouse-event-p event event-point] 2 "Character position of the end of event if that exists, or nil."] #[(event) "8:  8)A@:  A@@# A@)" [event 2 1 position] 3 "Character position of the end of event if that exists, or nil."] defalias widget-read-event next-event read-event (byte-code "!" [require custom] 2) ((error)) featurep custom fboundp custom-declare-variable defgroup (macro . #[(&rest args) "" [nil] 1]) defcustom (macro . #[(var value doc &rest args) "	\nF" [defvar var value doc] 4]) defface (macro . #[(&rest args) "" [nil] 1]) (:prefix :tag :load :link :options :type :group) keywords boundp copy-face default widget-documentation-face bold widget-button-face italic widget-field-face button-release-event-p #[(event) "! 	9 	N! 	:! 	@9! 	@N): !>: !>: !>" [event obj event-symbol-elements event-basic-type (mouse-1 mouse-2 mouse-3) click event-modifiers drag] 4 "Non-nil if EVENT is a mouse-button-release event object."] functionp #[(object) "	! 	! 	= 	9 	!" [subrp object byte-code-function-p lambda fboundp] 2 "Non-nil of OBJECT is a type of object that can be called as a function."] error-message-string #[(obj) "!\n!\n\"\n!)" [get-buffer-create " *error-message*" buf erase-buffer display-error obj buffer-string] 3 "Convert an error value to an error message."] browse-url #[(url &rest args) "!\f#" [require browse-url apply browse-url-browser-function url args] 4] custom-declare-group widgets "Customization support for the Widget Library." :link (custom-manual "(widget)Top") (url-link :tag "Development Page" "http://www.dina.kvl.dk/~abraham/custom/") (emacs-library-link :tag "Lisp File" "widget.el") :prefix "widget-" :group extensions hypermedia widget-documentation "Options controling the display of documentation strings." widget-faces "Faces used by the widget library." faces] 17)
#@119 Face used for documentation strings in widges.
This exists as a variable so it can be set locally in certain buffers.
(defvar widget-documentation-face (quote widget-documentation-face) (#$ . 2914))
(custom-declare-face (quote widget-documentation-face) (quote ((((class color) (background dark)) (:foreground "lime green")) (((class color) (background light)) (:foreground "dark green")) (t nil))) "Face used for documentation text." :group (quote widget-documentation) :group (quote widget-faces))
#@105 Face used for buttons in widges.
This exists as a variable so it can be set locally in certain buffers.
(defvar widget-button-face (quote widget-button-face) (#$ . 3421))
(custom-declare-face (quote widget-button-face) (quote ((t (:bold t)))) "Face used for widget buttons." :group (quote widget-faces))
(custom-declare-variable (quote widget-mouse-face) (quote (quote highlight)) "Face used for widget buttons when the mouse is above them." :type (quote face) :group (quote widget-faces))
(byte-code "\f%\f%" [custom-declare-face widget-field-face ((((class grayscale color) (background light)) (:background "gray85")) (((class grayscale color) (background dark)) (:background "dim gray")) (t (:italic t))) "Face used for editable fields." :group widget-faces widget-single-line-field-face ((((class grayscale color) (background light)) (:background "gray85")) (((class grayscale color) (background dark)) (:background "dim gray")) (t (:italic t))) "Face used for editable fields spanning only a single line."] 6)
#@53 Display table used for single-line editable fields.
(defvar widget-single-line-display-table (byte-code " I	I	)" [make-display-table table 9 "^I" 10 "^J"] 4) (#$ . 4454))
(byte-code "! \"" [fboundp set-face-display-table widget-single-line-field-face widget-single-line-display-table] 3)
(defalias 'widget-plist-member #[(plist prop) " @	= AA " [plist prop] 3])
(put (quote widget-plist-member) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'widget-princ-to-string #[(object) "!q p!) )" [get-buffer-create " *widget-tmp*" erase-buffer standard-output princ object buffer-string] 2])
#@29 Clear all undo information.
(defalias 'widget-clear-undo #[nil "p! " [buffer-disable-undo buffer-enable-undo] 2 (#$ . 5111)])
(custom-declare-variable (quote widget-menu-max-size) (quote 40) "Largest number of items allowed in a popup-menu.\nLarger menus are read through the minibuffer." :group (quote widgets) :type (quote integer))
(custom-declare-variable (quote widget-menu-minibuffer-flag) (quote (string-match "XEmacs" emacs-version)) "*Control how to ask for a choice from the keyboard.\nNon-nil means use the minibuffer;\nnil means read a single character." :group (quote widgets) :type (quote boolean))
#@556 Choose an item from a list.

First argument TITLE is the name of the list.
Second argument ITEMS is an list whose members are either
 (NAME . VALUE), to indicate selectable items, or just strings to
 indicate unselectable items.
Optional third argument EVENT is an input event.

The user is asked to choose between each NAME from the items alist,
and the VALUE of the chosen element will be returned.  If EVENT is a
mouse event, and the number of elements in items is less than
`widget-menu-max-size', a popup menu will be used, otherwise the
minibuffer.
(defalias 'widget-choose #[(title items &optional event) "G	W \n !  \nBD\"G	Wc \nc !c c \"B!\fY \f!<Y \f!;Y \f!@\f\f\"A) \"P$\f; \f\"; \f\f\"A)) !#!q c @A: @&A'&#c!'#*T c)\n!####A=;!." [items widget-menu-max-size event fboundp x-popup-menu window-system title "" popup-menu get-popup-menu-response mapcar #[(x) "; #@@C#" [x vector nil t] 4] val event-object assoc widget-menu-minibuffer-flag widget-remove-if stringp completing-read ": " nil t try-completion try make-sparse-keymap overriding-terminal-local-map map choice 48 next-digit some-choice-enabled value define-key " " get-buffer-create " widget-choose" erase-buffer "Available choices:\n\n" name function format "%c = %s\n" vector "\nC-g = Quit" error "None of the choices is currently meaningful" [7] keyboard-quit [t] [-134217706] scroll-other-window [-134217683] negative-argument ((byte-code "!\n!	\n	Y# 	W = B!\n\n#\nO!	=o \n!Ve !!h  ) =|   -Ň" [get-buffer " widget-choose" buf display-buffer t nil 0 1 arg char keys cursor-in-echo-area 48 next-digit value keyboard-quit 32 unread-command-events read-key-sequence title lookup-key overriding-terminal-local-map string-to-char scroll-other-window get-buffer-window minibuffer-scroll-window scroll-other-window-down window-height negative-argument -1] 4)) "Canceled"] 6 (#$ . 5735)])
(defalias 'widget-remove-if #[(predictate list) "	\n \f\n@! \n@B\nA *" [nil list tail result predictate] 3])
(custom-declare-variable (quote widget-field-add-space) (quote (or t (< emacs-major-version 20) (and (eq emacs-major-version 20) (< emacs-minor-version 3)) (not (string-match "XEmacs" emacs-version)))) "Non-nil means add extra space at the end of editable text fields.\n\nThis is needed on all versions of Emacs, and on XEmacs before 20.3.  \nIf you don't add the space, it will become impossible to edit a zero\nsize field." :type (quote boolean) :group (quote widgets))
(custom-declare-variable (quote widget-field-use-before-change) (quote (and (or (> emacs-minor-version 34) (> emacs-major-version 19)) (not (string-match "XEmacs" emacs-version)))) "Non-nil means use `before-change-functions' to track editable fields.\nThis enables the use of undo, but doesn't work on Emacs 19.34 and earlier. \nUsing before hooks also means that the :notify function can't know the\nnew value." :type (quote boolean) :group (quote widgets))
#@57 Specify editable button for WIDGET between FROM and TO.
(defalias 'widget-specify-field #[(widget from to) "b\n\" u  !`)\n\"\n	\"* \n\"Ή?> \n\"%;U U \n##\n######," [to widget-get widget :size 1 widget-field-add-space insert-and-inherit " " :keymap :value-face widget-field-face :help-echo make-overlay from nil overlay help-echo face map widget-mouse-help widget-put :field-overlay overlay-put detachable field local-map keymap balloon-help] 11 (#$ . 8966)])
#@48 Specify button for WIDGET between FROM and TO.
(defalias 'widget-specify-button #[(widget from to) "	\n\"	\f\"%\n\f	\n#- ;- \n	#\n#\n#\n#\n\f#+" [widget-apply widget :button-face-get widget-get :help-echo make-overlay from to nil t overlay help-echo face widget-put :button-overlay widget-mouse-help overlay-put button mouse-face widget-mouse-face balloon-help] 8 (#$ . 9537)])
#@46 Find mouse help string for button in extent.
(defalias 'widget-mouse-help #[(extent) "\n!! \"; = 97 !7 !;7 = #*" [widget-at extent-start-position extent widget widget-get :help-echo help-echo fboundp format "(widget %S :help-echo %S)"] 5 (#$ . 9976)])
(defalias 'widget-specify-sample #[(widget from to) "	\n\"\f%		#	\f#*" [widget-apply widget :sample-face-get make-overlay from to nil t overlay face overlay-put widget-put :sample-overlay] 7])
(defalias 'widget-specify-doc #[(widget from to) "	\n%#\n#\f#)" [make-overlay from to nil t overlay overlay-put widget-doc widget face widget-documentation-face widget-put :doc-overlay] 6])
(defalias 'widget-specify-insert '(macro . #[(&rest form) "	BEBBBBBBD" [save-restriction let ((inhibit-read-only t) result before-change-functions after-change-functions) (insert "<>") (narrow-to-region (- (point) 2) (point)) (goto-char (1+ (point-min))) setq result progn form ((delete-region (point-min) (1+ (point-min))) (delete-region (1- (point-max)) (point-max)) (goto-char (point-max)) result)] 10]))
(custom-declare-face (quote widget-inactive-face) (quote ((((class grayscale color) (background dark)) (:foreground "light gray")) (((class grayscale color) (background light)) (:foreground "dim gray")) (t (:italic t)))) "Face used for inactive widgets." :group (quote widget-faces))
#@46 Make WIDGET inactive for user modifications.
(defalias 'widget-specify-inactive #[(widget from to) "	\n\"?@ \f%###\"5 ҂6 #	\n#)" [widget-get widget :inactive make-overlay from to nil t overlay overlay-put face widget-inactive-face evaporate priority 100 string-match "XEmacs" emacs-version read-only modification-hooks (widget-overlay-inactive) widget-put] 6 (#$ . 11403)])
#@42 Ignoring the arguments, signal an error.
(defalias 'widget-overlay-inactive #[(&rest junk) "? !" [inhibit-read-only error "Attempt to modify inactive widget"] 2 (#$ . 11826)])
#@44 Make WIDGET active for user modifications.
(defalias 'widget-specify-active #[(widget) "	\n\" !	\n#)" [widget-get widget :inactive inactive delete-overlay widget-put nil] 5 (#$ . 12014)])
#@38 Return the type of WIDGET, a symbol.
(defalias 'widget-type #[(widget) "@" [widget] 1 (#$ . 12219)])
(put (quote widget-type) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@85 In WIDGET set PROPERTY to VALUE.
The value can later be retrived with `widget-get'.
(defalias 'widget-put #[(widget property value) "A\n#" [widget plist-put property value] 5 (#$ . 12412)])
#@132 In WIDGET, get the value of PROPERTY.
The value could either be specified when the widget was created, or
later with `widget-put'.
(defalias 'widget-get #[(widget property) "\fO A) @=) AA *; \nA@ @I \nN \n +" [t nil tmp value missing widget property prop plist widget-type] 4 (#$ . 12615)])
#@121 In WIDGET, get the value of PROPERTY.
If the value is a symbol, return its binding.  
Otherwise, just return the value.
(defalias 'widget-get-indirect #[(widget property) "	\n\"9 J )" [widget-get widget property value] 4 (#$ . 12966)])
#@59 Non-nil iff there is a definition in WIDGET for PROPERTY.
(defalias 'widget-member #[(widget property) "A	 @\n= AA	 * ć@, @N	\"Ǉ" [widget property prop plist t widget-member widget-type nil] 4 (#$ . 13218)])
#@112 Apply the value of WIDGET's PROPERTY to the widget itself.
ARGS are passed as extra arguments to the function.
(defalias 'widget-apply #[(widget property &rest args) "\n\"\n\f#" [apply widget-get widget property args] 4 (#$ . 13457)])
#@38 Extract the current value of WIDGET.
(defalias 'widget-value #[(widget) "	\n	\"#" [widget-apply widget :value-to-external :value-get] 6 (#$ . 13702)])
#@43 Set the current value of WIDGET to VALUE.
(defalias 'widget-value-set #[(widget value) "	\n	\f##" [widget-apply widget :value-set :value-to-internal value] 7 (#$ . 13863)])
(defalias 'widget-match-inline #[(widget vals) "	\n\" 	\f#\" 	@#\" @CABǇ" [widget-get widget :inline widget-apply :match-inline vals :match nil] 4])
#@47 Apply :action in WIDGET in response to EVENT.
(defalias 'widget-apply-action #[(widget &optional event) "	\n\" 	\f#!" [widget-apply widget :active :action event error "Attempt to perform action on inactive widget"] 4 (#$ . 14212)])
#@120 Prompt for a value matching WIDGET, using PROMPT.
The current value is assumed to be VALUE, unless UNBOUND is non-nil.
(defalias 'widget-prompt-value #[(widget prompt &optional value unbound) "< C@)#!%	\n	#2 @\"	)" [widget format "[%s] %s" prompt widget-convert widget-apply :prompt-value value unbound answer :match error "Value does not match %S type."] 7 (#$ . 14460)])
#@110 Get the item WIDGET is assumed to toggle.
This is only meaningful for radio buttons or checkboxes in a list.
(defalias 'widget-get-sibling #[(widget) "	\n\"\f\"ȍ+" [widget-get widget :parent parent :children children nil child (byte-code " @A	\"\f=  	\"  Ƈ" [children child widget-get :button widget throw nil] 3)] 3 (#$ . 14876)])
#@237 Map FUNCTION over the buttons in BUFFER.
FUNCTION is called with the arguments WIDGET and MAPARG.

If FUNCTION returns non-nil, the walk is cancelled.

The arguments MAPARG, and BUFFER default to nil and (current-buffer),
respectively.
(defalias 'widget-map-buttons #[(function &optional buffer maparg) "e	 	q )  @A\"A@> \" 	\f\n\"  +" [nil buffer overlay-lists overlays widget cur append overlay-get button function maparg] 4 (#$ . 15241)])
(custom-declare-variable (quote widget-glyph-directory) (quote (concat data-directory "custom/")) "Where widget glyphs are located.\nIf this variable is nil, widget will try to locate the directory\nautomatically." :group (quote widgets) :type (quote directory))
(custom-declare-variable (quote widget-glyph-enable) (quote t) "If non nil, use glyphs in images when available." :group (quote widgets) :type (quote boolean))
(custom-declare-variable (quote widget-image-conversion) (quote (quote ((xpm ".xpm") (gif ".gif") (png ".png") (jpeg ".jpg" ".jpeg") (xbm ".xbm")))) "Conversion alist from image formats to file name suffixes." :group (quote widgets) :type (quote (repeat (cons :format "%v" (symbol :tag "Image Format" unknown) (repeat :tag "Suffixes" (string :format "%v"))))))
#@207 Create a glyph corresponding to IMAGE with string TAG as fallback.
IMAGE should either already be a glyph, or be a file name sans
extension (xpm, xbm, gif, jpg, or png) located in
`widget-glyph-directory'.
(defalias 'widget-glyph-find #[(image tag) " \" \f ! ! ! ȇ!/ !/ ; \n= PDy y @@!k @A##I AN  @@##D!+\" #D!: !ȇ" [image string-match "XEmacs" emacs-version widget-glyph-enable fboundp make-glyph locate-file nil glyphp widget-glyph-directory data-directory "custom/" dirlist widget-image-conversion formats file valid-image-instantiator-format-p mapconcat identity ":" vector :file string :data tag valid-instantiator-p] 8 (#$ . 16513)])
#@783 In WIDGET, insert the text TAG or, if supported, IMAGE.
IMAGE should either be a glyph, an image instantiator, or an image file
name sans extension (xpm, xbm, gif, jpg, or png) located in
`widget-glyph-directory'.

Optional arguments DOWN and INACTIVE is used instead of IMAGE when the
glyph is pressed or inactive, respectively. 

WARNING: If you call this with a glyph, and you want the user to be
able to invoke the glyph, make sure it is unique.  If you use the
same glyph for multiple widgets, invoking any of the glyphs will
cause the last created widget to be invoked.

Instead of an instantiator, you can also use a list of instantiators,
or whatever `make-glyph' will accept.  However, in that case you must
provide the fallback TAG as a part of the instantiator yourself.
(defalias 'widget-glyph-insert #[(widget tag image &optional down inactive) "	\n\" \n\"\n\"$ \nc)" [widget-glyph-find image tag glyph widget-glyph-insert-glyph widget down inactive] 8 (#$ . 17275)])
#@158 In WIDGET, insert GLYPH.
If optional arguments DOWN and INACTIVE are given, they should be
glyphs used when the widget is pushed and inactive, respectively.
(defalias 'widget-glyph-insert-glyph #[(widget glyph &optional down inactive) " \n# #\f \f#c``S\"/ \"	\n\n#\n#\n#\n\n\"	c \n	#\n	#* \n#z #\f \f#" [widget set-glyph-property glyph down inactive "*" make-extent widget-get :help-echo help-echo ext set-extent-property invisible t start-open end-open set-extent-end-glyph balloon-help widget-put :glyph-up :glyph-down :glyph-inactive] 4 (#$ . 18280)])
(custom-declare-group (quote widget-button) nil "The look of various kinds of buttons." :group (quote widgets))
(custom-declare-variable (quote widget-button-prefix) (quote "") "String used as prefix for buttons." :type (quote string) :group (quote widget-button))
(custom-declare-variable (quote widget-button-suffix) (quote "") "String used as suffix for buttons." :type (quote string) :group (quote widget-button))
#@78 Create widget of TYPE.  
The optional ARGS are additional keyword arguments.
(defalias 'widget-create #[(type &rest args) "\n#\f\"\f)" [apply widget-convert type args widget widget-apply :create] 4 (#$ . 19344)])
#@117 As part of the widget PARENT, create a child widget TYPE.
The child is converted, using the keyword arguments ARGS.
(defalias 'widget-create-child-and-convert #[(parent type &rest args) "\n#\f#\f	\"7 \f		\"$ \f\"- \\\f\"\\#\f\"\f)" [apply widget-convert type args widget widget-put :parent parent widget-get :indent 0 :extra-offset :offset widget-apply :create] 7 (#$ . 19573)])
#@24 Create widget of TYPE.
(defalias 'widget-create-child #[(parent type) "	!\n\f#\n\"1 \n\" \n	\"( \\\n\"\\#\n\f\"\n)" [copy-sequence type widget widget-put :parent parent widget-get :indent 0 :extra-offset :offset widget-apply :create] 7 (#$ . 19994)])
#@41 Create widget of TYPE with value VALUE.
(defalias 'widget-create-child-value #[(parent type value) "	!\n\f\n##\n	#\n\"A \n	\". \n\"7 \\	\"\\#\n\"\n)" [copy-sequence type widget widget-put :value widget-apply :value-to-internal value :parent parent widget-get :indent 0 :extra-offset :offset :create] 7 (#$ . 20282)])
#@16 Delete WIDGET.
(defalias 'widget-delete #[(widget) "	\n\"" [widget-apply widget :delete] 3 (#$ . 20647)])
#@115 Convert TYPE to a widget without inserting it in the buffer. 
The optional ARGS are additional keyword arguments.
(defalias 'widget-convert #[(type &rest args) "9\n C !\fAA A@93 !H=3 AA= \nAD) \fm \f@9` !H=` \fAAi \n\n\f#)A \n A\" \n!)@Ns  @9 !H= \nA@#AA ) \n\" \n\"\n\n##)\n+" [type copy-sequence widget current args keys next symbol-name 0 58 :args nil widget-put plist-get :convert-widget convert-widget widget-type widget-member :value widget-get value widget-apply :value-to-internal] 8 (#$ . 20762)])
#@54 Call `insert' with ARGS and make the text read only.
(defalias 'widget-insert #[(&rest args) "\"+" [t nil after-change-functions before-change-functions inhibit-read-only apply insert args] 3 (#$ . 21400)])
#@316 Return a widget of type TYPE with endpoint FROM TO.
Optional ARGS are extra keyword arguments for TYPE.
and TO will be used as the widgets end points. If optional arguments
BUTTON-FROM and BUTTON-TO are given, these will be used as the widgets
button end points.
Optional ARGS are extra keyword arguments for TYPE.
(defalias 'widget-convert-text #[(type from to &optional button-from button-to &rest args) "\n%!!	\"\"	#	#A 	#	+" [apply widget-convert type :delete widget-leave-text args copy-marker from to widget set-marker-insertion-type t nil widget-put :from :to button-from widget-specify-button button-to] 6 (#$ . 21625)])
#@264 Return a widget of type TYPE with endpoint FROM TO.
Optional ARGS are extra keyword arguments for TYPE.
No text will be inserted to the buffer, instead the text between FROM
and TO will be used as the widgets end points, as well as the widgets
button end points.
(defalias 'widget-convert-button #[(type from to &rest args) "\n\f\f&" [apply widget-convert-text type from to args] 8 (#$ . 22313)])
#@59 Remove markers and overlays from WIDGET and its children.
(defalias 'widget-leave-text #[(widget) "	\n\"	\"	\f\"	\"	\"	\"	\"	\n\fЉЉB !\fL \f!V !\n` \n!	\"." [widget-get widget :from :to :button-overlay :sample-overlay :doc-overlay :field-overlay :children children field doc sample button to from nil delete-overlay mapcar widget-leave-text] 10 (#$ . 22723)])
#@122 Keymap containing useful binding for buffers containing widgets.
Recommended as a parent keymap for modes using widgets.
(defvar widget-keymap nil (#$ . 23154))
(byte-code "<  ###\n\"0 ##6 ##" [widget-keymap make-sparse-keymap define-key "	" widget-forward [(shift tab)] widget-backward [backtab] string-match "XEmacs" emacs-version [button1] widget-button1-click [button2] widget-button-click [down-mouse-2] "" widget-button-press] 4)
#@63 Keymap used for events the widget does not handle themselves.
(defvar widget-global-map global-map (#$ . 23643))
(make-variable-buffer-local (quote widget-global-map))
#@39 Keymap used inside an editable field.
(defvar widget-field-keymap nil (#$ . 23817))
(byte-code ": \n! \" ######\"ȇ" [widget-field-keymap copy-keymap widget-keymap string-match "XEmacs" emacs-version define-key [menu-bar] nil "" widget-kill-line "" widget-complete "" widget-field-activate "" widget-beginning-of-line "" widget-end-of-line set-keymap-parent global-map] 4)
#@34 Keymap used inside a text field.
(defvar widget-text-keymap nil (#$ . 24245))
(byte-code "( \n! \" ###\"ȇ" [widget-text-keymap copy-keymap widget-keymap string-match "XEmacs" emacs-version define-key [menu-bar] nil "" widget-beginning-of-line "" widget-end-of-line set-keymap-parent global-map] 4)
#@36 Invoke the ediable field at point.
(defalias 'widget-field-activate #[(pos &optional event) "	\" \n\f\"  \"!)" [get-char-property pos field widget-apply-action event call-interactively lookup-key widget-global-map this-command-keys] 5 (#$ . 24581) "@d"])
(custom-declare-face (quote widget-button-pressed-face) (quote ((((class color)) (:foreground "red")) (t (:bold t :underline t)))) "Face used for pressed buttons." :group (quote widget-faces))
#@36 Invoke button below mouse pointer.
(defalias 'widget-button-click #[(event) "! \n! \n!\n!\n!\" 	\"\n\n\"\f\n\"Ύ\n#\n#\n# \n!  \n! \"= \n#\n#W \n\f#\n#W  \"= \n\"-\"  \"  \" \" \n!   !**!" [fboundp event-glyph event widget-glyph-click widget-event-point pos get-char-property button widget-get :button-overlay overlay overlay-get face mouse-face ((byte-code "	\n#	#" [overlay-put overlay face mouse-face] 4)) t track-mouse overlay-put widget-button-pressed-face widget-apply :mouse-down-action button-release-event-p widget-read-event widget-apply-action nil command up lookup-key widget-global-map [button2] [down-mouse-2] [button2up] [mouse-2] call-interactively message "You clicked somewhere weird."] 5 (#$ . 25050) "@e"])
#@35 Invoke glyph below mouse pointer.
(defalias 'widget-button1-click #[(event) "! \n! \n! \"!" [fboundp event-glyph event widget-glyph-click call-interactively lookup-key widget-global-map this-command-keys] 4 (#$ . 25975) "@e"])
#@26 Handle click on a glyph.
(defalias 'widget-glyph-click #[(event) "	!\n\"	!\f \f\" \n	\f) \f\n\"* \n	\f\f![ \f!=K 	#S #	!\f/ 	h #\f!= 	!\" ! \f\" ! \f	\")." [event-glyph event glyph glyph-property widget event-glyph-extent extent widget-get :glyph-down down-glyph :glyph-up up-glyph last button-release-event-p set-extent-property end-glyph next-event message "You clicked on a glyph." widget-apply :active "This glyph is inactive." widget-apply-action] 5 (#$ . 26223)])
#@23 Invoke button at POS.
(defalias 'widget-button-press #[(pos &optional event) "	\" \n\f\"$  \"!# !))" [get-char-property pos button widget-apply-action event lookup-key widget-global-map this-command-keys command commandp call-interactively] 4 (#$ . 26785) "@d"])
#@81 Return the tabable widget at POS, or nil.
POS defaults to the value of (point).
(defalias 'widget-tabable-at #[(&optional pos) " ``\" `\". \f\", Y- \f- \f))" [pos get-char-property button field widget widget-get :tab-order order 0] 4 (#$ . 27076)])
(custom-declare-variable (quote widget-use-overlay-change) (quote (string-match "XEmacs" emacs-version)) "If non-nil, use overlay change functions to tab around in the buffer.\nThis is much faster, but doesn't work reliably on Emacs 19.34." :type (quote boolean) :group (quote widgets))
#@83 Move point to the ARG next field or button.
ARG may be negative to move backward.
(defalias 'widget-move #[(arg) "o V  ` V_ m% eb5 2 `!b5 u`=F =F ! \f[ \f\f=[ S\f) W oo db | `!b !`= = ! \f \f\f= T)_  \f \f=   )u+`!!" [arg 0 backward-char widget-tabable-at old number pos widget-use-overlay-change next-overlay-change 1 error "No buttons or fields found" new previous-overlay-change nil widget-echo-help run-hooks widget-move-hook] 4 (#$ . 27644)])
#@90 Move point to the next field or button.
With optional ARG, move across that many fields.
(defalias 'widget-forward #[(arg) "!!" [run-hooks widget-forward-hook widget-move arg] 2 (#$ . 28204) "p"])
#@94 Move point to the previous field or button.
With optional ARG, move across that many fields.
(defalias 'widget-backward #[(arg) "![!" [run-hooks widget-backward-hook widget-move arg] 2 (#$ . 28413) "p"])
#@68 Go to beginning of field or beginning of line, whichever is first.
(defalias 'widget-beginning-of-line #[nil "`! 	! `= b  !*Ɖ" [widget-field-find field widget-field-start start call-interactively beginning-of-line t zmacs-region-stays] 3 (#$ . 28629) nil])
#@56 Go to end of field or end of line, whichever is first.
(defalias 'widget-end-of-line #[nil "`! 	! `= b  !*Ɖ" [widget-field-find field widget-field-end end call-interactively end-of-line t zmacs-region-stays] 3 (#$ . 28915) nil])
#@58 Kill to end of field or end of line, whichever is first.
(defalias 'widget-kill-line #[nil "`!y`)	 	!	$ V$ `\"' !+" [widget-field-find field 1 newline widget-field-end end kill-region call-interactively kill-line] 3 (#$ . 29173) nil])
(custom-declare-variable (quote widget-complete-field) (quote (lookup-key global-map "")) "Default function to call for completion inside fields." :options (quote (ispell-complete-word complete-tag lisp-complete-symbol)) :type (quote function) :group (quote widgets))
#@111 Complete content of editable field from point.
When not inside a field, move to the previous button or field.
(defalias 'widget-complete #[nil "`! 	\" !)" [widget-field-find field widget-apply :complete error "Not in an editable field"] 4 (#$ . 29704) nil])
(byte-code "! B!! B!" [boundp widget-field-new nil current-load-list make-variable-buffer-local widget-field-list] 2)
#@55 Setup current buffer so editing string widgets works.
(defalias 'widget-setup #[nil "H @A\nB\n	\"@\n	\"A\n\n!\n!#\n* ,  " [t nil field before-change-functions after-change-functions inhibit-read-only widget-field-new widget-field-list widget-get :field-overlay to from widget-specify-field marker-position widget-clear-undo widget-add-change] 5 (#$ . 30122)])
(byte-code "! B!! B!" [boundp widget-field-last nil current-load-list make-variable-buffer-local widget-field-was] 2)
#@45 Return the start of WIDGET's editing field.
(defalias 'widget-field-buffer #[(widget) "	\n\"\f !)" [widget-get widget :field-overlay overlay overlay-buffer] 4 (#$ . 30683)])
#@45 Return the start of WIDGET's editing field.
(defalias 'widget-field-start #[(widget) "	\n\"\f !)" [widget-get widget :field-overlay overlay overlay-start] 4 (#$ . 30870)])
#@43 Return the end of WIDGET's editing field.
(defalias 'widget-field-end #[(widget) "	\n\" \f 	\" !S !)" [widget-get widget :field-overlay overlay widget-field-add-space :size overlay-end] 4 (#$ . 31055)])
#@99 Return the field at POS.
Unlike (get-char-property POS 'field) this, works with empty fields too.
(defalias 'widget-field-find #[(pos) "\f7 \f@\fA!!	X3 	X3 \n1 !* \n+" [widget-field-list nil found field fields widget-field-start widget-field-end end start pos debug "Overlapping fields"] 4 (#$ . 31282)])
(defalias 'widget-before-change #[(from to) "?; \n!!\f=  $!: 1 $!: : Џ*" [inhibit-read-only widget-field-find from to to-field from-field add-hook post-command-hook widget-add-change nil t error "Change should be restricted to a single field" "Attempt to change text outside editable field" widget-field-use-before-change (widget-apply from-field :notify from-field) ((error (debug "Before Change")))] 6])
(defalias 'widget-add-change #[nil "!#!$!$" [make-local-hook post-command-hook remove-hook widget-add-change t before-change-functions add-hook widget-before-change nil after-change-functions widget-after-change] 5])
(defalias 'widget-after-change #[(from to old) "" [nil (byte-code "	!\n! \f= !\f\"\f	\"\n \f!\f!ZWR b\\Z\") ZV `\\Wn `Vx \\{ `bh= `V ! )*\n \f!\f! V Sf= S W f\n= T\n$T$T) **\f\f#*" [widget-field-find from to other field debug "Change in different fields" widget-get :size :secret secret size widget-field-start widget-field-end end begin insert-char 32 delete-backward-char 1 old subst-char-in-region put-text-property widget-apply :notify] 6) ((error (debug "After Change")))] 3])
#@102 Tell :parent of WIDGET to handle the :action.
Optional EVENT is the event that triggered the action.
(defalias 'widget-parent-action #[(widget &optional event) "\n\"\f#" [widget-apply widget-get widget :parent :action event] 4 (#$ . 32963)])
#@46 Delete all :children and :buttons in WIDGET.
(defalias 'widget-children-value-delete #[(widget) "\f\"\"\f#\"\"#" [mapcar widget-delete widget-get widget :children widget-put nil :buttons] 5 (#$ . 33216)])
#@34 All the :children must be valid.
(defalias 'widget-children-validate #[(widget) "	\n\"É% \f% @A\"\n \f+" [widget-get widget :children nil found child children widget-apply :validate] 3 (#$ . 33449)])
#@42 Convert :args as widget types in WIDGET.
(defalias 'widget-types-convert-widget #[(widget) "	\n	\n\"\"#	" [widget-put widget :args mapcar widget-convert widget-get] 8 (#$ . 33679)])
#@41 Initialize :value from :args in WIDGET.
(defalias 'widget-value-convert-widget #[(widget) "	\n\" 	@#	\n#)	" [widget-get widget :args args widget-put :value nil] 5 (#$ . 33873)])
#@39 Return the :value property of WIDGET.
(defalias 'widget-value-value-get #[(widget) "	\n\"" [widget-get widget :value] 3 (#$ . 34070)])
(byte-code "\f\n\f!#%')+-/&1" [define-widget default nil "Basic widget other widgets are derived from." :value-to-internal #[(widget value) "" [value] 1] :value-to-external #[(widget value) "" [value] 1] :button-prefix widget-button-prefix :button-suffix widget-button-suffix :complete widget-default-complete :create widget-default-create :indent :offset 0 :format-handler widget-default-format-handler :button-face-get widget-default-button-face-get :sample-face-get widget-default-sample-face-get :delete widget-default-delete :value-set widget-default-value-set :value-inline widget-default-value-inline :menu-tag-get widget-default-menu-tag-get :validate #[(widget) "" [nil] 1] :active widget-default-active :activate widget-specify-active :deactivate widget-default-deactivate :mouse-down-action #[(widget event) "" [nil] 1] :action widget-default-action :notify widget-default-notify :prompt-value widget-default-prompt-value] 50)
#@130 Call the value of the :complete-function property of WIDGET.
If that does not exists, call the value of `widget-complete-field'.
(defalias 'widget-default-complete #[(widget) "	\n\" !)" [widget-get widget :complete-function fun call-interactively widget-complete-field] 3 (#$ . 35222)])
#@47 Create WIDGET at point in the current buffer.
(defalias 'widget-default-create #[(widget) "c`Z`}eTb`	\n\f\"cb#g!H#=\\ cc=q `\"cc= !\"c`c= `\fc= `c= %\"cc%\"\"c=*\"+\",- , -#, ,cp02\"!)*c=94\"55`\n5ch=/!\"c`	)c=ZTT:\"c`c;#): zz#\f\f#\n	\n	#b:\".e!d!@A \"A @\"B C#B D@#*eeT|dSd|db-E  " [t nil after-change-functions before-change-functions result inhibit-read-only "<>" 2 value-pos doc-end doc-begin sample-end sample-begin button-end button-begin from widget-get widget :format re-search-forward "%\\(.\\)" match-string 1 0 escape replace-match "" 37 "%" 91 widget-get-indirect :button-prefix 93 :button-suffix 123 125 110 :indent "\n" insert-char 32 116 :tag-glyph :tag tag glyph widget-glyph-insert "image" standard-output princ :value 100 :doc doc 10 delete-backward-char 118 widget-apply :value-create :format-handler widget-specify-button widget-specify-sample widget-specify-doc copy-marker to set-marker-insertion-type widget-put :from :to widget-clear-undo] 9 (#$ . 35523)])
(defalias 'widget-default-format-handler #[(widget escape) "	\n\"\f= 	\"	\"4 9, 	\n\"\"4 	\n\"!;E GVE 	\" h=j 	\"j 	\"\"H=z O\" ԉO	   ւ %B, \f\"	\n#)" [widget-get widget :buttons buttons escape 104 :documentation-property doc-property :doc documentation-property :value doc-try 1 doc-text :documentation-indent doc-indent 10 :indent insert-char 32 0 42 nil string-match "\n+\\'" widget-create-child-and-convert documentation-string error "Unknown escape `%c'" widget-put] 7])
(defalias 'widget-default-button-face-get #[(widget) "	\n\" 	\" \f\" )" [widget-get widget :button-face :parent parent widget-apply :button-face-get widget-button-face] 4])
(defalias 'widget-default-sample-face-get #[(widget) "	\n\"" [widget-get widget :sample-face] 3])
(defalias 'widget-default-delete #[(widget) "	\n\"	\"	\f\"	\"	\"	\"ȉ\n\f	\"? !I !S !] !Wk |ȉȉ.	 " [widget-get widget :from :to :inactive :button-overlay :sample-overlay :doc-overlay nil t inhibit-read-only after-change-functions before-change-functions doc-overlay sample-overlay button-overlay inactive-overlay to from widget-apply :value-delete delete-overlay widget-clear-undo] 9])
(defalias 'widget-default-value-set #[(widget value) "`\f\"!\"!X3 X3 SY0 ZZ3 Z	\f\"b\"#\")	w 	Wk \"	\\\\bw 	\\\"S^b," [old-pos copy-marker widget-get widget :from from :to to 1 offset widget-apply :delete widget-put :value value :create 0] 4])
(defalias 'widget-default-value-inline #[(widget) "	\n\" 	!	!C" [widget-get widget :inline widget-value] 3])
(defalias 'widget-default-menu-tag-get #[(widget) "	\n\" 	\" 	\"!" [widget-get widget :menu-tag :tag widget-princ-to-string :value] 4])
#@52 Return t iff this widget active (user modifiable).
(defalias 'widget-default-active #[(widget) "	\n\"? 	\"? \f\")" [widget-get widget :inactive :parent parent widget-apply :active] 4 (#$ . 38774)])
#@46 Make WIDGET inactive for user modifications.
(defalias 'widget-default-deactivate #[(widget) "		\"	\f\"#" [widget-specify-inactive widget widget-get :from :to] 6 (#$ . 38991)])
(defalias 'widget-default-action #[(widget &optional event) "	\n\" 	$)" [widget-get widget :parent parent widget-apply :notify event] 6])
(defalias 'widget-default-notify #[(widget child &optional event) "	\n\"" [widget-default-action widget event] 3])
(defalias 'widget-default-prompt-value #[(widget prompt value unbound) "	!" [eval-minibuffer prompt] 2])
(define-widget (quote item) (quote default) "Constant items for inclusion in other widgets." :convert-widget (quote widget-value-convert-widget) :value-create (quote widget-item-value-create) :value-delete (quote ignore) :value-get (quote widget-value-value-get) :match (quote widget-item-match) :match-inline (quote widget-item-match-inline) :action (quote widget-item-action) :format "%t\n")
(defalias 'widget-item-value-create #[(widget) "p\f\"!)" [standard-output princ widget-get widget :value] 4])
(defalias 'widget-item-match #[(widget value) "	\n\"" [widget-get widget :value value] 3])
(defalias 'widget-item-match-inline #[(widget values) "	\n\"<) G\fGX) \fG#( \fG\"B))" [widget-get widget :value value values widget-sublist 0 head] 5])
#@101 Return the sublist of LIST from START to END.
If END is omitted, it defaults to the length of LIST.
(defalias 'widget-sublist #[(list start &optional end) "V\n \n% X?( \n!ZZ\nơ\n\n!" [start 0 list end copy-sequence 1 nil] 2 (#$ . 40329)])
(defalias 'widget-item-action #[(widget &optional event) "	\n	$" [widget-apply widget :notify event] 5])
(custom-declare-variable (quote widget-push-button-gui) (quote t) "If non nil, use GUI push buttons when available." :group (quote widgets) :type (quote boolean))
(byte-code "! B" [boundp widget-push-button-cache nil current-load-list] 2)
(custom-declare-variable (quote widget-push-button-prefix) (quote "[") "String used as prefix for buttons." :type (quote string) :group (quote widget-button))
(custom-declare-variable (quote widget-push-button-suffix) (quote "]") "String used as suffix for buttons." :type (quote string) :group (quote widget-button))
(define-widget (quote push-button) (quote item) "A pushable button." :button-prefix "" :button-suffix "" :value-create (quote widget-push-button-value-create) :format "%[%v%]")
(defalias 'widget-push-button-value-create #[(widget) "	\n\" 	\"	\"\fQ	\f\"A\f1 		# ! !  !   \" \fj \f	#\f\f\fBB	\fH@	#D!\fHA@	#D!\fH8	#D!$ 	c," [widget-get widget :tag :value tag :tag-glyph tag-glyph widget-push-button-prefix widget-push-button-suffix text assoc widget-push-button-cache gui widget-glyph-insert fboundp make-gui-button make-glyph widget-push-button-gui device-on-window-system-p string-match "XEmacs" emacs-version widget-gui-action widget-glyph-insert-glyph 1 vector string :data 2] 10])
#@27 Apply :action for WIDGET.
(defalias 'widget-gui-action #[(widget) "	 \"" [widget-apply-action widget this-command-keys] 3 (#$ . 42046)])
(custom-declare-variable (quote widget-link-prefix) (quote "[") "String used as prefix for links." :type (quote string) :group (quote widget-button))
(custom-declare-variable (quote widget-link-suffix) (quote "]") "String used as suffix for links." :type (quote string) :group (quote widget-button))
(byte-code "\f\n&%" [define-widget link item "An embedded link." :button-prefix widget-link-prefix :button-suffix widget-link-suffix :help-echo "Follow the link." :format "%[%t%]" info-link "A link to an info file." :action widget-info-link-action] 12)
#@41 Open the info node specified by WIDGET.
(defalias 'widget-info-link-action #[(widget &optional event) "\n!!" [Info-goto-node widget-value widget] 3 (#$ . 42768)])
(define-widget (quote url-link) (quote link) "A link to an www page." :action (quote widget-url-link-action))
#@35 Open the url specified by WIDGET.
(defalias 'widget-url-link-action #[(widget &optional event) "\n!!" [browse-url widget-value widget] 3 (#$ . 43050)])
(define-widget (quote function-link) (quote link) "A link to an Emacs function." :action (quote widget-function-link-action))
#@40 Show the function specified by WIDGET.
(defalias 'widget-function-link-action #[(widget &optional event) "\n!!" [describe-function widget-value widget] 3 (#$ . 43337)])
(define-widget (quote variable-link) (quote link) "A link to an Emacs variable." :action (quote widget-variable-link-action))
#@40 Show the variable specified by WIDGET.
(defalias 'widget-variable-link-action #[(widget &optional event) "\n!!" [describe-variable widget-value widget] 3 (#$ . 43641)])
(define-widget (quote file-link) (quote link) "A link to a file." :action (quote widget-file-link-action))
#@36 Find the file specified by WIDGET.
(defalias 'widget-file-link-action #[(widget &optional event) "\n!!" [find-file widget-value widget] 3 (#$ . 43926)])
(define-widget (quote emacs-library-link) (quote link) "A link to an Emacs Lisp library file." :action (quote widget-emacs-library-link-action))
#@50 Find the Emacs Library file specified by WIDGET.
(defalias 'widget-emacs-library-link-action #[(widget &optional event) "!!!" [find-file locate-library widget-value widget] 4 (#$ . 44233)])
(define-widget (quote emacs-commentary-link) (quote link) "A link to Commentary in an Emacs Lisp library file." :action (quote widget-emacs-commentary-link-action))
#@68 Find the Commentary section of the Emacs file specified by WIDGET.
(defalias 'widget-emacs-commentary-link-action #[(widget &optional event) "\n!!" [finder-commentary widget-value widget] 3 (#$ . 44599)])
(define-widget (quote editable-field) (quote default) "An editable text field." :convert-widget (quote widget-value-convert-widget) :keymap widget-field-keymap :format "%v" :value "" :prompt-internal (quote widget-field-prompt-internal) :prompt-history (quote widget-field-history) :prompt-value (quote widget-field-prompt-value) :action (quote widget-field-action) :validate (quote widget-field-validate) :valid-regexp "" :error "No match" :value-create (quote widget-field-value-create) :value-delete (quote widget-field-value-delete) :value-get (quote widget-field-value-get) :match (quote widget-field-match))
#@36 History of field minibuffer edits.
(defvar widget-field-history nil (#$ . 45427))
(defalias 'widget-field-prompt-internal #[(widget prompt initial history) "	\n#" [read-string prompt initial history] 4])
(defalias 'widget-field-prompt-value #[(widget prompt value unbound) "?\f \n\f#B\n\"	\n\n	%\f\n\f#+" [unbound widget-apply widget :value-to-internal value 0 widget-get :prompt-history history initial :prompt-internal prompt answer :value-to-external] 6])
(byte-code "! B" [boundp widget-edit-functions nil current-load-list] 2)
(defalias 'widget-field-action #[(widget &optional event) "!\f\"" [widget-forward 1 run-hook-with-args widget-edit-functions widget] 3])
(defalias 'widget-field-validate #[(widget) "	\n\"	\f\"\"? 	+" [widget-apply widget :value-get widget-get :valid-regexp regexp value string-match] 4])
(defalias 'widget-field-value-create #[(widget) "	\n\"	\"`  B	\n#c8 GW8 GZ\"	>E 	BA`ϓA\"Y c@ϓ@\"," [widget-get widget :size :value make-marker overlay from value size widget-put :field-overlay insert-char 32 widget-field-list widget-field-new nil set-marker-insertion-type 10 t] 5])
(defalias 'widget-field-value-delete #[(widget) "	\n\"	\f\" !)" [delq widget widget-field-list widget-get :field-overlay overlay delete-overlay] 4])
(defalias 'widget-field-value-get #[(widget) "	!	!	!	\"	\"p	\n\f  \nq	Q 	UQ \fVQ Sf=Q S, \f\" \f\\W \f\\\"ITa )q) 	\"." [widget-field-start widget widget-field-end widget-field-buffer widget-get :size :secret old secret size buffer to from 0 32 buffer-substring-no-properties result index get-char-property :value] 8])
(defalias 'widget-field-match #[(widget value) ";" [value] 1])
(byte-code "\f%	!#%&!" [define-widget text editable-field :keymap widget-text-keymap "A multiline text area." menu-choice default "A menu of options." :convert-widget widget-types-convert-widget :format "%[%t%]: %v" :case-fold t :tag "choice" :void (item :format "invalid (%t)\n") :value-create widget-choice-value-create :value-delete widget-children-value-delete :value-get widget-choice-value-get :value-inline widget-choice-value-inline :mouse-down-action widget-choice-mouse-down-action :action widget-choice-action :error "Make a choice" :validate widget-choice-validate :match widget-choice-match :match-inline widget-choice-match-inline] 34)
(defalias 'widget-choice-value-create #[(widget) "	\n\"	\"B @A	# 		#C#	# d 	\"		\n$C#	#)+" [widget-get widget :value :args nil current args value widget-apply :match widget-put :children widget-create-child-value :choice :void void widget-create-child-and-convert] 8])
(defalias 'widget-choice-value-get #[(widget) "\n\"@!" [widget-value widget-get widget :children] 4])
(defalias 'widget-choice-value-inline #[(widget) "\n\"@\f\"" [widget-apply widget-get widget :children :value-inline] 4])
(custom-declare-variable (quote widget-choice-toggle) (quote nil) "If non-nil, a binary choice will just toggle between the values.\nOtherwise, the user will explicitly have to choose between the values\nwhen he invoked the menu." :type (quote boolean) :group (quote widgets))
(defalias 'widget-choice-mouse-down-action #[(widget &optional event) "	\n\"	\" ǂU !# !# ǂU GW. ǂU G\fV: ǂU GVE ͂U T \f>T ǂU *" [widget-get widget :args :choice old args window-system nil fboundp x-popup-menu popup-menu 2 widget-menu-max-size t widget-choice-toggle] 4])
(defalias 'widget-choice-action #[(widget &optional event) "	\n\"	\"	\"	\"ǉ	\n\f\fE 	\"E 	!\f#\f#*GUQ ǂ GU_ @  GU \f> \f@= A@ @  @	A	\"	BB !#	 			\"#\" 		$.	\"" [widget-get widget :args :choice widget-apply :menu-tag-get :case-fold nil choices current completion-ignore-case tag old args :validate widget-value external :value-to-internal internal widget-put :value 0 1 widget-choice-toggle 2 widget-choose reverse event widget-value-set :value-to-external widget-setup :notify run-hook-with-args widget-edit-functions] 9])
(defalias 'widget-choice-validate #[(widget) "	\n\"	\"	\f\"@= 	\" 	\"+" [widget-get widget :void :choice :children child choice void widget-apply :validate] 6])
(defalias 'widget-choice-match #[(widget value) "	\n\"É' \f' @A	#\n \f+" [widget-get widget :args nil found current args widget-apply :match value] 4])
(defalias 'widget-choice-match-inline #[(widget values) "	\n\"É% \f% @A\"\n \f+" [widget-get widget :args nil found current args widget-match-inline values] 3])
(define-widget (quote toggle) (quote item) "Toggle between two states." :format "%[%v%]\n" :value-create (quote widget-toggle-value-create) :action (quote widget-toggle-action) :match #[(widget value) "" [t] 1] :on "on" :off "off")
(defalias 'widget-toggle-value-create #[(widget) "	! 		\f\"	\"#		\"	\"#" [widget-value widget widget-glyph-insert widget-get :on :on-glyph :off :off-glyph] 6])
(defalias 'widget-toggle-action #[(widget &optional event) "		!?\"	\f	$	\"" [widget-value-set widget widget-value widget-apply :notify event run-hook-with-args widget-edit-functions] 5])
(define-widget (quote checkbox) (quote toggle) "A checkbox toggle." :button-suffix "" :button-prefix "" :format "%[%v%]" :on "[X]" :on-glyph "check1" :off "[ ]" :off-glyph "check0" :action (quote widget-checkbox-action))
#@66 Toggle checkbox, notify parent, and set active state of sibling.
(defalias 'widget-checkbox-action #[(widget &optional event) "	\n\"	!  	! \f\"  \f\")" [widget-toggle-action widget event widget-get-sibling sibling widget-value widget-apply :activate :deactivate] 4 (#$ . 51176)])
(define-widget (quote checklist) (quote default) "A multiple choice widget." :convert-widget (quote widget-types-convert-widget) :format "%v" :offset 4 :entry-format "%b %v" :menu-tag "checklist" :greedy nil :value-create (quote widget-checklist-value-create) :value-delete (quote widget-children-value-delete) :value-get (quote widget-checklist-value-get) :validate (quote widget-checklist-validate) :match (quote widget-checklist-match) :match-inline (quote widget-checklist-match-inline))
(defalias 'widget-checklist-value-create #[(widget) "		\"\"	\f\"$ 	@@#A 				\"#*" [widget-checklist-match-find widget widget-get :value :args args alist widget-checklist-add-item widget-put :children] 7])
(defalias 'widget-checklist-add-item #[(widget type chosen) "h= \n\" \n\"\"ǉ	\nc`Z`}eTb\n\"\n\"\"K \n\"`\n\"cb# !HƉ#= c = \n()??& = ) \n\"-\") .\" \n)A# \n)A@# \")a   3#\f\nB#\nB#.\neeT|dSd|db\n-" [10 widget-get widget :indent insert-char 32 t nil after-change-functions before-change-functions result inhibit-read-only "<>" 2 :children children :buttons buttons type :sibling-args :button-args button-args from child button :entry-format re-search-forward "%\\([bv%]\\)" match-string 1 0 escape replace-match "" 37 "%" 98 apply widget-create-child-and-convert checkbox :value chosen 118 widget-create-child widget-apply :deactivate :inline widget-create-child-value error "Unknown escape `%c'" widget-put :button] 7])
(defalias 'widget-checklist-match #[(widget values) "< \n\"A?" [values widget-checklist-match-inline widget] 3])
(defalias 'widget-checklist-match-inline #[(widget values) "	\n\"	\f\"!ŉ	\nm \n\"\fG \f\n\"@\"A\n\f\")i 	^ \n@C\"\nA\ni \n\"\n) ,B" [widget-get widget :greedy copy-sequence :args nil rest found args greedy values widget-checklist-match-up answer widget-match-inline vals append delq] 6])
(defalias 'widget-checklist-match-find #[(widget vals) "	\n\"	\f\"!	Z 	\"F 	\"@BBA	\")V S 	A	V 	) +" [widget-get widget :greedy copy-sequence :args nil found args greedy vals widget-checklist-match-up answer widget-match-inline match delq] 6])
(defalias 'widget-checklist-match-up #[(args vals) " 	 @A\n\" 	 \n*" [nil found current args widget-match-inline vals] 3])
(defalias 'widget-checklist-value-get #[(widget) "	\n\"É. @A\"!\n \f\"\"\n \f+" [widget-get widget :children nil result child children widget-value :button append widget-apply :value-inline] 5])
(defalias 'widget-checklist-validate #[(widget) "	\n\"É7 \f7 @A\"!3 \" \f," [widget-get widget :children nil found button child children :button widget-value widget-apply :validate] 4])
(byte-code "\f%	&&" [define-widget option checklist "An widget with an optional item." :inline t choice-item item "Button items that delegate action events to their parents." :action widget-parent-action :format "%[%t%] \n" radio-button toggle "A radio button for use in the `radio' widget." :notify widget-radio-button-notify "%[%v%]" :button-suffix "" :button-prefix :on "(*)" :on-glyph "radio1" :off "( )" :off-glyph "radio0"] 20)
(defalias 'widget-radio-button-notify #[(widget child &optional event) "\n\"\f\n$" [widget-apply widget-get widget :parent :action event] 5])
(define-widget (quote radio-button-choice) (quote default) "Select one of multiple options." :convert-widget (quote widget-types-convert-widget) :offset 4 :format "%v" :entry-format "%b %v" :menu-tag "radio" :value-create (quote widget-radio-value-create) :value-delete (quote widget-children-value-delete) :value-get (quote widget-radio-value-get) :value-inline (quote widget-radio-value-inline) :value-set (quote widget-radio-value-set) :error "You must push one of the buttons" :validate (quote widget-radio-validate) :match (quote widget-choice-match) :match-inline (quote widget-choice-match-inline) :action (quote widget-radio-action))
(defalias 'widget-radio-value-create #[(widget) "	\n\" @A	\f\" *" [widget-get widget :args nil arg args widget-radio-add-item] 3])
#@66 Add to radio widget WIDGET a new radio button item of type TYPE.
(defalias 'widget-radio-add-item #[(widget type) "h= \n\" \n\"\"ǉ	\nc`Z`}eTb\n\"\n\"\n\"\"R \n\"`\n\"?h #\n\"cb# !H%Ɖ#%= c %= \n??& %=  \n# \n\" 1\" %\"){  \n#5#\nC#%\nC#.\neeT|dSd|db\n-" [10 widget-get widget :indent insert-char 32 t nil after-change-functions before-change-functions result inhibit-read-only "<>" 2 :value value :children children :buttons buttons type :sibling-args :button-args button-args from :choice widget-apply :match chosen child button :entry-format re-search-forward "%\\([bv%]\\)" match-string 1 0 escape replace-match "" 37 "%" 98 apply widget-create-child-and-convert radio-button 118 widget-create-child-value widget-create-child :deactivate error "Unknown escape `%c'" widget-put :button] 7 (#$ . 55908)])
(defalias 'widget-radio-value-get #[(widget) "	! \n!)" [widget-radio-chosen widget chosen widget-value] 3])
#@57 Return the widget representing the chosen radio button.
(defalias 'widget-radio-chosen #[(widget) "	\n\"É4 @A\"\n\"0 *\n \f+" [widget-get widget :children nil found current children :button button widget-apply :value-get value] 4 (#$ . 57044)])
(defalias 'widget-radio-value-inline #[(widget) "	\n\"É8 @A\"\n\"4 \f\"*\n \f+" [widget-get widget :children nil found current children :button button widget-apply :value-get value :value-inline] 4])
(defalias 'widget-radio-value-set #[(widget value) "	\n\"ÉY @A\"\f?+ \n#\f\f\"\fH \"\"N \"\fT \f*\n +" [widget-get widget :children nil found current children :button button widget-apply :match value match widget-value-set :activate :deactivate] 4])
(defalias 'widget-radio-validate #[(widget) "	\n\"É0 0 @A\"\f\n\" = \"> 	," [widget-get widget :children nil button found current children :button widget-apply :value-get :validate] 4])
(defalias 'widget-radio-action #[(widget child event) "	\n\"	\">Y Y @A	\"\n\n=B \n\"\"U \n!U \n\"\") +	$" [widget-get widget :children :buttons nil current buttons children child :button button widget-value-set t widget-apply :activate widget-value :deactivate :notify event] 5])
(define-widget (quote insert-button) (quote push-button) "An insert button for the `editable-list' widget." :tag "INS" :help-echo "Insert a new item into the list at this position." :action (quote widget-insert-button-action))
(defalias 'widget-insert-button-action #[(widget &optional event) "\n\"\f\n\"#" [widget-apply widget-get widget :parent :insert-before :widget] 6])
(define-widget (quote delete-button) (quote push-button) "A delete button for the `editable-list' widget." :tag "DEL" :help-echo "Delete this item from the list." :action (quote widget-delete-button-action))
(defalias 'widget-delete-button-action #[(widget &optional event) "\n\"\f\n\"#" [widget-apply widget-get widget :parent :delete-at :widget] 6])
(custom-declare-variable (quote widget-editable-list-gui) (quote nil) "If non nil, use GUI push-buttons in editable list when available." :type (quote boolean) :group (quote widgets))
(define-widget (quote editable-list) (quote default) "A variable list of widgets of the same type." :convert-widget (quote widget-types-convert-widget) :offset 12 :format "%v%i\n" :format-handler (quote widget-editable-list-format-handler) :entry-format "%i %d %v" :menu-tag "editable-list" :value-create (quote widget-editable-list-value-create) :value-delete (quote widget-children-value-delete) :value-get (quote widget-editable-list-value-get) :validate (quote widget-children-validate) :match (quote widget-editable-list-match) :match-inline (quote widget-editable-list-match-inline) :insert-before (quote widget-editable-list-insert-before) :delete-at (quote widget-editable-list-delete-at))
(defalias 'widget-editable-list-format-handler #[(widget escape) "\n=& \" \"\"\f\"$* \n\")" [widget-editable-list-gui widget-push-button-gui escape 105 widget-get widget :indent insert-char 32 apply widget-create-child-and-convert insert-button :append-button-args widget-default-format-handler] 7])
(defalias 'widget-editable-list-value-create #[(widget) "	\n\"	\f\"@\"		`!#	\"\"Z \"T 	B @F @@#	B	AV )' 		#," [widget-get widget :value value :args type :inline inlinep nil children widget-put :value-pos copy-marker set-marker-insertion-type t widget-match-inline answer widget-editable-list-entry-create :children] 6])
(defalias 'widget-editable-list-value-get #[(widget) "\"\"\"" [apply append mapcar #[(child) "	\n\"" [widget-apply child :value-inline] 3] widget-get widget :children] 7])
(defalias 'widget-editable-list-match #[(widget value) "< \n\"A?" [value widget-editable-list-match-inline widget] 3])
(defalias 'widget-editable-list-match-inline #[(widget value) "	\n\"@8 8 \"\n1 \n@\"\nA4 )\f +B" [widget-get widget :args t nil found ok type value widget-match-inline answer append] 4])
(defalias 'widget-editable-list-insert-before #[(widget before) "	\n\"ĉ	 	\n\"b& 	\"b	ĉ#\n\"	\"WJ 	\"\n\"ē@	=` 	\nB#} A@	=s Ab AB. 		#" [widget-get widget :children t nil after-change-functions before-change-functions inhibit-read-only children before :entry-from :value-pos widget-editable-list-entry-create child :from widget-put widget-setup widget-apply :notify] 6])
(defalias 'widget-editable-list-delete-at #[(widget child) "\n\"!ĉ	\n\nE \n@	\nA\n	\"\f= \n	\n\"\"#	! -\f\"\f\"ĉ\f!|ĉĉ-\n\f\n\"\"#) \n\n#" [copy-sequence widget-get widget :buttons nil t after-change-functions before-change-functions inhibit-read-only button buttons :widget child widget-put delq widget-delete :entry-from :entry-to entry-to entry-from :children widget-setup widget-apply :notify] 8])
(defalias 'widget-editable-list-entry-create #[(widget value conv) "	\n\"@ĉ	ĉ\fc`Z`}eTb	\"> 	\"\"	\"c)# !Hʉ#=h c =} 		#\"$ = 		&\"$ = ( 		*# 		\" \")F 	/	/\"BB#e!d!122\"1\"42#51#*eeT|dSd|db-6#6#-" [widget-get widget :args widget-editable-list-gui nil insert delete child widget-push-button-gui type t after-change-functions before-change-functions result inhibit-read-only "<>" 2 :indent insert-char 32 :entry-format re-search-forward "%\\(.\\)" match-string 1 0 escape replace-match "" 37 "%" 105 apply widget-create-child-and-convert insert-button :insert-button-args 100 delete-button :delete-button-args 118 conv widget-create-child-value value widget-create-child error "Unknown escape `%c'" widget-put :buttons copy-marker entry-to entry-from set-marker-insertion-type :entry-from :entry-to :widget] 8])
(define-widget (quote group) (quote default) "A widget which group other widgets inside." :convert-widget (quote widget-types-convert-widget) :format "%v" :value-create (quote widget-group-value-create) :value-delete (quote widget-children-value-delete) :value-get (quote widget-editable-list-value-get) :validate (quote widget-children-validate) :match (quote widget-group-match) :match-inline (quote widget-group-match-inline))
(defalias 'widget-group-value-create #[(widget) "	\n\"	\"ĉ		v 	@	A	\"Ah=F 	\f\"F 	\f\"\"S 	\"p \"g 	@#p 	@@#B 	#-" [widget-get widget :args :value nil children answer arg value args widget-match-inline 10 :indent insert-char 32 widget-create-child :inline widget-create-child-value widget-put :children] 6])
(defalias 'widget-group-match #[(widget values) "< \n\" A?)" [values widget-group-match-inline widget match] 4])
(defalias 'widget-group-match-inline #[(widget vals) "	\n\"É> @A	\"4 A	\f@\" 	É F \f	B," [widget-get widget :args nil found answer argument args widget-match-inline vals append] 5])
(define-widget (quote visibility) (quote item) "An indicator and manipulator for hidden items." :format "%[%v%]" :button-prefix "" :button-suffix "" :on "Hide" :off "Show" :value-create (quote widget-visibility-value-create) :action (quote widget-toggle-action) :match #[(widget value) "" [t] 1])
(defalias 'widget-visibility-value-create #[(widget) "	\n\"	\" Q \f( \fQ* 	!9 	$? 	\f$*" [widget-get widget :on :off off on widget-push-button-prefix widget-push-button-suffix "" widget-value widget-glyph-insert "down" "down-pushed" "right" "right-pushed"] 6])
(define-widget (quote documentation-link) (quote link) "Link type used in documentation strings." :tab-order -1 :help-echo (quote widget-documentation-link-echo-help) :action (quote widget-documentation-link-action))
#@36 Tell what this link will describe.
(defalias 'widget-documentation-link-echo-help #[(widget) "\n\"Q" ["Describe the `" widget-get widget :value "' symbol."] 4 (#$ . 65214)])
#@76 Display documentation for WIDGET's value.  Ignore optional argument EVENT.
(defalias 'widget-documentation-link-action #[(widget &optional event) "	\n\"!!  !  !Q!/ !, !/ !*" [widget-get widget :value string intern symbol fboundp boundp apropos "\\`" regexp-quote "\\'" describe-function describe-variable] 4 (#$ . 65399)])
(custom-declare-variable (quote widget-documentation-links) (quote t) "Add hyperlinks to documentation strings when non-nil." :type (quote boolean) :group (quote widget-documentation))
(custom-declare-variable (quote widget-documentation-link-regexp) (quote "`\\([^\n`' ]+\\)'") "Regexp for matching potential links in documentation strings.\nThe first group should be the link itself." :type (quote regexp) :group (quote widget-documentation))
(custom-declare-variable (quote widget-documentation-link-p) (quote (quote intern-soft)) "Predicate used to test if a string is useful as a link.\nThe value should be a function.  The function will be called one\nargument, a string, and should return non-nil if there should be a\nlink for that string." :type (quote function) :options (quote (widget-documentation-link-p)) :group (quote widget-documentation))
(custom-declare-variable (quote widget-documentation-link-type) (quote (quote documentation-link)) "Widget type used for links in documentation strings." :type (quote symbol) :group (quote widget-documentation))
(defalias 'widget-documentation-link-add #[(widget from to) "	\n#\f] 		\"\n\f\nb#S !єѕ\f!O %\nB\n+  )		\n#,	\" U? \n}eb# \"y *)" [widget-specify-doc widget from to widget-documentation-links widget-documentation-link-regexp widget-documentation-link-p widget-documentation-link-type widget-get :buttons buttons type predicate regexp re-search-forward t match-string 1 end begin name widget-convert-button :value widget-put :indent indent 0 search-forward "\n" nil insert-char 32] 7])
(define-widget (quote documentation-string) (quote item) "A documentation string." :format "%v" :action (quote widget-documentation-string-action) :value-delete (quote widget-children-value-delete) :value-create (quote widget-documentation-string-value-create))
(defalias 'widget-documentation-string-value-create #[(widget) "	!	\"	\f\"\"`		\" 	̉O	̔Oѱ	`#	&	Bx `m Um \"c	`#	#+ 	c	`#,c" [widget-value widget widget-get :indent :parent :documentation-shown start shown indent doc string-match "\n" 0 nil buttons after before " " widget-documentation-link-add widget-create-child-and-convert visibility :help-echo "Show or hide rest of the documentation." :off "More" :action widget-parent-action insert-char 32 widget-put :buttons] 11])
(defalias 'widget-documentation-string-action #[(widget &rest ignore) "	\n\"\"?#)		!\"" [widget-get widget :parent parent widget-put :documentation-shown widget-value-set widget-value] 6])
(define-widget (quote const) (quote item) "An immutable sexp." :prompt-value (quote widget-const-prompt-value) :format "%t\n%d")
(defalias 'widget-const-prompt-value #[(widget prompt value unbound) "	!" [widget-value widget] 2])
(byte-code "\f&\f&" [define-widget function-item const "An immutable function name." :format "%v\n%h" :documentation-property #[(symbol) "" [nil (documentation symbol t) ((error))] 3] variable-item "An immutable variable name." variable-documentation] 8)
#@51 History of input to `widget-string-prompt-value'.
(defvar widget-string-prompt-value-history nil (#$ . 68936))
(byte-code "\f\n&\f&	" [define-widget string editable-field "A string" :tag "String" :format "%{%t%}: %v" :complete-function ispell-complete-word :prompt-history widget-string-prompt-value-history regexp "A regular expression." :match widget-regexp-match :validate widget-regexp-validate "Regexp"] 12)
(defalias 'widget-regexp-match #[(widget value) ";	 Ï" [value nil (byte-code "\n\"" [t string-match value ""] 4) ((error))] 3])
#@51 Check that the value of WIDGET is a valid regexp.
(defalias 'widget-regexp-validate #[(widget) "	!ŏ)" [widget-value widget val data (byte-code "\n\"" [nil string-match val ""] 4) ((error (byte-code "	\n\f!#	" [widget-put widget :error error-message-string data] 5)))] 3 (#$ . 69521)])
(define-widget (quote file) (quote string) "A file widget.  \nIt will read a file name from the minibuffer when invoked." :complete-function (quote widget-file-complete) :prompt-value (quote widget-file-prompt-value) :format "%{%t%}: %v" :tag "File")
#@50 Perform completion on file name preceding point.
(defalias 'widget-file-complete #[nil "`x`){\f!\f!\"\n=k \n5 \f\" k \nK |\n\"ck !\"\"Ր!)\"." [end "^ " nil beg pattern file-name-nondirectory name-part file-name-directory directory file-name-completion completion t message "Can't find completion for \"%s\"" ding expand-file-name "Making completion list..." file-name-all-completions list sort string< "*Completions*" display-completion-list "Making completion list...%s" "done"] 4 (#$ . 70078) nil])
(defalias 'widget-file-prompt-value #[(widget prompt value unbound) "	 !3 #!!\n\"\f\f%,!" [abbreviate-file-name unbound read-file-name prompt format "%s (default %s) " value file-name-directory file-name-nondirectory widget-get widget :must-match must-match file dir prompt2 nil] 7])
(define-widget (quote directory) (quote file) "A directory widget.  \nIt will read a directory name from the minibuffer when invoked." :tag "Directory")
#@51 History of input to `widget-symbol-prompt-value'.
(defvar widget-symbol-prompt-value-history nil (#$ . 71131))
(define-widget (quote symbol) (quote editable-field) "A lisp symbol." :value nil :tag "Symbol" :format "%{%t%}: %v" :match #[(widget value) "9" [value] 1] :complete-function (quote lisp-complete-symbol) :prompt-internal (quote widget-symbol-prompt-internal) :prompt-match (quote symbolp) :prompt-history (quote widget-symbol-prompt-value-history) :value-to-internal #[(widget value) "9	 !" [value symbol-name] 2] :value-to-external #[(widget value) ";	 !" [value intern] 2])
(defalias 'widget-symbol-prompt-internal #[(widget prompt initial history) "	\n\f\"&	;\" 	GU\" 	% !)" [completing-read prompt obarray widget-get widget :prompt-match nil initial history answer 0 error "No value"] 8])
#@53 History of input to `widget-function-prompt-value'.
(defvar widget-function-prompt-value-history nil (#$ . 71976))
(define-widget (quote function) (quote sexp) "A lisp function." :complete-function (quote lisp-complete-symbol) :prompt-value (quote widget-field-prompt-value) :prompt-internal (quote widget-symbol-prompt-internal) :prompt-match (quote fboundp) :prompt-history (quote widget-function-prompt-value-history) :action (quote widget-field-action) :tag "Function")
#@53 History of input to `widget-variable-prompt-value'.
(defvar widget-variable-prompt-value-history nil (#$ . 72456))
(byte-code "\f&	!H ! \fB#&MM!\"$&(&" [define-widget variable symbol "A lisp variable." :prompt-match boundp :prompt-history widget-variable-prompt-value-history :tag "Variable" featurep mule widget-coding-system-prompt-value-history nil current-load-list put variable-documentation "History of input to `widget-coding-system-prompt-value'." coding-system "A MULE coding-system." :format "%{%t%}: %v" "Coding system" :prompt-value widget-coding-system-prompt-value :action widget-coding-system-action #[(widget prompt value unbound) "\f# \"\"!" [intern completing-read format "%s (default %s) " prompt value mapcar #[(sym) "	!C" [symbol-name sym] 2] coding-system-list] 6] #[(widget &optional event) "		\"	!$	\"			$ )" [widget-coding-system-prompt-value widget widget-apply :menu-tag-get widget-value t answer widget-value-set :notify event widget-setup] 5] sexp editable-field "An arbitrary lisp expression." "Lisp expression" :value :validate widget-sexp-validate :match #[(widget value) "" [t] 1] :value-to-internal widget-sexp-value-to-internal :value-to-external #[(widget value) "	!" [read value] 2] widget-sexp-prompt-value-history widget-sexp-prompt-value] 22)
(defalias 'widget-sexp-value-to-internal #[(widget value) "9 ! !\" O \", GV2 P3 )" [value prin1-to-string pp-to-string pp string-match "\n\\'" 0 -1 40 "\n"] 3])
(defalias 'widget-sexp-validate #[(widget) "!q \"cebɏ*" [get-buffer-create " *Widget Scratch*" buffer erase-buffer widget-apply widget :value-get data (byte-code "	!m  \f\n#?- \f\f	\"#\f- \f`d{\"#\f)" [read buffer value widget-apply widget :match widget-put :error widget-get :type-error format "Junk at end of expression: %s"] 7) ((error (byte-code "	\n\f!#	" [widget-put widget :error error-message-string data] 5)))] 3])
#@49 History of input to `widget-sexp-prompt-value'.
(defvar widget-sexp-prompt-value-history nil (#$ . 74522))
(defalias 'widget-sexp-prompt-value #[(widget prompt value unbound) "	\n?\f \f!B\"#	!q\f 	ceb\f!m7 `d{\"," [read-string prompt unbound prin1-to-string value 0 widget-get widget :prompt-history found get-buffer-create " *Widget Scratch*" buffer erase-buffer read answer error "Junk at end of expression: %s"] 6])
(define-widget (quote restricted-sexp) (quote sexp) "A Lisp expression restricted to values that match.\nTo use this type, you must define :match or :match-alternatives." :type-error "The specified value is not valid" :match (quote widget-restricted-sexp-match) :value-to-internal #[(widget value) "	\n#\f !" [widget-apply widget :match value prin1-to-string] 4])
(defalias 'widget-restricted-sexp-match #[(widget value) "	\n\"? \f? @! @!3 @:8 @@=8 @A@=8 A \f*" [widget-get widget :match-alternatives nil matched alternatives functionp value quote t] 4])
(byte-code "\f\n&\f\n&\f \"&\f&\f\" &" [define-widget integer restricted-sexp "An integer." :tag "Integer" :value 0 :type-error "This field should contain an integer" :match-alternatives (integerp) number "A floating point number." "Number" 0.0 "This field should contain a number" (numberp) character editable-field "A character." "Character" :size 1 :format "%{%t%}: %v\n" :valid-regexp "\\`.\\'" :error "This field should contain a single character" :value-to-internal #[(widget value) "; !" [value char-to-string] 2] :value-to-external #[(widget value) ";	 H" [value 0] 2] :match #[(widget value) "!\n \n!\n" [fboundp characterp value] 2] list group "A lisp list." "List" "%{%t%}:\n%v" vector "A lisp vector." "Vector" widget-vector-match #[(widget value) "	\"" [append value nil] 3] #[(widget value) "\n\"" [apply vector value] 3]] 22)
(defalias 'widget-vector-match #[(widget value) "	! 	#\"" [vectorp value widget-group-match widget widget-apply :value-to-internal] 6])
(define-widget (quote cons) (quote group) "A cons-cell." :tag "Cons-cell" :format "%{%t%}:\n%v" :match (quote widget-cons-match) :value-to-internal #[(widget value) "@AD" [value] 2] :value-to-external #[(widget value) "@A@B" [value] 2])
(defalias 'widget-cons-match #[(widget value) ": \n\n\f#\"" [value widget-group-match widget widget-apply :value-to-internal] 6])
(define-widget (quote choice) (quote menu-choice) "A union of several sexp types." :tag "Choice" :format "%{%t%}: %[Value Menu%] %v" :button-prefix (quote widget-push-button-prefix) :button-suffix (quote widget-push-button-suffix) :prompt-value (quote widget-choice-prompt-value))
#@16 Make a choice.
(defalias 'widget-choice-prompt-value #[(widget prompt value unbound) "	\n\"	\"ĉ	\n; \n@\f#2 \n@ĉ\n \nA\n )	GUH Ă 	GUV 	@ 	GUz 	>z 	@=t 	A@ 	@ 	 	@	A	\"BBz $; \"; \"A)) $ -" [widget-get widget :args :case-fold nil old choices current completion-ignore-case args look widget-apply :match value 0 1 2 :menu-tag-get completing-read prompt t val try-completion try assoc widget-prompt-value] 6 (#$ . 77333)])
(byte-code "\f&	\f&\f&\f&" [define-widget radio radio-button-choice "A union of several sexp types." :tag "Choice" :format "%{%t%}:\n%v" :prompt-value widget-choice-prompt-value repeat editable-list "A variable length homogeneous list." "Repeat" "%{%t%}:\n%v%i\n" set checklist "A list of members from a fixed set." "Set" boolean toggle "To be nil or non-nil, that is the question." "Boolean" widget-boolean-prompt-value :button-prefix widget-push-button-prefix :button-suffix widget-push-button-suffix "%{%t%}: %[Toggle%]  %v\n" :on "on (non-nil)" :off "off (nil)"] 18)
(defalias 'widget-boolean-prompt-value #[(widget prompt value unbound) "	!" [y-or-n-p prompt] 2])
(define-widget (quote color) (quote editable-field) "Choose a color name (with sample)." :format "%t: %v (%{sample%})\n" :size 10 :tag "Color" :value "black" :complete (quote widget-color-complete) :sample-face-get (quote widget-color-sample-face-get) :notify (quote widget-color-notify) :action (quote widget-color-action))
#@31 Complete the color in WIDGET.
(defalias 'widget-color-complete #[(widget) "\n!`\" \"= !O ( \"O : GO!O !#ѐ!)!+" [buffer-substring-no-properties widget-field-start widget prefix widget-color-choice-list list try-completion completion t message "Exact match." error "Can't find completion for \"%s\"" insert-and-inherit nil "Making completion list..." all-completions "*Completions*" display-completion-list "Making completion list...done"] 5 (#$ . 78940)])
(defalias 'widget-color-sample-face-get #[(widget) "P!	\"( !, !\", Ώ*" [nil (widget-value widget) ((error (widget-get widget :value))) value intern "fg:" symbol string-match "XEmacs" emacs-version find-face set-face-foreground make-face (facemenu-get-face symbol) ((error (quote default)))] 4])
(byte-code "! B" [boundp widget-color-choice-list nil current-load-list] 2)
(defalias 'widget-color-choice-list #[nil " !    \"" [widget-color-choice-list fboundp read-color-completion-table mapcar #[(color) "C" [color] 1] x-defined-colors] 3])
#@27 History of entered colors
(defvar widget-color-history nil (#$ . 80052))
(defalias 'widget-color-action #[(widget &optional event) "	\n\"P	!	!	`	W ʂ3 `	G\\V/ G3 `	Z!A !Q P ЉB&GU?l 	\" 		$." [widget-apply widget :menu-tag-get tag ": " prompt widget-value value widget-field-start start 0 pos commandp read-color completing-read widget-color-choice-list nil widget-color-history answer widget-value-set widget-setup :notify event] 8])
#@43 Update the sample, and notofy the parent.
(defalias 'widget-color-notify #[(widget child &optional event) "\n\"\n\"#\n	#" [overlay-put widget-get widget :sample-overlay face widget-apply :sample-face-get widget-default-notify child event] 6 (#$ . 80550)])
#@120 Display the help message for the widget under the mouse.
Enable with (run-with-idle-timer 1 t 'widget-echo-help-mouse)
(defalias 'widget-echo-help-mouse #[nil " @	A@	AA\f\n#\fB\":& ɋ.\n?5 \n\"" [mouse-position pos frame x y window-at win coordinates-in-window-p where ((byte-code "	!	!	!	! B	&\nA@=3 \n8=3 \n@!)" [select-window win compute-motion window-start (0 . 0) window-end where window-width window-hscroll 0 result x 2 y widget-echo-help] 9)) track-mouse t add-hook post-command-hook widget-stop-mouse-tracking] 5 (#$ . 80826)])
#@42 Stop the mouse tracking done while idle.
(defalias 'widget-stop-mouse-tracking #[(&rest args) "\"É" [remove-hook post-command-hook widget-stop-mouse-tracking nil track-mouse] 3 (#$ . 81424)])
#@29 The button or field at POS.
(defalias 'widget-at #[(pos) "	\" 	\"" [get-char-property pos button field] 3 (#$ . 81629)])
#@42 Display the help echo for widget at POS.
(defalias 'widget-echo-help #[(pos) "	!\f \n\f\"; \"1 91 !1 \n!;1 \"*" [widget-at pos widget widget-get :help-echo help-echo message "%s" fboundp] 4 (#$ . 81763)])
(provide (quote wid-edit))
