Function: hargs:completion
hargs:completion is an interactive and byte-compiled function defined
in hargs.el.
Signature
(hargs:completion &optional NO-INSERT)
Documentation
If in the completions buffer, return completion at point.
Also insert unless optional NO-INSERT is non-nil. Insert in minibuffer if active or in other window if minibuffer is inactive.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hargs.el
(defun hargs:completion (&optional no-insert)
"If in the completions buffer, return completion at point.
Also insert unless optional NO-INSERT is non-nil.
Insert in minibuffer if active or in other window if minibuffer is inactive."
(interactive '(nil))
(when (or (string-match "[* ]Completions\\*\\'" (buffer-name))
(eq major-mode 'completion-mode)
(and (boundp 'which-key--buffer)
(eq (window-buffer action-key-depress-window) which-key--buffer)
(eq (window-buffer action-key-release-window) which-key--buffer)))
(let ((opoint (point))
(owind (selected-window)))
(when (re-search-backward "^\\|\t\\| [ \t]" nil t)
(let ((insert-window
(cond ((> (minibuffer-depth) 0)
(minibuffer-window))
((not (eq (selected-window) (next-window nil)))
(next-window nil))))
(bury-completions)
(entry))
(skip-chars-forward " \t")
(when (and insert-window
;; Allow single spaces in the middle of completions
;; since completions always end with either a tab,
;; newline or two whitespace characters.
(looking-at
"[^ \t\n]+\\( [^ \t\n]+\\)*\\( [ \t\n]\\|[\t\n]\\|\\'\\)"))
(setq entry (hypb:get-completion))
(select-window insert-window)
(let ((str (or hargs:string-to-complete
(buffer-substring
(point)
(save-excursion (beginning-of-line)
(point))))))
(cond
((and (eq (selected-window) (minibuffer-window)))
(cond ((string-match (concat
(regexp-quote entry)
"\\'")
str)
;; If entry matches tail of minibuffer
;; prefix already, then return minibuffer
;; contents as the entry.
(setq entry str))
;;
((string-match "[~/][^/]*\\'" str)
;; file or directory entry
(setq entry
(concat
(substring
str 0
(1+ (match-beginning 0)))
entry))))
(or no-insert
(when entry
(if (eq insert-window (minibuffer-window))
(delete-minibuffer-contents)
(erase-buffer))
(insert entry))))
;; In buffer, non-minibuffer completion.
;; Only insert entry if last buffer line does
;; not end in entry.
(no-insert)
((or (string-match
(concat (regexp-quote entry) "\\'") str)
(null entry))
(setq bury-completions t))
(t (insert entry)))))
(select-window owind) (goto-char opoint)
(when bury-completions
(bury-buffer nil)
(delete-window))
entry)))))