;ELC ;;; Compiled ;;; in Emacs version 27.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 "\300 \301\302\303#\210\301\304\303#\210\301\305\303#\210\301\306\303#\210\211\207" [make-sparse-keymap define-key [(control 109)] push-button [mouse-2] [mode-line mouse-2] [header-line mouse-2]] 5) (#$ . 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 "\300 \301\302\303#\210\301\304\305#\210\301\306\305#\210\211\207" [make-sparse-keymap define-key [9] forward-button " " backward-button [backtab]] 5) (#$ . 788)) (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) #@150 Return the symbol used by button-type TYPE to store properties. Buttons inherit them by setting their `category' property to that symbol. (fn TYPE) (defalias 'button-category-symbol #[257 "\211\300N\206\n\301\302\"\207" [button-category-symbol error "Unknown button type `%s'"] 4 (#$ . 1513)]) (put 'button-category-symbol 'byte-optimizer 'byte-compile-inline-expand) #@593 Define a `button type' called NAME (a symbol). The remaining arguments form a plist 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). (fn NAME &rest PROPERTIES) (defalias 'define-button-type #[385 "\300\301!\302P!\303\304\"\206\303\305\"\206\306\211\307N\206 \310\311\"\262\312\307#\210\313!\211\203B\312\211A\262\242\211A\262\242#\210\202+\210\312\314#\210\203m\211A\262\242\211\305=\203]\304\262\312\211A\262\242#\266\202J\304N\204y\312\304\306#\210\207" [make-symbol symbol-name "-button" plist-get supertype :supertype button button-category-symbol error "Unknown button type `%s'" put symbol-plist type] 10 (#$ . 1891)]) #@70 Set the button-type TYPE's PROP property to VAL. (fn TYPE PROP VAL) (defalias 'button-type-put #[771 "\300\211\301N\206\f\302\303\"\262#\207" [put button-category-symbol error "Unknown button type `%s'"] 8 (#$ . 2994)]) #@66 Get the property of button-type TYPE named PROP. (fn TYPE PROP) (defalias 'button-type-get #[514 "\211\300N\206 \301\302\"\262N\207" [button-category-symbol error "Unknown button type `%s'"] 6 (#$ . 3227)]) #@84 Return non-nil if button-type TYPE is a subtype of SUPERTYPE. (fn TYPE SUPERTYPE) (defalias 'button-type-subtype-p #[514 "=\206\205\300\301\302\"\"\207" [button-type-subtype-p button-type-get supertype] 6 (#$ . 3446)]) #@122 Return the position at which BUTTON starts. This function only works when BUTTON is in the current buffer. (fn BUTTON) (defalias 'button-start #[257 "\300!\203\n\301!\207\302T\303\"\206e\207" [overlayp overlay-start previous-single-property-change button] 4 (#$ . 3682)]) #@120 Return the position at which BUTTON ends. This function only works when BUTTON is in the current buffer. (fn BUTTON) (defalias 'button-end #[257 "\300!\203\n\301!\207\302\303\"\206d\207" [overlayp overlay-end next-single-property-change button] 4 (#$ . 3969)]) #@129 Get the property of button BUTTON named PROP. This function only works when BUTTON is in the current buffer. (fn BUTTON PROP) (defalias 'button-get #[514 "\300!\203 \301\"\207\302!\203\303A\304!#\207\305!\203(\303\306!#\207\303\"\207" [overlayp overlay-get button--area-button-p get-text-property button--area-button-string markerp marker-buffer] 7 (#$ . 4245)]) #@122 Set BUTTON's PROP property to VAL. This function only works when BUTTON is in the current buffer. (fn BUTTON PROP VAL) (defalias 'button-put #[771 "\300\267\202\301\262\211\211\302N\206\303\304\"\262\262\202\303\305!\210\306!\203+\307#\207\310!\203@\311!\262\312\313G%\207\312\314T\315\"\206Je\316\315\"\206Rd$\207" [#s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (type 6 :type 6 category 27)) 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 button next-single-property-change] 9 (#$ . 4634)]) #@671 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. If BUTTON has a `button-data' value, call the function with this value instead of BUTTON. This function only works when BUTTON is in the current buffer. (fn BUTTON &optional USE-MOUSE-ACTION) (defalias 'button-activate #[513 "\211\203 \300\301\"\206\300\302\"\300\303\"\304!\203<\305 r\306\307\310\311\312!\313\"\314$\216\315\316\317!!!\210b\210\320\307!*\262\202C\206B!\207" [button-get mouse-action action button-data markerp internal--before-save-selected-window make-byte-code 0 "\301\300!\207" vconcat vector [internal--after-save-selected-window] 2 select-window display-buffer marker-buffer recenter] 11 (#$ . 5398)]) #@106 Return BUTTON's text label. This function only works when BUTTON is in the current buffer. (fn BUTTON) (defalias 'button-label #[257 "\300!\203\f\301\302!!\207\303\304!\305!\"\207" [button--area-button-p substring-no-properties button--area-button-string buffer-substring-no-properties button-start button-end] 5 (#$ . 6525)]) #@43 Return BUTTON's button-type. (fn BUTTON) (defalias 'button-type #[257 "\300\301\"\207" [button-get type] 4 (#$ . 6865)]) (put 'button-type 'byte-optimizer 'byte-compile-inline-expand) #@90 Return non-nil if BUTTON has button-type TYPE, or one of its subtypes. (fn BUTTON TYPE) (defalias 'button-has-type-p #[514 "\300\301\302\"\"\207" [button-type-subtype-p button-get type] 6 (#$ . 7057)]) #@126 Return non-nil if BUTTON is an area button. Such area buttons are used for buttons in the mode-line and header-line. (fn B) (defalias 'button--area-button-p #[257 "\211\242;\207" [] 2 (#$ . 7269)]) (defalias 'button--area-button-string 'car "Return area button BUTTON's button-string.") #@381 Make a button from BEG to END in the current buffer. The remaining arguments form a plist 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'. (fn BEG END &rest PROPERTIES) (defalias 'make-button #[642 "\300\301\302\301%\203\303\211A\262\242\211A\262\242#\210\202\304\305#\210\306\307\"\2041\304\307\310#\210\211\207" [make-overlay nil t button-put overlay-put button overlay-get category default-button] 9 (#$ . 7564)]) #@364 Insert a button with the label LABEL. The remaining arguments form a plist 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'. (fn LABEL &rest PROPERTIES) (defalias 'insert-button #[385 "\300\301`c\210`$\207" [apply make-button] 7 (#$ . 8216)]) #@1072 Make a button from BEG to END in the current buffer. The remaining arguments form a plist 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. If the property `button-data' is present, it will later be used as the argument for the `action' callback function instead of the default argument, which is the button itself. BEG can also be a string, in which case it is made into a button. Also see `insert-text-button'. (fn BEG END &rest PROPERTIES) (defalias 'make-text-button #[642 "\300\301\302\"\206\f\301\303\";\203\262\304\262G\262\305\306\"\203&\307\310!\210\211\2044\306\311BB\262\202K\211\306\240\210\211AA@\211\312N\206G\307\313\"\262\240\210\314\315\316CBB$\210\206]\207" [nil plist-member type :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] 11 (#$ . 8679)]) #@572 Insert a button with the label LABEL. The remaining arguments form a plist 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'. (fn LABEL &rest PROPERTIES) (defalias 'insert-text-button #[385 "\300\301`c\210`$\207" [apply make-text-button] 7 (#$ . 10240)]) #@170 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. (fn POS) (defalias 'button-at #[257 "\300\301\"\211\205\300\302\"\205\303!\203\211\202\304\305\"\207" [get-char-property button category overlayp copy-marker t] 5 (#$ . 10921)]) #@208 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. (fn POS &optional COUNT-CURRENT) (defalias 'next-button #[513 "\211\204\n\300\301\"\262dW\205\302!\206\303!\207" [next-single-char-property-change button button-at next-button] 5 (#$ . 11278)]) #@213 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. (fn POS &optional COUNT-CURRENT) (defalias 'previous-button #[513 "\300!\211\2033\203\211\202I\301\302!\303\"\262\300!\211\203+\302!U?\205.\211\202.\304!\262\202I\301\303\"\262\300!\206IeV\205I\300S!\207" [button-at previous-single-char-property-change button-start button previous-button] 7 (#$ . 11663)]) #@694 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. (fn &optional POS USE-MOUSE-ACTION) (defalias 'push-button #[512 "\250\204/\300!\203/\301!r\302\211@\262!q\210\303!\203'\304\303!\305\"\202-\306\307!\305\")\207\310\2065`!\211\205@\304\"\210\305\207" [eventp event-start window-buffer posn-string button-activate t push-button posn-point button-at] 6 (#$ . 12180) (byte-code "\250\203 `\202\nC\207" [last-command-event] 1)]) #@75 Evaluate BUTTON's `help-echo' property and return its value. (fn BUTTON) (defalias 'button--help-echo #[257 "\301\302\"\303!\203#\304!\203\202p\305 \306!#\262\202'\307\"\207" [lexical-binding button-get help-echo functionp overlayp selected-window button-start eval] 8 (#$ . 13238)]) #@512 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' property is displayed. Any button with a non-nil `skip' property is skipped over. If NO-ERROR, return nil if no further buttons could be found instead of erroring out. Returns the button found. (fn N &optional WRAP DISPLAY-MESSAGE NO-ERROR) (defalias 'forward-button #[1025 "\300\301U\203\302`!\211\262\203\211\303!b\210\202\211\301V\203\"\304\202#\305\301V\203-e\202.d\300\211\306 !\262 \307\262\211\204\207\301V\203\207\203\207`!\262\204\\\203\\\307\"\262\2039\303!b\210\204o`\262\202x`U\203x\307\262\310\311\"\2049S\262 \2029\266\211\204\240?\205\262\312\203\233\313\202\234\314!\202\262\205\247\315!\211\203\260\316\317\"\210\210\211\207" [nil 0 button-at button-start next-button previous-button abs t button-get skip user-error "No buttons!" "No more buttons" button--help-echo message "%s"] 12 (#$ . 13547) "p\nd\nd"]) #@512 Move to the Nth previous button, or Nth next 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' property is displayed. Any button with a non-nil `skip' property is skipped over. If NO-ERROR, return nil if no further buttons could be found instead of erroring out. Returns the button found. (fn N &optional WRAP DISPLAY-MESSAGE NO-ERROR) (defalias 'backward-button #[1025 "\300[$\207" [forward-button] 9 (#$ . 14709) "p\nd\nd"]) (provide 'button)