;;; syd-completion.el -*- lexical-binding: t; -*- (use-package emacs :custom ;; Allow the opening of new minibuffers from inside existing minibuffers. ((enable-recursive-minibuffers t) ;; Hide commands in M-x which do not work in the current mode. (read-extended-command-predicate #'command-completion-default-include-p)) :config ;; Disable blinking cursor. Aesthetically, I personally don't fancy it; ;; technically, it doesn't play well with `evil-terminal-cursor-changer'. (blink-cursor-mode -1)) ;; Consult adds various search and navigation tools using Emacs' completing-read ;; function; i.e., in our case, Vertico. (use-package consult :defer t) ;; Vertico is a simple completion engine that replaces Emacs' built-in ;; completion engine, achieving Just Works™ compatibility. This is in contrast ;; to e.g. Helm and Ivy, which spawn ecosystems orthogonal to Emacs, and ;; diametrically-opposed to each other. (use-package vertico :hook (on-first-input . vertico-mode) :general (:keymaps 'vertico-map "DEL" #'vertico-directory-delete-char "C-SPC" #'+vertico/embark-preview "C-j" #'vertico-next "C-k" #'vertico-previous "C-M-j" #'vertico-next-group "C-M-k" #'vertico-previous-group) :config (setq-default completion-in-region-function #'consult-completion-in-region) ;; Cleans up path when moving directories with shadowed paths syntax, e.g. ;; cleans ~/foo/bar/// to /, and ~/foo/bar/~/ to ~/. (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy)) ;; Orderless provides a completion style that divides the pattern into ;; space-separated components, and matches candidates that match all of the ;; components in any order. Each component can match in any one of several ;; ways: literally, as a regexp, as an initialism, in the flex style, or as ;; multiple word prefixes. By default, regexp and literal matches are enabled. (use-package orderless :custom ((completion-styles '(orderless basic)) (completion-category-overrides '((file (styles basic partial-completion)))))) (provide 'syd-completion)