emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/consult 8e9d5e7358 1/2: Deprecate consult-completing-re


From: ELPA Syncer
Subject: [elpa] externals/consult 8e9d5e7358 1/2: Deprecate consult-completing-read-multiple (See #567)
Date: Tue, 3 May 2022 12:57:24 -0400 (EDT)

branch: externals/consult
commit 8e9d5e73582a38c1c48d5d392c42870aac1e9abf
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Deprecate consult-completing-read-multiple (See #567)
    
    Redirect back to the default implementation.
---
 CHANGELOG.org        |   1 +
 consult-selectrum.el |   9 ---
 consult.el           | 169 ++-------------------------------------------------
 3 files changed, 6 insertions(+), 173 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index 0c18b8bbc3..8155aa623c 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -6,6 +6,7 @@
 
 - Bugfixes
 - Removed obsolete =consult-recent-file-filter= and 
=consult-preview-excluded-hooks=
+- Deprecate =consult-completing-read-multiple=. See #567 for details.
 
 * Version 0.17 (2022-04-22)
 
diff --git a/consult-selectrum.el b/consult-selectrum.el
index d4c2ed0443..15ca6c5f7d 100644
--- a/consult-selectrum.el
+++ b/consult-selectrum.el
@@ -86,17 +86,8 @@ SPLIT is the splitter function."
      selectrum-highlight-candidates-function
      (consult-selectrum--split-wrap selectrum-highlight-candidates-function 
split))))
 
-(defun consult-selectrum--crm-adv (&rest args)
-  "Setup crm for Selectrum given ARGS."
-  (consult--minibuffer-with-setup-hook
-      (lambda ()
-        (when selectrum-is-active
-          (setq-local selectrum-default-value-format nil)))
-    (apply args)))
-
 (add-hook 'consult--completion-candidate-hook #'consult-selectrum--candidate)
 (add-hook 'consult--completion-refresh-hook #'consult-selectrum--refresh)
