;ELC
;;; Compiled
;;; in Emacs version 26.1
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(custom-declare-face 'button '((t :inherit link)) "Default face used for buttons." :group 'basic-faces)
#@25 Keymap used by buttons.
(defvar button-map (byte-code "\301 \302\303\304#\210\302\305\304#\210\302\306\304#\210\302\307\304#\210)\207" [map make-sparse-keymap define-key [(control 109)] push-button [mouse-2] [mode-line mouse-2] [header-line mouse-2]] 4) (#$ . 512))
#@114 Keymap useful for buffers containing buttons.
Mode-specific keymaps may want to use this as their parent keymap.
(defvar button-buffer-map (byte-code "\301 \302\303\304#\210\302\305\306#\210\302\307\306#\210)\207" [map make-sparse-keymap define-key [9] forward-button " " backward-button [backtab]] 4) (#$ . 791))
(byte-code "\301\302\303\304#\210\301\302\305\306#\210\301\302\307#\210\301\302\310\304#\210\301\302\311\312#\210\301\302\313\314\315!#\210\301\302\316\317#\210\301\302\320\317#\210\301\304\321\302#\207" [button-map put default-button face button mouse-face highlight keymap type action ignore help-echo purecopy "mouse-2, RET: Push this button" evaporate t rear-nonsticky button-category-symbol] 5)
#@139 Return the symbol used by button-type TYPE to store properties.
Buttons inherit them by setting their `category' property to that symbol.
(defalias 'button-category-symbol #[(type) "\301N\206\n \302\303\"\207" [type button-category-symbol error "Unknown button type `%s'"] 3 (#$ . 1519)])
(put 'button-category-symbol 'byte-optimizer 'byte-compile-inline-expand)
#@568 Define a `button type' called NAME (a symbol).
The remaining arguments form a sequence of PROPERTY VALUE pairs,
specifying properties to use as defaults for buttons with this type
(a button's type may be set by giving it a `type' property when
creating the button, using the :type keyword argument).
In addition, the keyword argument :supertype may be used to specify a
button-type from which NAME inherits its default property values
(however, the inheritance happens only when NAME is defined; subsequent
changes to a supertype are not reflected in its subtypes).
(defalias 'define-button-type #[(name &rest properties) "\306\307!\310P!\311 \312\"\206 \311 \313\"\206 \314\211\315N\206! \316\317\n\")\320\315\f#\210\321!
\203C \320\f
\211A\242
\211A\242#\210\202. )\320\f\302#\210 \203m \211A\242\211\313=\203^ \312\320\f \211A\242#\210)\202J \f\312N\204y \320\f\312\314#\210*\207" [name properties type super-catsym catsym default-props make-symbol symbol-name "-button" plist-get supertype :supertype button button-category-symbol error "Unknown button type `%s'" put symbol-plist prop] 6 (#$ . 1891)])
#@50 Set the button-type TYPE's PROP property to VAL.
(defalias 'button-type-put #[(type prop val) "\303\211\304N\206
\305\306\") \n#\207" [type prop val put button-category-symbol error "Unknown button type `%s'"] 5 (#$ . 3027)])
#@50 Get the property of button-type TYPE named PROP.
(defalias 'button-type-get #[(type prop) "\211\302N\206\f \303\304\") N\207" [type prop button-category-symbol error "Unknown button type `%s'"] 4 (#$ . 3263)])
#@57 Return t if button-type TYPE is a subtype of SUPERTYPE.
(defalias 'button-type-subtype-p #[(type supertype) " =\206 \205 \302\303\301\" \"\207" [type supertype button-type-subtype-p button-type-get] 4 (#$ . 3482)])
#@45 Return the position at which BUTTON starts.
(defalias 'button-start #[(button) "\301!\203\n \302!\207\303T\300\"\206 e\207" [button overlayp overlay-start previous-single-property-change] 3 (#$ . 3708)])
#@43 Return the position at which BUTTON ends.
(defalias 'button-end #[(button) "\301!\203\n \302!\207\303\300\"\206 d\207" [button overlayp overlay-end next-single-property-change] 3 (#$ . 3922)])
#@47 Get the property of button BUTTON named PROP.
(defalias 'button-get #[(button prop) "\302!\203 \303 \"\207\304!\203 \305A \306!#\207\307!\203( \305 \310!#\207\305 \"\207" [button prop overlayp overlay-get button--area-button-p get-text-property button--area-button-string markerp marker-buffer] 5 (#$ . 4125)])
#@36 Set BUTTON's PROP property to VAL.
(defalias 'button-put #[(button prop val) "\304>\203 \305 \211\306N\206 \307\310\n\")\202# \305=\203# \307\311!\210\312!\203/ \313 #\207\314!\203B \315!\316\317G %\207\316\320T\303\"\206L e\321\303\"\206T d $\207" [prop val type button (type :type) category button-category-symbol error "Unknown button type `%s'" "Button `category' property may not be set directly" overlayp overlay-put button--area-button-p button--area-button-string put-text-property 0 previous-single-property-change next-single-property-change] 7 (#$ . 4453)])
#@476 Call BUTTON's `action' property.
If USE-MOUSE-ACTION is non-nil, invoke the button's `mouse-action'
property instead of `action'; if the button has no `mouse-action',
the value of `action' is used instead.
The action can either be a marker or a function. If it's a
marker then goto it. Otherwise if it is a function then it is
called with BUTTON as only argument. BUTTON is either an
overlay, a buffer position, or (for buttons in the mode-line or
header-line) a string.
(defalias 'button-activate #[(button &optional use-mouse-action) "\203 \304 \305\"\206 \304 \302\"\306\n!\203. \307 r\310\216\311\312\313\n!!!\210\nb\210\314\315!+\2021 \n !)\207" [use-mouse-action button action save-selected-window--state button-get mouse-action markerp internal--before-save-selected-window #[nil "\301!\207" [save-selected-window--state internal--after-save-selected-window] 2] select-window display-buffer marker-buffer recenter 0] 4 (#$ . 5048)])
#@29 Return BUTTON's text label.
(defalias 'button-label #[(button) "\301!\203\f \302\303!!\207\304\305!\306!\"\207" [button button--area-button-p substring-no-properties button--area-button-string buffer-substring-no-properties button-start button-end] 4 (#$ . 6004)])
#@30 Return BUTTON's button-type.
(defalias 'button-type #[(button) "\301\302\"\207" [button button-get type] 3 (#$ . 6279)])
(put 'button-type 'byte-optimizer 'byte-compile-inline-expand)
#@69 Return t if BUTTON has button-type TYPE, or one of TYPE's subtypes.
(defalias 'button-has-type-p #[(button type) "\302\303\301\" \"\207" [button type button-type-subtype-p button-get] 4 (#$ . 6470)])
#@118 Return non-nil if BUTTON is an area button.
Such area buttons are used for buttons in the mode-line and header-line.
(defalias 'button--area-button-p #[(b) "\242;\207" [b] 1 (#$ . 6678)])
(defalias 'button--area-button-string 'car "Return area button BUTTON's button-string.")
#@353 Make a button from BEG to END in the current buffer.
The remaining arguments form a sequence of PROPERTY VALUE pairs,
specifying properties to add to the button.
In addition, the keyword argument :type may be used to specify a
button-type from which to inherit other properties; see
`define-button-type'.
Also see `make-text-button', `insert-button'.
(defalias 'make-button #[(beg end &rest properties) "\304 \305\306\305%\203 \307\n\211A\242\211A\242#\210\202 \310\n\311\n#\210\312\n\313\"\2040 \310\n\313\314#\210\n)\207" [beg end overlay properties make-overlay nil t button-put overlay-put button overlay-get category default-button] 6 (#$ . 6963)])
#@338 Insert a button with the label LABEL.
The remaining arguments form a sequence of PROPERTY VALUE pairs,
specifying properties to add to the button.
In addition, the keyword argument :type may be used to specify a
button-type from which to inherit other properties; see
`define-button-type'.
Also see `insert-text-button', `make-button'.
(defalias 'insert-button #[(label &rest properties) "\302\303`c\210` $\207" [label properties apply make-button] 5 (#$ . 7634)])
#@867 Make a button from BEG to END in the current buffer.
The remaining arguments form a sequence of PROPERTY VALUE pairs,
specifying properties to add to the button.
In addition, the keyword argument :type may be used to specify a
button-type from which to inherit other properties; see
`define-button-type'.
This function is like `make-button', except that the button is actually
part of the text instead of being a property of the buffer. That is,
this function uses text properties, the other uses overlays.
Creating large numbers of buttons can also be somewhat faster
using `make-text-button'. Note, however, that if there is an existing
face property at the site of the button, the button face may not be visible.
You may want to use `make-button' in that case.
BEG can also be a string, in which case it is made into a button.
Also see `insert-text-button'.
(defalias 'make-text-button #[(beg end &rest properties) "\306\307\305\"\206\f \307\310\";\203 \311\nG\312\313\"\203% \314\315!\210 \2042 \313\316BB\202I \313\240\210 A A@\211\317N\206F \314\320
\")\240\210\321\f\322\323CBB\n$\210\n\206Z *\207" [properties type-entry object beg end type nil plist-member :type 0 plist-get category error "Button `category' property may not be set directly" default-button button-category-symbol "Unknown button type `%s'" add-text-properties button t] 7 (#$ . 8108)])
#@546 Insert a button with the label LABEL.
The remaining arguments form a sequence of PROPERTY VALUE pairs,
specifying properties to add to the button.
In addition, the keyword argument :type may be used to specify a
button-type from which to inherit other properties; see
`define-button-type'.
This function is like `insert-button', except that the button is
actually part of the text instead of being a property of the buffer.
Creating large numbers of buttons can also be somewhat faster using
`insert-text-button'.
Also see `make-text-button'.
(defalias 'insert-text-button #[(label &rest properties) "\302\303`c\210` $\207" [label properties apply make-text-button] 5 (#$ . 9501)])
#@160 Return the button at position POS in the current buffer, or nil.
If the button at POS is a text property button, the return value
is a marker pointing to POS.
(defalias 'button-at #[(pos) "\302\301\"\303 !\204 \204 \202 \304\305\")\207" [pos button get-char-property overlayp copy-marker t] 3 (#$ . 10193)])
#@174 Return the next button after position POS in the current buffer.
If COUNT-CURRENT is non-nil, count any button at POS in the search,
instead of starting at the next button.
(defalias 'next-button #[(pos &optional count-current) "\204 \302 \303\" dW\205 \304 !\206 \305 !\207" [count-current pos next-single-char-property-change button button-at next-button] 3 (#$ . 10516)])
#@179 Return the previous button before position POS in the current buffer.
If COUNT-CURRENT is non-nil, count any button at POS in the search,
instead of starting at the next button.
(defalias 'previous-button #[(pos &optional count-current) "\304!\211\2033 \n\203 \202H \305\306 !\301\"\304!\211\203, \306 !U?\205/ \202/ \307!)\202H \305\301\"\304!\206H eV\205H \304S!)\207" [pos button count-current new-button button-at previous-single-char-property-change button-start previous-button] 4 (#$ . 10903)])
#@657 Perform the action specified by a button at location POS.
POS may be either a buffer position or a mouse-event. If
USE-MOUSE-ACTION is non-nil, invoke the button's `mouse-action'
property instead of its `action' property; if the button has no
`mouse-action', the value of `action' is used instead.
The action in both cases may be either a function to call or a
marker to display and is invoked using `button-activate' (which
see).
POS defaults to point, except when `push-button' is invoked
interactively as the result of a mouse-event, in which case, the
mouse event is used.
If there's no button at POS, do nothing and return nil, otherwise
return t.
(defalias 'push-button #[(&optional pos use-mouse-action) "\250\2040 \304!\2030 \305!r\306 \211@\262!q\210\307 !\203( \310\307 !\311\"\202. \312\313 !\311\"*\207\314\2066 `!\211\205B \310\n\"\210\311)\207" [pos posn button use-mouse-action eventp event-start window-buffer posn-string button-activate t push-button posn-point button-at] 4 (#$ . 11427) (list (if (integerp last-command-event) (point) last-command-event))])
#@371 Move to the Nth next button, or Nth previous button if N is negative.
If N is 0, move to the start of any button at point.
If WRAP is non-nil, moving past either end of the buffer continues from the
other end.
If DISPLAY-MESSAGE is non-nil, the button's help-echo string is displayed.
Any button with a non-nil `skip' property is skipped over.
Returns the button found.
(defalias 'forward-button #[(n &optional wrap display-message) "\306 \307U\203 \310`!\211\203\202 \311!b\210\202\202 \307V\203\" |