;;; dot-selection.el --- -*- lexical-binding: t; -*- ;;; Commentary: ;; Incremental narrowing in Emacs. ;;; Code: (elpaca-setup prescient (:require prescient) (:when-loaded (setq completion-styles '(prescient basic)) (setq prescient-filter-method '(literal regexp fuzzy)) (setq prescient-save-file (expand-file-name "prescient-save.el" dot-cache-dir)) (prescient-persist-mode))) (elpaca-setup (vertico :files (:defaults "extensions/*")) (:load-after prescient) (:when-loaded (setq vertico-previous-directory nil) (defun dot/vertico-backspace () "In Vertico file completion, backward kill sexp, delete char otherwise." (interactive) (if (not (and (active-minibuffer-window) minibuffer-completing-file-name)) (backward-delete-char 1) (setq vertico-previous-directory (concat (file-name-nondirectory (directory-file-name (minibuffer-contents))) "/")) (vertico-directory-delete-word 1))) (vertico-mode)) (defun dot/vertico-dired-goto-last-visited (&rest _) "Go to directory candidate that was last visited." (when minibuffer-completing-file-name (setq vertico--index (or (seq-position vertico--candidates vertico-previous-directory) (when (string= vertico-previous-directory "~/") (seq-position vertico--candidates (concat user-login-name "/"))) (if (= vertico--total 0) -1 0))) (setq vertico-previous-directory nil))) (advice-add 'vertico--update-candidates :after #'dot/vertico-dired-goto-last-visited)) (elpaca nil (setup vertico-mouse ; vertico-mouse.el is part of vertico (:load-after vertico) (:when-loaded (vertico-mouse-mode)))) (elpaca-setup vertico-prescient (:load-after vertico prescient) (:when-loaded (vertico-prescient-mode))) (elpaca-setup marginalia (:load-after vertico) (:when-loaded (setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light)) (marginalia-mode))) (elpaca-setup consult (:load-after vertico) (:when-loaded (setq consult-narrow-key (kbd "?")) (defun dot/consult-line-no-fuzzy () "Call consult-line without fuzzy matching." (interactive) (let ((prescient-filter-method (delete 'fuzzy (copy-tree prescient-filter-method)))) (consult-line))) (consult-customize dot/consult-line-no-fuzzy :prompt "Search: " consult-line-multi :prompt "Search: " :initial nil))) (elpaca-setup consult-flycheck (:load-after consult flycheck)) (elpaca-setup consult-project-extra (:load-after consult project) (:when-loaded (setq project-switch-commands 'consult-project-extra-find))) (provide 'dot-selection) ;;; dot-selection.el ends here