-(advice-add #'consult-completing-read-multiple :around 
#'consult-selectrum--crm-adv)
 (advice-add #'consult--completion-filter :around 
#'consult-selectrum--filter-adv)
 (advice-add #'consult--split-setup :around 
#'consult-selectrum--split-setup-adv)
 (define-key consult-async-map [remap selectrum-insert-current-candidate] 
'selectrum-next-page)
diff --git a/consult.el b/consult.el
index 535792a35b..c98d09183f 100644
--- a/consult.el
+++ b/consult.el
@@ -324,11 +324,6 @@ The dynamically computed arguments are appended."
 Each element of the list must have the form '(char name handler)."
   :type '(repeat (list character string function)))
 
-(defcustom consult-crm-prefix
-  (cons "  " (propertize "✓ " 'face 'success))
-  "Prefix for `consult-completing-read-multiple' candidates."
-  :type '(cons (string :tag "Not selected") (string :tag "Selected")))
-
 ;;;; Faces
 
 (defgroup consult-faces nil
@@ -405,10 +400,6 @@ Used by `consult-completion-in-region', `consult-yank' and 
`consult-history'.")
   '((t))
   "Face used to highlight buffers in `consult-buffer'.")
 
-(defface consult-crm-selected
-  '((t :inherit secondary-selection))
-  "Face used to highlight selected items in 
`consult-completing-read-multiple'.")
-
 (defface consult-line-number-prefix
   '((t :inherit line-number))
   "Face used to highlight line number prefixes.")
@@ -2031,9 +2022,6 @@ argument list :command and a highlighting function 
:highlight."
     map)
   "Keymap added for commands with asynchronous candidates.")
 
-(defvar consult-crm-map (make-sparse-keymap)
-  "Keymap added by `consult-completing-read-multiple'.")
-
 (defvar consult-narrow-map
   (let ((map (make-sparse-keymap)))
     (define-key map " " consult--narrow-space)
@@ -2656,159 +2644,12 @@ These configuration options are supported:
 
 ;;;;; Function: consult-completing-read-multiple
 
-(defun consult--crm-selected ()
-  "Return selected candidates from `consult-completing-read-multiple'."
-  (when (eq minibuffer-history-variable 'consult--crm-history)
-    (mapcar
-     (apply-partially #'get-text-property 0 'consult--crm-selected)
-     (all-completions
-      "" minibuffer-completion-table
-      (lambda (cand)
-        (and (stringp cand)
-             (get-text-property 0 'consult--crm-selected cand)
-             (or (not minibuffer-completion-predicate)
-                 (funcall minibuffer-completion-predicate cand))))))))
-
 ;;;###autoload
-(defun consult-completing-read-multiple (prompt table &optional
-                                                pred require-match 
initial-input
-                                                hist def inherit-input-method)
-  "Enhanced replacement for `completing-read-multiple'.
-See `completing-read-multiple' for the documentation of the arguments."
-  (let* ((orig-items (all-completions "" table pred))
-         (prefixed-orig-items
-          (funcall
-           (if-let (prefix (car consult-crm-prefix))
-               (apply-partially #'mapcar (lambda (item) (propertize item 
'line-prefix prefix)))
-             #'identity)
-           orig-items))
-         (format-item
-          (lambda (item)
-            ;; Restore original candidate in order to preserve formatting
-            (setq item (or (car (member item orig-items)) item)
-                  item (propertize item 'consult--crm-selected item
-                                   'line-prefix (cdr consult-crm-prefix)))
-            (add-face-text-property 0 (length item) 'consult-crm-selected 
'append item)
-            item))
-         (separator (or (bound-and-true-p crm-separator) "[ \t]*,[ \t]*"))
-         (hist-sym (pcase hist
-                     ('nil 'minibuffer-history)
-                     ('t 'consult--crm-history)
-                     (`(,sym . ,_) sym) ;; ignore history position
-                     (_ hist)))
-         (hist-val (symbol-value hist-sym))
-         (selected
-          (and initial-input
-               (or
-                ;; initial-input is multiple items
-                (string-match-p separator initial-input)
-                ;; initial-input is a single candidate
-                (member initial-input orig-items))
-               (prog1
-                   (mapcar format-item
-                           (split-string initial-input separator 'omit-nulls))
-                 (setq initial-input nil))))
-         (consult--crm-history (append (mapcar #'substring-no-properties 
selected) hist-val))
-         (items (append selected
-                        (seq-remove (lambda (x) (member x selected))
-                                    prefixed-orig-items)))
-         (orig-md (and (functionp table) (cdr (funcall table "" nil 
'metadata))))
-         (group-fun (alist-get 'group-function orig-md))
-         (sort-fun
-          (lambda (sort)
-            (pcase (alist-get sort orig-md)
-              ('identity `((,sort . identity)))
-              ((and sort (guard sort))
-               `((,sort . ,(lambda (cands)
-                             (setq cands (funcall sort cands))
-                             (nconc
-                              (seq-filter (lambda (x) (member x selected)) 
cands)
-                              (seq-remove (lambda (x) (member x selected)) 
cands)))))))))
-         (md
-          `(metadata
-            (group-function
-             . ,(lambda (cand transform)
-                  (if (get-text-property 0 'consult--crm-selected cand)
-                      (if transform cand "Selected")
-                    (or (and group-fun (funcall group-fun cand transform))
-                        (if transform cand "Select multiple")))))
-            ,@(funcall sort-fun 'cycle-sort-function)
-            ,@(funcall sort-fun 'display-sort-function)
-            ,@(seq-filter (lambda (x) (memq (car x) '(annotation-function
-                                                      affixation-function
-                                                      category)))
-                          orig-md)))
-         (overlay)
-         (command)
-         (depth (1+ (recursion-depth)))
-         (hook (make-symbol "consult--crm-pre-command-hook"))
-         (wrapper (make-symbol "consult--crm-command-wrapper")))
-    (fset wrapper
-          (lambda ()
-            (interactive)
-            (pcase (catch 'exit
-                     (call-interactively (setq this-command command))
-                     'consult--continue)
-              ('nil
-               (with-selected-window (active-minibuffer-window)
-                 (let ((item (minibuffer-contents-no-properties)))
-                   (when (equal item "")
-                     (throw 'exit nil))
-                   (setq selected (if (member item selected)
-                                      ;; Multi selections are not possible.
-                                      ;; This is probably no problem, since 
this is rarely desired.
-                                      (delete item selected)
-                                    (nconc selected (list (funcall format-item 
item))))
-                         consult--crm-history (append (mapcar 
#'substring-no-properties selected) hist-val)
-                         items (append selected
-                                       (seq-remove (lambda (x) (member x 
selected))
-                                                   prefixed-orig-items)))
-                   (when overlay
-                     (overlay-put overlay 'display
-                                  (when selected
-                                    (format " (%s selected): " (length 
selected)))))
-                   (delete-minibuffer-contents)
-                   (run-hook-with-args 'consult--completion-refresh-hook 
'reset))))
-              ('consult--continue nil)
-              (other (throw 'exit other)))))
-    (fset hook (lambda ()
-                 (when (and this-command (= depth (recursion-depth)))
-                   (setq command this-command this-command wrapper))))
-    (consult--minibuffer-with-setup-hook
-        (:append
-         (lambda ()
-           (when-let (pos (string-match-p "\\(?: (default[^)]+)\\)?: \\'" 
prompt))
-             (setq overlay (make-overlay (+ (point-min) pos) (+ (point-min) 
(length prompt))))
-             (when selected
-               (overlay-put overlay 'display (format " (%s selected): " 
(length selected)))))
-           (use-local-map (make-composed-keymap (list consult-crm-map) 
(current-local-map)))))
-      (unwind-protect
-          (progn
-            (add-hook 'pre-command-hook hook 90)
-            (let ((result
-                   (completing-read
-                    prompt
-                    (lambda (str pred action)
-                      (if (eq action 'metadata)
-                          md
-                        (complete-with-action action items str pred)))
-                    nil ;; predicate
-                    require-match
-                    initial-input
-                    'consult--crm-history
-                    "" ;; default
-                    inherit-input-method)))
-              (unless (or (equal result "") selected)
-                (setq selected (split-string result separator 'omit-nulls)
-                      consult--crm-history (append (mapcar 
#'substring-no-properties selected) hist-val)))))
-        (remove-hook 'pre-command-hook hook)))
-    (when (consp def)
-      (setq def (car def)))
-    (if (and def (not (equal "" def)) (not selected))
-        (split-string def separator 'omit-nulls)
-      (setq selected (mapcar #'substring-no-properties selected))
-      (set hist-sym (append selected (symbol-value hist-sym)))
-      selected)))
+(defun consult-completing-read-multiple (&rest args)
+  "Deprecated function; call `completing-read-multiple' with ARGS."
+  (advice-remove #'completing-read-multiple #'consult-completing-read-multiple)
+  (run-at-time 0 nil #'message "`consult-completing-read-multiple' has been 
deprecated")
+  (apply #'completing-read-multiple args))
 
 ;;;; Commands
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]