;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:53:26 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/wid-edit.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.
;;; Function definitions are lazy-loaded.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (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"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


#@64 Character position of the end of event if that exists, or nil.
(defalias 'widget-event-point #[(event) #@103 ("\3028:\2030\302\2020\3038)\303	8:\203 0\303	8@\202#0\303	8)\207" . [event position 2 1])(#$ . 770) nil 2 (#$ . 660)])
(byte-code "\300\301\302\"\210\300\303\304\"\207" [autoload pp-to-string "pp" Info-goto-node "info"] 3)
#@58 Non-nil if EVENT is a mouse-button-release event object.
(defalias 'widget-button-release-event-p #[(event) #@236 ("\211\250\206!0	9\2030	\302N\206!0	:\205!0	@9\205!0	@\302N)\205:0\303!\304>\205:0\305\306!>\206:0\307\306!>\207" . [event obj event-symbol-elements event-basic-type (mouse-1 mouse-2 mouse-3) click event-modifiers drag])(#$ . 1126) nil 4 (#$ . 1011)])
(byte-code "\300\301\302\303\304\305\304\306\307\310\311\312\311\313&\210\300\314\302\315\311\301%\210\300\316\302\317\311\301\311\320&\207" [custom-declare-group widgets nil "Customization support for the Widget Library." :link (custom-manual "(widget)Top") (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] 14)
#@120 Face used for documentation strings in widgets.
This exists as a variable so it can be set locally in certain buffers.
(defvar widget-documentation-face 'widget-documentation-face (#$ . 1897))
(custom-declare-face 'widget-documentation-face '((((class color) (background dark)) (:foreground "lime green")) (((class color) (background light)) (:foreground "dark green")) (t nil)) "Face used for documentation text." :group 'widget-documentation :group 'widget-faces)
#@106 Face used for buttons in widgets.
This exists as a variable so it can be set locally in certain buffers.
(defvar widget-button-face 'widget-button-face (#$ . 2370))
(custom-declare-face 'widget-button-face '((t (:bold t))) "Face used for widget buttons." :group 'widget-faces)
#@60 Face used for widget buttons when the mouse is above them.
(custom-declare-variable 'widget-mouse-face ''highlight '(#$ . 2653) :type 'face :group 'widget-faces)
(byte-code "\300\301\302\303\304\305%\210\300\306\307\310\304\305%\207" [custom-declare-face widget-field-face ((((type tty)) (:background "yellow3")) (((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 ((((type tty)) (:background "green3")) (((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)
#@148 Return string representation of OBJECT, any Lisp object.
No quoting characters are used; no delimiters are printed around
the contents of strings.
(defalias 'widget-princ-to-string #[(object) #@192 ("\302\303\304!!\211\305	!\210)rq\210\306 \307\310!\210*\207" . [standard-output object get-buffer-create generate-new-buffer-name " *string-output*" princ buffer-string kill-buffer nil])(#$ . 3675) nil 4 (#$ . 3476)])
#@29 Clear all undo information.
(defalias 'widget-clear-undo #[nil #@68 ("\300p!\210\301 \207" . [buffer-disable-undo buffer-enable-undo])(#$ . 3972) nil 2 (#$ . 3903)])
#@96 Largest number of items allowed in a popup-menu.
Larger menus are read through the minibuffer.
(custom-declare-variable 'widget-menu-max-size '40 '(#$ . 4076) :group 'widgets :type 'integer)
#@130 Largest number of items for which it works to choose one with a character.
For a larger number of items, the minibuffer is used.
(custom-declare-variable 'widget-menu-max-shortcuts '40 '(#$ . 4274) :group 'widgets :type 'integer)
#@122 *Control how to ask for a choice from the keyboard.
Non-nil means use the minibuffer;
nil means read a single character.
(custom-declare-variable 'widget-menu-minibuffer-flag 'nil '(#$ . -4511) :group 'widgets :type 'boolean)
#@555 Choose an item from a list.

First argument TITLE is the name of the list.
Second argument ITEMS is a 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) #@1806 ("G	W\2030\n\2030\306 \2030\307\n\310BD\"\207\f\204$0GV\203Q0\311\312\"\313\314P\315\316$\211(;\205O0\317(\"\211);\203H0)(\320(\"A))\207\321 *\322+\315,\315-\315.\315/\323*\324\321!\211,#\210\212\325\326!q\210\327 \210\330c\210\203\2670@-A-:\203\2570-@0-A1\331\332+0#c\210\323,\333+!1#\210\316.*+T+\202|0\334c\210).\204\3040\335\336!\210\323,\337\340#\210\323,\341\340#\210\323,\342\343#\210\323,\344\345#\210,\211A\237\241\210\346\213\210/\340=\203\3650\335\347!\210/.\207" . [items widget-menu-max-size event title widget-menu-minibuffer-flag widget-menu-max-shortcuts display-popup-menus-p x-popup-menu "" widget-remove-if stringp completing-read ": " nil t try-completion assoc make-sparse-keymap 48 define-key " " get-buffer-create " widget-choose" erase-buffer "Available choices:\n\n" 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 "\306\307!\310\311!!\210\312\313\314\315\n\316Y\2030\nW\204u0\317=\204u0\320B\321!\322\312#\323\315\313O!\324=\203d0\325!\314	V\203[0\326\327!!\210\202^0\324 \210\315)\2020\330=\203p0\331\2020\315\2020-\313\207" [buf arg char keys cursor-in-echo-area next-digit get-buffer " widget-choose" fit-window-to-buffer display-buffer t nil 0 1 48 keyboard-quit 32 read-key-sequence lookup-key string-to-char scroll-other-window get-buffer-window scroll-other-window-down window-height negative-argument -1 value unread-command-events title overriding-terminal-local-map minibuffer-scroll-window] 4)) "Canceled" val try overriding-terminal-local-map next-digit map choice some-choice-enabled value name function])(#$ . 5363) nil 6 (#$ . 4744)])
(defalias 'widget-remove-if #[(predictate list) #@99 ("\304	\2030	@!\2040	@\nB	A\211\2040\n\237*\207" . [list tail result predictate nil])(#$ . 7253) nil 3])
#@148 Non-nil means add extra space at the end of editable text fields.
If you don't add the space, it will become impossible to edit a zero
size field.
(defvar widget-field-add-space t (#$ . 7377))
#@228 Non-nil means use `before-change-functions' to track editable fields.
This enables the use of undo, but doesn't work on Emacs 19.34 and earlier.
Using before hooks also means that the :notify function can't know the
new value.
(defvar widget-field-use-before-change t (#$ . 7577))
#@57 Specify editable button for WIDGET between FROM and TO.
(defalias 'widget-specify-field #[(widget from to) #@701 ("\212b\210\306	\307\"\2040\310u\210\2020\n\2030\311\312!\210`)\306	\313\"\306	\314\"\206(0\315\306	\316\"\n?\20650\306	\307\"\317\f!\203B0\320Sf\321U\203w0\322S\323\324\323%\325\326\327#\210\325\330#\210\325\305#\210\325\304\f#\210)S\324\322\323\211%\331	\332#\210\325\326	#\210\325\330#\210\325\305#\210\325\304\f#\210-\333	!\207" . [to widget widget-field-add-space rear-sticky help-echo face widget-get :size 1 insert-and-inherit " " :keymap :value-face widget-field-face :help-echo functionp widget-mouse-help 10 make-overlay nil t overlay-put field boundary local-map widget-put :field-overlay widget-specify-secret keymap overlay from])(#$ . 7978) nil 6 (#$ . 7864)])
#@60 Replace text in FIELD with value of `:secret', if non-nil.
(defalias 'widget-specify-secret #[(field) #@329 ("\306\307\"\306\310\"\211\205V0\311!\312!	\203/0\fV\203/0Sf\313=\203/0S\211\2020\fW\205U0\ff\211\n=\204N0\314\f\211T\n$\210\315\f\211T\302$\210\fT)\202/0**\207" . [field size secret end begin old widget-get :secret :size widget-field-start widget-field-end 32 subst-char-in-region put-text-property])(#$ . 8824) nil 6 (#$ . 8715)])
#@48 Specify button for WIDGET between FROM and TO.
(defalias 'widget-specify-button #[(widget from to) #@443 ("\306	\307\310\307%\311\n\312\"\313\n\314\f#\210\315!\2030\316\317\f\320\n#\210\317\f\321\311\n\322\"#\210\311\n\323\"\204@0\317\f\324\325\n\326\"#\210\317\f\327#\210\317\f\303#*\207" . [from to widget help-echo overlay widget-mouse-face make-overlay nil t widget-get :help-echo widget-put :button-overlay functionp widget-mouse-help overlay-put button keymap :keymap :suppress-face face widget-apply :button-face-get mouse-face])(#$ . 9295) nil 6 (#$ . 9189)])
#@64 Help-echo callback for widgets whose :help-echo is a function.
(defalias 'widget-mouse-help #[(window overlay point) #@186 ("r\303!q\210\304\305!!\211\2050\306	\307\"\310\n!\203!0\n	!\202\"0\n+\207" . [overlay widget help-echo overlay-buffer widget-at overlay-start widget-get :help-echo functionp])(#$ . 9898) nil 4 (#$ . 9774)])
#@48 Specify sample for WIDGET between FROM and TO.
(defalias 'widget-specify-sample #[(widget from to) #@189 ("\304	\305\306\305%\307\n\310\311\312\"#\210\313\314\n#)\207" . [from to overlay widget make-overlay nil t overlay-put face widget-apply :sample-face-get widget-put :sample-overlay])(#$ . 10226) nil 6 (#$ . 10120)])
#@55 Specify documentation for WIDGET between FROM and TO.
(defalias 'widget-specify-doc #[(widget from to) #@200 ("\305	\306\307\306%\310\n\311#\210\310\n\312\f#\210\313\314\n#)\207" . [from to overlay widget widget-documentation-face make-overlay nil t overlay-put widget-doc face widget-put :doc-overlay])(#$ . 10563) nil 6 (#$ . 10453)])
#@54 Execute FORM without inheriting any text properties.
(defalias 'widget-specify-insert '(macro . #[(&rest form) #@377 ("\301\302\303\304\305\306\307\310\311BE\312BBBBBBD\207" . [form save-restriction let ((inhibit-read-only t) (inhibit-modification-hooks t) result) (insert "<>") (narrow-to-region (- (point) 2) (point)) (goto-char (1+ (point-min))) setq result progn ((delete-region (point-min) (1+ (point-min))) (delete-region (1- (point-max)) (point-max)) (goto-char (point-max)) result)])(#$ . 10919) nil 10 (#$ . 10801)]))
(custom-declare-face 'widget-inactive-face '((((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 'widget-faces)
#@46 Make WIDGET inactive for user modifications.
(defalias 'widget-specify-inactive #[(widget from to) #@318 ("\304\305\"?\205.0\306	\n\307\310\307%\311\312\313#\210\311\314\310#\210\311\315\316#\210\311\317\320#\210\321\305#)\207" . [widget from to overlay widget-get :inactive make-overlay nil t overlay-put face widget-inactive-face evaporate priority 100 modification-hooks (widget-overlay-inactive) widget-put])(#$ . 11705) nil 6 (#$ . 11599)])
#@42 Ignoring the arguments, signal an error.
(defalias 'widget-overlay-inactive #[(&rest junk) #@88 ("?\2050\301\302!\207" . [inhibit-read-only error "The widget here is not active"])(#$ . 12158) nil 2 (#$ . 12061)])
#@44 Make WIDGET active for user modifications.
(defalias 'widget-specify-active #[(widget) #@129 ("\302\303\"\211\2050\304	!\210\305\303\306#)\207" . [widget inactive widget-get :inactive delete-overlay widget-put nil])(#$ . 12378) nil 5 (#$ . 12284)])
#@38 Return the type of WIDGET, a symbol.
(defalias 'widget-type #[(widget) #@23 ("@\207" . [widget])(#$ . 12622) nil 1 (#$ . 12545)])
(put 'widget-type 'byte-optimizer 'byte-compile-inline-expand)
#@119 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) #@81 ("\303	\"\2119\2030\nJ\2020\n)\207" . [widget property value widget-get])(#$ . 12922) nil 4 (#$ . 12747)])
#@59 Non-nil iff there is a definition in WIDGET for PROPERTY.
(defalias 'widget-member #[(widget property) #@131 ("\302A	\"\203\n0\303\207@\2030\304@\305N	\"\207\306\207" . [widget property plist-member t widget-member widget-type nil])(#$ . 13151) nil 3 (#$ . 13041)])
#@38 Extract the current value of WIDGET.
(defalias 'widget-value #[(widget) #@85 ("\301\302\301\303\"#\207" . [widget widget-apply :value-to-external :value-get])(#$ . 13398) nil 6 (#$ . 13320)])
#@43 Set the current value of WIDGET to VALUE.
(defalias 'widget-value-set #[(widget value) #@91 ("\302\303\302\304	##\207" . [widget value widget-apply :value-set :value-to-internal])(#$ . 13614) nil 7 (#$ . 13521)])
#@38 Extract the default value of WIDGET.
(defalias 'widget-default-get #[(widget) #@94 ("\301\302\"\2060\303\304\"\207" . [widget widget-get :value widget-apply :default-get])(#$ . 13827) nil 3 (#$ . 13743)])
#@37 In WIDGET, match the start of VALS.
(defalias 'widget-match-inline #[(widget vals) #@160 ("\302\303\"\2030\304\305	#\207	<\203\"0\304\306	@#\203\"0	@C	AB\207\307\207" . [widget vals widget-get :inline widget-apply :match-inline :match nil])(#$ . 14049) nil 4 (#$ . 13959)])
#@47 Apply :action in WIDGET in response to EVENT.
(defalias 'widget-apply-action #[(widget &optional event) #@151 ("\302\303\"\2030\302\304	#\207\305\306!\207" . [widget event widget-apply :active :action error "Attempt to perform action on inactive widget"])(#$ . 14358) nil 4 (#$ . 14247)])
#@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) #@243 ("<\2040C\305\306\211@)	#\307!\310\311	\n%\310\312\f#\204,0\313\314@\"\210\f)\207" . [widget prompt value unbound answer format "[%s] %s" widget-convert widget-apply :prompt-value :match error "Value does not match %S type"])(#$ . 14747) nil 7 (#$ . 14548)])
#@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) #@246 ("\303\211\304\"\305\"\306\302\307\215*\207" . [widget children child widget-get :parent :children nil (byte-code "\2030@A\303	\304\"\n=\20300\305\301	\"\210\20200\306\207" [children child widget widget-get :button throw nil] 3)])(#$ . 15186) nil 4 (#$ . 15029)])
#@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) #@243 ("e\306\211\2030\212q\210\307 )\2020\307 \310	@	A\"	\211A@\211\205?0\311\f\312\"\211\2030\"\2030\306\211\202_0,\207" . [buffer overlays parent widget cur function nil overlay-lists append overlay-get button maparg])(#$ . 15781) nil 5 (#$ . 15471)])
#@121 Where widget button images are located.
If this variable is nil, widget will try to locate the directory
automatically.
(custom-declare-variable 'widget-image-directory '(file-name-as-directory (expand-file-name "custom" data-directory)) '(#$ . 16063) :group 'widgets :type 'directory)
#@58 If non nil, use image buttons in widgets when available.
(custom-declare-variable 'widget-image-enable 't '(#$ . 16355) :version "21.1" :group 'widgets :type 'boolean)
#@60 Conversion alist from image formats to file name suffixes.
(custom-declare-variable 'widget-image-conversion ''((xpm ".xpm") (gif ".gif") (png ".png") (jpeg ".jpg" ".jpeg") (xbm ".xbm")) '(#$ . 16529) :group 'widgets :type '(repeat (cons :format "%v" (symbol :tag "Image Format" unknown) (repeat :tag "Suffixes" (string :format "%v")))))
#@224 Create a graphical button from IMAGE.
IMAGE should either already be an image, or be a file name sans
extension (xpm, xbm, gif, jpg, or png) located in
`widget-image-directory' or otherwise where `find-image' will find it.
(defalias 'widget-image-find #[(image) #@426 ("\2030	\2030\306 \2040\307\207:\2030@\300=\2030\207;\203p0\nB\307\307\211\f\203g0\f@\211A\307\211\203]0@\310@\311PF\fBA\211\204B0*\fA\211\f\20420*\f\237\312\f!*\207\307\207" . [image widget-image-enable widget-image-directory load-path specs widget-image-conversion display-graphic-p nil :type :file find-image elt #1=#:--dolist-temp--97269 ext #2=#:--dolist-temp--97270])(#$ . 17143) nil 7 (#$ . 16874)])
#@114 Face used for pressed buttons in widgets.
This exists as a variable so it can be set locally in certain
buffers.
(defvar widget-button-pressed-face 'widget-button-pressed-face (#$ . 17608))
#@340 In WIDGET, insert the text TAG or, if supported, IMAGE.
IMAGE should either be an image or an image file name sans extension
(xpm, xbm, gif, jpg, or png) located in `widget-image-directory'.

Optional arguments DOWN and INACTIVE are used instead of IMAGE when the
button is pressed or inactive, respectively.  These are currently ignored.
(defalias 'widget-image-insert #[(widget tag image &optional down inactive) #@231 ("\304 \2030\305!\211\2030\306	\307\310#\210\311\312\n\313#\"\207\nc\207" . [image widget tag widget-button-pressed-face display-graphic-p widget-image-find widget-put :suppress-face t insert-image propertize mouse-face])(#$ . 18227) nil 6 (#$ . 17805)])
(custom-declare-group 'widget-button nil "The look of various kinds of buttons." :group 'widgets)
#@36 String used as prefix for buttons.
(custom-declare-variable 'widget-button-prefix '"" '(#$ . 18594) :type 'string :group 'widget-button)
#@36 String used as suffix for buttons.
(custom-declare-variable 'widget-button-suffix '"" '(#$ . 18737) :type 'string :group 'widget-button)
#@76 Create widget of TYPE.
The optional ARGS are additional keyword arguments.
(defalias 'widget-create #[(type &rest args) #@104 ("\303\304	#\305\n\306\"\210\n)\207" . [type args widget apply widget-convert widget-apply :create])(#$ . 19007) nil 4 (#$ . 18880)])
#@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) #@283 ("\304\305	#\306\n\307#\210\310\n\311\"\204.0\306\n\311\310\311\"\2060\312\310\n\313\"\206&0\312\\\310\314\"\\#\210\315\n\316\"\210\n)\207" . [type args widget parent apply widget-convert widget-put :parent widget-get :indent 0 :extra-offset :offset widget-apply :create])(#$ . 19343) nil 7 (#$ . 19150)])
#@24 Create widget of TYPE.
(defalias 'widget-create-child #[(parent type) #@263 ("\303!\304	\305\n#\210\306	\307\"\204,0\304	\307\306\n\307\"\2060\310\306	\311\"\206$0\310\\\306\n\312\"\\#\210\313	\314\"\210	)\207" . [type widget parent copy-sequence widget-put :parent widget-get :indent 0 :extra-offset :offset widget-apply :create])(#$ . 19741) nil 7 (#$ . 19664)])
#@41 Create widget of TYPE with value VALUE.
(defalias 'widget-create-child-value #[(parent type value) #@318 ("\304!\305	\306\307	\310\n##\210\305	\311#\210\312	\313\"\20460\305	\313\312\313\"\206&0\314\312	\315\"\206.0\314\\\312\316\"\\#\210\307	\317\"\210	)\207" . [type widget value parent copy-sequence widget-put :value widget-apply :value-to-internal :parent widget-get :indent 0 :extra-offset :offset :create])(#$ . 20148) nil 7 (#$ . 20042)])
#@16 Delete WIDGET.
(defalias 'widget-delete #[(widget) #@53 ("\301\302\"\207" . [widget widget-apply :delete])(#$ . 20561) nil 3 (#$ . 20504)])
#@114 Convert TYPE to a widget without inserting it in the buffer.
The optional ARGS are additional keyword arguments.
(defalias 'widget-convert #[(type &rest args) #@584 ("9\203\n0C\2020\306!\211\nA\20340\307\nA@!\203'0\nAA\211\2020\n\310\nAD\241\210\311\211\2020\203S0\307@!\203G0AA\211\20250\312	\310#\210\311\211\20480	\211\203q0\313A\314\"\211\203g0	!)@\315N\211\204Y0\f\203\2260\f@\307!\203\2200\312	\fA@#\210\fAA\202\2220\311)\202q0\316	\317\"\203\2520\312	\317\320	\321\322	\317\"##\210	+\207" . [type widget current args keys convert-widget copy-sequence keywordp :args nil widget-put plist-get :convert-widget widget-type widget-member :value widget-apply :value-to-internal widget-get next])(#$ . 20819) nil 10 (#$ . 20653)])
#@64 Call `insert' with ARGS even if surrounding text is read only.
(defalias 'widget-insert #[(&rest args) #@102 ("\303\211\304\305\n\"*\207" . [inhibit-modification-hooks inhibit-read-only args t apply insert])(#$ . 21552) nil 3 (#$ . 21442)])
#@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) #@319 ("\306\307\310\311	%\312\n!\312!\313\n\314\"\210\313\315\"\210\316\f\317\n#\210\316\f\320#\210\20310\321\f#\210\f+\207" . [type args from to widget button-from apply widget-convert :delete widget-leave-text copy-marker set-marker-insertion-type t nil widget-put :from :to widget-specify-button button-to])(#$ . 22106) nil 6 (#$ . 21693)])
#@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) #@76 ("\304\305	\n	\n&\207" . [type from to args apply widget-convert-text])(#$ . 22794) nil 8 (#$ . 22464)])
#@59 Remove markers and overlays from WIDGET and its children.
(defalias 'widget-leave-text #[(widget) #@378 ("\305\306\"\305\307\"\305\310\"\305\311\"\305\312\"\313\211\223\210\305\314\"\313\211\223\210\f\203,0\315\f!\210\20340\315!\210\n\203<0\315\n!\210	\203D0\315	!\210\316\317\305\320\"\",\207" . [widget field doc sample button widget-get :button-overlay :sample-overlay :doc-overlay :field-overlay :from nil :to delete-overlay mapc widget-leave-text :children])(#$ . 23013) nil 6 (#$ . 22908)])
#@122 Keymap containing useful binding for buffers containing widgets.
Recommended as a parent keymap for modes using widgets.
(defvar widget-keymap (byte-code "\301 \302\303\304#\210\302\305\306#\210\302\307\306#\210\302\310\311#\210\302\312\313#\210)\207" [map make-sparse-keymap define-key "	" widget-forward [(shift tab)] widget-backward [backtab] [down-mouse-2] widget-button-click "" widget-button-press] 4) (#$ . 23430))
#@57 Keymap used for events a widget does not handle itself.
(defvar widget-global-map global-map (#$ . 23866))
(make-variable-buffer-local 'widget-global-map)
#@39 Keymap used inside an editable field.
(defvar widget-field-keymap (byte-code "\302!\303	\304\305#\210\303	\306\307#\210\303	\310\311#\210\303	\312\313#\210	)\207" [widget-keymap map copy-keymap define-key "" widget-kill-line "\211" widget-complete "" widget-field-activate "" widget-end-of-line] 4) (#$ . 24027))
#@34 Keymap used inside a text field.
(defvar widget-text-keymap (byte-code "\302!\303	\304\305#\210	)\207" [widget-keymap map copy-keymap define-key "" widget-end-of-line] 4) (#$ . 24351))
#@37 Invoke the editable field at point.
(defalias 'widget-field-activate #[(pos &optional event) #@184 ("\304!\211\2030\305	\n\"\2020\306\307\310 \"!)\207" . [pos field event widget-global-map widget-field-at widget-apply-action call-interactively lookup-key this-command-keys])(#$ . 24645) nil 5 (#$ . 24545) "@d"])
(custom-declare-face 'widget-button-pressed-face '((((class color)) (:foreground "red")) (t (:bold t :underline t))) "Face used for pressed buttons." :group 'widget-faces)
#@50 Invoke the button that the mouse is pointing at.
(defalias 'widget-button-click #[(event) #@1465 ("\306!\203\306!\307	\302\"\211\203\2660\310 \311\216\212\312!\210\313\n\314\"\315\f\305\"\315\f\316\"\317\216\320%\212\203E0\321\f\305&#\210\321\f\316&#\210\322\n\323#\204\2140\324!\204\2140\325 \306!\211\203|0\307	\302\"\n=\203|0\203M0\321\f\305&#\210\321\f\316&#\210\202M0\321\f\305#\210\321\f\316#\210\202M0	\203\2360\307	\302\"\n=\203\2360\326\n\"\210.\327\306!!?\205\2620\312!\210\330 \210\331 *\202\320\332'(\312!\210\333!\334>\203\3430\335)\336\"\211'\203\3310\332(\202\3730\335)\337\"'\202\3730\335)\340\"\211'\203\3640\332(\202\3730\335)\341\"'(\203\f\324!\204\f\325 \2020'\205\342'!**\207\343\344!\207" . [event pos button save-selected-window-window overlay face widget-event-point get-char-property selected-window ((byte-code "\301!\203\n0\302!\210\301\207" [save-selected-window-window window-live-p select-window] 2)) mouse-set-point widget-get :button-overlay overlay-get mouse-face ((byte-code "\303\301	#\210\303\302\n#\207" [overlay face mouse-face overlay-put] 4)) t overlay-put widget-apply :mouse-down-action widget-button-release-event-p read-event widget-apply-action pos-visible-in-window-p beginning-of-line recenter nil event-basic-type (mouse-1 down-mouse-1) lookup-key [down-mouse-1] [mouse-1] [down-mouse-2] [mouse-2] call-interactively message "You clicked somewhere weird." track-mouse widget-button-pressed-face command up widget-global-map])(#$ . 25142) nil 5 (#$ . 25044) "@e"])
#@23 Invoke button at POS.
(defalias 'widget-button-press #[(pos &optional event) #@228 ("\305\301\"\211\2030\306	\n\"\202 0\307\310 \"\311\f!\205_0\312\f!))\207" . [pos button event widget-global-map command get-char-property widget-apply-action lookup-key this-command-keys commandp call-interactively])(#$ . 26734) nil 4 (#$ . 26650) "@d"])
#@81 Return the tabable widget at POS, or nil.
POS defaults to the value of (point).
(defalias 'widget-tabable-at #[(&optional pos) #@131 ("\303!\211\2050\304	\305\"\211\2030\n\306Y\2050	\2020	))\207" . [pos widget order widget-at widget-get :tab-order 0])(#$ . 27139) nil 4 (#$ . 27005)])
#@134 If non-nil, use overlay change functions to tab around in the buffer.
This is much faster, but doesn't work reliably on Emacs 19.34.
(defvar widget-use-overlay-change t (#$ . 27309))
#@83 Move point to the ARG next field or button.
ARG may be negative to move backward.
(defalias 'widget-move #[(arg) #@633 ("o\2040\306V\2040\307u\210`\310 \311\306V\203[0m\203&0eb\210\20250\20320\312`!b\210\20250\313u\210\f`=\203E0=\203E0\314\315!\210\310 \211\203W0	\n=\204W0S	)\2020\306W\203\2360o\203k0db\210\202z0\203w0\316`!b\210\202z0\307u\210\f`=\203\2120=\203\2120\314\315!\210\310 \211\203\2320	\n=\204\2320T)\202[0\310 \310 	=\203\2560\307u\210\202\2410)\311u\210,\317`!\210\320\321!\207" . [arg new old number pos widget-use-overlay-change 0 -1 widget-tabable-at nil next-overlay-change 1 error "No buttons or fields found" previous-overlay-change widget-echo-help run-hooks widget-move-hook])(#$ . 27618) nil 5 (#$ . 27498)])
#@90 Move point to the next field or button.
With optional ARG, move across that many fields.
(defalias 'widget-forward #[(arg) #@79 ("\301\302!\210\303!\207" . [arg run-hooks widget-forward-hook widget-move])(#$ . 28418) nil 2 (#$ . 28289) "p"])
#@94 Move point to the previous field or button.
With optional ARG, move across that many fields.
(defalias 'widget-backward #[(arg) #@81 ("\301\302!\210\303[!\207" . [arg run-hooks widget-backward-hook widget-move])(#$ . 28673) nil 2 (#$ . 28539) "p"])
(defalias 'widget-beginning-of-line 'beginning-of-line)
#@138 Go to end of field or end of line, whichever is first.
Trailing spaces at the end of padded fields are not considered part of
the field.
(defalias 'widget-end-of-line #[nil #@68 ("\300\210l?\2050\301\302`S!x\207" . [nil " " field-beginning])(#$ . 29032) nil 3 (#$ . 28853) nil])
#@58 Kill to end of field or end of line, whichever is first.
(defalias 'widget-kill-line #[nil #@205 ("\302`!\211\2050\303!\203_0\304\305!	V\203_0\306`	\"\202\"0\307\310!*\207" . [field end widget-field-find widget-field-end line-beginning-position 2 kill-region call-interactively kill-line])(#$ . 29240) nil 4 (#$ . 29142) nil])
#@56 Default function to call for completion inside fields.
(custom-declare-variable 'widget-complete-field '(lookup-key global-map "\211") '(#$ . 29487) :options '(ispell-complete-word complete-tag lisp-complete-symbol) :type 'function :group '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 #@140 ("\301`!\211\2030\302\303\"\2020\304\305!)\207" . [field widget-field-find widget-apply :complete error "Not in an editable field"])(#$ . 29893) nil 4 (#$ . 29743) nil])
(byte-code "\301B\303\301!\204\f \304\305\301!\210\302B\303\302!\204 \304\305\302!\207" [current-load-list widget-field-new widget-field-list boundp nil make-variable-buffer-local] 2)
#@46 The button or field at POS (default, point).
(defalias 'widget-at #[(&optional pos) #@91 ("\301\2060`\302\"\2060\303!\207" . [pos get-char-property button widget-field-at])(#$ . 30356) nil 3 (#$ . 30266)])
#@55 Setup current buffer so editing string widgets works.
(defalias 'widget-setup #[nil #@355 ("\306\211\307\203;0@A\fB\310\311\"@\310\311\"A\312\313!\313!#\210\307\211\223\210\307\211\223\210*\2020+\314 \210\315 \207" . [field inhibit-modification-hooks inhibit-read-only widget-field-new widget-field-list to t nil widget-get :field-overlay widget-specify-field marker-position widget-clear-undo widget-add-change from])(#$ . 30576) nil 5 (#$ . 30485)])
(byte-code "\301B\303\301!\204\f \304\305\301!\210\302B\303\302!\204 \304\305\302!\207" [current-load-list widget-field-last widget-field-was boundp nil make-variable-buffer-local] 2)
#@49 Return the widget field at POS, or nil if none.
(defalias 'widget-field-at #[(pos) #@90 ("\302\2060`\301\"\211\303=?\2050	)\207" . [pos field get-char-property boundary])(#$ . 31249) nil 4 (#$ . 31160)])
#@45 Return the start of WIDGET's editing field.
(defalias 'widget-field-buffer #[(widget) #@148 ("\302\303\"\304	!\2030\305	!\2020	:\2050\306	@!)\207" . [widget overlay widget-get :field-overlay overlayp overlay-buffer marker-buffer])(#$ . 31470) nil 3 (#$ . 31377)])
#@45 Return the start of WIDGET's editing field.
(defalias 'widget-field-start #[(widget) #@119 ("\302\303\"\304	!\2030\305	!\2020	@)\207" . [widget overlay widget-get :field-overlay overlayp overlay-start])(#$ . 31748) nil 3 (#$ . 31656)])
#@43 Return the end of WIDGET's editing field.
(defalias 'widget-field-end #[(widget) #@273 ("\303\304\"\305	!\20310\306\307	!\310\311!#\312=\204+0\n\204$0\303\313\"\204+0\307	!S\20230\307	!\20230	A)\207" . [widget overlay widget-field-add-space widget-get :field-overlay overlayp get-char-property overlay-end field widget-field-buffer boundary :size])(#$ . 31993) nil 5 (#$ . 31905)])
#@99 Return the field at POS.
Unlike (get-char-property POS 'field) this, works with empty fields too.
(defalias 'widget-field-find #[(pos) #@215 ("\305\211\203-0@A\306\n!\fX\2030\f\307\n!X\2030	\203(0\310\311!\210\n\2020	+\207" . [widget-field-list found field fields pos nil widget-field-start widget-field-end error "Overlapping fields"])(#$ . 32446) nil 3 (#$ . 32304)])
(defalias 'widget-before-change #[(from to) #@463 ("?\205=0\306	!\306\n!\211=\204!0\307\310\311\312\313$\210\314\315\316\"\202<0\f\20430\307\310\311\312\313$\210\314\315\317\"\202<0\205<0\320\f\321\f#*\207" . [inhibit-read-only from to to-field from-field widget-field-use-before-change widget-field-find add-hook post-command-hook widget-add-change nil t signal text-read-only ("Change should be restricted to a single field") ("Attempt to change text outside editable field") widget-apply :notify])(#$ . 32744) nil 6])
(defalias 'widget-add-change #[nil #@232 ("\300\301\302\303#\210\304\305\306\307\303$\210\304\310\311\307\303$\207" . [remove-hook post-command-hook widget-add-change t add-hook before-change-functions widget-before-change nil after-change-functions widget-after-change])(#$ . 33268) nil 5])
#@40 Adjust field size and text properties.
(defalias 'widget-after-change #[(from to old) #@525 ("\306!\306	!\211\205\2130\n=\2040\307\310!\210\311\312\"\211\203\2010\313!\314!Z\fW\203C0\212b\210\315\316\f\\Z\"\210)\202\2000Z\fV\203\2000`\f\\W\204[0`V\203d0\f\\\202g0`\212b\210h\316=\2030`V\2030\317\320!\210\202k0)*\321!\210)\322\323#*\207" . [from to other field size end widget-field-find error "Change in different fields" widget-get :size widget-field-start widget-field-end insert-char 32 delete-backward-char 1 widget-specify-secret widget-apply :notify begin])(#$ . 33618) nil 5 (#$ . 33525)])
#@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) #@88 ("\302\303\304\"\305	#\207" . [widget event widget-apply widget-get :parent :action])(#$ . 34348) nil 4 (#$ . 34182)])
#@46 Delete all :children and :buttons in WIDGET.
(defalias 'widget-children-value-delete #[(widget) #@167 ("\301\302\303\304\"\"\210\305\304\306#\210\301\302\303\307\"\"\210\305\307\306#\207" . [widget mapc widget-delete widget-get :children widget-put nil :buttons])(#$ . 34577) nil 5 (#$ . 34474)])
#@34 All the :children must be valid.
(defalias 'widget-children-validate #[(widget) #@158 ("\304\305\"\306\211\203_0	\204_0@A\307\n\310\"\202	0	+\207" . [widget found child children widget-get :children nil widget-apply :validate])(#$ . 34869) nil 3 (#$ . 34782)])
#@42 Convert :args as widget types in WIDGET.
(defalias 'widget-types-convert-widget #[(widget) #@107 ("\301\302\303\304\305\302\"\"#\210\207" . [widget widget-put :args mapcar widget-convert widget-get])(#$ . 35163) nil 8 (#$ . 35065)])
(put 'widget-types-convert-widget 'byte-optimizer 'byte-compile-inline-expand)
#@41 Initialize :value from :args in WIDGET.
(defalias 'widget-value-convert-widget #[(widget) #@124 ("\302\303\"\211\2030\304\305	@#\210\304\303\306#\210)\207" . [widget args widget-get :args widget-put :value nil])(#$ . 35484) nil 5 (#$ . 35387)])
#@39 Return the :value property of WIDGET.
(defalias 'widget-value-value-get #[(widget) #@50 ("\301\302\"\207" . [widget widget-get :value])(#$ . 35735) nil 3 (#$ . 35646)])
(byte-code "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\302\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\344\354\355\356\357\360\361&3\207" [define-widget default nil "Basic widget other widgets are derived from." :value-to-internal #[(widget value) "\207" [value] 1] :value-to-external #[(widget value) "\207" [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 :default-get widget-default-default-get :menu-tag-get widget-default-menu-tag-get :validate ignore :active widget-default-active :activate widget-specify-active :deactivate widget-default-deactivate :mouse-down-action :action widget-default-action :notify widget-default-notify :prompt-value widget-default-prompt-value] 52)
#@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) #@116 ("\302\303\304\"\206	0	!\207" . [widget widget-complete-field call-interactively widget-get :complete-function])(#$ . 37147) nil 4 (#$ . 36965)])
#@47 Create WIDGET at point in the current buffer.
(defalias 'widget-default-create #[(widget) #@1641 ("\214\306\211\307\310c\210`\311Z`}\210eTb\210`\307\211\211\211\211\211\21145678\3129\313\"c\2108b\210\314\315\307\306#\203M\316\224f:\317\311!\210:\320=\203R0\320c\210\202I:\321=\203f0`7\3229\323\"c\210\202I:\324=\203z0\3229\325\"c\210`6\202I:\326=\203\2070`5\202I:\327=\203\2240`4\202I:\330=\203\2620\3129\331\"\203I\332c\210\333\334\3129\331\"\"\210\202I:\335=\203\3640\3129\336\"\3129\337\";\211<\203\3330\3409;\206\3240\341<#\210\202\3600;\203\3470;c\210\202\3600\342\3129\343\"p\"\210*\202I:\344=\203\"\3129\345\"\211=\203`=c\210h\332=\203\317\316!\210\202\f\332c\210`)\202I:\346=\203A7\203<6\204<\3479\350\"\210\202I`\202I\3479\351:#\210)\202407\203`6\203`\352976#\2105\203s4\203s\353954#\210\203\202\f\203\202\3549\f#\210\203\217b\210\3479\350\"\210.\355 \356 >8\3578\306\"\210\357>\307\"\210\3609\3618#\210\3609\362>#*eeT|\210dSd|\210db\210\210,\363 \207" . [result inhibit-modification-hooks inhibit-read-only value-pos doc-end doc-begin t nil "<>" 2 widget-get :format re-search-forward "%\\(.\\)" 1 delete-backward-char 37 91 widget-get-indirect :button-prefix 93 :button-suffix 123 125 110 :indent 10 insert-char 32 116 :tag-glyph :tag widget-image-insert "image" princ :value 100 :doc 118 widget-apply :value-create :format-handler widget-specify-button widget-specify-sample widget-specify-doc point-min-marker point-max-marker set-marker-insertion-type widget-put :from :to widget-clear-undo sample-end sample-begin button-end button-begin from widget escape tag image doc to])(#$ . 37399) nil 9 (#$ . 37301)])
(defalias 'widget-default-format-handler #[(widget escape) #@750 ("\306\307\"\n\310=\203\2340\306\311\"\306\312\"\20620\313!\203&0\306\314\"!\202209\20520\315\306\314\"\"\211;\205@0\fG\316V\205@0\f\306\317\"\203\2300h\320=\203`0\306\321\"\203`0\322\323\306\321\"\"\210\324H\325=\203m0\316\326O\327\330\"\203z0\324\211\224O\331\332\321\247\203\2110\202\2230\204\2220\326\202\2230\324%	B,\202\2410\333\334\n\"\210\335\307	#)\207" . [widget buttons escape doc-property doc-try doc-text widget-get :buttons 104 :documentation-property :doc functionp :value documentation-property 1 :documentation-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 doc-indent])(#$ . 39138) nil 7])
(defalias 'widget-default-button-face-get #[(widget) #@171 ("\303\304\"\2060\303\305\"\211\2030\306	\307\"\2020\n)\207" . [widget parent widget-button-face widget-get :button-face :parent widget-apply :button-face-get])(#$ . 39967) nil 4])
(defalias 'widget-default-sample-face-get #[(widget) #@56 ("\301\302\"\207" . [widget widget-get :sample-face])(#$ . 40216) nil 3])
#@32 Remove widget from the buffer.
(defalias 'widget-default-delete #[(widget) #@515 ("\306\307\"\306\310\"\306\311\"\306\312\"\306\313\"\306\314\"\315\211\316\317\"\210\20340\320!\210\203<0\320!\210\f\203D0\320\f!\210\203L0\320!\210W\203Z0|\210\321\211\223\210\321\211\223\210.\322 \207" . [widget inhibit-read-only inhibit-modification-hooks doc-overlay sample-overlay button-overlay widget-get :from :to :inactive :button-overlay :sample-overlay :doc-overlay t widget-apply :value-delete delete-overlay nil widget-clear-undo inactive-overlay to from])(#$ . 40379) nil 8 (#$ . 40297)])
#@33 Recreate widget with new value.
(defalias 'widget-default-value-set #[(widget value) #@361 ("`\306\307	\310\"!\306\307	\311\"!\nX\205.0X\205.0SY\203+0Z\312Z\202.0\nZ\212\307	\310\"b\210\313	\314\"\210\315	\316#\210\313	\317\"\210)\f\205g0\f\320W\203]0\307	\311\"\f\\\312\\b\202g0\n\f\\\307	\311\"S^b,\207" . [old-pos widget from to offset value copy-marker widget-get :from :to 1 widget-apply :delete widget-put :value :create 0])(#$ . 41024) nil 4 (#$ . 40932)])
#@43 Wrap value in a list unless it is inline.
(defalias 'widget-default-value-inline #[(widget) #@88 ("\301\302\"\2030\303!\207\303!C\207" . [widget widget-get :inline widget-value])(#$ . 41521) nil 3 (#$ . 41423)])
#@15 Get `:value'.
(defalias 'widget-default-default-get #[(widget) #@50 ("\301\302\"\207" . [widget widget-get :value])(#$ . 41716) nil 3 (#$ . 41647)])
#@29 Use tag or value for menus.
(defalias 'widget-default-menu-tag-get #[(widget) #@129 ("\301\302\"\2060\301\303\"\2060\304\301\305\"!\207" . [widget widget-get :menu-tag :tag widget-princ-to-string :value])(#$ . 41889) nil 4 (#$ . 41804)])
#@52 Return t iff this widget active (user modifiable).
(defalias 'widget-default-active #[(widget) #@166 ("\302\303\"\2060\302\304\"?\2050\302\305\"\211?\2060\306	\307\")\207" . [widget parent widget-get :always-active :inactive :parent widget-apply :active])(#$ . 42158) nil 4 (#$ . 42056)])
#@46 Make WIDGET inactive for user modifications.
(defalias 'widget-default-deactivate #[(widget) #@94 ("\301\302\303\"\302\304\"#\207" . [widget widget-specify-inactive widget-get :from :to])(#$ . 42461) nil 6 (#$ . 42362)])
#@42 Notify the parent when a widget changes.
(defalias 'widget-default-action #[(widget &optional event) #@111 ("\303\304\"\211\2050\305	\306\n$)\207" . [widget parent event widget-get :parent widget-apply :notify])(#$ . 42701) nil 6 (#$ . 42593)])
#@30 Pass notification to parent.
(defalias 'widget-default-notify #[(widget child &optional event) #@57 ("\302	\"\207" . [widget event widget-default-action])(#$ . 42951) nil 3 (#$ . 42850)])
#@55 Read an arbitrary value.  Stolen from `set-variable'.
(defalias 'widget-default-prompt-value #[(widget prompt value unbound) #@43 ("\301!\207" . [prompt eval-minibuffer])(#$ . 43177) nil 2 (#$ . 43046)])
(define-widget 'item 'default "Constant items for inclusion in other widgets." :convert-widget 'widget-value-convert-widget :value-create 'widget-item-value-create :value-delete 'ignore :value-get 'widget-value-value-get :match 'widget-item-match :match-inline 'widget-item-match-inline :action 'widget-item-action :format "%t\n")
#@49 Insert the printed representation of the value.
(defalias 'widget-item-value-create #[(widget) #@63 ("\301\302\303\"p\"\207" . [widget princ widget-get :value])(#$ . 43690) nil 4 (#$ . 43589)])
(defalias 'widget-item-match #[(widget value) #@61 ("\302\303\"	\232\207" . [widget value widget-get :value])(#$ . 43837) nil 3])
(defalias 'widget-item-match-inline #[(widget values) #@155 ("\304\305\"\211<\205'0	G\nGX\205'0\306\n\307	G#\211	\232\205&0\306\n	G\"B))\207" . [widget value values head widget-get :value widget-sublist 0])(#$ . 43978) nil 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) #@137 ("\303V\203\n0	\233\n\203%0\nX?\205(0\304	!\nZ\305Z	\233\306\241\210	\207\304	!\207" . [start list end 0 copy-sequence 1 nil])(#$ . 44321) nil 2 (#$ . 44159)])
(defalias 'widget-item-action #[(widget &optional event) #@60 ("\302\303	$\207" . [widget event widget-apply :notify])(#$ . 44553) nil 5])
#@36 String used as prefix for buttons.
(custom-declare-variable 'widget-push-button-prefix '"[" '(#$ . 44638) :type 'string :group 'widget-button)
#@36 String used as suffix for buttons.
(custom-declare-variable 'widget-push-button-suffix '"]" '(#$ . 44787) :type 'string :group 'widget-button)
(define-widget 'push-button 'item "A pushable button." :button-prefix "" :button-suffix "" :value-create 'widget-push-button-value-create :format "%[%v%]")
#@53 Insert text representing the `on' and `off' states.
(defalias 'widget-push-button-value-create #[(widget) #@223 ("\306\307\"\2060\306\310\"\306\311\"	\fQ\n\203\"0\312\n#\202$0c+\207" . [widget tag tag-glyph widget-push-button-prefix widget-push-button-suffix text widget-get :tag :value :tag-glyph widget-image-insert])(#$ . 45205) nil 4 (#$ . 45092)])
#@34 String used as prefix for links.
(custom-declare-variable 'widget-link-prefix '"[" '(#$ . 45466) :type 'string :group 'widget-button)
#@34 String used as suffix for links.
(custom-declare-variable 'widget-link-suffix '"]" '(#$ . 45606) :type 'string :group 'widget-button)
(byte-code "\300\301\302\303\304\305\306\307\310\311\312\313&\210\300\314\301\315\316\317%\207" [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) #@60 ("\301\302!!\207" . [widget Info-goto-node widget-value])(#$ . 46184) nil 3 (#$ . 46076)])
(define-widget 'url-link 'link "A link to an www page." :action 'widget-url-link-action)
#@35 Open the url specified by WIDGET.
(defalias 'widget-url-link-action #[(widget &optional event) #@56 ("\301\302!!\207" . [widget browse-url widget-value])(#$ . 46472) nil 3 (#$ . 46371)])
(define-widget 'function-link 'link "A link to an Emacs function." :action 'widget-function-link-action)
#@40 Show the function specified by WIDGET.
(defalias 'widget-function-link-action #[(widget &optional event) #@63 ("\301\302!!\207" . [widget describe-function widget-value])(#$ . 46782) nil 3 (#$ . 46671)])
(define-widget 'variable-link 'link "A link to an Emacs variable." :action 'widget-variable-link-action)
#@40 Show the variable specified by WIDGET.
(defalias 'widget-variable-link-action #[(widget &optional event) #@63 ("\301\302!!\207" . [widget describe-variable widget-value])(#$ . 47099) nil 3 (#$ . 46988)])
(define-widget 'file-link 'link "A link to a file." :action 'widget-file-link-action)
#@36 Find the file specified by WIDGET.
(defalias 'widget-file-link-action #[(widget &optional event) #@55 ("\301\302!!\207" . [widget find-file widget-value])(#$ . 47389) nil 3 (#$ . 47286)])
(define-widget 'emacs-library-link 'link "A link to an Emacs Lisp library file." :action 'widget-emacs-library-link-action)
#@50 Find the Emacs Library file specified by WIDGET.
(defalias 'widget-emacs-library-link-action #[(widget &optional event) #@75 ("\301\302\303!!!\207" . [widget find-file locate-library widget-value])(#$ . 47732) nil 4 (#$ . 47606)])
(define-widget 'emacs-commentary-link 'link "A link to Commentary in an Emacs Lisp library file." :action '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) #@63 ("\301\302!!\207" . [widget finder-commentary widget-value])(#$ . 48136) nil 3 (#$ . 47989)])
(define-widget 'editable-field 'default "An editable text field." :convert-widget 'widget-value-convert-widget :keymap widget-field-keymap :format "%v" :help-echo "M-TAB: complete field; RET: enter value" :value "" :prompt-internal 'widget-field-prompt-internal :prompt-history 'widget-field-history :prompt-value 'widget-field-prompt-value :action 'widget-field-action :validate 'widget-field-validate :valid-regexp "" :error "Field's value doesn't match allowed forms" :value-create 'widget-field-value-create :value-delete 'widget-field-value-delete :value-get 'widget-field-value-get :match 'widget-field-match)
#@36 History of field minibuffer edits.
(defvar widget-field-history nil (#$ . 48853))
#@131 Read string for WIDGET promptinhg with PROMPT.
INITIAL is the initial input and HISTORY is a symbol containing
the earlier input.
(defalias 'widget-field-prompt-internal #[(widget prompt initial history) #@58 ("\303	\n#\207" . [prompt initial history read-string])(#$ . 49152) nil 4 (#$ . 48942)])
#@22 Prompt for a string.
(defalias 'widget-field-prompt-value #[(widget prompt value unbound) #@197 ("\304\305\304\306	\n?\2050\304\307#\310B\311\312\"%#\207" . [widget prompt unbound value widget-apply :value-to-external :prompt-internal :value-to-internal 0 widget-get :prompt-history])(#$ . 49345) nil 11 (#$ . 49248)])
(byte-code "\301B\302\301!\204\f \303\303\207" [current-load-list widget-edit-functions boundp nil] 2)
#@21 Move to next field.
(defalias 'widget-field-action #[(widget &optional event) #@103 ("\301\302!\210\303\304\"\207" . [widget widget-forward 1 run-hook-with-args widget-edit-functions])(#$ . 49772) nil 3 (#$ . 49687)])
#@47 Valid if the content matches `:valid-regexp'.
(defalias 'widget-field-validate #[(widget) #@120 ("\301\302\303\"\304\305\"\"?\2050\207" . [widget string-match widget-get :valid-regexp widget-apply :value-get])(#$ . 50010) nil 5 (#$ . 49913)])
#@32 Create an editable text field.
(defalias 'widget-field-value-create #[(widget) #@385 ("\306\307\"\306\310\"`\311 \311 B\312\313	#\210c\210\f\203.0G\fW\203.0\314\315\fGZ\"\210>\204:0B	A`\316\223\210\317	A\316\"\210\f\204M0\320c\210	@\n\316\223\210\317	@\321\",\207" . [widget overlay from value size widget-field-list widget-get :size :value make-marker widget-put :field-overlay insert-char 32 nil set-marker-insertion-type 10 t widget-field-new])(#$ . 50254) nil 5 (#$ . 50168)])
#@59 Remove the widget from the list of active editing fields.
(defalias 'widget-field-value-delete #[(widget) #@170 ("\304	\"\304\n\"\305\306\"\307!\2050\310!)\207" . [widget widget-field-list widget-field-new overlay delq widget-get :field-overlay overlayp delete-overlay])(#$ . 50790) nil 3 (#$ . 50677)])
#@39 Return current text in editing field.
(defalias 'widget-field-value-get #[(widget) #@452 ("\306!\307!\310!\311\312\"\311\313\"p\211\203{0\203{0\fq\210\203C0\314!\204C0V\203C0Sf\315=\203C0S\202$0\316\"\n\203r0\317\\W\203q0\320\\\302\"I\210T\202Q0)	q\210)\2020\311\321\".\207" . [widget old secret size buffer to widget-field-start widget-field-end widget-field-buffer widget-get :size :secret zerop 32 buffer-substring-no-properties 0 get-char-property :value from result index])(#$ . 51088) nil 8 (#$ . 50998)])
(defalias 'widget-field-match #[(widget value) #@22 (";\207" . [value])(#$ . 51625) nil 1])
(byte-code "\301\302\303\304\305%\210\301\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350&#\207" [widget-text-keymap define-widget text editable-field "A multiline text area." :keymap 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 :default-get widget-choice-default-get :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] 36)
#@49 Insert the first choice that matches the value.
(defalias 'widget-choice-value-create #[(widget) #@503 ("\306\307\"\306\310\"\306\311\"\312\n\20310\f\306\313\"\232\20310\314\315\316\n\f#C#\210\314\317\n#\202v0\203[0@A\320	\321\f#\20310\314\315\316	\f#C#\210\314\317	#\210\312\312\20210	\205v0\306\322\"\314\315\323\307\f$C#\210\314\317#),\207" . [widget current explicit args value void widget-get :value :args :explicit-choice nil :explicit-choice-value widget-put :children widget-create-child-value :choice widget-apply :match :void widget-create-child-and-convert])(#$ . 52632) nil 8 (#$ . 52528)])
(defalias 'widget-choice-value-get #[(widget) #@72 ("\301\302\303\"@!\207" . [widget widget-value widget-get :children])(#$ . 53219) nil 4])
(defalias 'widget-choice-value-inline #[(widget) #@91 ("\301\302\303\"@\304\"\207" . [widget widget-apply widget-get :children :value-inline])(#$ . 53365) nil 4])
(defalias 'widget-choice-default-get #[(widget) #@74 ("\301\302\303\"@!\207" . [widget widget-default-get widget-get :args])(#$ . 53529) nil 4])
#@162 If non-nil, a binary choice will just toggle between the values.
Otherwise, the user will explicitly have to choose between the values
when he invoked the menu.
(custom-declare-variable 'widget-choice-toggle 'nil '(#$ . 53629) :type 'boolean :group 'widgets)
(defalias 'widget-choice-mouse-down-action #[(widget &optional event) #@285 ("\305\306\"\305\307\"\310 \2040\311\202C0\nG\312W\2030\311\202C0\nGV\203)0\311\202C0\nG\312V\20340\313\202C0\f\203B0	\n>\203B0\311\202C0\313*\207" . [widget old args widget-menu-max-size widget-choice-toggle widget-get :args :choice display-popup-menus-p nil 2 t])(#$ . 53965) nil 4])
(defalias 'widget-choice-action #[(widget &optional event) #@937 ("\306\307\"\306\310\"\311\312\"\306\313\"\314\211\211!\"!\203?0\311\315\"\204?0\316!#\311!\317##$\320!\321$#\210*\"G\322U\203K0\314\202\2500\"G\323U\203Y0\"@\202\2500%\203\2040\"G\324U\203\2040!\">\203\2040!\"@=\203~0\"A@\202\2500\"@\202\2500\"\203\2360\"@\"A\"\311\n\312\"\nB	B\202\2040\325\326\327	!&#\211\203\3260\203\3000\320\330\n#\210\320\331\306\321\"#\210\332\311\n\333\334\n!#\"\210\335 \210\311\336&$\210.\337\340\"\207" . [widget choices current this-explicit completion-ignore-case tag widget-get :args :choice widget-apply :menu-tag-get :case-fold nil :validate widget-value :value-to-internal widget-put :value 0 1 2 t widget-choose reverse :explicit-choice :explicit-choice-value widget-value-set :value-to-external widget-default-get widget-setup :notify run-hook-with-args widget-edit-functions old args external internal widget-choice-toggle event])(#$ . 54335) nil 8])
(defalias 'widget-choice-validate #[(widget) #@136 ("\301\302\"\301\303\"=\2030\207\304\301\305\"@\306\"\207" . [widget widget-get :void :choice widget-apply :children :validate])(#$ . 55343) nil 4])
(defalias 'widget-choice-match #[(widget value) #@154 ("\305\306\"\307\211\203 0	\204 0@A\310\n\311\f#\202	0	+\207" . [widget found current args value widget-get :args nil widget-apply :match])(#$ . 55553) nil 4])
(defalias 'widget-choice-match-inline #[(widget values) #@154 ("\305\306\"\307\211\203_0	\204_0@A\310\n\f\"\202	0	+\207" . [widget found current args values widget-get :args nil widget-match-inline])(#$ . 55789) nil 3])
(define-widget 'toggle 'item "Toggle between two states." :format "%[%v%]\n" :value-create 'widget-toggle-value-create :action 'widget-toggle-action :match #[(widget value) "\300\207" [t] 1] :on "on" :off "off")
#@53 Insert text representing the `on' and `off' states.
(defalias 'widget-toggle-value-create #[(widget) #@168 ("\301!\2030\302\303\304\"\303\305\"#\207\302\303\306\"\303\307\"#\207" . [widget widget-value widget-image-insert widget-get :on :on-glyph :off :off-glyph])(#$ . 56288) nil 6 (#$ . 56180)])
(defalias 'widget-toggle-action #[(widget &optional event) #@164 ("\302\303!?\"\210\304\305	$\210\306\307\"\207" . [widget event widget-value-set widget-value widget-apply :notify run-hook-with-args widget-edit-functions])(#$ . 56554) nil 5])
(byte-code "\300\301\302\303\304\305\306\305\307\310\311\312\313\314\315\316\317\320\321\322\321\323\324\325\326\327\330\331\332&\333\334\335\314\336\337\340\"\316\317\320\321\322\321\323\324\327\341\331\332&\342\343\344\345&\207" [define-widget checkbox toggle "A checkbox toggle." :button-suffix "" :button-prefix :format "%[%v%]" :on "[X]" :on-glyph create-image "\377\311\301\343\301\311\377" xbm t :width 7 :height :foreground "grey75" :background "black" :relief -3 :ascent center :off "[ ]" :off-glyph make-bool-vector 49 1 3 :help-echo "Toggle this item." :action widget-checkbox-action] 31)
#@66 Toggle checkbox, notify parent, and set active state of sibling.
(defalias 'widget-checkbox-action #[(widget &optional event) #@198 ("\303	\"\210\304!\211\2050\305!\2030\306\n\307\"\2020\306\n\310\")\207" . [widget event sibling widget-toggle-action widget-get-sibling widget-value widget-apply :activate :deactivate])(#$ . 57479) nil 4 (#$ . 57346)])
(define-widget 'checklist 'default "A multiple choice widget." :convert-widget 'widget-types-convert-widget :format "%v" :offset 4 :entry-format "%b %v" :menu-tag "checklist" :greedy nil :value-create 'widget-checklist-value-create :value-delete 'widget-children-value-delete :value-get 'widget-checklist-value-get :validate 'widget-checklist-validate :match 'widget-checklist-match :match-inline 'widget-checklist-match-inline)
(defalias 'widget-checklist-value-create #[(widget) #@231 ("\303\304\305\"\"\304\306\"	\203\"0\307	@	@\n\236#\210	A\211\2040\310\311\304\311\"\237#*\207" . [widget args alist widget-checklist-match-find widget-get :value :args widget-checklist-add-item widget-put :children])(#$ . 58197) nil 7])
#@112 Create checklist item in WIDGET of type TYPE.
If the item is checked, CHOSEN is a cons whose cdr is the value.
(defalias 'widget-checklist-add-item #[(widget type chosen) #@1112 ("h\306=\2030\307\310\"\2030\311\312\307\310\"\"\210\214\313\211\314\315c\210`\316Z`}\210eTb\210\307\317\"\307\320\"\307(\321\"\206?0\307\322\")`*\314+\314,\307\323\"c\210*b\210\324\325\314\313#\203\3250\326\224f-\327\316!\210-\330=\203r0\330c\210\202\3210-\331=\203\2130\332\333\334\335.??)&,\202\3210-\336=\203\3130.\204\2520\337(\"+\340+\341\"\210+)\202\3060\307(\342\"\203\2750\343(.A#\202\3060\343(.A@#+\202\3210\344\345-\"\210)\202T0,\203\3470+\203\3470\346+\347,#\210,\203\3650\346\320,B#\210+\205\346\317+\fB#.eeT|\210dSd|\210db\210	,\207" . [widget result inhibit-modification-hooks inhibit-read-only children buttons 10 widget-get :indent insert-char 32 t nil "<>" 2 :children :buttons :sibling-args :button-args :entry-format re-search-forward "%\\([bv%]\\)" 1 delete-backward-char 37 98 apply widget-create-child-and-convert checkbox :value 118 widget-create-child widget-apply :deactivate :inline widget-create-child-value error "Unknown escape `%c'" widget-put :button type button-args from child button escape chosen])(#$ . 58633) nil 7 (#$ . 58454)])
(defalias 'widget-checklist-match #[(widget values) #@77 ("<\2050\302	\"A?\207" . [values widget widget-checklist-match-inline])(#$ . 59835) nil 3])
(defalias 'widget-checklist-match-inline #[(widget values) #@334 ("\306\307\"\310\306\311\"!\312\211\203V0\313\"\211\203:0\314\"\315\n@\"A\316\")\202R0\f\203K0\315	@C\"A\202R0\315	\"\312)\2020\n	,B\207" . [widget rest found args greedy values widget-get :greedy copy-sequence :args nil widget-checklist-match-up widget-match-inline append delq answer vals])(#$ . 59997) nil 6])
#@85 Find the vals which match a type in the checklist.
Return an alist of (TYPE MATCH).
(defalias 'widget-checklist-match-find #[(widget vals) #@291 ("\306\307\"\310\306\311\"!\312\f\203F0\313\n\f\"\211\20360\314\f\"@B	BA\315\n\")\202B0\203@0\fA\202B0\312)\2020	+\207" . [widget found args greedy vals answer widget-get :greedy copy-sequence :args nil widget-checklist-match-up widget-match-inline delq match])(#$ . 60502) nil 6 (#$ . 60356)])
#@52 Return the first type from ARGS that matches VALS.
(defalias 'widget-checklist-match-up #[(args vals) #@124 ("\304\211\n\2030\2040\n@\nA\305	\"\2020\205_0	*\207" . [found current args vals nil widget-match-inline])(#$ . 60940) nil 3 (#$ . 60831)])
(defalias 'widget-checklist-value-get #[(widget) #@212 ("\304\305\"\306\211\203'0@A\307\304\n\310\"!\203	0\311	\312\n\313\"\"\202	0	+\207" . [widget result child children widget-get :children nil widget-value :button append widget-apply :value-inline])(#$ . 61152) nil 5])
(defalias 'widget-checklist-validate #[(widget) #@217 ("\305\306\"\307\211\211\f\203,0	\204,0\f@\fA\305\310\"\311\n!\205(0\312\313\"\2020	,\207" . [widget found button child children widget-get :children nil :button widget-value widget-apply :validate])(#$ . 61438) nil 4])
(byte-code "\300\301\302\303\304\305%\210\300\306\307\310\311\312\313\314&\210\300\315\316\317\320\321\313\322\323\324\325\324\326\327\330\331\332\333\334\335&\207" [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) #@89 ("\302\303\304\"\305	$\207" . [widget event widget-apply widget-get :parent :action])(#$ . 62332) nil 5])
(define-widget 'radio-button-choice 'default "Select one of multiple options." :convert-widget 'widget-types-convert-widget :offset 4 :format "%v" :entry-format "%b %v" :menu-tag "radio" :value-create 'widget-radio-value-create :value-delete 'widget-children-value-delete :value-get 'widget-radio-value-get :value-inline 'widget-radio-value-inline :value-set 'widget-radio-value-set :error "You must push one of the buttons" :validate 'widget-radio-validate :match 'widget-choice-match :match-inline 'widget-choice-match-inline :action 'widget-radio-action)
(defalias 'widget-radio-value-create #[(widget) #@127 ("\303\304\"\305\n\2050\n@\nA\306	\"\210\2020*\207" . [widget arg args widget-get :args nil widget-radio-add-item])(#$ . 63053) nil 3])
#@66 Add to radio widget WIDGET a new radio button item of type TYPE.
(defalias 'widget-radio-add-item #[(widget type) #@1159 ("h\306=\2030\307\310\"\2030\311\312\307\310\"\"\210\214\313\211\314\315c\210`\316Z`}\210eTb\210\307\317\"\307\320\"\307\321\")\307*\322\"\206E0\307\323\"+`,\307\324\"?\205X0\325*\326\f#-\314.\314/\307\327\"c\210,b\210\330\331\314\313#\203\3250\332\224f0\333\316!\2100\334=\203\2100\334c\210\202\32100\335=\203\2410\336\337\340\317-??+&/\202\32100\341=\203\3130-\203\2660\342*\f#\202\2730\343*\".-\204\3210\325.\344\"\210\202\3210\345\3460\"\210)\202j0-\203\3410\347\324*#\210/\203\3710\347.\350/#\210\347\321)/C\244#\210.\203\347\320.C\244#\210..eeT|\210dSd|\210db\210	,\207" . [widget result inhibit-modification-hooks inhibit-read-only value children 10 widget-get :indent insert-char 32 t nil "<>" 2 :value :children :buttons :sibling-args :button-args :choice widget-apply :match :entry-format re-search-forward "%\\([bv%]\\)" 1 delete-backward-char 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 buttons type button-args from chosen child button escape])(#$ . 63327) nil 7 (#$ . 63205)])
(defalias 'widget-radio-value-get #[(widget) #@86 ("\302!\211\2050\303	!)\207" . [widget chosen widget-radio-chosen widget-value])(#$ . 64569) nil 3])
#@57 Return the widget representing the chosen radio button.
(defalias 'widget-radio-chosen #[(widget) #@187 ("\304\305\"\306\211\203%0@A\307\304\n\310\"\311\"\203	0\n\306\211\2040	+\207" . [widget found current children widget-get :children nil widget-apply :button :value-get])(#$ . 64785) nil 5 (#$ . 64680)])
(defalias 'widget-radio-value-inline #[(widget) #@211 ("\304\305\"\306\211\203(0@A\307\304\n\310\"\311\"\203	0\307\n\312\"\306\211\2040	+\207" . [widget found current children widget-get :children nil widget-apply :button :value-get :value-inline])(#$ . 65059) nil 5])
(defalias 'widget-radio-value-set #[(widget value) #@323 ("\306\307\"\310\211\205L0@A\306\n\311\"	?\205\"0\312\n\313#\314\f\"\210\203<0\314\n\"\210\312\n\315\"\210\202A0\312\n\316\"\210	\206G0*\202	0+\207" . [widget found current children button value widget-get :children nil :button widget-apply :match widget-value-set :activate :deactivate match])(#$ . 65347) nil 4])
(defalias 'widget-radio-validate #[(widget) #@231 ("\305\306\"\307\211\211\f\203&0\n\204&0\f@\fA\305\310\"\311	\312\"\2020\n\20310\311\313\"\20220,\207" . [widget button found current children widget-get :children nil :button widget-apply :value-get :validate])(#$ . 65740) nil 4])
(defalias 'widget-radio-action #[(widget child event) #@363 ("\306\307\"\306\310\"\311\f\n>\203H0\203H0@A\306	\312\"\f=\20340\313\314\"\210\315	\316\"\210\202D0\317!\203D0\313\311\"\210\315	\320\"\210)\2020+\315\321\f$\207" . [widget current buttons children child button widget-get :children :buttons nil :button widget-value-set t widget-apply :activate widget-value :deactivate :notify event])(#$ . 66051) nil 5])
(define-widget 'insert-button '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 'widget-insert-button-action)
(defalias 'widget-insert-button-action #[(widget &optional event) #@107 ("\301\302\303\"\304\302\305\"#\207" . [widget widget-apply widget-get :parent :insert-before :widget])(#$ . 66712) nil 6])
(define-widget 'delete-button 'push-button "A delete button for the `editable-list' widget." :tag "DEL" :help-echo "Delete this item from the list." :action 'widget-delete-button-action)
(defalias 'widget-delete-button-action #[(widget &optional event) #@103 ("\301\302\303\"\304\302\305\"#\207" . [widget widget-apply widget-get :parent :delete-at :widget])(#$ . 67098) nil 6])
(define-widget 'editable-list 'default "A variable list of widgets of the same type." :convert-widget 'widget-types-convert-widget :offset 12 :format "%v%i\n" :format-handler 'widget-editable-list-format-handler :entry-format "%i %d %v" :menu-tag "editable-list" :value-create 'widget-editable-list-value-create :value-delete 'widget-children-value-delete :value-get 'widget-editable-list-value-get :validate 'widget-children-validate :match 'widget-editable-list-match :match-inline 'widget-editable-list-match-inline :insert-before 'widget-editable-list-insert-before :delete-at 'widget-editable-list-delete-at)
(defalias 'widget-editable-list-format-handler #[(widget escape) #@262 ("\302=\203_0\303	\304\"\2030\305\306\303	\304\"\"\210\307\310	\311\303	\312\"$\207\313	\"\207" . [escape widget 105 widget-get :indent insert-char 32 apply widget-create-child-and-convert insert-button :append-button-args widget-default-format-handler])(#$ . 67906) nil 7])
(defalias 'widget-editable-list-value-create #[(widget) #@400 ("\305\306\"\305\307\"@\310\311\312\313`!#\210\314\305\312\"\315\"\210	\203L0\316\n	\"\211\203F0\317\305\n\320\"\20380\f@\202;0\f@@\315#B\fA\202H0\310)\2020\311\321\237#+\207" . [widget value type children answer widget-get :value :args nil widget-put :value-pos copy-marker set-marker-insertion-type t widget-match-inline widget-editable-list-entry-create :inline :children])(#$ . 68250) nil 6])
(defalias 'widget-editable-list-value-get #[(widget) #@159 ("\301\302\303\304\305\306\"\"\"\207" . [widget apply append mapcar #[(child) "\301\302\"\207" [child widget-apply :value-inline] 3] widget-get :children])(#$ . 68729) nil 7])
(defalias 'widget-editable-list-match #[(widget value) #@80 ("<\2050\302	\"A?\207" . [value widget widget-editable-list-match-inline])(#$ . 68968) nil 3])
(defalias 'widget-editable-list-match-inline #[(widget value) #@199 ("\306\307\"@\310\311\f\203-0\n\203-0\312\f\"\211\203'0\313	@\"A\202)0\311)\202\n0	\f+B\207" . [widget found ok type value answer widget-get :args t nil widget-match-inline append])(#$ . 69136) nil 4])
(defalias 'widget-editable-list-insert-before #[(widget before) #@508 ("\212\306\307\"\310\311\211\2030\306\312\"b\210\202_0\306\313\"b\210\314\311\211#\306\312\"\306\315\"W\203?0\306\315\"\306\312\"\311\223\210\f@=\203R0\316\307\fB#\210\202i0\fA@=\204a0\fA\211\202S0\f\fAB\241\210.\317 \210\320\321#\207" . [widget after-change-functions before-change-functions inhibit-read-only children before widget-get :children t nil :entry-from :value-pos widget-editable-list-entry-create :from widget-put widget-setup widget-apply :notify child])(#$ . 69425) nil 6])
(defalias 'widget-editable-list-delete-at #[(widget child) #@554 ("\212\306\307\310\"!\311\312\311\211\20370@A\307\f\313\"=\2030\314\310\315\f\307\310\"\"#\210\316\f!\210\2020-\307\317\"\307\320\"\312\311\211\316!\210|\210\311\211\223\210\311\211\223\210-\314\321\315\307\321\"\"#\210)\322 \210\323\324#\207" . [widget after-change-functions before-change-functions inhibit-read-only button buttons copy-sequence widget-get :buttons nil t :widget widget-put delq widget-delete :entry-from :entry-to :children widget-setup widget-apply :notify child entry-to entry-from])(#$ . 70018) nil 8])
(defalias 'widget-editable-list-entry-create #[(widget value conv) #@1194 ("\306\307\"@\310\211\211\214\311\211\310,-\312c\210`\313Z`}\210eTb\210\212\306\314\"\20320\315\316\306\314\"\"\210\306\317\"c\210)\320\321\310\311#\203\2560\322\224f.\323\313!\210.\324=\203W0\324c\210\202\2520.\325=\203k0\326\327\330\306\331\"$\202\2520.\332=\2030\326\327\333\306\334\"$\202\2520.\335=\203\2440/\203\2250\336\f0#\202\2520\336\f\337\f\340\341\f!##\202\2520\342\343.\"\210)\20290\344\345\n	\306\345\"BB#\210\346 \347 12\3502\311\"\210\3501\310\"\210\344\3512#\210\344\3521#*eeT|\210dSd|\210db\210\210,\344	\353#\210\344\n\353#\210,\207" . [widget insert delete child type result widget-get :args nil t "<>" 2 :indent insert-char 32 :entry-format re-search-forward "%\\(.\\)" 1 delete-backward-char 37 105 apply widget-create-child-and-convert insert-button :insert-button-args 100 delete-button :delete-button-args 118 widget-create-child-value widget-apply :value-to-external widget-default-get error "Unknown escape `%c'" widget-put :buttons point-min-marker point-max-marker set-marker-insertion-type :entry-from :entry-to :widget inhibit-modification-hooks inhibit-read-only escape conv value entry-to entry-from])(#$ . 70666) nil 8])
(define-widget 'group 'default "A widget which groups other widgets inside." :convert-widget 'widget-types-convert-widget :format "%v" :value-create 'widget-group-value-create :value-delete 'widget-children-value-delete :value-get 'widget-editable-list-value-get :default-get 'widget-group-default-get :validate 'widget-children-validate :match 'widget-group-match :match-inline 'widget-group-match-inline)
(defalias 'widget-group-value-create #[(widget) #@422 ("\306\307\"\306\310\"\311\211\211\203_0@A\312\f\"\211Ah\313=\20370\306\314\"\20370\315\316\306\314\"\"\210\n\204B0\317\"\202Y0\306\320\"\203R0\321\n@#\202Y0\321\n@@#	B\2020\322\323	\237#-\207" . [widget children answer arg value args widget-get :args :value nil widget-match-inline 10 :indent insert-char 32 widget-create-child :inline widget-create-child-value widget-put :children])(#$ . 72341) nil 6])
(defalias 'widget-group-default-get #[(widget) #@85 ("\301\302\303\304\"\"\207" . [widget mapcar widget-default-get widget-get :args])(#$ . 72835) nil 5])
(defalias 'widget-group-match #[(widget values) #@94 ("<\2050\303	\"\211\2050\nA?)\207" . [values widget match widget-group-match-inline])(#$ . 72993) nil 4])
(defalias 'widget-group-match-inline #[(widget vals) #@221 ("\306\307\"\310\211\211\f\20320\f@\fA\311\"\211\203*0\nA\312	\n@\"\2020\310\310\211\2040\n\20590	B,\207" . [widget found answer argument args vals widget-get :args nil widget-match-inline append])(#$ . 73166) nil 5])
(define-widget 'visibility 'item "An indicator and manipulator for hidden items." :format "%[%v%]" :button-prefix "" :button-suffix "" :on "Hide" :off "Show" :value-create 'widget-visibility-value-create :action 'widget-toggle-action :match #[(widget value) "\300\207" [t] 1])
(defalias 'widget-visibility-value-create #[(widget) #@312 ("\305\306\"\305\307\"\211\2030\n\fQ\2020\310	\203$0	\fQ\202&0\310\311!\20350\312\n\313\314$\202;0\312	\315\316$*\207" . [widget off on widget-push-button-prefix widget-push-button-suffix widget-get :on :off "" widget-value widget-image-insert "down" "down-pushed" "right" "right-pushed"])(#$ . 73743) nil 6])
(define-widget 'documentation-link 'link "Link type used in documentation strings." :tab-order -1 :help-echo "Describe this symbol" :action 'widget-documentation-link-action)
#@76 Display documentation for WIDGET's value.  Ignore optional argument EVENT.
(defalias 'widget-documentation-link-action #[(widget &optional event) #@254 ("\303\304\"\305	!\306\n!\203 0\307\n!\203 0\310\311\312	!\313Q!\202/0\306\n!\203,0\314\n!\202/0\315\n!*\207" . [widget string symbol widget-get :value intern fboundp boundp apropos "\\`" regexp-quote "\\'" describe-function describe-variable])(#$ . 74408) nil 4 (#$ . 74255)])
#@55 Add hyperlinks to documentation strings when non-nil.
(custom-declare-variable 'widget-documentation-links 't '(#$ . 74700) :type 'boolean :group 'widget-documentation)
#@106 Regexp for matching potential links in documentation strings.
The first group should be the link itself.
(custom-declare-variable 'widget-documentation-link-regexp '"`\\([^\n`' ]+\\)'" '(#$ . 74876) :type 'regexp :group 'widget-documentation)
#@211 Predicate used to test if a string is useful as a link.
The value should be a function.  The function will be called one
argument, a string, and should return non-nil if there should be a
link for that string.
(custom-declare-variable 'widget-documentation-link-p ''intern-soft '(#$ . 75126) :type 'function :options '(widget-documentation-link-p) :group 'widget-documentation)
#@54 Widget type used for links in documentation strings.
(custom-declare-variable 'widget-documentation-link-type ''documentation-link '(#$ . 75510) :type 'symbol :group 'widget-documentation)
(defalias 'widget-documentation-link-add #[(widget from to) #@762 ("\306	\n#\210\203]0\f\307\310\"\311\312!\211\n\212	b\210\313\n\314#\203T0\315\316!\316\224\316\225_ _!\203P0\317!\320_%B+\202\"0)\321\310#\210-\307\322\"\211\"\205\2120\323\"!?\205\2120\212\214	\n}\210eb\210\324\325\326\314#\205\2110\327\330\"\"\210\202x0*)\207" . [widget from to widget-documentation-links widget-documentation-link-regexp widget-documentation-face widget-specify-doc widget-get :buttons default-value widget-mouse-face re-search-forward t match-string 1 widget-convert-button :value widget-put :indent zerop search-forward "\n" nil insert-char 32 widget-button-pressed-face widget-button-face buttons regexp end begin name widget-documentation-link-p widget-documentation-link-type indent])(#$ . 75766) nil 7])
(define-widget 'documentation-string 'item "A documentation string." :format "%v" :action 'widget-documentation-string-action :value-delete 'widget-children-value-delete :value-create 'widget-documentation-string-value-create)
(defalias 'widget-documentation-string-value-create #[(widget) #@668 ("\306!\307\310\"\307\211\311\"\312\"`\313\314\f\"\203n0\f\315\211\224O\f\315\224\316O\316 \211!\317\261\210\320	`#\210\321\322\323\324\325\326\327\330\331\332\n&\n\203c0`\203Y0\333!\204Y0\334\317\"\210 c\210\320	`#\210\335\336C#\210+\202w0\fc\210\320	`#\210,\337c\207" . [widget start shown indent doc button widget-value widget-get :indent :parent :documentation-shown string-match "\n" 0 nil 32 widget-documentation-link-add widget-create-child-and-convert visibility :help-echo "Show or hide rest of the documentation." :off "More" :always-active t :action widget-parent-action zerop insert-char widget-put :buttons 10 after before])(#$ . 76844) nil 13])
(defalias 'widget-documentation-string-action #[(widget &rest ignore) #@161 ("\302\303\"\304	\305\302	\305\"?#\210)\306\307!\"\207" . [widget parent widget-get :parent widget-put :documentation-shown widget-value-set widget-value])(#$ . 77609) nil 6])
(define-widget 'const 'item "An immutable sexp." :prompt-value 'widget-const-prompt-value :format "%t\n%d")
(defalias 'widget-const-prompt-value #[(widget prompt value unbound) #@40 ("\301!\207" . [widget widget-value])(#$ . 77972) nil 2])
(byte-code "\300\301\302\303\304\305\306\307&\210\300\310\302\311\304\305\306\312&\210\300\313\314\315\316\317\304\320\321\313&	\207" [define-widget function-item const "An immutable function name." :format "%v\n%h" :documentation-property #[(symbol) "\300\301\302\217\207" [nil (documentation symbol t) ((error))] 3] variable-item "An immutable variable name." variable-documentation other sexp "Matches any value, but doesn't let the user edit the value.\nThis is useful as last item in a `choice' widget.\nYou should use this widget type with a default value,\nas in (other DEFAULT) or (other :tag \"NAME\" DEFAULT).\nIf the user selects this alternative, that specifies DEFAULT\nas the value." :tag "Other" "%t%n" :value] 10)
#@51 History of input to `widget-string-prompt-value'.
(defvar widget-string-prompt-value-history nil (#$ . 78769))
(byte-code "\300\301\302\303\304\305\306\307\310\311\312\313&\210\300\314\301\315\316\317\320\321\304\322&	\207" [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) #@125 (";\205	0\301\302\303\217\207" . [value nil (byte-code "\301\302\303\"\210\207" [value t string-match ""] 4) ((error))])(#$ . 79328) nil 3])
#@51 Check that the value of WIDGET is a valid regexp.
(defalias 'widget-regexp-validate #[(widget) #@227 ("\300\301\302\217\207" . [data (byte-code "\301\302\303!\304\"\210\207" [widget nil string-match widget-value ""] 4) ((error (byte-code "\302\303\304	!#\210\207" [widget data widget-put :error error-message-string] 5)))])(#$ . 79580) nil 3 (#$ . 79478)])
(define-widget 'file 'string "A file widget.\nIt will read a file name from the minibuffer when invoked." :complete-function 'widget-file-complete :prompt-value 'widget-file-prompt-value :format "%{%t%}: %v" :tag "File")
#@50 Perform completion on file name preceding point.
(defalias 'widget-file-complete #[nil #@558 ("`\212\306\307x\210`)\211{\310\n!\311\n!\312\f\"\211\313=\206V0\204/0\314\315\n\"\210\316 \202V0\230\204A0	|\210\317\f\"c\202V0\314\320!\210\321\220\322\323\324\f\"\325\"!\221\210\314\326\327\".\207" . [end beg pattern name-part directory completion "^ " nil file-name-nondirectory file-name-directory file-name-completion t message "Can't find completion for \"%s\"" ding expand-file-name "Making completion list..." "*Completions*" display-completion-list sort file-name-all-completions string< "Making completion list...%s" "done"])(#$ . 80160) nil 7 (#$ . 80066) nil])
(defalias 'widget-file-prompt-value #[(widget prompt value unbound) #@288 ("\306\2030\307	!\202*0\310\311	\n#\312\n!\313\n!\314\315\"\307\316\f%,!\207" . [unbound prompt value widget must-match file abbreviate-file-name read-file-name format "%s (default %s) " file-name-directory file-name-nondirectory widget-get :must-match nil dir prompt2])(#$ . 80829) nil 7])
(define-widget 'directory '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 (#$ . 81279))
(define-widget 'symbol 'editable-field "A Lisp symbol." :value nil :tag "Symbol" :format "%{%t%}: %v" :match #[(widget value) "9\207" [value] 1] :complete-function 'lisp-complete-symbol :prompt-internal 'widget-symbol-prompt-internal :prompt-match 'symbolp :prompt-history 'widget-symbol-prompt-value-history :value-to-internal #[(widget value) "9\203	 \301!\207\207" [value symbol-name] 2] :value-to-external #[(widget value) ";\203	 \301!\207\207" [value intern] 2])
(defalias 'widget-symbol-prompt-internal #[(widget prompt initial history) #@199 ("\306	\307\n\310\"\311\f&\211;\2030\312G!\2040\202 0\313\314!)\207" . [prompt obarray widget initial history answer completing-read widget-get :prompt-match nil zerop error "No value"])(#$ . 81948) nil 8])
#@53 History of input to `widget-function-prompt-value'.
(defvar widget-function-prompt-value-history nil (#$ . 82172))
(define-widget 'function 'sexp "A Lisp function." :complete-function #[nil "\300\301!\207" [lisp-complete-symbol fboundp] 2 nil nil] :prompt-value 'widget-field-prompt-value :prompt-internal 'widget-symbol-prompt-internal :prompt-match 'fboundp :prompt-history 'widget-function-prompt-value-history :action 'widget-field-action :match-alternatives '(functionp) :validate #[(widget) "\301\302!!?\205 \303\304\305\306\302!\"#\210\207" [widget functionp widget-value widget-put :error format "Invalid function: %S"] 7] :value 'ignore :tag "Function")
#@53 History of input to `widget-variable-prompt-value'.
(defvar widget-variable-prompt-value-history nil (#$ . 82846))
(define-widget 'variable 'symbol "A Lisp variable." :prompt-match 'boundp :prompt-history 'widget-variable-prompt-value-history :complete-function #[nil "\300\301!\207" [lisp-complete-symbol boundp] 2 nil nil] :tag "Variable")
#@58 History of input to `widget-coding-system-prompt-value'.
(defvar widget-coding-system-prompt-value-history nil (#$ . 83194))
(define-widget 'coding-system 'symbol "A MULE coding-system." :format "%{%t%}: %v" :tag "Coding system" :base-only nil :prompt-history 'widget-coding-system-prompt-value-history :prompt-value 'widget-coding-system-prompt-value :action 'widget-coding-system-action :complete-function #[nil "\300\301!\207" [lisp-complete-symbol coding-system-p] 2 nil nil] :validate #[(widget) "\301\302!!?\205 \303\304\305\306\302!\"#\210\207" [widget coding-system-p widget-value widget-put :error format "Invalid coding system: %S"] 7] :value 'undecided :prompt-match 'coding-system-p)
#@37 Read coding-system from minibuffer.
(defalias 'widget-coding-system-prompt-value #[(widget prompt value unbound) #@280 ("\304\305\"\2030\306\307\310\311	\n#\312\313\314\315!\"\316\211\211&!\207\317\310\311	\n#\n\"\207" . [widget prompt value coding-system-history widget-get :base-only intern completing-read format "%s (default %s) " mapcar list coding-system-list t nil read-coding-system])(#$ . 84021) nil 8 (#$ . 83901)])
(defalias 'widget-coding-system-action #[(widget &optional event) #@211 ("\303\304\305\"\306!\307$\310	\"\210\304\311\n$\210\312 )\207" . [widget answer event widget-coding-system-prompt-value widget-apply :menu-tag-get widget-value t widget-value-set :notify widget-setup])(#$ . 84406) nil 5])
(define-widget 'sexp 'editable-field "An arbitrary Lisp expression." :tag "Lisp expression" :format "%{%t%}: %v" :value nil :validate 'widget-sexp-validate :match #[(widget value) "\300\207" [t] 1] :value-to-internal 'widget-sexp-value-to-internal :value-to-external #[(widget value) "\301!\207" [value read] 2] :prompt-history 'widget-sexp-prompt-value-history :prompt-value 'widget-sexp-prompt-value)
(defalias 'widget-sexp-value-to-internal #[(widget value) #@198 ("9\2030\302!\2020\303!\304\305	\"\2030	\306\307O\2020\304\305	\"\204,0	G\310V\20320\311	P\20230	)\207" . [value pp prin1-to-string pp-to-string string-match "\n\\'" 0 -1 40 "\n"])(#$ . 85105) nil 3])
(defalias 'widget-sexp-validate #[(widget) #@754 ("\303\304\305!!\306\216rq\210\307	\310\"c\210eb\210\311\312\313\314\217\210\n\205'0\315	\316\n#\210	,\207" . [#1=#:temp-buffer widget err get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n0\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) widget-apply :value-get nil data (byte-code "\302\303!\210m\2030\304\2020\305	\306\307p!#\2040\310	\311\"m\204+0\204+0\312\313`d{\"\302\207" [err widget skip-syntax-forward "\\s-" "Empty sexp -- use `nil'?" widget-apply :match read widget-get :type-error format "Junk at end of expression: %s"] 5) ((end-of-file (byte-code "\301\302\207" [err "Unbalanced sexp" nil] 1)) (error (byte-code "\302!\302\207" [data err error-message-string] 2))) widget-put :error])(#$ . 85372) nil 4])
#@49 History of input to `widget-sexp-prompt-value'.
(defvar widget-sexp-prompt-value-history nil (#$ . 86151))
(defalias 'widget-sexp-prompt-value #[(widget prompt value unbound) #@261 ("\306	?\205\f0\307\n!\310B\311\312\"#\313\f!\211A\fGU\204'0\314\315\fA\316O\"\210@*\207" . [prompt unbound value widget found answer read-string prin1-to-string 0 widget-get :prompt-history read-from-string error "Junk at end of expression: %s" nil])(#$ . 86333) nil 7])
(define-widget 'restricted-sexp '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 'widget-restricted-sexp-match :value-to-internal #[(widget value) "\302\303	#\203\f \304	!\207	\207" [widget value widget-apply :match prin1-to-string] 4])
(defalias 'widget-restricted-sexp-match #[(widget value) #@227 ("\304\305\"\306\211\203=0	\204=0\307\n@!\2030\n@!\20210\n@:\20360\n@@\310=\20360\n@A@=\20360\311\nA\211\2040	*\207" . [widget matched alternatives value widget-get :match-alternatives nil functionp quote t])(#$ . 87045) nil 4])
(byte-code "\300\301\302\303\304\305\306\307\310\311\312\313&\210\300\314\302\315\304\316\306\317\310\320\312\321&\210\300\322\323\324\304\325\306\307\326\327\330\331\332\333\334\335\336\337\340\341\342\343&\210\300\344\345\346\304\347\330\350&\210\300\351\345\352\304\353\330\350\342\354\336\355\340\356&\207" [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) ";\203 \207\301!\207" [value char-to-string] 2] :value-to-external #[(widget value) ";\203	 \301H\207\207" [value 0] 2] :match #[(widget value) "\301!\207" [value char-valid-p] 2] list group "A Lisp list." "List" "%{%t%}:\n%v" vector "A Lisp vector." "Vector" widget-vector-match #[(widget value) "\301\302\"\207" [value append nil] 3] #[(widget value) "\301\302\"\207" [value apply vector] 3]] 22)
(defalias 'widget-vector-match #[(widget value) #@117 ("\302!\2050\303	\304	\305#\"\207" . [value widget vectorp widget-group-match widget-apply :value-to-internal])(#$ . 88521) nil 6])
(define-widget 'cons 'group "A cons-cell." :tag "Cons-cell" :format "%{%t%}:\n%v" :match 'widget-cons-match :value-to-internal #[(widget value) "@AD\207" [value] 2] :value-to-external #[(widget value) "@A@B\207" [value] 2])
(defalias 'widget-cons-match #[(widget value) #@105 (":\2050\302	\303	\304#\"\207" . [value widget widget-group-match widget-apply :value-to-internal])(#$ . 88938) nil 6])
(byte-code "\301\302\303\304\305\306\307\310\311\312\313\314&\210\315B\301\207" [current-load-list define-widget plist list "A property list." :key-type (symbol :tag "Key") :value-type (sexp :tag "Value") :convert-widget widget-plist-convert-widget :tag "Plist" widget-plist-value-type] 12)
(defalias 'widget-plist-convert-widget #[(widget) #@348 ("\305\306\"\305\307\"\310\311\312\313\311\312\305\314\"\n\257F	\20300\315\311\312\316\312\317\320	\"BBBBBD\20220C\321\322\f#\210,\207" . [widget options widget-plist-value-type other args widget-get :options :value-type editable-list :inline t group :key-type checklist :greedy mapcar widget-plist-convert-option widget-put :args])(#$ . 89413) nil 9])
(defalias 'widget-plist-convert-option #[(option) #@215 ("\305\211\n<\203\"0\n@\nA@<\2030\2020\306D)\202(0\306\nD\f\307\310\311\312\313	\257*\207" . [value-type key-type option key widget-plist-value-type nil const group :format "Key: %v" :inline t])(#$ . 89837) nil 7])
(byte-code "\301\302\303\304\305\306\307\310\311\312\313\314&\210\315B\301\207" [current-load-list define-widget alist list "An association list." :key-type (sexp :tag "Key") :value-type (sexp :tag "Value") :convert-widget widget-alist-convert-widget :tag "Alist" widget-alist-value-type] 12)
(defalias 'widget-alist-convert-widget #[(widget) #@360 ("\305\306\"\305\307\"\310\311\312\313\314\315\305\316\"\n\257F	\20300\317\311\312\320\312\321\322	\"BBBBBD\20220C\323\324\f#\210,\207" . [widget options widget-alist-value-type other args widget-get :options :value-type editable-list :inline t cons :format "%v" :key-type checklist :greedy mapcar widget-alist-convert-option widget-put :args])(#$ . 90424) nil 9])
(defalias 'widget-alist-convert-option #[(option) #@196 ("\305\211\n<\203\"0\n@\nA@<\2030\2020\306D)\202(0\306\nD\f\307\310\311	\257*\207" . [value-type key-type option key widget-alist-value-type nil const cons :format "Key: %v"])(#$ . 90860) nil 5])
(define-widget 'choice 'menu-choice "A union of several sexp types." :tag "Choice" :format "%{%t%}: %[Value Menu%] %v" :button-prefix 'widget-push-button-prefix :button-suffix 'widget-push-button-suffix :prompt-value 'widget-choice-prompt-value)
#@16 Make a choice.
(defalias 'widget-choice-prompt-value #[(widget prompt value unbound) #@618 ("\306\307\"\306\310\"\311\211\211\211\211\20360\312@\313#\203-0@\311\211\2020A\211\2040)G\314U\203B0\311\202\2510G\315U\203N0@\202\2510G\316U\203m0	>\203m0	@=\203h0A@\202\2510@\202\2510\203\2030@A\312\317\"B\nB\202m0\320\n\311\321$\211;\205\2500\322\n\"\211;\203\2410\323\n\"A))\211\203\2700\324\311\321$\202\2720-\207" . [widget old choices current completion-ignore-case args widget-get :args :case-fold nil widget-apply :match 0 1 2 :menu-tag-get completing-read t try-completion assoc widget-prompt-value look value prompt val try])(#$ . 91419) nil 6 (#$ . 91327)])
(byte-code "\300\301\302\303\304\305\306\307\310\311&	\210\300\312\313\314\304\315\306\316&\210\300\317\320\321\304\322\306\307&\210\300\323\324\325\304\326\310\327\330\331\332\333\306\334\335\336\337\340&\207" [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) #@36 ("\301!\207" . [prompt y-or-n-p])(#$ . 92904) nil 2])
(define-widget 'color 'editable-field "Choose a color name (with sample)." :format "%t: %v (%{sample%})\n" :size 10 :tag "Color" :value "black" :complete 'widget-color-complete :sample-face-get 'widget-color-sample-face-get :notify 'widget-color-notify :action 'widget-color-action)
#@31 Complete the color in WIDGET.
(defalias 'widget-color-complete #[(widget) #@584 ("\305\306!\210\307\310!`\"\n\2060\311\303\312 \"\313	\"\211\314=\203&0\315\316!\202S0\f\20410\317\320	\"\202S0	\f\230\204A0\321\f	G\322O!\202S0\315\323!\210\324\220\325\326	\322#!\221\210\315\327!+\207" . [widget prefix facemenu-color-alist list completion require facemenu buffer-substring-no-properties widget-field-start mapcar defined-colors try-completion t message "Exact match." error "Can't find completion for \"%s\"" insert-and-inherit nil "Making completion list..." "*Completions*" display-completion-list all-completions "Making completion list...done"])(#$ . 93329) nil 7 (#$ . 93248)])
(defalias 'widget-color-sample-face-get #[(widget) #@173 ("\301\302\303\217\304!\2030\305BC\2020\306)\207" . [value nil (widget-value widget) ((error (widget-get widget :value))) color-defined-p foreground-color default])(#$ . 94003) nil 3])
#@21 Prompt for a color.
(defalias 'widget-color-action #[(widget &optional event) #@340 ("\306\307\"\211\310P\311!\312!`\fW\2030\313\202,0`\fG\\V\203)0G\202,0`\fZ\314\n!\315G!?\205K0\316\"\210\317 \210\306\320$.\207" . [widget tag prompt value start pos widget-apply :menu-tag-get ": " widget-value widget-field-start 0 facemenu-read-color zerop widget-value-set widget-setup :notify answer event])(#$ . 94286) nil 6 (#$ . 94201)])
#@43 Update the sample, and notofy the parent.
(defalias 'widget-color-notify #[(widget child &optional event) #@173 ("\303\304\305\"\306\307\310\"#\210\311	\n#\207" . [widget child event overlay-put widget-get :sample-overlay face widget-apply :sample-face-get widget-default-notify])(#$ . 94777) nil 6 (#$ . 94664)])
#@43 Display help-echo text for widget at POS.
(defalias 'widget-echo-help #[(pos) #@163 ("\303!\211\205\f0\304	\305\"\306\n!\2030\n	!\n;\205 0\307\310\n\"*\207" . [pos widget help-echo widget-at widget-get :help-echo functionp message "%s"])(#$ . 95073) nil 4 (#$ . 94988)])
(provide 'wid-edit)
