about summary refs log tree commit diff
path: root/users/tazjin/emacs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2023-08-26T22·12+0300
committertazjin <tazjin@tvl.su>2023-08-26T23·30+0000
commite78b79c6cd30098b45a8ac24f9e8af9d2962b0ad (patch)
tree72b8a051671726923efd0df89dbb3903f7b12def /users/tazjin/emacs
parent9afa1dacf88115adb5153486681745024eecfa95 (diff)
refactor(tazjin/emacs): ivy,swiper,counsel -> vertico,consult r/6526
vertico and consult are more modern versions of interactive narrowing
helpers, as those implemented by ivy and its related packages.

The primary differences (and what I care about here) is that they are
more focused on integration with the core Emacs primitives, rather
than building an ecosystem around them.

For example:

* vertico enhances `completing-read' and friends, but does not attempt
  to provide its own ecosystem of functions to *trigger* completions.

* vertico integrates with the default `completion-style' system,
  meaning that I can continue to use things like prescient without
  extra packages that integrate it with vertico

* consult does not rely on vertico or any other specific completion
  framework (such as counsel/swiper do with ivy), and simply
  implements its functions using completing-read

This reduces the overall amount of code in the dependency closure and
leads to a less special setup.

Functionality is basically equivalent, except for two things which
counsel came with that I will need to substitute:

* counsel-notmuch (actually this was a separate package, but I didn't
  use it much anyways, so just ignoring it for now)
* counsel-linux-app (opening desktop shortcuts, this I will need to make)

As a side note, consult notes "This package is a part of GNU Emacs",
but it doesn't seem to be the case.

