dotfiles/emacs/.emacs.d/config/init-completion.el

94 lines
2.9 KiB
EmacsLisp
Raw Normal View History

2021-02-21 02:59:11 +00:00
;; -*- lexical-binding: t; -*-
;; Nicer minibuffer completion
;; First Selectrum, which provides the core incremental minibuffer completion engine
(use-package selectrum
:config
(selectrum-mode 1)
(leader-def-key "z" #'selectrum-repeat))
;; Then prescient, which adds the ability to sort and filter completions
(use-package selectrum-prescient
:after selectrum
:config
(selectrum-prescient-mode 1)
(prescient-persist-mode 1))
;; Marginalia adds annotations to completion candidates
(use-package marginalia
2021-02-20 23:23:04 +00:00
:demand t
:config
(marginalia-mode 1)
;; When using Selectrum, ensure that Selectrum is refreshed when cycling annotations.
(advice-add #'marginalia-cycle :after
(lambda ()
(when (bound-and-true-p selectrum-mode) (selectrum-exhibit))))
:general
(minibuffer-local-map "M-A" #'marginalia-cycle)
:custom
(marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)))
;; Embark adds context actions to completion candidates
(use-package embark
:config
2021-07-27 15:50:02 +00:00
(defun embark-which-key-indicator (map _target)
(which-key--show-keymap "Embark" map nil nil 'no-paging)
#'which-key--hide-popup-ignore-command)
:general
("M-o" #'embark-act)
('normal embark-collect-mode-map
2021-07-27 15:49:51 +00:00
"TAB" #'forward-button
"?" #'describe-mode
"A" #'embark-collect-direct-action-minor-mode
"S" #'tabulated-list-sort
"a" #'embark-act
"b" #'backward-button
"e" #'embark-export
"f" #'forward-button
"gr" #'revert-buffer
"n" #'next-line
"p" #'previous-line
"q" #'quit-window
"s" #'isearch-forward
"v" #'embark-collect-toggle-view
"z" #'embark-collect-zebra-minor-mode
"{" #'tabulated-list-narrow-current-column
"}" #'tabulated-list-widen-current-column
"<backtab>" #'backward-button)
:custom
2021-07-27 15:50:02 +00:00
(embark-prompter 'embark-keymap-prompter)
(embark-indicator 'embark-which-key-indicator))
;; Consult adds a bunch of completing-read based utilities
(use-package consult
2021-02-24 21:51:11 +00:00
:commands (consult-xref)
:init
(setq xref-show-xrefs-function #'consult-xref
xref-show-definitions-function #'consult-xref)
:custom
(consult-project-root-function #'projectile-project-root)
2021-02-24 22:10:00 +00:00
(consult-config '((consult-ripgrep :preview-key nil)
(consult-grep :preview-key nil)))
:general
2021-02-20 19:57:40 +00:00
([remap switch-to-buffer] #'consult-buffer)
2021-02-21 03:02:33 +00:00
([remap imenu] #'consult-imenu)
2021-02-24 22:10:00 +00:00
([remap projectile-ripgrep] #'consult-ripgrep)
([remap projectile-grep] #'consult-grep)
2021-02-21 03:02:33 +00:00
("C-c p" #'consult-yank))
2021-02-24 21:51:11 +00:00
(use-package consult-flycheck
:after flycheck
:general
(flycheck-command-map "!" #'consult-flycheck))
2021-02-24 22:10:00 +00:00
(use-package embark-consult
2021-02-26 15:29:10 +00:00
:defer 1)
2021-02-24 23:55:01 +00:00
;; Make grep-like embark collect buffers editable
(use-package wgrep
:general
(grep-mode-map "C-x C-q" #'wgrep-change-to-wgrep-mode))
2021-02-24 22:10:00 +00:00
(provide 'init-completion)