From c13b59395cb3f49149de5f57150bea4a7f4ef2ce Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Sat, 7 May 2022 10:00:04 +0300 Subject: [PATCH 1/7] bump: :completion vertico minad/consult@d30213aa2093 -> minad/consult@822928a86097 minad/marginalia@dbc37b373e73 -> minad/marginalia@26f2bd9ee7b6 minad/vertico@46e8e0565079 -> minad/vertico@cc5f5421c627 oantolin/embark@2890e535f55b -> oantolin/embark@d88478b45f2d oantolin/orderless@8f64537f556f -> oantolin/orderless@75eeae21971d - Remove everything related to `consult-completing-read-multiple` since the function has been deprecated upstream due to implementation issues Ref: minad/consult#567 Close: #6352 --- .../completion/vertico/autoload/vertico.el | 37 ------------------- modules/completion/vertico/config.el | 7 +--- modules/completion/vertico/packages.el | 14 +++---- modules/email/notmuch/config.el | 4 -- 4 files changed, 8 insertions(+), 54 deletions(-) diff --git a/modules/completion/vertico/autoload/vertico.el b/modules/completion/vertico/autoload/vertico.el index d72299679..08d06346c 100644 --- a/modules/completion/vertico/autoload/vertico.el +++ b/modules/completion/vertico/autoload/vertico.el @@ -206,43 +206,6 @@ targets." nil nil t (lambda (binding) (not (string-suffix-p "-argument" (cdr binding)))))))) -;;;###autoload -(defun +vertico/crm-select () - "Toggle selection of current candidate in `consult-completing-read-multiple'. -If the candidate has been selected, move the index up by one, to allow for quick -selection of multiple subsequent candidates." - (interactive) - (let* ((selected-p (get-text-property 0 'consult--crm-selected (vertico--candidate))) - (goto-idx (+ vertico--index (if selected-p 0 1)))) - (run-at-time 0 nil (cmd! (vertico--goto goto-idx) (vertico--exhibit)))) - (vertico-exit)) - -;;;###autoload -(defun +vertico/crm-select-keep-input () - "Like `+vertico/crm-select', but keeps the current minibuffer input." - (interactive) - (let* ((input (substring-no-properties (car vertico--input))) - (selected-p (get-text-property 0 'consult--crm-selected (vertico--candidate))) - (goto-idx (+ vertico--index (if selected-p 0 1)))) - (run-at-time 0 nil (cmd! (insert input) (vertico--exhibit) (vertico--goto goto-idx) (vertico--exhibit)))) - (vertico-exit)) - -;;;###autoload -(defun +vertico/crm-exit () - "Exit `consult-completing-read-multiple' session in a dwim way. -If there are no selected candidates, select the current candidate and exit. -If there are selected candidates, disregard the current candidate and exit." - (interactive) - (if (consult--crm-selected) - (progn - (when (minibuffer-contents) - (delete-minibuffer-contents) - (vertico--exhibit)) - (vertico--goto -1) - (vertico-exit)) - (run-at-time 0 nil #'vertico-exit) - (vertico-exit))) - ;;;###autoload (defun +vertico--consult--fd-builder (input) (pcase-let* ((cmd (split-string-and-unquote +vertico-consult-fd-args)) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index abba45bd2..1cdbaeca5 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -101,7 +101,6 @@ orderless." [remap switch-to-buffer-other-frame] #'consult-buffer-other-frame [remap yank-pop] #'consult-yank-pop [remap persp-switch-to-buffer] #'+vertico/switch-workspace-buffer) - (advice-add #'completing-read-multiple :override #'consult-completing-read-multiple) (advice-add #'multi-occur :override #'consult-multi-occur) :config (defadvice! +vertico--consult-recent-file-a (&rest _args) @@ -145,11 +144,7 @@ orderless." :category buffer :state ,#'consult--buffer-state :items ,(lambda () (mapcar #'buffer-name (org-buffer-list))))) - (add-to-list 'consult-buffer-sources '+vertico--consult-org-source 'append)) - (map! :map consult-crm-map - :desc "Select candidate" [tab] #'+vertico/crm-select - :desc "Select candidate and keep input" [backtab] #'+vertico/crm-select-keep-input - :desc "Enter candidates" "RET" #'+vertico/crm-exit)) + (add-to-list 'consult-buffer-sources '+vertico--consult-org-source 'append))) (use-package! consult-dir diff --git a/modules/completion/vertico/packages.el b/modules/completion/vertico/packages.el index 1484502c6..4cc58376c 100644 --- a/modules/completion/vertico/packages.el +++ b/modules/completion/vertico/packages.el @@ -4,19 +4,19 @@ (package! vertico :recipe (:host github :repo "minad/vertico" :files ("*.el" "extensions/*.el")) - :pin "46e8e0565079b7161ada4beb94c8938ee9c04bfb") + :pin "cc5f5421c6270b8fdd12265ccdaffc3cd297d0d8") -(package! orderless :pin "8f64537f556f26492fe5ee401d8d578d7d88684b") +(package! orderless :pin "75eeae21971d86b51a712ed8ecd6434463b2d866") -(package! consult :pin "d30213aa209391e03b1c1011df92d91a1fc5ef32") -(package! consult-dir :pin "08f543ae6acbfc1ffe579ba1d00a5414012d5c0b") +(package! consult :pin "822928a8609730e8c22e068b04d7908312706cfd") +(package! consult-dir :pin "d397ca6ea67af4d3c59a330a778affd825f0efd9") (when (featurep! :checkers syntax) (package! consult-flycheck :pin "9b40f136c017fadf6239d7602d16bf73b4ad5198")) -(package! embark :pin "2890e535f55b1f08f379fd761b263fa337a72185") -(package! embark-consult :pin "2890e535f55b1f08f379fd761b263fa337a72185") +(package! embark :pin "d88478b45f2d589339334dc8d40b07bce28aab0e") +(package! embark-consult :pin "d88478b45f2d589339334dc8d40b07bce28aab0e") -(package! marginalia :pin "dbc37b373e734269bd75d1763e7309863508bf10") +(package! marginalia :pin "26f2bd9ee7b63bcad6604108e2f565b34bc6083b") (package! wgrep :pin "f9687c28bbc2e84f87a479b6ce04407bb97cfb23") diff --git a/modules/email/notmuch/config.el b/modules/email/notmuch/config.el index a43db386b..c95e63d54 100644 --- a/modules/email/notmuch/config.el +++ b/modules/email/notmuch/config.el @@ -86,10 +86,6 @@ variable accordingly.") (advice-add #'notmuch-start-notmuch-sentinel :around #'+notmuch-dont-confirm-on-kill-process-a) - ;;HACK temporary fix until notmuch stops abusing the completing-read-multiple api upstream - (when (featurep! :completion vertico) - (advice-add #'notmuch-read-tag-changes :filter-return (lambda (x) (mapcar #'string-trim x)))) - ;; modeline doesn't have much use in these modes (add-hook! '(notmuch-show-mode-hook notmuch-tree-mode-hook From 08f32e6d0f0b4af5668de5f75294039898dca9cf Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Sat, 7 May 2022 10:31:02 +0300 Subject: [PATCH 2/7] tweak(vertico): improve org consult source - only add if :lang org is on - have a version that works before org is loaded --- modules/completion/vertico/config.el | 30 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 1cdbaeca5..a46dfed32 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -136,14 +136,30 @@ orderless." (consult-customize consult-theme :preview-key (list (kbd "C-SPC") :debounce 0.5 'any)) - (after! org + (when (featurep! :lang org) (defvar +vertico--consult-org-source - `(:name "Org" - :narrow ?o - :hidden t - :category buffer - :state ,#'consult--buffer-state - :items ,(lambda () (mapcar #'buffer-name (org-buffer-list))))) + (list :name "Org Buffer" + :category 'buffer + :narrow ?o + :hidden t + :face 'consult-buffer + :history 'buffer-name-history + :state #'consult--buffer-state + :new + (lambda (name) + (with-current-buffer (get-buffer-create name) + (insert "#+title: " name "\n\n") + (org-mode) + (consult--buffer-action (current-buffer)))) + :items + (lambda () + (mapcar #'buffer-name + (if (featurep 'org) + (org-buffer-list) + (seq-filter + (lambda (x) + (eq (buffer-local-value 'major-mode x) 'org-mode)) + (buffer-list))))))) (add-to-list 'consult-buffer-sources '+vertico--consult-org-source 'append))) From 1f25c3510f184d7a186492d35dee94683de1fd9e Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Sat, 7 May 2022 10:40:30 +0300 Subject: [PATCH 3/7] feat(vertico): add workarounds for problematic commands --- modules/completion/vertico/config.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index a46dfed32..91c5d4286 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -29,7 +29,14 @@ overrides `completion-styles' during company completion sessions.") ;; cleans ~/foo/bar/// to /, and ~/foo/bar/~/ to ~/. (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy) (add-hook 'minibuffer-setup-hook #'vertico-repeat-save) - (map! :map vertico-map "DEL" #'vertico-directory-delete-char)) + (map! :map vertico-map "DEL" #'vertico-directory-delete-char) + + ;; These commands are problematic and automatically show the *Completions* buffer + (advice-add #'tmm-add-prompt :after #'minibuffer-hide-completions) + (defadvice! +vertico--suppress-completion-help-a (fn &rest args) + :around #'ffap-menu-ask + (letf! ((#'minibuffer-completion-help #'ignore)) + (apply fn args)))) (use-package! orderless From 4cecc654b959f9d9fa024b939a6df3e07ce780c0 Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Sat, 7 May 2022 12:36:06 +0300 Subject: [PATCH 4/7] fix(vertico): consult tofu regex range --- modules/completion/vertico/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 91c5d4286..910e4af6b 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -54,7 +54,7 @@ orderless." (cond ;; Ensure $ works with Consult commands, which add disambiguation suffixes ((string-suffix-p "$" pattern) - `(orderless-regexp . ,(concat (substring pattern 0 -1) "[\x100000-\x10FFFD]*$"))) + `(orderless-regexp . ,(concat (substring pattern 0 -1) "[\x200000-\x300000]*$"))) ;; Ignore single ! ((string= "!" pattern) `(orderless-literal . "")) ;; Without literal From a8433e058174f59ac63be0dd813430dacf182dfa Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Thu, 26 May 2022 00:51:14 +0300 Subject: [PATCH 5/7] bump: :completion vertico minad/consult@822928a86097 -> minad/consult@b15c81f7766a minad/vertico@cc5f5421c627 -> minad/vertico@e5935b5bbfc0 oantolin/embark@d88478b45f2d -> oantolin/embark@97270d725761 --- modules/completion/vertico/packages.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/completion/vertico/packages.el b/modules/completion/vertico/packages.el index 4cc58376c..e81d2dbac 100644 --- a/modules/completion/vertico/packages.el +++ b/modules/completion/vertico/packages.el @@ -4,17 +4,17 @@ (package! vertico :recipe (:host github :repo "minad/vertico" :files ("*.el" "extensions/*.el")) - :pin "cc5f5421c6270b8fdd12265ccdaffc3cd297d0d8") + :pin "e5935b5bbfc0d820c54ed1ad52e36e8c48248fd7") (package! orderless :pin "75eeae21971d86b51a712ed8ecd6434463b2d866") -(package! consult :pin "822928a8609730e8c22e068b04d7908312706cfd") +(package! consult :pin "b15c81f7766a8981f2f022fc47bbeb7000696caf") (package! consult-dir :pin "d397ca6ea67af4d3c59a330a778affd825f0efd9") (when (featurep! :checkers syntax) (package! consult-flycheck :pin "9b40f136c017fadf6239d7602d16bf73b4ad5198")) -(package! embark :pin "d88478b45f2d589339334dc8d40b07bce28aab0e") -(package! embark-consult :pin "d88478b45f2d589339334dc8d40b07bce28aab0e") +(package! embark :pin "97270d725761ee02db461b45b18ec16ae31f203e") +(package! embark-consult :pin "97270d725761ee02db461b45b18ec16ae31f203e") (package! marginalia :pin "26f2bd9ee7b63bcad6604108e2f565b34bc6083b") From 7ed1f96b0b2f1e82241df9775a270d549c15000b Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Thu, 26 May 2022 01:02:18 +0300 Subject: [PATCH 6/7] feat(vertico): add crm indicator --- modules/completion/vertico/config.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 910e4af6b..0620a0bc1 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -15,6 +15,15 @@ overrides `completion-styles' during company completion sessions.") (use-package! vertico :hook (doom-first-input . vertico-mode) + :init + (defadvice! +vertico-crm-indicator-a (args) + :filter-args #'completing-read-multiple + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) :config (setq vertico-resize nil vertico-count 17 From ebbebc53a6a01800b186e6067b4f923cd90797c7 Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Thu, 26 May 2022 01:16:32 +0300 Subject: [PATCH 7/7] tweak(vertico): add basic completion style fallback This is now the recommended configuration, see the referenced issue. Ref: oantolin/orderless#111 --- modules/completion/vertico/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 0620a0bc1..954bc0e51 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -86,7 +86,7 @@ orderless." +vertico-basic-remote-try-completion +vertico-basic-remote-all-completions "Use basic completion on remote files only")) - (setq completion-styles '(orderless) + (setq completion-styles '(orderless basic) completion-category-defaults nil ;; note that despite override in the name orderless can still be used in ;; find-file etc.