From 2485006197b4296f9d03f38a7b7e010949ff906b Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Wed, 9 Dec 2020 14:57:25 +0100 Subject: refactor(tazjin/emacs): Always use completing-read instead of ivy 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 Tested-by: BuildkiteCI --- users/tazjin/emacs/config/bindings.el | 2 +- users/tazjin/emacs/config/desktop.el | 6 +-- users/tazjin/emacs/config/functions.el | 69 +++++++++++++++++----------------- users/tazjin/emacs/config/init.el | 2 - users/tazjin/emacs/default.nix | 1 - 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 -- cgit 1.4.1