%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/share/emacs/27.2/lisp/
Upload File :
Create Path :
Current File : //usr/local/share/emacs/27.2/lisp/wid-edit.elc

;ELC
;;; Compiled
;;; in Emacs version 27.2
;;; with all optimizations.

;;; This file contains utf-8 non-ASCII characters,
;;; and so cannot be loaded into Emacs 22 or earlier.
(and (boundp 'emacs-version)
     (< (aref emacs-version (1- (length emacs-version))) ?A)
     (string-lessp emacs-version "23")
     (error "`%s' was compiled for Emacs 23 or later" #$))

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


(require 'cl-lib)
#@76 Character position of the end of event if that exists, or nil.

(fn EVENT)
(defalias 'widget-event-point #[257 "\300\301!!\207" [posn-point event-end] 4 (#$ . 426)])
#@70 Non-nil if EVENT is a mouse-button-release event object.

(fn EVENT)
(defalias 'widget-button-release-event-p #[257 "\300!\205\301!\302>\205\303\304!>\206\305\304!>\207" [eventp event-basic-type (mouse-1 mouse-2 mouse-3) click event-modifiers drag] 4 (#$ . 599)])
(byte-code "\300\301\302\303\304\305\304\306\307\310\311\312&\210\300\313\302\314\311\301%\210\300\315\302\316\311\301\311\317&\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 widget-documentation "Options controlling the display of documentation strings." widget-faces "Faces used by the widget library." faces] 12)
#@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 (#$ . 1360))
(custom-declare-face 'widget-documentation '((((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 (#$ . 1823))
(byte-code "\300\301\302\303\304\305%\210\306\307\310\311\312DD\313\314\315\304\305&\210\300\316\317\320\304\305%\210\300\321\322\323\304\305%\207" [custom-declare-face widget-button ((t (:weight bold))) "Face used for widget buttons." :group widget-faces custom-declare-variable widget-mouse-face funcall function #[0 "\300\207" [highlight] 1] "Face used for widget buttons when the mouse is above them." :type face widget-field ((((type tty)) :background "yellow3" :foreground "black" :extend t) (((class grayscale color) (background light)) :background "gray85" :extend t) (((class grayscale color) (background dark)) :background "dim gray" :extend t) (t :slant italic :extend t)) "Face used for editable fields." widget-single-line-field ((((type tty)) :background "green3" :foreground "black") (((class grayscale color) (background light)) :background "gray85") (((class grayscale color) (background dark)) :background "dim gray") (t :slant italic)) "Face used for editable fields spanning only a single line."] 8)
#@161 Return string representation of OBJECT, any Lisp object.
No quoting characters are used; no delimiters are printed around
the contents of strings.

(fn OBJECT)
(defalias 'widget-princ-to-string #[257 "\301\302!\303\216\304!\210)rq\210\305 +\207" [standard-output generate-new-buffer " *string-output*" #[0 "\301!\207" [standard-output kill-buffer] 2] princ buffer-string] 3 (#$ . 3011)])
#@29 Clear all undo information.
(defalias 'widget-clear-undo #[0 "\300p!\210\301 \207" [buffer-disable-undo buffer-enable-undo] 2 (#$ . 3411)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\210\300\315\302\303\316DD\317\306\307\310\320&\207" [custom-declare-variable widget-menu-max-size funcall function #[0 "\300\207" [40] 1] "Largest number of items allowed in a popup-menu.\nLarger menus are read through the minibuffer." :group widgets :type integer widget-menu-max-shortcuts #[0 "\300\207" [40] 1] "Largest number of items for which it works to choose one with a character.\nFor a larger number of items, the minibuffer is used." widget-menu-minibuffer-flag #[0 "\300\207" [nil] 1] "Control how to ask for a choice from the keyboard.\nNon-nil means use the minibuffer;\nnil means read a single character." boolean] 8)
#@589 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.

(fn TITLE ITEMS &optional EVENT)
(defalias 'widget-choose #[770 "GW\203\211\203\305 \203\306\307BD\"\207	\204$G\nV\203K\310\311\"\262\312\313P\314\315$\211;\205J\316\"\211;\203C\211\262\317\"A\262\207\320\321 \314\211\211r\322\323!q\210\324 \210\325c\210\203\224\211A\262\242\262:\203\215\326@!A\327\330#c\210\331\332	!#\210\315\262\266T\262\202]\333c\210eb\210\314y\210)\204\246\334\335!\210\331\336\337#\210\331\340\341#\210\342 \343\344\345\346\332!\347\"\350$\216\351\323!\352\353\"\210\315\354\204\355\356\327\357\"!\"\262\204\345\360\361!\210\362\267\202\363!\344V\203\376\364\365\f!!\210\202\337 \210\354\211\262)\202\366\211\262\202\314\203\314\314\262\202\314)\266)\210\207" [widget-menu-max-size widget-menu-minibuffer-flag widget-menu-max-shortcuts cursor-in-echo-area minibuffer-scroll-window display-popup-menus-p x-popup-menu "" cl-remove-if stringp completing-read ": " nil t try-completion assoc 48 make-sparse-keymap get-buffer-create " widget-choose" erase-buffer "Available choices:\n\n" substitute-command-keys format "%c = %s\n" define-key vector "\nC-g = Quit" error "None of the choices is currently meaningful" [134217750] scroll-other-window [134217773] negative-argument current-window-configuration make-byte-code 0 "\301\300!\207" vconcat [set-window-configuration] 2 get-buffer display-buffer (display-buffer-in-direction (direction . bottom) (window-height . fit-window-to-buffer)) 1 lookup-key read-key-sequence "%s: " user-error "Canceled" #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (scroll-other-window 235 negative-argument 265)) get-buffer-window scroll-other-window-down window-height -1] 18 (#$ . 4298)])
#@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.
(defconst widget-field-add-space nil (#$ . 6630))
#@184 Non-nil means use `before-change-functions' to track editable fields.
This enables the use of undo.  Using before hooks also means that
the :notify function can't know the new value.
(defvar widget-field-use-before-change t (#$ . 6834))
#@78 Specify editable button for WIDGET between FROM and TO.

(fn WIDGET FROM TO)
(defalias 'widget-specify-field #[771 "\212\211b\210\301\302\"\204\303u\210\202\203\304\305!\210`\262)\301\306\"\301\307\"\206)\310\301\311\"\301\312\"?\206<\301\302\"\313!\203E\314\262\206J`Sf\315U\203\213\316S\317\320\317%\321\322\323#\210\321\324#\210\321\325#\210\321\326#\210\321\327#\210\321\330#\266S\262\320\262\316\317\211%\331	\332#\210\321\322#\210\321\325#\210\321\326#\210\321\327#\210\321\330#\266\333!\207" [widget-field-add-space widget-get :size 1 insert-and-inherit " " :keymap :value-face widget-field :help-echo :follow-link functionp widget-mouse-help 10 make-overlay nil t overlay-put field boundary real-field local-map face follow-link help-echo widget-put :field-overlay widget-specify-secret] 14 (#$ . 7077)])
#@72 Replace text in FIELD with value of `:secret', if non-nil.

(fn FIELD)
(defalias 'widget-specify-secret #[257 "\300\301\"\300\302\"\205T\303!\304!\203+\211V\203+\211Sf\305=\203+\211S\262\202W\205Rf\211=\204J\306\211T$\210\307\211T\310$\210T\262\210\202+\266\202\207" [widget-get :secret :size widget-field-start widget-field-end 32 subst-char-in-region put-text-property secret] 11 (#$ . 7967)])
#@69 Specify button for WIDGET between FROM and TO.

(fn WIDGET FROM TO)
(defalias 'widget-specify-button #[771 "\300\301\302\301%\303\304\"\303\305\"\306\307#\210\310!\203\311\262\312\313#\210\312\314\303	\315\"#\210\312\316\302#\210\303\317\"\204a\312\320\321	\322\"#\210\312\323\321	\324\"\211<\203[\325!\202]\211C\262#\210\312\326\327#\210\312\330#\210\312\331#\207" [make-overlay nil t widget-get :follow-link :help-echo widget-put :button-overlay functionp widget-mouse-help overlay-put button keymap :keymap evaporate :suppress-face face widget-apply :button-face-get mouse-face :mouse-face-get copy-sequence pointer hand follow-link help-echo] 12 (#$ . 8398)])
#@91 Help-echo callback for widgets whose :help-echo is a function.

(fn WINDOW OVERLAY POINT)
(defalias 'widget-mouse-help #[771 "r\300!q\210\301\302!!\211\205\303\304\"\305!\203\211!\202 \211\266\202)\207" [overlay-buffer widget-at overlay-start widget-get :help-echo functionp] 7 (#$ . 9101)])
#@69 Specify sample for WIDGET between FROM and TO.

(fn WIDGET FROM TO)
(defalias 'widget-specify-sample #[771 "\300\301\302\301%\303\304\305\306\"#\210\303\307\302#\210\310\311#\207" [make-overlay nil t overlay-put face widget-apply :sample-face-get evaporate widget-put :sample-overlay] 10 (#$ . 9409)])
#@76 Specify documentation for WIDGET between FROM and TO.

(fn WIDGET FROM TO)
(defalias 'widget-specify-doc #[771 "\301\302\303\302%\304\305#\210\304\306#\210\304\307\303#\210\310\311#\207" [widget-documentation-face make-overlay nil t overlay-put widget-doc face evaporate widget-put :doc-overlay] 9 (#$ . 9725)])
#@159 Non-nil if we should indent at the current position.
With CHECK-AFTER non-nil, considers also the content after point, if needed.

(fn &optional CHECK-AFTER)
(defalias 'widget--should-indent-p #[256 "\214~\210h\300=\205\211?\206g\301=?)\207" [10 32] 3 (#$ . 10054)])
#@71 Execute FORM without inheriting any text properties.

(fn &rest FORM)
(defalias 'widget-specify-insert '(macro . #[128 "\300\301\302\303\304\305B\306BBFD\207" [save-restriction let ((inhibit-read-only t) (inhibit-modification-hooks t)) (narrow-to-region (point) (point)) prog1 progn ((goto-char (point-max)))] 8 (#$ . 10331)]))
(byte-code "\300\301\302\303#\210\304\305\306\307\310\311%\207" [put widget-specify-insert edebug-form-spec body custom-declare-face widget-inactive ((t :inherit shadow)) "Face used for inactive widgets." :group widget-faces] 6)
#@67 Make WIDGET inactive for user modifications.

(fn WIDGET FROM TO)
(defalias 'widget-specify-inactive #[771 "\300\301\"?\205.\302\303\304\303%\305\306\307#\210\305\310\304#\210\305\311\312#\210\305\313\314#\210\315\301#\262\207" [widget-get :inactive make-overlay nil t overlay-put face widget-inactive evaporate priority 100 modification-hooks (widget-overlay-inactive) widget-put] 9 (#$ . 10896)])
#@59 Ignoring the arguments, signal an error.

(fn &rest JUNK)
(defalias 'widget-overlay-inactive #[128 "?\205\301\302!\207" [inhibit-read-only error "The widget here is not active"] 3 (#$ . 11312)])
#@57 Make WIDGET active for user modifications.

(fn WIDGET)
(defalias 'widget-specify-active #[257 "\300\301\"\211\205\302!\210\303\301\304#\207" [widget-get :inactive delete-overlay widget-put nil] 6 (#$ . 11516)])
#@64 Return the type of WIDGET.  The type is a symbol.

(fn WIDGET)
(defalias 'widget-type #[257 "\211@\207" [] 2 (#$ . 11739)])
(put 'widget-type 'byte-optimizer 'byte-compile-inline-expand)
#@52 Return non-nil if WIDGET is a widget.

(fn WIDGET)
(defalias 'widgetp #[257 "\2119\203	\211\300N\207\211:\205\211@9\205\211@\300N\207" [widget-type] 3 (#$ . 11932)])
#@141 In WIDGET, get the value of PROPERTY.
If the value is a symbol, return its binding.
Otherwise, just return the value.

(fn WIDGET PROPERTY)
(defalias 'widget-get-indirect #[514 "\300\"\2119\203\211J\202\211\207" [widget-get] 5 (#$ . 12110)])
#@80 Non-nil if there is a definition in WIDGET for PROPERTY.

(fn WIDGET PROPERTY)
(defalias 'widget-member #[514 "\300A\"\203\n\301\207@\203\302@\303N\"\207\304\207" [plist-member t widget-member widget-type nil] 5 (#$ . 12364)])
#@51 Extract the current value of WIDGET.

(fn WIDGET)
(defalias 'widget-value #[257 "\300\301\300\302\"#\207" [widget-apply :value-to-external :value-get] 7 (#$ . 12605)])
#@62 Set the current value of WIDGET to VALUE.

(fn WIDGET VALUE)
(defalias 'widget-value-set #[514 "\300\301\300\302##\207" [widget-apply :value-set :value-to-internal] 9 (#$ . 12781)])
#@60 Extract the default external value of WIDGET.

(fn WIDGET)
(defalias 'widget-default-get #[257 "\300\301\302\303\"\206I\302\304\"\203E\305!\262\306\302\304\"\211\203=\211@\307\302\310\"\2031\302\304\"\2023C\"\262A\266\202\202\210\311\304#\266\300\312\"#\207" [widget-apply :value-to-external widget-get :value :args widget-copy nil append :inline widget-put :default-get] 12 (#$ . 12973)])
#@55 In WIDGET, match the start of VALS.

(fn WIDGET VALS)
(defalias 'widget-match-inline #[514 "\300\301\"\203
\302\303#\207\211<\203\"\302\304@#\203\"\211@CAB\207\305\207" [widget-get :inline widget-apply :match-inline :match nil] 6 (#$ . 13392)])
#@76 Apply :action in WIDGET in response to EVENT.

(fn WIDGET &optional EVENT)
(defalias 'widget-apply-action #[513 "\300\301\"\203
\300\302#\207\303\304!\207" [widget-apply :active :action error "Attempt to perform action on inactive widget"] 6 (#$ . 13652)])
#@164 Prompt for a value matching WIDGET, using PROMPT.
The current value is assumed to be VALUE, unless UNBOUND is non-nil.

(fn WIDGET PROMPT &optional VALUE UNBOUND)
(defalias 'widget-prompt-value #[1026 "<\204	C\262\300\301\211@\262#\262\302!\262\303\304%\303\305#\204/\306\307@\"\210\211\207" [format "[%s] %s" widget-convert widget-apply :prompt-value :match error "Value does not match %S type"] 10 (#$ . 13920)])
#@123 Get the item WIDGET is assumed to toggle.
This is only meaningful for radio buttons or checkboxes in a list.

(fn WIDGET)
(defalias 'widget-get-sibling #[257 "\300\211\301\"\302\"\303\3042+\203)@\262A\262\300\305\"=\203\f\306\304\"\210\202\f\3030\207" [widget-get :parent :children nil child :button throw] 6 (#$ . 14361)])
#@275 Map FUNCTION over the buttons in BUFFER.
FUNCTION is called with the arguments WIDGET and MAPARG.

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

The arguments MAPARG, and BUFFER default to nil and (current-buffer),
respectively.

(fn FUNCTION &optional BUFFER MAPARG)
(defalias 'widget-map-buttons #[769 "e\300\203rq\210\301 )\202\301 \302@A\"\262\211A\262\242\211\262\205=\303\304\"\262\203\"\203\300\262\202\207" [nil overlay-lists append overlay-get button] 9 (#$ . 14705)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\315\316\306\307\310\317&	\210\300\320\302\303\321DD\322\306\307\310\323&\207" [custom-declare-variable widget-image-directory funcall function #[0 "\301\302\303\"!\207" [data-directory file-name-as-directory expand-file-name "images/custom"] 4] "Where widget button images are located.\nIf this variable is nil, widget will try to locate the directory\nautomatically." :group widgets :type directory widget-image-enable #[0 "\300\207" [t] 1] "If non-nil, use image buttons in widgets when available." :version "21.1" boolean widget-image-conversion #[0 "\300\207" [((xpm ".xpm") (gif ".gif") (png ".png") (jpeg ".jpg" ".jpeg") (xbm ".xbm"))] 1] "Conversion alist from image formats to file name suffixes." (repeat (cons :format "%v" (symbol :tag "Image Format" unknown) (repeat :tag "Suffixes" (string :format "%v"))))] 10)
#@236 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.

(fn IMAGE)
(defalias 'widget-image-find #[257 "\211\203
\203
\304 \204\305\207\211:\203\211@\306=\203\207\211;\203X	\nB\305\211\203Q\211@\211A\211\203I\211@\307@\310PFB\262A\266\202\202/\210A\266\202\202'\210\311\237!)\207\305\207" [widget-image-enable widget-image-directory load-path widget-image-conversion display-graphic-p nil image :type :file find-image] 11 (#$ . 16135)])
#@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 (#$ . 16771))
#@387 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.

(fn WIDGET TAG IMAGE &optional DOWN INACTIVE)
(defalias 'widget-image-insert #[1283 "\300\301!\203\302!\211\262\203\303\304\305#\210\306\"\207c\207" [featurep image widget-image-find widget-put :suppress-face t insert-image] 9 (#$ . 16963)])
#@79 Move to where you click, and if it is an active field, invoke it.

(fn EVENT)
(defalias 'widget-move-and-invoke #[257 "\300!\210\301!\211\205\302\303\"\205\304!\207" [mouse-set-point widget-event-point get-char-property button widget-button-click] 5 (#$ . 17561) "e"])
(byte-code "\300\301\302\303\304\305%\210\306\307\310\311\312DD\313\314\315\304\301&\210\306\316\310\311\317DD\320\314\315\304\301&\207" [custom-declare-group widget-button nil "The look of various kinds of buttons." :group widgets custom-declare-variable widget-button-prefix funcall function #[0 "\300\207" [#1=""] 1 #1#] "String used as prefix for buttons." :type string widget-button-suffix #[0 "\300\207" [#1#] 1 #1#] "String used as suffix for buttons."] 8)
#@98 Create widget of TYPE.
The optional ARGS are additional keyword arguments.

(fn TYPE &rest ARGS)
(defalias 'widget-create #[385 "\300\301#\302\303\"\210\211\207" [apply widget-convert widget-apply :create] 6 (#$ . 18310)])
#@146 As part of the widget PARENT, create a child widget TYPE.
The child is converted, using the keyword arguments ARGS.

(fn PARENT TYPE &rest ARGS)
(defalias 'widget-create-child-and-convert #[642 "\300\301#\302\303#\210\304\305\"\2041\302\305\306\304\305\"\206 \307\304\310\"\206)\307\304\n\311\"##\210\312\313\"\210\211\207" [apply widget-convert widget-put :parent widget-get :indent + 0 :extra-offset :offset widget-apply :create] 13 (#$ . 18543)])
#@42 Create widget of TYPE.

(fn PARENT TYPE)
(defalias 'widget-create-child #[514 "\300!\301\302#\210\303\304\"\204.\301\304\305\303\304\"\206\306\303\307\"\206&\306\303	\310\"##\210\311\312\"\210\211\207" [widget-copy widget-put :parent widget-get :indent + 0 :extra-offset :offset widget-apply :create] 12 (#$ . 19015)])
#@65 Create widget of TYPE with value VALUE.

(fn PARENT TYPE VALUE)
(defalias 'widget-create-child-value #[771 "\300!\301\302\303\304##\210\301\305#\210\306\307\"\204:\301\307\310\306\307\"\206)\311\306\312\"\2062\311\306\n\313\"##\210\303\314\"\210\211\207" [widget-copy widget-put :value widget-apply :value-to-internal :parent widget-get :indent + 0 :extra-offset :offset :create] 13 (#$ . 19355)])
#@29 Delete WIDGET.

(fn WIDGET)
(defalias 'widget-delete #[257 "\300\301\"\207" [widget-apply :delete] 4 (#$ . 19778)])
#@42 Make a deep copy of WIDGET.

(fn WIDGET)
(defalias 'widget-copy #[257 "\300\301!\302\"\207" [widget-apply copy-sequence :copy] 4 (#$ . 19901)])
#@136 Convert TYPE to a widget without inserting it in the buffer.
The optional ARGS are additional keyword arguments.

(fn TYPE &rest ARGS)
(defalias 'widget-convert #[385 "9\203\nC\202
\300!\211\301A\203F\302A@!\2039AA\2039A@\303=\2031\301\262\202AA\262\202\303AD\241\210\301\262\202\203u\204u@\303=\203`A@\262\304\262\202F\302@!\203oAA\262\202F\304\262\202F\203\200\305\303#\210\262\203\240\306A\307\"\211\203\226\211!\262\210@\310N\262\202\203\211\203\303\211@\302!\203\274\305A@#\210AA\262\202\277\301\262\210\202\240\311\312\"\203\331\305\312\313\314\315\n\312\"##\210\207" [copy-sequence nil keywordp :args t widget-put plist-get :convert-widget widget-type widget-member :value widget-apply :value-to-internal widget-get] 15 (#$ . 20053)])
#@81 Call `insert' with ARGS even if surrounding text is read only.

(fn &rest ARGS)
(defalias 'widget-insert #[128 "\302\211\303\304\"*\207" [inhibit-modification-hooks inhibit-read-only t apply insert] 4 (#$ . 20879)])
#@397 Return a widget of type TYPE with endpoint FROM TO.
No text will be inserted to the buffer, instead the text between FROM
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.

(fn TYPE FROM TO &optional BUTTON-FROM BUTTON-TO &rest ARGS)
(defalias 'widget-convert-text #[1411 "\300\301\302\303%\304!\304!\305\306\"\210\305\307\"\210\310\311#\210\310\312#\210\2032\313#\210\207" [apply widget-convert :delete widget-leave-text copy-marker set-marker-insertion-type t nil widget-put :from :to widget-specify-button] 13 (#$ . 21105)])
#@294 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.

(fn TYPE FROM TO &rest ARGS)
(defalias 'widget-convert-button #[899 "\300\301&\207" [apply widget-convert-text] 12 (#$ . 21823)])
#@72 Remove markers and overlays from WIDGET and its children.

(fn WIDGET)
(defalias 'widget-leave-text #[257 "\300\301\"\300\302\"\300\303\"\300\304\"\300\305\"\306\211\223\210\300\307\"\306\211\223\210\203(\310!\210\2030\310!\210\2038\310!\210\211\203@\310!\210\311\312\300\313\"\"\207" [widget-get :button-overlay :sample-overlay :doc-overlay :field-overlay :from nil :to delete-overlay mapc widget-leave-text :children] 10 (#$ . 22233)])
#@57 Get the text representation of the widget.

(fn WIDGET)
(defalias 'widget-text #[257 "\300\301\"\211\205\f\300\302\"\211\205\303!\303!=\205\304\"\207" [widget-get :from :to marker-buffer buffer-substring-no-properties] 6 (#$ . 22696)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias advertised-widget-backward widget-backward nil make-obsolete "23.2"] 4)
#@174 Keymap containing useful binding for buffers containing widgets.
Recommended as a parent keymap for modes using widgets.
Note that such modes will need to require wid-edit.
(defvar widget-keymap (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\305#\210\307\305\310\311#\210\301\312\305#\210\301\313\314#\210\301\315\314#\210\301\316\317#\210\211\207" [make-sparse-keymap define-key "	" widget-forward "	" widget-backward [(shift tab)] put :advertised-binding [(shift tab)] [backtab] [down-mouse-2] widget-button-click [down-mouse-1] [(control 109)] widget-button-press] 5) (#$ . 23088))
#@57 Keymap used for events a widget does not handle itself.
(defvar widget-global-map global-map (#$ . 23700))
(make-variable-buffer-local 'widget-global-map)
#@39 Keymap used inside an editable field.
(defvar widget-field-keymap (byte-code "\301!\302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\312#\210\211\207" [widget-keymap copy-keymap define-key "" widget-kill-line "\211" widget-complete "
" widget-field-activate "" widget-end-of-line] 5) (#$ . 23861))
#@34 Keymap used inside a text field.
(defvar widget-text-keymap (byte-code "\301!\302\303\304#\210\211\207" [widget-keymap copy-keymap define-key "" widget-end-of-line] 5) (#$ . 24182))
#@63 Invoke the editable field at point.

(fn POS &optional EVENT)
(defalias 'widget-field-activate #[513 "\301!\211\203\302\"\202\303\304\305 \"!\207" [widget-global-map widget-field-at widget-apply-action call-interactively lookup-key this-command-keys] 7 (#$ . 24373) "@d"])
(custom-declare-face 'widget-button-pressed '((((min-colors 88) (class color)) (:foreground "red1")) (((class color)) (:foreground "red")) (t (:weight bold :underline t))) "Face used for pressed buttons." :group 'widget-faces)
#@150 If non-nil, `widget-button-click' moves point to a button after invoking it.
If nil, point returns to its original position after invoking a button.
(defvar widget-button-click-moves-point nil (#$ . 24888))
#@62 Invoke the button that the mouse is pointing at.

(fn EVENT)
(defalias 'widget-button-click #[257 "\305!\203\223\211\306!\307>\305!\310!\311\312\313\211@\262!\205&\314\211@\262!#\315\203A\3162>\317 r\320\321\322\323\324!\325\"\326$\216\327\310	!\211@\262!\210\212\330\310	!!b\210\331\332\"\331\333\"\206_\334\335\"\334\336\"\320\321\337\323\324#\340\"\341$\216\212\203\211\342\335#\210\342\336#\210\343\344#\204
\345\346\f!\204\f\347 \262\f	\203\276\211\242\350=\262\203\276\nB\n\262\f\351\316\345\"\210\250\204\225@\352>\204\225@\353=\204\225\305\f!\262	\203\375\311	\312\"=\203\375\203\225\342\335#\210\342\336#\210\202\225\342\335#\210\342\336#\210\202\225)\203/\311	\312\"=\203/b\210\354
\"\210\203/`\262*\266)\203:b\210*\210\3150\205\222\345\315\203a\355\f\356\"\211\262\203X\315\262\202w\355\f\357\"\262\202w\355\f\360\"\211\262\203q\315\262\202w\355\f\361\"\262\203\211\346	!\204\211\347 \262	\202{\211\205\220\362!\266\202\207\363\364!\207" [widget-button-pressed-face track-mouse unread-command-events widget-button-click-moves-point widget-global-map widget-event-point event-basic-type (mouse-1 down-mouse-1) event-start get-char-property button windowp window-buffer nil button-press-cancelled internal--before-save-selected-window make-byte-code 0 "\301\300!\207" vconcat vector [internal--after-save-selected-window] 2 select-window posn-point widget-get :button-overlay :pressed-face overlay-get face mouse-face "\303\300\304\301#\210\303\300\305\302#\207" [overlay-put face mouse-face] 4 overlay-put widget-apply :mouse-down-action t widget-button-release-event-p read-event mouse-movement throw (switch-frame select-window) scroll-bar-movement widget-apply-action lookup-key [down-mouse-1] [mouse-1] [down-mouse-2] [mouse-2] call-interactively message "You clicked somewhere weird."] 20 (#$ . 25101) "e"])
#@49 Invoke button at POS.

(fn POS &optional EVENT)
(defalias 'widget-button-press #[513 "\301\302\"\211\203\303\"\202\304\305 \"\306!\205\307!\262\207" [widget-global-map get-char-property button widget-apply-action lookup-key this-command-keys commandp call-interactively] 6 (#$ . 27054) "@d"])
#@101 Return the tabable widget at POS, or nil.
POS defaults to the value of (point).

(fn &optional POS)
(defalias 'widget-tabable-at #[256 "\300!\211\205\301\302\"\211\203\211\303Y\205\202\262\207" [widget-at widget-get :tab-order 0] 5 (#$ . 27367)])
#@92 If non-nil, use overlay change functions to tab around in the buffer.
This is much faster.
(defvar widget-use-overlay-change t (#$ . 27633))
#@198 Move point to the ARG next field or button.
ARG may be negative to move backward.
When the second optional argument is non-nil,
nothing is shown in the echo area.

(fn ARG &optional SUPPRESS-ECHO)
(defalias 'widget-move #[513 "o\204
\301V\204
\302u\210\301\303 \301V\203[m\203%eb\210T\262\2024\2031\304`!b\210\2024\305u\210\306U\203D=\203D\307\310!\210\303 \211\203W\211=\204WS\262\211\262\210\202\301W\203\242o\203odb\210T\262\202~\203{\311`!b\210\202~\302u\210\306U\203\216=\203\216\307\310!\210\303 \211\203\236\211=\204\236T\262\210\202[\303 \303 =\203\261\302u\210\202\244\210\312u\266\211\204\276\313`!\210\314\315!\207" [widget-use-overlay-change 0 -1 widget-tabable-at next-overlay-change 1 2 error "No buttons or fields found" previous-overlay-change nil widget-echo-help run-hooks widget-move-hook] 8 (#$ . 27781)])
#@100 Move point to the next field or button.
With optional ARG, move across that many fields.

(fn ARG)
(defalias 'widget-forward #[257 "\300\301!\210\302!\207" [run-hooks widget-forward-hook widget-move] 3 (#$ . 28665) "p"])
#@104 Move point to the previous field or button.
With optional ARG, move across that many fields.

(fn ARG)
(defalias 'widget-backward #[257 "\300\301!\210\302[!\207" [run-hooks widget-backward-hook widget-move] 3 (#$ . 28894) "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 #[0 "\300\210l?\205\301\302`S!x\207" [nil " " field-beginning] 3 (#$ . 29186) nil])
#@58 Kill to end of field or end of line, whichever is first.
(defalias 'widget-kill-line #[0 "\300`!\211\205\n\301!\203\302\303!V\203\304`\"\202 \305\306!\207" [widget-field-find widget-field-end line-beginning-position 2 kill-region call-interactively kill-line] 5 (#$ . 29446) nil])
#@18 Narrow to field.
(defalias 'widget-narrow-to-field #[0 "\300`!\211\205\f\301 \302 }\207" [widget-field-find line-beginning-position line-end-position] 3 (#$ . 29743) nil])
#@90 Complete content of editable field from point.
When not inside a field, signal an error.
(defalias 'widget-complete #[0 "\301 \302!\203
\211 \202+\211:\203(\3038\304@A@\3058\306\307\"$)\202+\310\311!\207" [completion-extra-properties widget-completions-at-point functionp 3 completion-in-region 2 plist-get :predicate error "No completions available for this field"] 8 (#$ . 29922) nil])
(defalias 'widget-completions-at-point #[0 "\300`!\211\203\301\302\"\202\303\304!\207" [widget-field-find widget-apply :completions-function error "Not in an editable field"] 4])
#@58 List of all newly created editable fields in the buffer.
(defvar widget-field-new nil (#$ . 30511))
(make-variable-buffer-local 'widget-field-new)
#@44 List of all editable fields in the buffer.
(defvar widget-field-list nil (#$ . 30664))
(make-variable-buffer-local 'widget-field-list)
#@66 The button or field at POS (default, point).

(fn &optional POS)
(defalias 'widget-at #[256 "\300\206`\301\"\206\302!\303!\205\211\207" [get-char-property button widget-field-at widgetp] 4 (#$ . 30805)])
#@55 Setup current buffer so editing string widgets works.
(defalias 'widget-setup #[0 "\304\211\305\n\2038\n@\262\nA\211B\306\307\"@\306\307\"A\310\311!\311!#\210\305\211\223\210\211\305\211\223\266\202*\266\312 \210\313 \207" [inhibit-modification-hooks inhibit-read-only widget-field-new widget-field-list t nil widget-get :field-overlay widget-specify-field marker-position widget-clear-undo widget-add-change] 10 (#$ . 31024)])
(defvar widget-field-last nil)
(make-variable-buffer-local 'widget-field-last)
(defvar widget-field-was nil)
(make-variable-buffer-local 'widget-field-was)
#@59 Return the widget field at POS, or nil if none.

(fn POS)
(defalias 'widget-field-at #[257 "\300\206`\301\"\211\302=\203\300\206`\303\"\202\211\207" [get-char-property field boundary real-field] 5 (#$ . 31633)])
#@59 Return the buffer of WIDGET's editing field.

(fn WIDGET)
(defalias 'widget-field-buffer #[257 "\300\301\"\302!\203\303!\202\211:\205\304@!\207" [widget-get :field-overlay overlayp overlay-buffer marker-buffer] 4 (#$ . 31861)])
#@58 Return the start of WIDGET's editing field.

(fn WIDGET)
(defalias 'widget-field-start #[257 "\300\301\"\302!\203\303!\202\211@\207" [widget-get :field-overlay overlayp overlay-start] 4 (#$ . 32105)])
#@56 Return the end of WIDGET's editing field.

(fn WIDGET)
(defalias 'widget-field-end #[257 "\301\302\"\303!\203=\304!\205?r\305!q\210\214~\210\306\307!\310\"*\311=\2047\2040\301\312\"\2047\307!S\202?\307!\202?\211A\207" [widget-field-add-space widget-get :field-overlay overlayp overlay-buffer widget-field-buffer get-char-property overlay-end field boundary :size] 5 (#$ . 32319)])
#@15 

(fn WIDGET)
(defalias 'widget-field-text-end #[257 "\300!\301\302\"\211\203\211\303U\203\202?\304!\211\205=\205=r\305!q\210V\203;Sf\306=\203;S\262\202&)\262\207" [widget-field-end widget-get :size 0 widget-field-start widget-field-buffer 32] 6 (#$ . 32722)])
#@111 Return the field at POS.
Unlike (get-char-property POS \='field), this works with empty fields too.

(fn POS)
(defalias 'widget-field-find #[257 "\301\211\203-@\262A\262\302!X\203\303!X\203\211\203'\304\305!\210\262\202\207" [widget-field-list nil widget-field-start widget-field-end error "Overlapping fields"] 7 (#$ . 33013)])
#@16 

(fn FROM TO)
(defalias 'widget-before-change #[514 "?\205<\302!\302!=\204\303\304\305\306\307$\210\310\311\312\"\202:\2041\303\304\305\306\307$\210\310\311\313\"\202:	\205:\314\315#\266\202\207" [inhibit-read-only 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] 9 (#$ . 33368)])
(defalias 'widget-add-change #[0 "\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] 5])
#@58 Adjust field size and text properties.

(fn FROM TO OLD)
(defalias 'widget-after-change #[771 "\300!\300!\205\200=\204\301\302!\210\303\304\"\211\203v\305!\306!\211ZW\203;\212\211b\210\307\310\\Z\"\210)\202t\211ZV\203t`\\W\204Q`V\203Y\\\262\202\\`\262\212\211b\210h\310=\203s`V\203s\311\312!\210\202`)\266\313!\266\314\315#\207" [widget-field-find error "Change in different fields" widget-get :size widget-field-start widget-field-end insert-char 32 delete-char -1 widget-specify-secret widget-apply :notify] 12 (#$ . 34130)])
#@131 Tell :parent of WIDGET to handle the :action.
Optional EVENT is the event that triggered the action.

(fn WIDGET &optional EVENT)
(defalias 'widget-parent-action #[513 "\300\301\302\"\303#\207" [widget-apply widget-get :parent :action] 6 (#$ . 34706)])
#@59 Delete all :children and :buttons in WIDGET.

(fn WIDGET)
(defalias 'widget-children-value-delete #[257 "\300\301\302\303\"\"\210\304\303\305#\210\300\301\302\306\"\"\210\304\306\305#\207" [mapc widget-delete widget-get :children widget-put nil :buttons] 6 (#$ . 34967)])
#@47 All the :children must be valid.

(fn WIDGET)
(defalias 'widget-children-validate #[257 "\300\301\"\302\211\203\211\204@\262A\262\303\304\"\262\202\207" [widget-get :children nil widget-apply :validate] 7 (#$ . 35249)])
#@72 Get the value of the first member of :children in WIDGET.

(fn WIDGET)
(defalias 'widget-child-value-get #[257 "\300\301\302\"@!\207" [widget-value widget-get :children] 5 (#$ . 35489)])
#@79 Get the inline value of the first member of :children in WIDGET.

(fn WIDGET)
(defalias 'widget-child-value-inline #[257 "\300\301\302\"@\303\"\207" [widget-apply widget-get :children :value-inline] 5 (#$ . 35683)])
#@80 The result of validating the first member of :children in WIDGET.

(fn WIDGET)
(defalias 'widget-child-validate #[257 "\300\301\302\"@\303\"\207" [widget-apply widget-get :children :validate] 5 (#$ . 35906)])
#@213 Convert and instantiate the value of the :type attribute of WIDGET.
Store the newly created widget in the :children attribute.

The value of the :type attribute should be an unconverted widget type.

(fn WIDGET)
(defalias 'widget-type-value-create #[257 "\300\301\"\300\302\"\303\304\305\306!#C#\207" [widget-get :value :type widget-put :children widget-create-child-value widget-convert] 10 (#$ . 36123)])
#@140 Get default value from the :type attribute of WIDGET.

The value of the :type attribute should be an unconverted widget type.

(fn WIDGET)
(defalias 'widget-type-default-get #[257 "\300\301\302\303\"!!\207" [widget-default-get widget-convert widget-get :type] 6 (#$ . 36546)])
#@144 Non-nil if the :type value of WIDGET matches VALUE.

The value of the :type attribute should be an unconverted widget type.

(fn WIDGET VALUE)
(defalias 'widget-type-match #[514 "\300\301\302\303\"!\304#\207" [widget-apply widget-convert widget-get :type :match] 7 (#$ . 36831)])
#@52 Copy :args as widget types in WIDGET.

(fn WIDGET)
(defalias 'widget-types-copy #[257 "\300\301\302\303\304\301\"\"#\210\207" [widget-put :args mapcar widget-copy widget-get] 9 (#$ . 37119)])
#@55 Convert :args as widget types in WIDGET.

(fn WIDGET)
(defalias 'widget-types-convert-widget #[257 "\300\301\302\303\304\301\"\"#\210\207" [widget-put :args mapcar widget-convert widget-get] 9 (#$ . 37320)])
(put 'widget-types-convert-widget 'byte-optimizer 'byte-compile-inline-expand)
#@54 Initialize :value from :args in WIDGET.

(fn WIDGET)
(defalias 'widget-value-convert-widget #[257 "\300\301\"\211\203\302\303@#\210\302\301\304#\210\210\207" [widget-get :args widget-put :value nil] 6 (#$ . 37616)])
#@52 Return the :value property of WIDGET.

(fn WIDGET)
(defalias 'widget-value-value-get #[257 "\300\301\"\207" [widget-get :value] 4 (#$ . 37844)])
(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\344\352\353\354\355\356\357\360\344\361\362\363\364\365\366&9\207" [define-widget default nil "Basic widget other widgets are derived from." :value-to-internal #[514 "\207" #1=[] 3 "\n\n(fn WIDGET VALUE)"] :value-to-external #[514 "\207" #1# 3 "\n\n(fn WIDGET VALUE)"] :button-prefix widget-button-prefix :button-suffix widget-button-suffix :completions-function widget-default-completions :create widget-default-create :indent :offset 0 :format-handler widget-default-format-handler :button-face-get widget-default-button-face-get :mouse-face-get widget-default-mouse-face-get :sample-face-get widget-default-sample-face-get :delete widget-default-delete :copy identity :value-set widget-default-value-set :value-inline widget-default-value-inline :value-delete ignore :default-get widget-default-default-get :menu-tag-get widget-default-menu-tag-get :validate :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] 58)
#@82 Return completion data, like `completion-at-point-functions' would.

(fn WIDGET)
(defalias 'widget-default-completions #[257 "\300\301\"\211\203\302!`\303!]E\202>\300\304\"\203+\305\306\307\310\311!\312\"\313$\202>\300\314\"\205>\305\306\315\310\311!\316\"\317$\207" [widget-get :completions widget-field-start widget-field-text-end :complete make-byte-code 0 "\301\300\302\"\207" vconcat vector [widget-apply :complete] 3 :complete-function "\300\302\303\300\304\"!)\207" [widget--completing-widget call-interactively widget-get :complete-function] 4] 8 (#$ . 39269)])
#@60 Create WIDGET at point in the current buffer.

(fn WIDGET)
(defalias 'widget-default-create #[257 "\214\302\211``}\210`\303\211\211\211\211\211\211\304	\305\"c\210b\210\306\307\303\302#\203\376\310\224f\311\312!\210\211\313\267\202\363\314c\210\202\372`\262\315\n\316\"c\210\202\372\315\n\317\"c\210`\262\202\372`\262\202\372`\262\202\372\304\n\320\"\203\372\321c\210\322\323\304\f\320\"\"\210\202\372\304\n\324\"\325\304\f\326\"!\203\222\327\f\206\214\330#\210\202\245\211\203\234\211c\210\202\245\331\304
\332\"p\"\210\266\202\372\304\n\333\"\211\203\316`\262\325!c\210h\321=\203\310\311\334!\210\202\273\321c\210`\262\210\202\372\335\n!\210\202\372\203\355\204\355\336\n\337\"\210\202\372`\262\202\372\336\n\340#\210\210\202\203\203\341	#\210\203!\203!\342	#\210\2030\2030\343	#\210\211\203=\211b\210\336	\337\"\210\266\344 \345 \346\302\"\210\346\303\"\210\347\350#\210\347\351#\266db\210+\352 \207" [inhibit-modification-hooks inhibit-read-only t nil widget-get :format re-search-forward "%\\(.\\)" 1 delete-char -2 #s(hash-table size 10 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (37 49 91 55 93 68 123 81 125 87 110 93 116 116 100 170 104 210 118 218)) 37 widget-get-indirect :button-prefix :button-suffix :indent 10 insert-char 32 :tag-glyph substitute-command-keys :tag widget-image-insert "image" princ :value :doc -1 widget-add-documentation-string-button 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] 16 (#$ . 39862)])
#@22 

(fn WIDGET ESCAPE)
(defalias 'widget-default-format-handler #[514 "\300\301\"\207" [error "Unknown escape `%c'"] 5 (#$ . 41578)])
#@15 

(fn WIDGET)
(defalias 'widget-default-button-face-get #[257 "\301\302\"\206\301\303\"\211\203\304\305\"\202\262\207" [widget-button-face widget-get :button-face :parent widget-apply :button-face-get] 5 (#$ . 41717)])
#@15 

(fn WIDGET)
(defalias 'widget-default-mouse-face-get #[257 "\301\302\"\206\301\303\"\211\203\304\305\"\202\262\207" [widget-mouse-face widget-get :mouse-face :parent widget-apply :mouse-face-get] 5 (#$ . 41953)])
#@15 

(fn WIDGET)
(defalias 'widget-default-sample-face-get #[257 "\300\301\"\207" [widget-get :sample-face] 4 (#$ . 42185)])
#@45 Remove widget from the buffer.

(fn WIDGET)
(defalias 'widget-default-delete #[257 "\302\303\"\302\304\"\302\305\"\302\306\"\302\307\"\302\310\"\311\211\312\313\"\210\314!\210\2030\315!\210\2038\315!\210\203@\315!\210\211\203H\315!\210W\203R|\210\316\211\223\210\316\211\223\210*\266\317 \207" [inhibit-read-only inhibit-modification-hooks widget-get :from :to :inactive :button-overlay :sample-overlay :doc-overlay t widget-apply :value-delete widget-children-value-delete delete-overlay nil widget-clear-undo] 10 (#$ . 42314)])
#@52 Recreate widget with new value.

(fn WIDGET VALUE)
(defalias 'widget-default-value-set #[514 "`\300\301\302\"!\300\301\303\"!X\205+X\205+SY\203(\304\305#\202+Z\212\301\302\"b\210\306\307\"\210\310\311#\210\306\312\"\210)\211\205j\211\313W\203_\314\301\303\"\305#b\202j\\\301\303\"S^b\207" [copy-marker widget-get :from :to - 1 widget-apply :delete widget-put :value :create 0 +] 10 (#$ . 42882)])
#@56 Wrap value in a list unless it is inline.

(fn WIDGET)
(defalias 'widget-default-value-inline #[257 "\300\301\"\203\302!\207\302!C\207" [widget-get :inline widget-value] 4 (#$ . 43321)])
#@28 Get `:value'.

(fn WIDGET)
(defalias 'widget-default-default-get #[257 "\300\301\"\207" [widget-get :value] 4 (#$ . 43519)])
#@42 Use tag or value for menus.

(fn WIDGET)
(defalias 'widget-default-menu-tag-get #[257 "\300\301\"\206\300\302\"\206\303\300\304\"!\207" [widget-get :menu-tag :tag widget-princ-to-string :value] 5 (#$ . 43651)])
#@67 Return t if this widget is active (user modifiable).

(fn WIDGET)
(defalias 'widget-default-active #[257 "\300\301\"\206\"\300\302\"?\205\"\300\303\"\211?\206\304\305\"\262\205\"\306\207" [widget-get :always-active :inactive :parent widget-apply :active t] 5 (#$ . 43875)])
#@59 Make WIDGET inactive for user modifications.

(fn WIDGET)
(defalias 'widget-default-deactivate #[257 "\300\301\302\"\301\303\"#\207" [widget-specify-inactive widget-get :from :to] 7 (#$ . 44165)])
#@71 Notify the parent when a widget changes.

(fn WIDGET &optional EVENT)
(defalias 'widget-default-action #[513 "\300\301\"\211\205\302\303$\207" [widget-get :parent widget-apply :notify] 8 (#$ . 44371)])
#@65 Pass notification to parent.

(fn WIDGET CHILD &optional EVENT)
(defalias 'widget-default-notify #[770 "\300\"\207" [widget-default-action] 6 (#$ . 44585)])
#@60 Read an arbitrary value.

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-default-prompt-value #[1028 "\300!\207" [eval-minibuffer] 6 (#$ . 44750)])
#@397 Return the documentation string specified by WIDGET, or nil if none.
If WIDGET has a `:doc' property, that specifies the documentation string.
Otherwise, try the `:documentation-property' property.  If this
is a function, call it with the widget's value as an argument; if
it is a symbol, use this symbol together with the widget's value
as the argument to `documentation-property'.

(fn WIDGET)
(defalias 'widget-docstring #[257 "\300\301\"\206'\300\302\"\300\303\"\304!\203!\202%9\205%\305\306#\266\202\211;\205Q\211G\307V\205Q\211\307H\310=\203A\311\312\"\262\313\314\"\203P\311\307\211\224#\262\211\207" [widget-get :doc :documentation-property :value functionp documentation-property t 0 42 substring 1 string-match "\n+\\'"] 7 (#$ . 44910)])
(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")
#@62 Insert the printed representation of the value.

(fn WIDGET)
(defalias 'widget-item-value-create #[257 "\300\301\302\"p\"\207" [princ widget-get :value] 5 (#$ . 46018)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-item-match #[514 "\300\301\"\232\207" [widget-get :value] 5 (#$ . 46195)])
#@20 

(fn WIDGET VALS)
(defalias 'widget-item-match-inline #[514 "\300\301\"\211<\205&\211GGX\205&\302\303G#\211\232\205$\211\302G\"B\262\207" [widget-get :value widget-sublist 0] 8 (#$ . 46316)])
#@132 Return the sublist of LIST from START to END.
If END is omitted, it defaults to the length of LIST.

(fn LIST START &optional END)
(defalias 'widget-sublist #[770 "\300V\203\233\262\211\203'\211X?\205*\301!\262\302\303#\233\304\241\210\207\301!\207" [0 copy-sequence - 1 nil] 7 (#$ . 46527)])
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-item-action #[513 "\300\301$\207" [widget-apply :notify] 7 (#$ . 46842)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\210\315\316\317\320\321\322\323\322\324\325\326\327&\207" [custom-declare-variable widget-push-button-prefix funcall function #[0 "\300\207" [#1="["] 1 #1#] "String used as prefix for buttons." :type string :group widget-button widget-push-button-suffix #[0 "\300\207" [#2="]"] 1 #2#] "String used as suffix for buttons." define-widget push-button item "A pushable button." :button-prefix "" :button-suffix :value-create widget-push-button-value-create :format "%[%v%]"] 12)
#@66 Insert text representing the `on' and `off' states.

(fn WIDGET)
(defalias 'widget-push-button-value-create #[257 "\302\303\304\"!\206
\303\305\"\303\306\"	Q\203!\307#\202#\211c\207" [widget-push-button-prefix widget-push-button-suffix substitute-command-keys widget-get :tag :value :tag-glyph widget-image-insert] 8 (#$ . 47554)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\207" [custom-declare-variable widget-link-prefix funcall function #[0 "\300\207" [#1="["] 1 #1#] "String used as prefix for links." :type string :group widget-button widget-link-suffix #[0 "\300\207" [#2="]"] 1 #2#] "String used as suffix for links."] 8)
#@35 Keymap used inside a link widget.
(defvar widget-link-keymap (byte-code "\302!\303\304\305	\306\"#\210\303\307\310#\210\303\311\310#\210\211\207" [widget-keymap widget-global-map copy-keymap define-key [down-mouse-1] lookup-key [down-mouse-1] [down-mouse-2] widget-button-click [mouse-2]] 7) (#$ . 48264))
(byte-code "\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317&\210\301\320\302\321\322\323%\207" [widget-link-keymap define-widget link item "An embedded link." :button-prefix widget-link-prefix :button-suffix widget-link-suffix :follow-link mouse-face :keymap :help-echo "Follow the link." :format "%[%t%]" info-link "A link to an info file." :action widget-info-link-action] 16)
#@70 Open the info node specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-info-link-action #[513 "\300\301!!\207" [info widget-value] 5 (#$ . 48974)])
(define-widget 'url-link 'link "A link to a web page." :action 'widget-url-link-action)
#@64 Open the URL specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-url-link-action #[513 "\300\301!!\207" [browse-url widget-value] 5 (#$ . 49233)])
(define-widget 'function-link 'link "A link to an Emacs function." :action 'widget-function-link-action)
#@69 Show the function specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-function-link-action #[513 "\300\301!!\207" [describe-function widget-value] 5 (#$ . 49508)])
(define-widget 'variable-link 'link "A link to an Emacs variable." :action 'widget-variable-link-action)
#@69 Show the variable specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-variable-link-action #[513 "\300\301!!\207" [describe-variable widget-value] 5 (#$ . 49800)])
(define-widget 'file-link 'link "A link to a file." :action 'widget-file-link-action)
#@65 Find the file specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-file-link-action #[513 "\300\301!!\207" [find-file widget-value] 5 (#$ . 50073)])
(define-widget 'emacs-library-link 'link "A link to an Emacs Lisp library file." :action 'widget-emacs-library-link-action)
#@79 Find the Emacs library file specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-emacs-library-link-action #[513 "\300\301\302!!!\207" [find-file locate-library widget-value] 6 (#$ . 50368)])
(define-widget 'emacs-commentary-link 'link "A link to Commentary in an Emacs Lisp library file." :action 'widget-emacs-commentary-link-action)
#@97 Find the Commentary section of the Emacs file specified by WIDGET.

(fn WIDGET &optional EVENT)
(defalias 'widget-emacs-commentary-link-action #[513 "\300\301!!\207" [finder-commentary widget-value] 5 (#$ . 50726)])
(define-widget 'editable-field 'default "An editable text field.\nNote: In an `editable-field' widget, the `%v' escape must be preceded\nby some other text in the `:format' string (if specified)." :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-set 'widget-field-value-set :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 (#$ . 51731))
#@166 Read string for WIDGET prompting with PROMPT.
INITIAL is the initial input and HISTORY is a symbol containing
the earlier input.

(fn WIDGET PROMPT INITIAL HISTORY)
(defalias 'widget-field-prompt-internal #[1028 "\300#\207" [read-string] 8 (#$ . 51820)])
#@56 Prompt for a string.

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-field-prompt-value #[1028 "\300\301\300\302?\205\300\303#\304B\305\f\306\"%#\207" [widget-apply :value-to-external :prompt-internal :value-to-internal 0 widget-get :prompt-history] 15 (#$ . 52084)])
(defvar widget-edit-functions nil)
#@50 Move to next field.

(fn WIDGET &optional EVENT)
(defalias 'widget-field-action #[513 "\300\301!\210\302\303\"\207" [widget-forward 1 run-hook-with-args widget-edit-functions] 5 (#$ . 52411)])
#@60 Valid if the content matches `:valid-regexp'.

(fn WIDGET)
(defalias 'widget-field-validate #[257 "\300\301\302\"\303\304\"\"?\205\211\207" [string-match widget-get :valid-regexp widget-apply :value-get] 6 (#$ . 52611)])
#@64 Set an editable text field WIDGET to VALUE.

(fn WIDGET VALUE)
(defalias 'widget-field-value-set #[514 "\300!\301!\302!\205'\205'\303!\205'r\211q\210b\210\304Z!\210c)\207" [widget-field-start widget-field-text-end widget-field-buffer buffer-live-p delete-char] 8 (#$ . 52842)])
#@45 Create an editable text field.

(fn WIDGET)
(defalias 'widget-field-value-create #[257 "\302\303\"\302\304\"`\305 \305 B\306\307#\210c\210\203*GW\203*\310\311GZ\"\210>\2044	B\211A`\312\223\210\313A\312\"\210\204G\314c\210\211@\312\223\210\313@\315\"\207" [widget-field-list widget-field-new widget-get :size :value make-marker widget-put :field-overlay insert-char 32 nil set-marker-insertion-type 10 t] 9 (#$ . 53139)])
#@72 Remove the widget from the list of active editing fields.

(fn WIDGET)
(defalias 'widget-field-value-delete #[257 "\302\"\302	\"\303\304\"\305!\205\306!\207" [widget-field-list widget-field-new delq widget-get :field-overlay overlayp delete-overlay] 4 (#$ . 53588)])
#@185 Return current text in editing field.
Normally, trailing spaces within the editing field are truncated.
But if NO-TRUNCATE is non-nil, include them.

(fn WIDGET &optional NO-TRUNCATE)
(defalias 'widget-field-value-get #[513 "\300!\203
\301!\202\302!\303!\304\305\"p\203R\203Rq\210\306\"\203I\307\\W\203H\310	\\\311\"I\210\211T\262\202,\210q\210\211\262\202W\304\312\"\207" [widget-field-start widget-field-end widget-field-text-end widget-field-buffer widget-get :secret buffer-substring-no-properties 0 get-char-property secret :value] 14 (#$ . 53872)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-field-match #[514 "\211;\207" [] 3 (#$ . 54468)])
(byte-code "\301\302\303\304\305\306\307&\210\301\310\311\312\313\314\315\316\305\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\351&#\207" [widget-text-keymap define-widget text editable-field "A multiline text area." :format "%{%t%}: %v" :keymap menu-choice default "A menu of options." :convert-widget widget-types-convert-widget :copy widget-types-copy "%[%t%]: %v" :case-fold t :tag "choice" :void (item :format "invalid (%t)\n") :value-create widget-choice-value-create :value-get widget-child-value-get :value-inline widget-child-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)
#@62 Insert the first choice that matches the value.

(fn WIDGET)
(defalias 'widget-choice-value-create #[257 "\300\301\"\300\302\"\300\303\"\304\203-\305\306\307	#C#\210\305\310#\210\305\303\304#\202}\203^@\262A\262\311\312#\203-\305\306\307	#C#\210\305\310#\210\304\262\304\262\202-\211\205}\300\313\"\305\306\314	\301$C#\210\305\310#\262\207" [widget-get :value :args :explicit-choice nil widget-put :children widget-create-child-value :choice widget-apply :match :void widget-create-child-and-convert] 14 (#$ . 55419)])
#@15 

(fn WIDGET)
(defalias 'widget-choice-default-get #[257 "\300\301\302\"@!\207" [widget-default-get widget-get :args] 5 (#$ . 55991)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\207" [custom-declare-variable widget-choice-toggle funcall function #[0 "\300\207" [nil] 1] "If non-nil, a binary choice will just toggle between the values.\nOtherwise, the user will explicitly have to choose between the values\nwhen he invoked the menu." :type boolean :group widgets] 8)
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-choice-mouse-down-action #[513 "\302\303\"\302\304\"\305 \204\306\202AG\307W\203\306\202AGV\203'\306\202AG\307V\2032\310\202A	\203@\211>\203@\306\202A\310\207" [widget-menu-max-size widget-choice-toggle widget-get :args :choice display-popup-menus-p nil 2 t] 6 (#$ . 56480)])
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-choice-action #[513 "\302\303\"\302\304\"\305\306\"\302\307\"\310\211\211\2033\305	\311\"\2043\312	!\305\313#\314\315#\266G\316U\203?\310\202\234G\317U\203M@\202\234	\203uG\320U\203u>\203u@=\203oA@\202\234@\202\234\203\221@\262A\262\305\306\"BB\262\202u\321\262\322\323!\n#\262\203\302\203\255\314	\324#\210\325	\326!\"\210\327 \210\305	\330$\210)\266\331\332\"\207" [completion-ignore-case widget-choice-toggle 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 widget-value-set widget-default-get widget-setup :notify run-hook-with-args widget-edit-functions] 15 (#$ . 56830)])
#@15 

(fn WIDGET)
(defalias 'widget-choice-validate #[257 "\300\301\"\300\302\"=\203
\207\303\300\304\"@\305\"\207" [widget-get :void :choice widget-apply :children :validate] 5 (#$ . 57667)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-choice-match #[514 "\300\301\"\302\211\203!\211\204!@\262A\262\303\304#\262\202\207" [widget-get :args nil widget-apply :match] 9 (#$ . 57866)])
#@20 

(fn WIDGET VALS)
(defalias 'widget-choice-match-inline #[514 "\300\301\"\302\211\203\211\204@\262A\262\303\"\262\202\207" [widget-get :args nil widget-match-inline] 8 (#$ . 58069)])
(define-widget 'toggle 'item "Toggle between two states." :format "%[%v%]\n" :value-create 'widget-toggle-value-create :action 'widget-toggle-action :match #[514 "\300\207" [t] 3 "\n\n(fn WIDGET VALUE)"] :on "on" :off "off")
#@66 Insert text representing the `on' and `off' states.

(fn WIDGET)
(defalias 'widget-toggle-value-create #[257 "\300!\301\302\203\303\202\304\"!\305\302\203\306\202\307\"!\310\206&\311\205.\312\313\"#\207" [widget-value substitute-command-keys widget-get :on :off widget-image-find :on-glyph :off-glyph widget-image-insert "" append (:ascent center)] 10 (#$ . 58499)])
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-toggle-action #[513 "\300\301!?\"\210\302\303$\210\304\305\"\207" [widget-value-set widget-value widget-apply :notify run-hook-with-args widget-edit-functions] 7 (#$ . 58891)])
(define-widget 'checkbox 'toggle "A checkbox toggle." :button-suffix "" :button-prefix "" :format "%[%v%]" :on "[X]" :on-glyph "checked" :off "[ ]" :off-glyph "unchecked" :help-echo "Toggle this item." :action 'widget-checkbox-action)
#@95 Toggle checkbox, notify parent, and set active state of sibling.

(fn WIDGET &optional EVENT)
(defalias 'widget-checkbox-action #[513 "\300\"\210\301!\211\205!\302!\203\303\304\"\210\202\303\305\"\210\306 \207" [widget-toggle-action widget-get-sibling widget-value widget-apply :activate :deactivate widget-clear-undo] 6 (#$ . 59363)])
(define-widget 'checklist 'default "A multiple choice widget." :convert-widget 'widget-types-convert-widget :copy 'widget-types-copy :format "%v" :offset 4 :entry-format "%b %v" :greedy nil :value-create 'widget-checklist-value-create :value-get 'widget-checklist-value-get :validate 'widget-checklist-validate :match 'widget-checklist-match :match-inline 'widget-checklist-match-inline)
#@15 

(fn WIDGET)
(defalias 'widget-checklist-value-create #[257 "\300!\301\302\"\211\211\203\211@\303\211\236#\210A\266\202\202\210\304\305\301\305\"\237#\207" [widget-checklist-match-find widget-get :args widget-checklist-add-item widget-put :children] 10 (#$ . 60104)])
#@137 Create checklist item in WIDGET of type TYPE.
If the item is checked, CHOSEN is a cons whose cdr is the value.

(fn WIDGET TYPE CHOSEN)
(defalias 'widget-checklist-add-item #[771 "\302 \203\303\304\"\203\305\306\303\304\"\"\210\214\307\211``}\210\303\310\"\303\311\"\303\312\"\2060\303\313\"`\314\211\303	\315\"c\210b\210\316\317\314\307#\203\255\320\224f\321\322!\210\211\323\267\202\244\324c\210\202\251\325\326\327\330\f??\n&\262\202\251\204\201\331\n\n\"\332\333\"\210\211\262\202\237\303	\334\"\203\225\335\n\n\nA#\202\237\335\n\n\nA@#\262\202\251\336\337\"\210\210\202=\211\203\273\203\273\340\341#\210\211\203\311\340	\311B#\210\205\326\340	\310	B#\266\206db\210+\207" [inhibit-modification-hooks inhibit-read-only widget--should-indent-p widget-get :indent insert-char 32 t :children :buttons :sibling-args :button-args nil :entry-format re-search-forward "%\\([bv%]\\)" 1 delete-char -2 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (37 82 98 88 118 107)) 37 apply widget-create-child-and-convert checkbox :value widget-create-child widget-apply :deactivate :inline widget-create-child-value error "Unknown escape `%c'" widget-put :button] 17 (#$ . 60394)])
#@20 

(fn WIDGET VALS)
(defalias 'widget-checklist-match #[514 "\211<\205\300\"A?\207" [widget-checklist-match-inline] 5 (#$ . 61667)])
#@20 

(fn WIDGET VALS)
(defalias 'widget-checklist-match-inline #[514 "\300\301\"\302\300\303\"!\304\211\203V\305\"\211\2034\306\"\307@\"\262\211A\262\310\"\262\210\202R\203H\307@C\"\262A\262\202R\307\"\262\304\262\210\202\fB\207" [widget-get :greedy copy-sequence :args nil widget-checklist-match-up widget-match-inline append delq] 11 (#$ . 61809)])
#@113 Find the vals which match a type in the checklist.
Return an alist of (TYPE MATCH).

(fn WIDGET &optional VALS)
(defalias 'widget-checklist-match-find #[513 "\211\204\n\300\301\"\262\300\302\"\303\300\304\"!\305\203N\306\"\211\203<\307\"@BB\262\211A\262\310\"\262\210\202J\203GA\262\202J\305\262\210\202\207" [widget-get :value :greedy copy-sequence :args nil widget-checklist-match-up widget-match-inline delq] 10 (#$ . 62201)])
#@68 Return the first type from ARGS that matches VALS.

(fn ARGS VALS)
(defalias 'widget-checklist-match-up #[514 "\300\211\203\211\204@\262A\262\301\"\262\202\211\205 \207" [nil widget-match-inline] 7 (#$ . 62667)])
#@15 

(fn WIDGET)
(defalias 'widget-checklist-value-get #[257 "\300\301\"\302\211\203'@\262A\262\303\300\304\"!\203\305\306\307\"\"\262\202\207" [widget-get :children nil widget-value :button append widget-apply :value-inline] 9 (#$ . 62902)])
#@15 

(fn WIDGET)
(defalias 'widget-checklist-validate #[257 "\300\301\"\302\211\211\203,\211\204,@\262A\262\300\303\"\262\304!\205'\305\306\"\262\202\207" [widget-get :children nil :button widget-value widget-apply :validate] 8 (#$ . 63163)])
(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)
#@37 

(fn WIDGET CHILD &optional EVENT)
(defalias 'widget-radio-button-notify #[770 "\300\301\302\"\303$\207" [widget-apply widget-get :parent :action] 8 (#$ . 64006)])
(define-widget 'radio-button-choice 'default "Select one of multiple options." :convert-widget 'widget-types-convert-widget :copy 'widget-types-copy :offset 4 :format "%v" :entry-format "%b %v" :value-create 'widget-radio-value-create :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)
#@15 

(fn WIDGET)
(defalias 'widget-radio-value-create #[257 "\300\301\"\302\205@\262A\262\303\"\210\202\207" [widget-get :args nil widget-radio-add-item] 6 (#$ . 64701)])
#@84 Add to radio widget WIDGET a new radio button item of type TYPE.

(fn WIDGET TYPE)
(defalias 'widget-radio-add-item #[514 "\302 \203\303\304\"\203\305\306\303\304\"\"\210\214\307\211``}\210\303\310\"\303\311\"\303\312\"\303\313\"\2064\303\314\"`\303\315\"?\205E\316\317#\320\211\303\n\321\"c\210b\210\322\323\320\307#\203\253\324\224f\325\326!\210\211\327\267\202\242\330c\210\202\247\331\332\f\333\310??&\262\202\247\203\216\334#\202\224\335\"\262\204\247\316\336\"\210\202\247\337\340\"\210\210\202Q\203\267\341\n\315#\210\211\203\314\341\342#\210\341\n\312C\244#\210\203\333\341\n\311	C\244#\210\266\210db\210+\207" [inhibit-modification-hooks inhibit-read-only widget--should-indent-p widget-get :indent insert-char 32 t :value :children :buttons :sibling-args :button-args :choice widget-apply :match nil :entry-format re-search-forward "%\\([bv%]\\)" 1 delete-char -2 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (37 102 98 108 118 127)) 37 apply widget-create-child-and-convert radio-button widget-create-child-value widget-create-child :deactivate error "Unknown escape `%c'" widget-put :button] 18 (#$ . 64887)])
#@15 

(fn WIDGET)
(defalias 'widget-radio-value-get #[257 "\300!\211\205\n\301!\207" [widget-radio-chosen widget-value] 4 (#$ . 66127)])
#@70 Return the widget representing the chosen radio button.

(fn WIDGET)
(defalias 'widget-radio-chosen #[257 "\300\301\"\302\211\203%@\262A\262\303\300\304\"\305\"\203\262\302\262\202\207" [widget-get :children nil widget-apply :button :value-get] 8 (#$ . 66269)])
#@15 

(fn WIDGET)
(defalias 'widget-radio-value-inline #[257 "\300\301\"\302\211\203(@\262A\262\303\300\304\"\305\"\203\303\306\"\262\302\262\202\207" [widget-get :children nil widget-apply :button :value-get :value-inline] 8 (#$ . 66552)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-radio-value-set #[514 "\300\301\"\302\211\205G@\262A\262\300\303\"?\205!\304\305#\306\"\210\211\2038\306\"\210\304\307\"\210\202=\304\310\"\210\206B\211\266\203\202\207" [widget-get :children nil :button widget-apply :match widget-value-set :activate :deactivate] 10 (#$ . 66810)])
#@15 

(fn WIDGET)
(defalias 'widget-radio-validate #[257 "\300\301\"\302\211\211\203&\204&@\262A\262\300\303\"\262\304\305\"\262\202\2031\304\306\"\2022\207" [widget-get :children nil :button widget-apply :value-get :validate] 8 (#$ . 67162)])
#@27 

(fn WIDGET CHILD EVENT)
(defalias 'widget-radio-action #[771 "\300\301\"\300\302\"\303>\203F\203F@\262A\262\300\304\"=\2032\305\306\"\210\307\310\"\210\202B\311!\203B\305\303\"\210\307\312\"\210\210\202\266\307\313$\207" [widget-get :children :buttons nil :button widget-value-set t widget-apply :activate widget-value :deactivate :notify] 10 (#$ . 67428)])
(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)
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-insert-button-action #[513 "\300\301\302\"\303\301\304\"#\207" [widget-apply widget-get :parent :insert-before :widget] 8 (#$ . 68028)])
(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)
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-delete-button-action #[513 "\300\301\302\"\303\301\304\"#\207" [widget-apply widget-get :parent :delete-at :widget] 8 (#$ . 68408)])
(define-widget 'editable-list 'default "A variable list of widgets of the same type." :convert-widget 'widget-types-convert-widget :copy 'widget-types-copy :offset 12 :format "%v%i\n" :format-handler 'widget-editable-list-format-handler :entry-format "%i %d %v" :value-create 'widget-editable-list-value-create :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)
#@22 

(fn WIDGET ESCAPE)
(defalias 'widget-editable-list-format-handler #[514 "\211\300=\203%\301 \203\302\303\"\203\304\305\302\303\"\"\210\306\307\310\302\311\"$\207\312\"\207" [105 widget--should-indent-p widget-get :indent insert-char 32 apply widget-create-child-and-convert insert-button :append-button-args widget-default-format-handler] 9 (#$ . 69166)])
#@15 

(fn WIDGET)
(defalias 'widget-editable-list-value-create #[257 "\300\301\"\300\302\"@\303\304\305\306 #\210\307\300\305\"\310\"\210\203J\311\"\211\203C\312\300\313\"\2033@\2026@@\310#B\262\211A\262\202F\303\262\210\202\304\314\237#\207" [widget-get :value :args nil widget-put :value-pos point-marker set-marker-insertion-type t widget-match-inline widget-editable-list-entry-create :inline :children] 10 (#$ . 69542)])
#@15 

(fn WIDGET)
(defalias 'widget-editable-list-value-get #[257 "\300\301\302\303\304\305\"\"\"\207" [apply append mapcar #[257 "\300\301\"\207" [widget-apply :value-inline] 4 "\n\n(fn CHILD)"] widget-get :children] 8 (#$ . 69994)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-editable-list-match #[514 "\211<\205\300\"A?\207" [widget-editable-list-match-inline] 5 (#$ . 70233)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-editable-list-match-inline #[514 "\300\301\"@\302\303\203,\203,\304\"\211\203%\305@\"\262\211A\262\202(\303\262\210\202\211B\207" [widget-get :args t nil widget-match-inline append] 9 (#$ . 70384)])
#@22 

(fn WIDGET BEFORE)
(defalias 'widget-editable-list-insert-before #[514 "\212\302\303\"\304\211\203\302\305\"b\210\202\302\306\"b\210\307\310\211#\302\305\"\302\311\"W\2038\302\311\"\302\305\"\310\223\210@=\203J\312\303B#\210\202`A@=\204YA\262\202JAB\241\210\210*\210)\313 \210\314\315#\207" [inhibit-modification-hooks inhibit-read-only widget-get :children t :entry-from :value-pos widget-editable-list-entry-create nil :from widget-put widget-setup widget-apply :notify] 9 (#$ . 70644)])
#@21 

(fn WIDGET CHILD)
(defalias 'widget-editable-list-delete-at #[514 "\212\302\303\304\"!\305\306\211\2035@\262A\262\303\307\"=\203\f\310\304\311\303	\304\"\"#\210\312!\210\202\f*\266\303\313\"\303\314\"\306\211\312!\210|\210\305\211\223\210\211\305\211\223\210*\266\310\315\311\303\315\"\"#\210)\316 \210\317\320#\207" [inhibit-modification-hooks inhibit-read-only copy-sequence widget-get :buttons nil t :widget widget-put delq widget-delete :entry-from :entry-to :children widget-setup widget-apply :notify] 12 (#$ . 71176)])
#@26 

(fn WIDGET VALUE CONV)
(defalias 'widget-editable-list-entry-create #[771 "\302\303\"@\304\211\211\214\305\211``}\210\212\306 \203(\302\307\"\203(\310\311\302	\307\"\"\210\302\312\"c\210)\313\314\304\305#\203\224\315\224f\316\317!\210\211\320\267\202\213\321c\210\202\220\322\323	\324\302\f\325\"$\262\202\220\322\323	\326\302\f\327\"$\262\202\220\203|\330	#\262\202\220\330\331!#\262\202\220\332\333\"\210\210\2020\302\334\"\203\242B\262\203\253B\262\335\334#\266\306\305!\203\312\302\307\"\203\312\310\311\302	\307\"\"\210\336 \337 \340\305\"\210\340\304\"\210\335\341#\210\335\342#\266db\210+\211\203\363\335\343#\210\203\375\335\343#\210\207" [inhibit-modification-hooks inhibit-read-only widget-get :args nil t widget--should-indent-p :indent insert-char 32 :entry-format re-search-forward "%\\(.\\)" 1 delete-char -2 #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (37 69 105 75 100 91 118 107)) 37 apply widget-create-child-and-convert insert-button :insert-button-args delete-button :delete-button-args widget-create-child-value widget-default-get error "Unknown escape `%c'" :buttons widget-put point-min-marker point-max-marker set-marker-insertion-type :entry-from :entry-to :widget] 15 (#$ . 71743)])
(define-widget 'group 'default "A widget which groups other widgets inside." :convert-widget 'widget-types-convert-widget :copy 'widget-types-copy :format ":\n%v" :value-create 'widget-group-value-create :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)
#@15 

(fn WIDGET)
(defalias 'widget-group-value-create #[257 "\300\301\"\300\302\"\303\211\211\203c@\262A\262\304\"\262A\262\305 \2037\300\306\"\2037\307\310\300\306\"\"\210\204C\311\"\202\\\300\312\"\203T\313@#\202\\\313@@#B\262\202\314\315\237#\207" [widget-get :args :value nil widget-match-inline widget--should-indent-p :indent insert-char 32 widget-create-child :inline widget-create-child-value widget-put :children] 11 (#$ . 73468)])
#@15 

(fn WIDGET)
(defalias 'widget-group-default-get #[257 "\300\301\302\303\"\"\207" [mapcar widget-default-get widget-get :args] 6 (#$ . 73955)])
#@20 

(fn WIDGET VALS)
(defalias 'widget-group-match #[514 "\211<\205\300\"\211\205\211A?\262\207" [widget-group-match-inline] 5 (#$ . 74107)])
#@20 

(fn WIDGET VALS)
(defalias 'widget-group-match-inline #[514 "\300\301\"\302\211\211\2035@\262A\262\303\"\211\262\203,\304@\"\262A\262\202\302\262\302\262\202\205<\211B\207" [widget-get :args nil widget-match-inline append] 9 (#$ . 74260)])
(byte-code "\300\301\302\303\304\305\306\307\310\307\311\312\313\314\315\316\317\320\321\322\323\324\325\326&\210\327\322\330\"\210\300\331\332\333\334\335\336\337\323\340&	\207" [define-widget visibility item "An indicator and manipulator for hidden items.\n\nThe following properties have special meanings for this widget:\n:on-glyph  Image filename or spec to display when the item is visible.\n:on        Text shown if the \"on\" image is nil or cannot be displayed.\n:off-glyph Image filename or spec to display when the item is hidden.\n:off       Text shown if the \"off\" image is nil cannot be displayed." :format "%[%v%]" :button-prefix "" :button-suffix :on-glyph "down" :on "Hide" :off-glyph "right" :off "Show" :value-create widget-visibility-value-create :action widget-toggle-action :match #[514 "\300\207" [t] 3 "\n\n(fn WIDGET VALUE)"] defalias widget-toggle-value-create documentation-link link "Link type used in documentation strings." :tab-order -1 :help-echo "Describe this symbol" widget-documentation-link-action] 24)
#@105 Display documentation for WIDGET's value.  Ignore optional argument EVENT.

(fn WIDGET &optional EVENT)
(defalias 'widget-documentation-link-action #[513 "\300\301\"\302!\303!\203\304!\203\305\306\307!\310Q!\202X\303!\203*\311!\202X\312!\2036\313!\202X\314!\203B\315!\202X\304!\204N\211\316N\203T\317!\202X\320\321\"\207" [widget-get :value intern fboundp boundp apropos "\\`" regexp-quote "\\'" describe-function facep describe-face featurep describe-package variable-documentation describe-variable message "No documentation available for %s"] 8 (#$ . 75578)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\315\310\311&\210\300\316\302\303\317DD\320\306\303\321\322\310\311&	\210\300\323\302\303\324DD\325\306\326\310\311&\207" [custom-declare-variable widget-documentation-links funcall function #[0 "\300\207" [t] 1] "Add hyperlinks to documentation strings when non-nil." :type boolean :group widget-documentation widget-documentation-link-regexp #[0 "\300\207" [#1="['`‘]\\([^\n `'‘’]+\\)['’]"] 1 #1#] "Regexp for matching potential links in documentation strings.\nThe first group should be the link itself." regexp widget-documentation-link-p #[0 "\300\207" [intern-soft] 1] "Predicate used to test if a string is useful as a link.\nThe value should be a function.  The function will be called with one\nargument, a string, and should return non-nil if there should be a\nlink for that string." :options (widget-documentation-link-p) widget-documentation-link-type #[0 "\300\207" [documentation-link] 1] "Widget type used for links in documentation strings." symbol] 10)
#@23 

(fn WIDGET FROM TO)
(defalias 'widget-documentation-link-add #[771 "\306#\210\205L	\307\310\"\311\305!\n\211\212b\210\312\313#\203C\314\315!\315\224\315\225!\203>\316\317%B\262\266\202)\320\310#+\266\202\207" [widget-documentation-links widget-documentation-link-regexp widget-documentation-face widget-button-pressed-face widget-button-face widget-mouse-face widget-specify-doc widget-get :buttons default-value re-search-forward t match-string 1 widget-convert-button :value widget-put widget-documentation-link-p widget-documentation-link-type] 14 (#$ . 77246)])
(define-widget 'documentation-string 'item "A documentation string." :format "%v" :action 'widget-documentation-string-action :value-create 'widget-documentation-string-value-create :visibility-widget 'visibility)
#@15 

(fn WIDGET)
(defalias 'widget-documentation-string-value-create #[257 "\300\301!!\302\303\"\302\211\304\"\305\"`\306\307\"\203\253\310\311\211\224#\310\311\225\"\312\211\313!\210\314\261\210\315	`#\210\316	\302\317\"\320\321\322\323\324\325\326\327\330\331&
\262\203\237\332c\210`\262\203k\311U\204k\333\314\"\210c\210`\262\315	#\210\203\237\311V\203\237\212\214}\210eb\210\334\307\312\327#\203\236\313!\210\202\216*\335	\336C#\266\202\270\313!\210c\210\315`#\210\266\332c\207" [substitute-command-keys widget-value widget-get :indent :parent :documentation-shown string-match "\n" substring 0 nil widget-documentation-string-indent-to 32 widget-documentation-link-add widget-create-child-and-convert :visibility-widget :help-echo "Show or hide rest of the documentation." :on "Hide" :off "More" :always-active t :action widget-parent-action 10 insert-char search-forward widget-put :buttons] 23 (#$ . 78064)])
#@12 

(fn COL)
(defalias 'widget-documentation-string-indent-to #[257 "\211\247\205\211\300V\205`j\210\301`\302\303\304E$\262\207" [0 put-text-property display space :align-to] 9 (#$ . 79041)])
#@28 

(fn WIDGET &rest IGNORE)
(defalias 'widget-documentation-string-action #[385 "\300\301\"\302\303\300\303\"?#\266\304\305!\"\207" [widget-get :parent widget-put :documentation-shown widget-value-set widget-value] 9 (#$ . 79246)])
#@347 Insert a new `documentation-string' widget based on WIDGET.
The new widget becomes a child of WIDGET, and is also added to
its `:buttons' list.  The documentation string is found from
WIDGET using the function `widget-docstring'.
Optional ARGS specifies additional keyword arguments for the
`documentation-string' widget.

(fn WIDGET &rest ARGS)
(defalias 'widget-add-documentation-string-button #[385 "\300!\301\302\"\301\303\"\205Dh\304=\203\203\305\306\"\210\211\247\204*\211\203*\307\262\310\311\312\313	\314\302\f\fC\244&\301	\311\"B#\207" [widget-docstring widget-get :indent :documentation-indent 10 insert-char 32 0 widget-put :buttons apply widget-create-child-and-convert documentation-string] 16 (#$ . 79490)])
(define-widget 'const 'item "An immutable sexp." :prompt-value 'widget-const-prompt-value :format "%t\n%d")
#@36 

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-const-prompt-value #[1028 "\300!\207" [widget-value] 6 (#$ . 80348)])
(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 #[257 "\3001\n\301\302\"0\207\210\303\207" [(error) documentation t nil] 4 "\n\n(fn SYMBOL)"] 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 (#$ . 81228))
(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 #[257 "\300\301!\210\212\302\303!A@)\211\304!W\203\305\306!\202\307 \207" [require ispell ispell-get-word nil widget-field-start message "No word to complete inside field" ispell-complete-word] 5 "\n\n(fn WIDGET)"] :prompt-history widget-string-prompt-value-history regexp "A regular expression." :match widget-regexp-match :validate widget-regexp-validate "Regexp"] 12)
#@21 

(fn WIDGET VALUE)
(defalias 'widget-regexp-match #[514 "\211;\205\3001\301\302\303\"\2100\207\210\304\207" [(error) t string-match "" nil] 6 (#$ . 81929)])
#@64 Check that the value of WIDGET is a valid regexp.

(fn WIDGET)
(defalias 'widget-regexp-validate #[257 "\3001\301\302\303!\304\"\2100\207\305\306\307!#\210\207" [(error) nil string-match widget-value "" widget-put :error error-message-string] 7 (#$ . 82098)])
(byte-code "\301\302\303\304\305\306\307?\"\310\311\312\313\314\315&\207" [read-file-name-completion-ignore-case define-widget file string "A file widget.\nIt reads a file name from an editable text field." :completions completion-table-case-fold completion-file-name-table :prompt-value widget-file-prompt-value :format "%{%t%}: %v" :tag "File"] 12)
#@36 

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-file-prompt-value #[1028 "\300\203\301!\202%\302\303#\304!\305!\306\307\"\301\310%\266\204!\207" [abbreviate-file-name read-file-name format "%s (default %s): " file-name-directory file-name-nondirectory widget-get :must-match nil] 15 (#$ . 82723)])
(byte-code "\301\302\303\304\305\306\307\310\311?\"\312\313$\314\315&\207" [read-file-name-completion-ignore-case define-widget directory file "A directory widget.\nIt reads a directory name from an editable text field." :completions apply-partially completion-table-with-predicate completion-table-case-fold completion-file-name-table directory-name-p strict :tag "Directory"] 10)
#@51 History of input to `widget-symbol-prompt-value'.
(defvar widget-symbol-prompt-value-history nil (#$ . 83432))
(define-widget 'symbol 'editable-field "A Lisp symbol." :value nil :tag "Symbol" :format "%{%t%}: %v" :match #[514 "\2119\207" [] 3 "\n\n(fn WIDGET VALUE)"] :completions obarray :prompt-internal 'widget-symbol-prompt-internal :prompt-match 'symbolp :prompt-history 'widget-symbol-prompt-value-history :value-to-internal #[514 "\2119\203	\300!\207\207" [symbol-name] 4 "\n\n(fn WIDGET VALUE)"] :value-to-external #[514 "\211;\203	\300!\207\207" [intern] 4 "\n\n(fn WIDGET VALUE)"])
#@38 

(fn WIDGET PROMPT INITIAL HISTORY)
(defalias 'widget-symbol-prompt-internal #[1028 "\301\302\303\"\304&\211;\203\211G\305U\204\211\202\"\306\307!\207" [obarray completing-read widget-get :prompt-match nil 0 error "No value"] 11 (#$ . 84034)])
#@53 History of input to `widget-function-prompt-value'.
(defvar widget-function-prompt-value-history nil (#$ . 84299))
(byte-code "\301\302\303\304\305\306\307\310\311$\312\313\314\315\316\310\317\320\321\322\323\324\325\326\327\330\331\332&\207" [obarray define-widget function restricted-sexp "A Lisp function." :completions apply-partially completion-table-with-predicate fboundp strict :prompt-value widget-field-prompt-value :prompt-internal widget-symbol-prompt-internal :prompt-match :prompt-history widget-function-prompt-value-history :action widget-field-action :match-alternatives (functionp) :validate #[257 "\300\301!!?\205\302\303\304\305\301!\"#\210\211\207" [functionp widget-value widget-put :error format "Invalid function: %S"] 8 "\n\n(fn WIDGET)"] :value ignore :tag "Function"] 24)
#@53 History of input to `widget-variable-prompt-value'.
(defvar widget-variable-prompt-value-history nil (#$ . 85112))
(byte-code "\301\302\303\304\305\306\307\310\311\312\313\306\314$\315\316&\210\301\317\303\320\321\322\315\323\324\325\307\326\327\330\331\332\311\312\313\333\314$\334\335\336\337\305\333&\207" [obarray define-widget variable symbol "A Lisp variable." :prompt-match boundp :prompt-history widget-variable-prompt-value-history :completions apply-partially completion-table-with-predicate strict :tag "Variable" coding-system "A MULE coding-system." :format "%{%t%}: %v" "Coding system" :base-only nil coding-system-value-history :prompt-value widget-coding-system-prompt-value :action widget-coding-system-action coding-system-p :validate #[257 "\300\301!!?\205\302\303\304\305\301!\"#\210\211\207" [coding-system-p widget-value widget-put :error format "Invalid coding system: %S"] 8 "\n\n(fn WIDGET)"] :value undecided] 24)
#@71 Read coding-system from minibuffer.

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-coding-system-prompt-value #[1028 "\301\302\"\203\303\304\305\306#\307\310\311\312!\"\313\211\211&!\207\314\305\306#\"\207" [coding-system-history widget-get :base-only intern completing-read format "%s (default %s): " mapcar list coding-system-list t nil read-coding-system] 12 (#$ . 86068)])
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-coding-system-action #[513 "\300\301\302\"\303!\304$\305\"\210\301\306$\210\307 \207" [widget-coding-system-prompt-value widget-apply :menu-tag-get widget-value t widget-value-set :notify widget-setup] 8 (#$ . 86468)])
#@57 History of input to `widget-key-sequence-prompt-value'.
(defvar widget-key-sequence-prompt-value-history nil (#$ . 86749))
#@42 Default value for an empty key sequence.
(defvar widget-key-sequence-default-value [ignore] (#$ . 86878))
(defvar widget-key-sequence-map (byte-code "\301 \302\"\210\303\304\305#\210\211\207" [widget-field-keymap make-sparse-keymap set-keymap-parent define-key [(control 113)] widget-key-sequence-read-event] 5))
(define-widget 'key-sequence 'restricted-sexp "A key sequence." :prompt-value 'widget-field-prompt-value :prompt-internal 'widget-symbol-prompt-internal :prompt-history 'widget-key-sequence-prompt-value-history :action 'widget-field-action :match-alternatives '(stringp vectorp) :format "%{%t%}: %v" :validate 'widget-key-sequence-validate :value-to-internal 'widget-key-sequence-value-to-internal :value-to-external 'widget-key-sequence-value-to-external :value widget-key-sequence-default-value :keymap widget-key-sequence-map :help-echo "C-q: insert KEY, EVENT, or CODE; RET: enter value" :tag "Key sequence")
#@11 

(fn EV)
(defalias 'widget-key-sequence-read-event #[257 "\303\304!>\205\n\305 \306!\205\307\310!\"\250\203\\\311X\203+\311\312	^\\W\204=\313\227X\203\\\227\314\315	^\\W\203\\\nB\316\317\320	\"!\262\321\262\250\203\\\322!\204\\\323!c\210\324C!\262\325!\203\201\324\326HC!\262\327\317\330\211$!\203\201\211\262\321\262`Sf\331U\203\215\332\202\216\333\333\261\210\205\236\324C!\333\261\207" [function-key-map read-quoted-char-radix unread-command-events down event-modifiers read-event keymapp lookup-key vector 48 10 97 87 36 read-quoted-char format "Enter code (radix %d)" nil characterp char-to-string key-description arrayp 0 y-or-n-p "Key %s is translated to %s -- use %s? " 32 "" " "] 9 (#$ . 87813) (byte-code "\302\303\304\305!*C\207" [quit-flag inhibit-quit t nil read-event "Insert KEY, EVENT, or CODE: "] 2)])
#@15 

(fn WIDGET)
(defalias 'widget-key-sequence-validate #[257 "\300!;\206\f\301\300!!?\205\302\303\304\305\300!\"#\210\211\207" [widget-value vectorp widget-put :error format "Invalid key sequence: %S"] 8 (#$ . 88686)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-key-sequence-value-to-internal #[514 "\301\302#\203\211\232\203\303\207\304!\207\207" [widget-key-sequence-default-value widget-apply :match "" key-description] 6 (#$ . 88918)])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-key-sequence-value-to-external #[514 "\211;\203\301\302\"\203\207\303!\207\207" [widget-key-sequence-default-value string-match "\\`[[:space:]]*\\'" read-kbd-macro] 5 (#$ . 89148)])
(define-widget 'sexp 'editable-field "An arbitrary Lisp expression." :tag "Lisp expression" :format "%{%t%}: %v" :value nil :validate 'widget-sexp-validate :match #[514 "\300\207" [t] 3 "\n\n(fn WIDGET VALUE)"] :value-to-internal 'widget-sexp-value-to-internal :value-to-external #[514 "\300!\207" [read] 4 "\n\n(fn WIDGET VALUE)"] :prompt-history 'widget-sexp-prompt-value-history :prompt-value 'widget-sexp-prompt-value)
#@21 

(fn WIDGET VALUE)
(defalias 'widget-sexp-value-to-internal #[514 "\2119\203\300!\202\301!\302\303\"\203\304\305\306#\262\202\302\303\"\204-\211G\307V\2033\310P\2024\211\207" [prin1-to-string pp-to-string string-match "\n\\'" substring 0 -1 40 "\n"] 7 (#$ . 89805)])
#@15 

(fn WIDGET)
(defalias 'widget-sexp-validate #[257 "\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311\312\"c\210eb\210\313\3141i\3151_\316\317!\210m\2033\320\262\202C\311\321\322p!#\204C\323\324\"\262\316\317!\210m?\205Z\211?\205Z\325\326`d{\"\211\26200\202q0\327\211\262\262\202q\330!\211\262\262\210\211\205}\331\332#\210\262*\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205	\302\300!\207" vconcat vector [buffer-name kill-buffer] 2 widget-apply :value-get nil (error) (end-of-file) skip-syntax-forward "-" "Empty sexp -- use nil?" :match read widget-get :type-error format "Junk at end of expression: %s" "Unbalanced sexp" error-message-string widget-put :error] 8 (#$ . 90097)])
#@49 History of input to `widget-sexp-prompt-value'.
(defvar widget-sexp-prompt-value-history nil (#$ . 90844))
#@36 

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-sexp-prompt-value #[1028 "\300?\205\f\301!\302B\303\304\"#\305!\211AGU\204&\306\307\310A\"\"\210\211@\262\207" [read-string prin1-to-string 0 widget-get :prompt-history read-from-string error "Junk at end of expression: %s" substring] 11 (#$ . 90957)])
(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 #[514 "\300\301#\203\f\302!\207\207" [widget-apply :match prin1-to-string] 6 "\n\n(fn WIDGET VALUE)"])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-restricted-sexp-match #[514 "\300\301\"\302\203<\211\204<\303@!\203@!\202/@:\2035@@\304=\2035@A@=\2035\305\262A\262\202\207" [widget-get :match-alternatives nil functionp quote t] 6 (#$ . 91648)])
(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\302\323\304\324\306\325\310\326\312\327&\210\300\330\331\332\304\333\306\307\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353&\210\300\354\355\356\304\357\336\360&\210\300\361\355\362\304\363\336\360\352\364\346\365\350\366&
\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 number (floating point or integer)." "Number" 0.0 "This field should contain a number (floating point or integer)" (numberp) float "A floating point number." "Floating point number" 0.0 "This field should contain a floating point number" (floatp) character editable-field "A character." "Character" :size 1 :format "%{%t%}: %v\n" :valid-regexp "\\`.\\'" :error "This field should contain a single character" :value-get #[257 "\300\301\"\207" [widget-field-value-get t] 4 "\n\n(fn W)"] :value-to-internal #[514 "\211;\203\207\300!\207" [char-to-string] 4 "\n\n(fn WIDGET VALUE)"] :value-to-external #[514 "\211;\203	\211\300H\207\207" [0] 4 "\n\n(fn WIDGET VALUE)"] :match #[514 "\300!\207" [characterp] 4 "\n\n(fn WIDGET VALUE)"] list group "A Lisp list." "List" "%{%t%}:\n%v" vector "A Lisp vector." "Vector" widget-vector-match #[514 "\300\301\"\207" [append nil] 5 "\n\n(fn WIDGET VALUE)"] #[514 "\300\301\"\207" [apply vector] 5 "\n\n(fn WIDGET VALUE)"]] 24)
#@21 

(fn WIDGET VALUE)
(defalias 'widget-vector-match #[514 "\300!\205\301\302\303#\"\207" [vectorp widget-group-match widget-apply :value-to-internal] 8 (#$ . 93429)])
(define-widget 'cons 'group "A cons-cell." :tag "Cons-cell" :format "%{%t%}:\n%v" :match 'widget-cons-match :value-to-internal #[514 "\211@AD\207" [] 4 "\n\n(fn WIDGET VALUE)"] :value-to-external #[514 "\300\301\"\207" [apply cons] 5 "\n\n(fn WIDGET VALUE)"])
#@21 

(fn WIDGET VALUE)
(defalias 'widget-cons-match #[514 "\211:\205
\300\301\302#\"\207" [widget-group-match widget-apply :value-to-internal] 8 (#$ . 93869)])
(byte-code "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323&\210\300\324\325\326\327\330\331\332\306\333\334\335&\207" [define-widget lazy default "Base widget for recursive data structures.\n\nThe `lazy' widget will, when instantiated, contain a single inferior\nwidget, of the widget type specified by the :type parameter.  The\nvalue of the `lazy' widget is the same as the value of the inferior\nwidget.  When deriving a new widget from the `lazy' widget, the :type\nparameter is allowed to refer to the widget currently being defined,\nthus allowing recursive data structures to be described.\n\nThe :type parameter takes the same arguments as the defcustom\nparameter with the same name.\n\nMost composite widgets, i.e. widgets containing other widgets, does\nnot allow recursion.  That is, when you define a new widget type, none\nof the inferior widgets may be of the same type you are currently\ndefining.\n\nIn Lisp, however, it is custom to define data structures in terms of\nthemselves.  A list, for example, is defined as either nil, or a cons\ncell whose cdr itself is a list.  The obvious way to translate this\ninto a widget type would be\n\n  (define-widget \\='my-list \\='choice\n    \"A list of sexps.\"\n    :tag \"Sexp list\"\n    :args \\='((const nil) (cons :value (nil) sexp my-list)))\n\nHere we attempt to define my-list as a choice of either the constant\nnil, or a cons-cell containing a sexp and my-lisp.  This will not work\nbecause the `choice' widget does not allow recursion.\n\nUsing the `lazy' widget you can overcome this problem, as in this\nexample:\n\n  (define-widget \\='sexp-list \\='lazy\n    \"A list of sexps.\"\n    :tag \"Sexp list\"\n    :type \\='(choice (const nil) (cons :value (nil) sexp sexp-list)))" :format "%{%t%}: %v" :convert-widget widget-value-convert-widget :value-create widget-type-value-create :value-get widget-child-value-get :value-inline widget-child-value-inline :default-get widget-type-default-get :match widget-type-match :validate widget-child-validate plist list "A property list." :key-type (symbol :tag "Key") :value-type (sexp :tag "Value") widget-plist-convert-widget :tag "Plist"] 20)
#@15 

(fn WIDGET)
(defalias 'widget-plist-convert-widget #[257 "\301\302\"\301\303\"\304\305\306\307\305\306\301\310\"\257F\2030\311\305\306\312\306\313\314\"BBBBBD\2022\211C\315\316#\210)\207" [widget-plist-value-type widget-get :options :value-type editable-list :inline t group :key-type checklist :greedy mapcar widget-plist-convert-option widget-put :args] 11 (#$ . 96237)])
#@15 

(fn OPTION)
(defalias 'widget-plist-convert-option #[257 "\301\211<\203\"@A@\262\211<\203\211\262\202\302D\262\210\202*\302D\262\262\303\304\305\306\307\257\207" [widget-plist-value-type nil const group :format "Key: %v" :inline t] 10 (#$ . 96635)])
(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")
#@15 

(fn WIDGET)
(defalias 'widget-alist-convert-widget #[257 "\301\302\"\301\303\"\304\305\306\307\310\311\301\312\"\257F\2030\313\305\306\314\306\315\316\"BBBBBD\2022\211C\317\320#\210)\207" [widget-alist-value-type widget-get :options :value-type editable-list :inline t cons :format "%v" :key-type checklist :greedy mapcar widget-alist-convert-option widget-put :args] 11 (#$ . 97087)])
#@15 

(fn OPTION)
(defalias 'widget-alist-convert-option #[257 "\301\211<\203\"@A@\262\211<\203\211\262\202\302D\262\210\202*\302D\262\262\303\304\305\257\207" [widget-alist-value-type nil const cons :format "Key: %v"] 8 (#$ . 97497)])
(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)
#@50 Make a choice.

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-choice-prompt-value #[1028 "\301\302\"\301\303\"\304\211\211\211\203-\305@\306\n#\203&\211@\262\304\262\202\211A\262\202\210G\307U\2039\304\202\236G\310U\203E@\202\236G\311U\203d\211>\203d\211@=\203_A@\202\236@\202\236\203}@\262A\262\305\312\"BB\262\202d\313\304\314$\211;\205\234\315\"\211;\203\225\211\262\316\"A\262\262\262\203\256\317	\304\314$\202\260)\207" [completion-ignore-case widget-get :args :case-fold nil widget-apply :match 0 1 2 :menu-tag-get completing-read t try-completion assoc widget-prompt-value] 14 (#$ . 98001)])
(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)
#@36 

(fn WIDGET PROMPT VALUE UNBOUND)
(defalias 'widget-boolean-prompt-value #[1028 "\300!\207" [y-or-n-p] 6 (#$ . 99433)])
(byte-code "\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\206\320 \321\322\323\324\325\326&\207" [facemenu-color-alist define-widget color editable-field "Choose a color name (with sample)." :format "%{%t%}: %v (%{sample%})\n" :value-create widget-color-value-create :size 10 :tag "Color" :value "black" :completions defined-colors :sample-face-get widget-color-sample-face-get :notify widget-color-notify :action widget-color-action] 22)
#@15 

(fn WIDGET)
(defalias 'widget-color-value-create #[257 "\300!\210\301\302!\210\303\304\305\306\307\310&\210\301\302!\207" [widget-field-value-create widget-insert " " widget-create-child-and-convert push-button :tag " Choose " :action widget-color--choose-action] 8 (#$ . 100019)])
#@31 

(fn WIDGET &optional EVENT)
(defalias 'widget-color--choose-action #[513 "\300\301\211p\302\303\"\304\305\306\307\310\"\311\"\312\313%\266\202#\207" [list-colors-display nil widget-get :parent make-byte-code 257 "\302\300!\205'\303\301\"\210\304\305!\306\307\"\211\203\310\311\"\210\202\"\312!\210\266\313\300!\207" vconcat vector [buffer-live-p widget-value-set get-buffer "*Colors*" get-buffer-window 0 quit-window nil bury-buffer pop-to-buffer] 6 "\n\n(fn COLOR)"] 14 (#$ . 100312)])
#@15 

(fn WIDGET)
(defalias 'widget-color-sample-face-get #[257 "\3001\301!0\202\210\302\303\"\304!\203\305BC\202\306\207" [(error) widget-value widget-get :value color-defined-p foreground-color default] 4 (#$ . 100822)])
#@50 Prompt for a color.

(fn WIDGET &optional EVENT)
(defalias 'widget-color-action #[513 "\300\301\"\211\302P\303!\211G\304U?\205\"\305\"\210\306 \210\300\307$\207" [widget-apply :menu-tag-get ": " facemenu-read-color 0 widget-value-set widget-setup :notify] 10 (#$ . 101059)])
#@78 Update the sample, and notify the parent.

(fn WIDGET CHILD &optional EVENT)
(defalias 'widget-color-notify #[770 "\300\301\302\"\303\304\305\"#\210\306#\207" [overlay-put widget-get :sample-overlay face widget-apply :sample-face-get widget-default-notify] 9 (#$ . 101350)])
#@53 Display help-echo text for widget at POS.

(fn POS)
(defalias 'widget-echo-help #[257 "\300!\211\205\301\302\"\303!\203\211!\262\211\205 \304\305\306!\"\207" [widget-at widget-get :help-echo functionp message "%s" eval] 7 (#$ . 101637)])
(provide 'wid-edit)

Zerion Mini Shell 1.0