summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-05-18 18:47:18 +0200
committerMartin Polden <mpolden@mpolden.no>2023-05-18 21:45:25 +0200
commitf9fe4137eab1f2b98724c5237c4cce794bbc3510 (patch)
tree3159bc4397a87553d0b851f43b931efb91decf2b
parenta68aec08f47e4200cd5d3c7d81cb220b74a4c3c6 (diff)
vertico: replace amx, ivy and consult
-rw-r--r--.gitignore3
-rw-r--r--init.el4
-rw-r--r--lisp/init-amx.el12
-rw-r--r--lisp/init-counsel.el12
-rw-r--r--lisp/init-ivy.el24
-rw-r--r--lisp/init-vertico.el45
6 files changed, 49 insertions, 51 deletions
diff --git a/.gitignore b/.gitignore
index 45a3344..3f16565 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,3 +107,6 @@ tutorial/
# native-comp
/eln-cache/
+
+# savehist
+/history
diff --git a/init.el b/init.el
index d598dd7..e44e104 100644
--- a/init.el
+++ b/init.el
@@ -35,14 +35,12 @@
(mpolden/maybe-require 'init-flyspell)
;; navigation
-(mpolden/maybe-require 'init-amx)
-(mpolden/maybe-require 'init-counsel)
(mpolden/maybe-require 'init-dired)
(mpolden/maybe-require 'init-grep)
(mpolden/maybe-require 'init-ibuffer)
-(mpolden/maybe-require 'init-ivy)
(mpolden/maybe-require 'init-project)
(mpolden/maybe-require 'init-recentf)
+(mpolden/maybe-require 'init-vertico)
;; clients
(mpolden/maybe-require 'init-eglot)
diff --git a/lisp/init-amx.el b/lisp/init-amx.el
deleted file mode 100644
index 18b5728..0000000
--- a/lisp/init-amx.el
+++ /dev/null
@@ -1,12 +0,0 @@
-;;; init-amx.el --- configure a better M-x -*- lexical-binding:t -*-
-;;; Commentary:
-;;; Code:
-
-(use-package amx
- :ensure t
- :config
- (amx-mode 1))
-
-(provide 'init-amx)
-
-;;; init-amx.el ends here
diff --git a/lisp/init-counsel.el b/lisp/init-counsel.el
deleted file mode 100644
index dc081c8..0000000
--- a/lisp/init-counsel.el
+++ /dev/null
@@ -1,12 +0,0 @@
-;;; init-counsel.el --- improve ivy integration -*- lexical-binding:t -*-
-;;; Commentary:
-;;; Code:
-
-(use-package counsel
- :ensure t
- :bind (("M-x" . counsel-M-x) ;; uses amx when present
- ("C-c i" . counsel-imenu)))
-
-(provide 'init-counsel)
-
-;;; init-counsel.el ends here
diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el
deleted file mode 100644
index 55b60b2..0000000
--- a/lisp/init-ivy.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;;; init-ivy.el --- configure ivy -*- lexical-binding:t -*-
-;;; Commentary:
-;;; Code:
-
-;; ivy uses flx sorting if it's installed
-(use-package flx
- :ensure t)
-
-(use-package ivy
- :ensure t
- :diminish ivy-mode
- :init
- ;; use fuzzy matching by default
- (setq ivy-re-builders-alist '((t . ivy--regex-fuzzy)))
-
- ;; allow selecting literal input
- (setq ivy-use-selectable-prompt t)
-
- :config
- (ivy-mode 1))
-
-(provide 'init-ivy)
-
-;;; init-ivy.el ends here
diff --git a/lisp/init-vertico.el b/lisp/init-vertico.el
new file mode 100644
index 0000000..9cea2fd
--- /dev/null
+++ b/lisp/init-vertico.el
@@ -0,0 +1,45 @@
+;;; init-vertico.el --- a better completion ui -*- lexical-binding:t -*-
+;;; Commentary:
+;;; Code:
+
+;; save minibuffer history so that vertico can use it for sorting
+(use-package savehist
+ :config
+ (savehist-mode 1))
+
+;; enhanced search and navigation commands
+(use-package consult
+ :ensure t
+ :bind (("C-c i" . consult-imenu)
+ ("C-c I" . consult-imenu-multi)))
+
+;; completion style providing fuzzy matching
+(use-package orderless
+ :ensure t
+ :init
+ ;; https://github.com/minad/vertico/blob/c36ad0c9471010a0c160268cc6581edf4959e2d3/README.org#configuration
+ (setq orderless-matching-styles '(orderless-flex)
+ completion-styles '(orderless basic)
+ completion-category-defaults nil
+ completion-category-overrides '((file (styles partial-completion)))))
+
+;; a better completion ui
+(use-package vertico
+ :ensure t
+ :config
+ (vertico-mode 1))
+
+;; make directory navigation behave like ido
+;; https://github.com/minad/vertico/blob/c36ad0c9471010a0c160268cc6581edf4959e2d3/README.org#extensions
+(use-package vertico-directory
+ :ensure nil
+ :after vertico
+ :bind (:map vertico-map
+ ("RET" . vertico-directory-enter)
+ ("DEL" . vertico-directory-delete-char)
+ ("M-DEL" . vertico-directory-delete-word))
+ :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))
+
+(provide 'init-vertico)
+
+;;; init-vertico.el ends here