about summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2020-12-09T13·57+0100
committertazjin <mail@tazj.in>2020-12-09T14·09+0000
commit2485006197b4296f9d03f38a7b7e010949ff906b (patch)
tree2060cf473a9894eca827b768e8cc48ffcdd4efb5 /users
parent93f0ab5af86d8bb285a19de00766e9a4a184afdc (diff)
refactor(tazjin/emacs): Always use completing-read instead of ivy r/1994
This is a step towards making the completing-read framework more
easily interchangeable (I'm eyeing selectrum).

Change-Id: I7a066e212a5384136defbba8f11ef9ed57abf22e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2240
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Diffstat (limited to 'users')
-rw-r--r--users/tazjin/emacs/config/bindings.el2
-rw-r--r--users/tazjin/emacs/config/desktop.el6
-rw-r--r--users/tazjin/emacs/config/functions.el69
-rw-r--r--users/tazjin/emacs/config/init.el2
-rw-r--r--users/tazjin/emacs/default.nix1
5 files changed, 38 insertions, 42 deletions
diff --git a/users/tazjin/emacs/config/bindings.el b/users/tazjin/emacs/config/bindings.el
index a2799e8b9d29..7188bd3ef37b 100644
--- a/users/tazjin/emacs/config/bindings.el
+++ b/users/tazjin/emacs/config/bindings.el
@@ -15,7 +15,7 @@
 ;; Start eshell or switch to it if it's active.
 (global-set-key (kbd "C-x m") 'eshell)
 
-(global-set-key (kbd "C-x C-p") 'ivy-browse-repositories)
+(global-set-key (kbd "C-x C-p") 'browse-repositories)
 (global-set-key (kbd "M-g M-g") 'goto-line-with-feedback)
 
 ;; Miscellaneous editing commands
diff --git a/users/tazjin/emacs/config/desktop.el b/users/tazjin/emacs/config/desktop.el
index 38da8f75bc2b..393e703e477f 100644
--- a/users/tazjin/emacs/config/desktop.el
+++ b/users/tazjin/emacs/config/desktop.el
@@ -129,10 +129,10 @@
                          (interactive)
                          (exwm-workspace-switch-create ,i))))
 
-;; Launch applications / any command  with completion (dmenu style!)
+;; Launch applications / any command with completion (dmenu style!)
 (exwm-input-set-key (kbd "s-d") #'counsel-linux-app)
-(exwm-input-set-key (kbd "s-x") #'ivy-run-external-command)
-(exwm-input-set-key (kbd "s-p") #'ivy-password-store)
+(exwm-input-set-key (kbd "s-x") #'run-external-command)
+(exwm-input-set-key (kbd "s-p") #'password-store-lookup)
 
 ;; Add X11 terminal selector to a key
 (exwm-input-set-key (kbd "C-x t") #'ts/switch-to-terminal)
diff --git a/users/tazjin/emacs/config/functions.el b/users/tazjin/emacs/config/functions.el
index 9bb6772a27d9..9603af7dd6b9 100644
--- a/users/tazjin/emacs/config/functions.el
+++ b/users/tazjin/emacs/config/functions.el
@@ -59,9 +59,6 @@
            (buffer-name)
            require-final-newline))
 
-;; Helm includes a command to run external applications, which does
-;; not seem to exist in ivy. This implementation uses some of the
-;; logic from Helm to provide similar functionality using ivy.
 (defun list-external-commands ()
   "Creates a list of all external commands available on $PATH
   while filtering NixOS wrappers."
@@ -82,9 +79,9 @@
   '(("google-chrome" . "--force-device-scale-factor=1.4"))
 
   "This setting lets me add additional flags to specific commands
-  that are run interactively via `ivy-run-external-command'.")
+  that are run interactively via `run-external-command'.")
 
-(defun run-external-command (cmd)
+(defun run-external-command--handler (cmd)
   "Execute the specified command and notify the user when it
   finishes."
     (let* ((extra-flags (cdr (assoc cmd external-command-flag-overrides)))
@@ -96,46 +93,48 @@
          (when (string= event "finished\n")
            (message "%s process finished." process))))))
 
-(defun ivy-run-external-command ()
+(defun run-external-command ()
   "Prompts the user with a list of all installed applications and
   lets them select one to launch."
 
   (interactive)
   (let ((external-commands-list (list-external-commands)))
-    (ivy-read "Command:" external-commands-list
-              :require-match t
-              :history 'external-commands-history
-              :action #'run-external-command)))
-
-(defun ivy-password-store (&optional password-store-dir)
-  "Custom version of password-store integration with ivy that
-  actually uses the GPG agent correctly."
+    (run-external-command--handler
+     (completing-read "Command: " external-commands-list
+                      nil                             ;; predicate
+                      t                               ;; require-match
+                      nil                             ;; initial-input
+                      ;; hist
+                      'external-commands-history))))
+
+(defun password-store-lookup (&optional password-store-dir)
+  "Interactive password-store lookup function that actually uses
+the GPG agent correctly."
 
   (interactive)
-  (ivy-read "Copy password of entry: "
-            (password-store-list (or password-store-dir (password-store-dir)))
-            :require-match t
-            :keymap ivy-pass-map
-            :action (lambda (entry)
-                      (let ((password (auth-source-pass-get 'secret entry)))
-                        (password-store-clear)
-                        (kill-new password)
-                        (setq password-store-kill-ring-pointer kill-ring-yank-pointer)
-                        (message "Copied %s to the kill ring. Will clear in %s seconds."
-                                 entry (password-store-timeout))
-                        (setq password-store-timeout-timer
-                              (run-at-time (password-store-timeout)
-                                           nil 'password-store-clear))))))
-
-(defun ivy-browse-repositories ()
+
+  (let* ((entry (completing-read "Copy password of entry: "
+                   (password-store-list (or password-store-dir
+                                            (password-store-dir)))
+                   nil ;; predicate
+                   t   ;; require-match
+                   ))
+         (password (auth-source-pass-get 'secret entry)))
+    (password-store-clear)
+    (kill-new password)
+    (setq password-store-kill-ring-pointer kill-ring-yank-pointer)
+    (message "Copied %s to the kill ring. Will clear in %s seconds."
+             entry (password-store-timeout))
+    (setq password-store-timeout-timer
+          (run-at-time (password-store-timeout)
+                       nil 'password-store-clear))))
+
+(defun browse-repositories ()
   "Select a git repository and open its associated magit buffer."
 
   (interactive)
-  (ivy-read "Repository: "
-            (magit-list-repos)
-            :require-match t
-            :sort t
-            :action #'magit-status))
+  (magit-status
+   (completing-read "Repository: " (magit-list-repos))))
 
 (defun bottom-right-window-p ()
   "Determines whether the last (i.e. bottom-right) window of the
diff --git a/users/tazjin/emacs/config/init.el b/users/tazjin/emacs/config/init.el
index e09c6b247a49..af881f8f01a8 100644
--- a/users/tazjin/emacs/config/init.el
+++ b/users/tazjin/emacs/config/init.el
@@ -69,8 +69,6 @@
   (setq enable-recursive-minibuffers t)
   (setq ivy-use-virtual-buffers t))
 
-(use-package ivy-pass :after (ivy))
-
 (use-package ivy-prescient
   :after (ivy prescient)
   :config
diff --git a/users/tazjin/emacs/default.nix b/users/tazjin/emacs/default.nix
index fbbb12da5cbe..2cf69047e767 100644
--- a/users/tazjin/emacs/default.nix
+++ b/users/tazjin/emacs/default.nix
@@ -60,7 +60,6 @@ let
     idle-highlight-mode
     intero
     ivy
-    ivy-pass
     ivy-prescient
     jq-mode
     kotlin-mode