Change-Id: Ia046b763bf3d401b505e0f6393cfe1ccd6f41293
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9155
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Diffstat (limited to 'users/tazjin/emacs')
-rw-r--r--users/tazjin/emacs/config/bindings.el3
-rw-r--r--users/tazjin/emacs/config/desktop.el3
-rw-r--r--users/tazjin/emacs/config/functions.el8
-rw-r--r--users/tazjin/emacs/config/init.el32
-rw-r--r--users/tazjin/emacs/config/mail-setup.el2
-rw-r--r--users/tazjin/emacs/default.nix7
6 files changed, 14 insertions, 41 deletions
diff --git a/users/tazjin/emacs/config/bindings.el b/users/tazjin/emacs/config/bindings.el
index 100fb92223..17740b1950 100644
--- a/users/tazjin/emacs/config/bindings.el
+++ b/users/tazjin/emacs/config/bindings.el
@@ -36,9 +36,6 @@
 ;; Open a file in project:
 (global-set-key (kbd "C-c f") 'project-find-file)
 
-;; Search in a project
-(global-set-key (kbd "C-c r g") 'rg-in-project)
-
 ;; Open a file via magit:
 (global-set-key (kbd "C-c C-f") #'magit-find-file-worktree)
 
diff --git a/users/tazjin/emacs/config/desktop.el b/users/tazjin/emacs/config/desktop.el
index dc009a5074..810521db18 100644
--- a/users/tazjin/emacs/config/desktop.el
+++ b/users/tazjin/emacs/config/desktop.el
@@ -220,7 +220,7 @@ in-progress."
 (exwm-input-set-key (kbd "C-c j") #'exwm-jump-to-buffer)
 
 ;; Launch applications / any command with completion (dmenu style!)
-(exwm-input-set-key (kbd "s-d") #'counsel-linux-app)
+;; (exwm-input-set-key (kbd "s-d") #'counsel-linux-app) ;; TODO(tazjin): completing-read version
 (exwm-input-set-key (kbd "s-x") #'run-external-command)
 (exwm-input-set-key (kbd "s-p") #'password-store-lookup)
 
@@ -376,7 +376,6 @@ in-progress."
 ;; Notmuch shortcuts as EXWM globals
 ;; (g m => gmail)
 (exwm-input-set-key (kbd "s-g m") #'notmuch)
-(exwm-input-set-key (kbd "s-g M") #'counsel-notmuch)
 
 (exwm-randr-enable)
 
diff --git a/users/tazjin/emacs/config/functions.el b/users/tazjin/emacs/config/functions.el
index ddb67f1bfd..02ccab87d1 100644
--- a/users/tazjin/emacs/config/functions.el
+++ b/users/tazjin/emacs/config/functions.el
@@ -281,14 +281,6 @@ by looking for a `Cargo.toml' file."
                              (magit-read-file-from-rev "HEAD" "Find file")
                              #'pop-to-buffer-same-window))
 
-(defun rg-in-project (&optional prefix)
-  "Interactively call ripgrep in the current project, or fall
-  back to ripgrep default behaviour if prefix is set."
-  (interactive "P")
-  (counsel-rg nil (unless prefix
-                    (if-let ((pr (project-current)))
-                        (project-root pr)))))
-
 (defun zoxide-open-project ()
   "Query Zoxide for paths, and open the result as appropriate (magit or dired)."
   (interactive)
diff --git a/users/tazjin/emacs/config/init.el b/users/tazjin/emacs/config/init.el
index b16635df86..7333a0b5df 100644
--- a/users/tazjin/emacs/config/init.el
+++ b/users/tazjin/emacs/config/init.el
@@ -33,9 +33,10 @@
   :hook ((prog-mode . company-mode))
   :config (setq company-tooltip-align-annotations t))
 
-(use-package counsel
-  :after (ivy)
-  :config (counsel-mode 1))
+(use-package consult
+  :bind
+  ("C-c r g" . consult-ripgrep)
+  ("C-s" . consult-line))
 
 (use-package dash)
 (use-package gruber-darker-theme)
@@ -50,18 +51,6 @@
 (use-package hydra)
 (use-package idle-highlight-mode :hook ((prog-mode . idle-highlight-mode)))
 
-(use-package ivy
-  :config
-  (ivy-mode 1))
-
-(use-package ivy-prescient
-  :after (ivy prescient)
-  :config
-  (ivy-prescient-mode)
-  ;; Fixes an issue with how regexes are passed to ripgrep from counsel,
-  ;; see raxod502/prescient.el#43
-  (setf (alist-get 'counsel-rg ivy-re-builders-alist) #'ivy--regex-plus))
-
 (use-package multiple-cursors)
 
 (use-package notmuch
@@ -79,18 +68,15 @@
   (pinentry-start))
 
 (use-package prescient
-  :after (ivy counsel)
-  :config (prescient-persist-mode))
+  :config
+  (prescient-persist-mode)
+  (setq completion-styles '(basic prescient)))
 
 (use-package rainbow-delimiters :hook (prog-mode . rainbow-delimiters-mode))
 (use-package rainbow-mode)
 (use-package s)
 (use-package string-edit-at-point)
 
-(use-package swiper
-  :after (counsel ivy)
-  :bind (("C-s" . swiper)))
-
 (use-package telephone-line) ;; configuration happens outside of use-package
 (use-package term-switcher)
 
@@ -205,6 +191,10 @@
 
 (use-package tvl)
 
+(use-package vertico
+  :config
+  (vertico-mode))
+
 (use-package web-mode)
 (use-package yaml-mode)
 (use-package zoxide)
diff --git a/users/tazjin/emacs/config/mail-setup.el b/users/tazjin/emacs/config/mail-setup.el
index 7fbece1b10..1d7ab6d0b0 100644
--- a/users/tazjin/emacs/config/mail-setup.el
+++ b/users/tazjin/emacs/config/mail-setup.el
@@ -1,8 +1,6 @@
 (require 'notmuch)
-(require 'counsel-notmuch)
 
 ;; (global-set-key (kbd "C-c m") 'notmuch-hello)
-;; (global-set-key (kbd "C-c C-m") 'counsel-notmuch)
 ;; (global-set-key (kbd "C-c C-e n") 'notmuch-mua-new-mail)
 
 (setq notmuch-cache-dir (format "%s/.cache/notmuch" (getenv "HOME")))
diff --git a/users/tazjin/emacs/default.nix b/users/tazjin/emacs/default.nix
index 4744226fc7..5b62574784 100644
--- a/users/tazjin/emacs/default.nix
+++ b/users/tazjin/emacs/default.nix
@@ -29,8 +29,7 @@ pkgs.makeOverridable
       clojure-mode
       cmake-mode
       company
-      counsel
-      counsel-notmuch
+      consult
       d-mode
       deft
       direnv
@@ -48,8 +47,6 @@ pkgs.makeOverridable
       ht
       hydra
       idle-highlight-mode
-      ivy
-      ivy-prescient
       jq-mode
       kotlin-mode
       kubernetes
@@ -76,7 +73,6 @@ pkgs.makeOverridable
       rust-mode
       sly
       string-edit-at-point
-      swiper
       telephone-line
       terraform-mode
       toml-mode
@@ -84,6 +80,7 @@ pkgs.makeOverridable
       undo-tree
       use-package
       uuidgen
+      vertico
       vterm
       web-mode
       websocket