Files
.emacs.d/modules/editor/siren-vertico.el

85 lines
2.4 KiB
EmacsLisp

;;; siren-vertico.el --- jimeh's Emacs Siren: vertico configuration.
;;; Commentary:
;; Basic configuration for vertico.
;;; Code:
(use-package vertico
:demand t
:custom
(vertico-count 16)
(vertico-cycle t)
(vertico-resize nil)
(enable-recursive-minibuffers t)
(read-extended-command-predicate #'command-completion-default-include-p)
:preface
(defun siren-crm-indicator (args)
(cons (concat "[CRM] " (car args)) (cdr args)))
:config
(vertico-mode +1)
(advice-add #'completing-read-multiple :filter-args #'siren-crm-indicator))
(use-package vertico-mouse
:straight vertico
:config
(vertico-mouse-mode +1))
(use-package vertico-repeat
:straight vertico
:general
("C-c C-v" 'vertico-repeat))
(use-package vertico-directory
:straight vertico
:demand t
:general
(:keymaps 'vertico-map
"C-l" 'vertico-directory-up)
:preface
;; Hacky minor-mode to toggle vertico-directory features on and off.
(define-minor-mode vertico-directory-mode
"Remap vertico keybindings to handle files/folders better."
:global t
(let ((map vertico-map))
(if vertico-directory-mode
(progn
(add-hook 'rfn-eshadow-update-overlay-hook
'vertico-directory-tidy)
(define-key map (kbd "RET") 'vertico-directory-enter)
(define-key map (kbd "DEL") 'vertico-directory-delete-char)
(define-key map (kbd "M-DEL") 'vertico-directory-delete-word))
(progn
(remove-hook 'rfn-eshadow-update-overlay-hook
'vertico-directory-tidy)
(define-key map (kbd "RET") 'vertico-exit)
(define-key map (kbd "DEL") 'backward-delete-char)
(define-key map (kbd "M-DEL") 'backward-kill-word)))))
:init
(with-eval-after-load 'projectile
;; Hackily disable vertico-directory-mode when completing things for
;; projectile. This avoids breaking projectile-switch-project command.
(defun siren-vertico-projectile-completing-read (orig-fun &rest args)
(if vertico-directory-mode
(progn
(vertico-directory-mode -1)
(unwind-protect
(apply orig-fun args)
(vertico-directory-mode +1)))
(apply orig-fun args)))
(advice-add 'projectile-completing-read :around
'siren-vertico-projectile-completing-read))
:config
(vertico-directory-mode +1))
(provide 'siren-vertico)
;;; siren-vertico.el ends here