2022-09-24 17:33:32 -03:00
|
|
|
;;; completion/corfu/autoload.el -*- lexical-binding: t; -*-
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun +corfu-move-to-minibuffer ()
|
2024-02-04 17:17:13 -03:00
|
|
|
"Move the current list of candidates to your choice of minibuffer completion UI."
|
2022-09-24 17:33:32 -03:00
|
|
|
(interactive)
|
2024-02-04 17:17:13 -03:00
|
|
|
(pcase completion-in-region--data
|
|
|
|
(`(,beg ,end ,table ,pred ,extras)
|
|
|
|
(let ((completion-extra-properties extras)
|
|
|
|
completion-cycle-threshold completion-cycling)
|
|
|
|
(cond ((and (modulep! :completion vertico)
|
|
|
|
(fboundp #'consult-completion-in-region))
|
|
|
|
(consult-completion-in-region beg end table pred))
|
|
|
|
((and (modulep! :completion ivy)
|
|
|
|
(fboundp #'ivy-completion-in-region))
|
|
|
|
(ivy-completion-in-region (marker-position beg) (marker-position end) table pred))
|
|
|
|
;; Helm is special and wants to _wrap_ `completion--in-region'
|
|
|
|
;; instead of replacing it in `completion-in-region-function'.
|
|
|
|
((and (modulep! :completion helm)
|
|
|
|
(fboundp #'helm--completion-in-region)
|
|
|
|
(advice-member-p #'helm--completion-in-region #'completion--in-region))
|
|
|
|
;; Important: `completion-in-region-function' is set to corfu at
|
|
|
|
;; this moment, so `completion-in-region' (single -) doesn't work.
|
|
|
|
(completion--in-region beg end table pred))
|
|
|
|
;; Ido doesn't implement `completion-in-region', and its
|
|
|
|
;; `completing-read' only accepts a plain list of strings as table,
|
|
|
|
;; so there's not much we can do with it.
|
|
|
|
(t (error "No minibuffer completion UI available for moving to!")))))))
|
2023-10-29 14:31:13 -03:00
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun +corfu-smart-sep-toggle-escape ()
|
|
|
|
"Insert `corfu-separator' or toggle escape if it's already there."
|
|
|
|
(interactive)
|
|
|
|
(cond ((and (char-equal (char-before) corfu-separator)
|
|
|
|
(char-equal (char-before (1- (point))) ?\\))
|
|
|
|
(save-excursion (delete-char -2)))
|
|
|
|
((char-equal (char-before) corfu-separator)
|
|
|
|
(save-excursion (backward-char 1)
|
|
|
|
(insert-char ?\\)))
|
|
|
|
(t
|
|
|
|
;; Without this corfu quits immediately.
|
|
|
|
(setq this-command #'corfu-insert-separator)
|
|
|
|
(call-interactively #'corfu-insert-separator))))
|
2024-02-23 10:53:11 -06:00
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun +corfu-in-doc-or-comment-p (_sym)
|
|
|
|
"Return non-nil if point is in a docstring or comment."
|
|
|
|
(or (nth 4 (syntax-ppss))
|
|
|
|
(when-let ((faces '(font-lock-comment-face
|
|
|
|
font-lock-doc-face
|
|
|
|
tree-sitter-hl-face:doc
|
|
|
|
tree-sitter-hl-face:comment))
|
|
|
|
(fs (get-text-property (point) 'face)))
|
|
|
|
(if (listp fs)
|
|
|
|
(cl-loop for f in fs
|
|
|
|
if (memq f faces)
|
|
|
|
return t)
|
|
|
|
(memq fs faces)))))
|