;; Time-stamp: <2022-07-28 14h06 CEST (radix)> ;; ----------------------------------------------------------------------------- ;; Vertico (use-package vertico :ensure t :bind (:map vertico-map ("" . vertico-insert)) :init (vertico-mode) (setq vertico-cycle t) (setq completion-styles '(substring))) (use-package orderless :ensure t :config (setq orderless-component-separator 'orderless-escapable-split-on-space completion-styles '(orderless basic) completion-category-overrides '((file (styles basic partial-completion))))) (use-package savehist :ensure t :init (savehist-mode)) (use-package emacs :init ;; Add prompt indicator to `completing-read-multiple'. (defun crm-indicator (args) (cons (concat "[CRM] " (car args)) (cdr args))) (advice-add #'completing-read-multiple :filter-args #'crm-indicator) ;; Grow and shrink minibuffer ;;(setq resize-mini-windows t) ;; Do not allow the cursor in the minibuffer prompt (setq minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)) (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) ;; Enable recursive minibuffers (setq enable-recursive-minibuffers t)) ;; ----------------------------------------------------------------------------- ;; Consult (use-package consult :ensure t :bind (;; C-c bindings (mode-specific-map) ("C-c h" . consult-history) ("C-c m" . consult-mode-command) ("C-c b" . consult-bookmark) ("C-c k" . consult-kmacro) ;; C-x bindings (ctl-x-map) ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command ("C-x b" . consult-buffer) ;; orig. switch-to-buffer ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame ;; Custom M-# bindings for fast register access ("M-#" . consult-register-load) ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) ("C-M-#" . consult-register) ;; Other custom bindings ("M-y" . consult-yank-pop) ;; orig. yank-pop (" a" . consult-apropos) ;; orig. apropos-command ;; M-g bindings (goto-map) ("M-g e" . consult-compile-error) ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck ;; ("C-s" . consult-line) ;; orig. goto-line ("M-g M-g" . consult-goto-line) ;; orig. goto-line ("M-g o" . consult-outline) ;; Alternative: consult-org-heading ("M-g m" . consult-mark) ("M-g k" . consult-global-mark) ("M-g i" . consult-imenu) ("M-g I" . consult-project-imenu) ;; M-s bindings (search-map) ("M-s f" . consult-find) ("M-s L" . consult-locate) ("C-c g" . consult-ripgrep) ("C-c G" . consult-git-grep) ("M-s l" . consult-line) ("M-s m" . consult-multi-occur) ("M-s k" . consult-keep-lines) ("M-s u" . consult-focus-lines) ;; Isearch integration ;; ("M-s e" . consult-isearch) :map isearch-mode-map ;; ("M-e" . consult-isearch) ;; orig. isearch-edit-string ;; ("M-s e" . consult-isearch) ;; orig. isearch-edit-string ("M-s l" . consult-line)) ;; needed by consult-line to detect isearch :init ;; Optionally configure the register formatting. This improves the register ;; preview for `consult-register', `consult-register-load', ;; `consult-register-store' and the Emacs built-ins. (setq register-preview-delay 0 register-preview-function #'consult-register-format) ;; Optionally tweak the register preview window. ;; This adds thin lines, sorting and hides the mode line of the window. (advice-add #'register-preview :override #'consult-register-window) ;; Use Consult to select xref locations with preview (setq xref-show-xrefs-function #'consult-xref xref-show-definitions-function #'consult-xref) :config (consult-customize consult-theme :preview-key '(:debounce 0.2 any) consult-ripgrep consult-git-grep consult-grep consult-bookmark consult-recent-file consult-xref consult--source-buffer consult--source-project-buffer consult--source-bookmark :preview-key (kbd "M-.")) (defun previous-history-or-next () (interactive) (if (string= "" (minibuffer-contents-no-properties)) (progn (previous-history-element 1) (end-of-line)) (vertico-next))) (defvar my-consult-line-map (let ((map (make-sparse-keymap))) (define-key map "\C-s" #'previous-history-or-next) map)) (consult-customize consult-line :keymap my-consult-line-map) ;; Optionally configure the narrowing key. ;; Both < and C-+ work reasonably well. (setq consult-narrow-key "<") ;; (kbd "C-+") ;; Optionally make narrowing help available in the minibuffer. ;; You may want to use `embark-prefix-help-command' or which-key instead. ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help) ;; Projectile integration (autoload 'projectile-project-root "projectile") (setq consult-project-function #'projectile-project-root) ;; Ues consult for capfs (setq completion-in-region-function #'consult-completion-in-region)) ;; ----------------------------------------------------------------------------- ;; Marginalia (use-package marginalia :ensure t :bind (:map minibuffer-local-map ("M-A" . marginalia-cycle)) :init (marginalia-mode)) ;; CTRLF (use-package ctrlf :ensure t :config (ctrlf-mode))