Function: ebut:get
ebut:get is a byte-compiled function defined in hbut.el.
Signature
(ebut:get &optional LBL-KEY BUFFER KEY-SRC START-DELIM END-DELIM)
Documentation
Return explicit Hyperbole button symbol given by LBL-KEY and BUFFER.
KEY-SRC is given when retrieving global buttons and is the full source pathname. START-DELIM and END-DELIM are strings that override default button delimiters.
Retrieve button data, convert into a button object and return a symbol which references the button.
All arguments are optional. When none are given, return a symbol for the button that point is within. BUFFER defaults to the current buffer.
Return nil if no matching button is found.
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hbut.el
(defun ebut:get (&optional lbl-key buffer key-src start-delim end-delim)
"Return explicit Hyperbole button symbol given by LBL-KEY and BUFFER.
KEY-SRC is given when retrieving global buttons and is the full
source pathname. START-DELIM and END-DELIM are strings that
override default button delimiters.
Retrieve button data, convert into a button object and return a symbol
which references the button.
All arguments are optional. When none are given, return a symbol for
the button that point is within. BUFFER defaults to the current
buffer.
Return nil if no matching button is found."
(hattr:clear 'hbut:current)
(save-excursion
(let (but-data
key-dir
key-file
lbl-end
lbl-key-and-pos
lbl-start)
(unless lbl-key
(setq lbl-key-and-pos (ebut:label-p nil start-delim end-delim t)
lbl-key (nth 0 lbl-key-and-pos)
lbl-start (nth 1 lbl-key-and-pos)
lbl-end (nth 2 lbl-key-and-pos)))
(when buffer
(if (bufferp buffer)
(set-buffer buffer)
(error "(ebut:get): Invalid buffer argument: %s" buffer)))
(when (not key-src)
(when (not (equal lbl-key (ebut:label-p nil start-delim end-delim)))
(goto-char (point-min))
(ebut:next-occurrence lbl-key))
(when (setq key-src (ebut:to-key-src 'full))
;; `ebut:to-key-src' sets current buffer to key-src buffer.
(setq buffer (current-buffer))))
(when (and (stringp lbl-key) key-src)
(when (stringp key-src)
(setq key-dir (file-name-directory key-src)
key-file (file-name-nondirectory key-src)))
(setq but-data (and key-src
(hbdata:get-entry lbl-key (or key-file key-src)
key-dir)))
(when but-data
(hattr:set 'hbut:current 'lbl-key lbl-key)
(when lbl-start
(hattr:set 'hbut:current 'lbl-start lbl-start))
(when lbl-end
(hattr:set 'hbut:current 'lbl-end lbl-end))
(hattr:set 'hbut:current 'loc key-src)
(hattr:set 'hbut:current 'categ 'explicit)
(hattr:set 'hbut:current 'action nil)
(hattr:set 'hbut:current 'actype
(intern (hbdata:actype but-data)))
(hattr:set 'hbut:current 'args (hbdata:args but-data))
(hattr:set 'hbut:current 'creator (hbdata:creator but-data))
(hattr:set 'hbut:current
'create-time (hbdata:create-time but-data))
(hattr:set 'hbut:current
'modifier (hbdata:modifier but-data))
(hattr:set 'hbut:current
'mod-time (hbdata:mod-time but-data))
'hbut:current)))))