branch: master
commit cdca2fcd8ee8397d6dee6dd141f3a9d46064d25b
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>
counsel.el (counsel-switch-buffer): Re-use ivy-switch-buffer
* ivy.el (ivy-unwind-fns-alist): New defvar.
Reduce code duplication by having `counsel-switch-buffer' become a
customized `ivy-switch-buffer'.
Re #1895
---
counsel.el | 29 ++++++++++-------------------
ivy.el | 23 +++++++++++++++--------
2 files changed, 25 insertions(+), 27 deletions(-)
diff --git a/counsel.el b/counsel.el
index 12e30e4..a73fa03 100644
--- a/counsel.el
+++ b/counsel.el
@@ -5507,16 +5507,11 @@ The buffers are those opened during a session of
`counsel-switch-buffer'."
Display a preview of the selected ivy completion candidate buffer
in the current window."
(interactive)
- (ivy-read "Switch to buffer: " 'internal-complete-buffer
- :preselect (buffer-name (other-buffer (current-buffer)))
- :keymap ivy-switch-buffer-map
- :action #'ivy--switch-buffer-action
- :matcher #'ivy--switch-buffer-matcher
- :unwind #'counsel--switch-buffer-unwind
- :caller 'counsel-switch-buffer))
-
-(ivy-configure 'counsel-switch-buffer
- :update-fn #'counsel--switch-buffer-update-fn)
+ (let ((ivy-update-fns-alist
+ '((ivy-switch-buffer . counsel--switch-buffer-update-fn)))
+ (ivy-unwind-fns-alist
+ '((ivy-switch-buffer . counsel--switch-buffer-unwind))))
+ (ivy-switch-buffer)))
;;;###autoload
(defun counsel-switch-buffer-other-window ()
@@ -5524,15 +5519,11 @@ in the current window."
Display a preview of the selected ivy completion candidate buffer
in the current window."
(interactive)
- (ivy-read "Switch to buffer in other window: " 'internal-complete-buffer
- :preselect (buffer-name (other-buffer (current-buffer)))
- :action #'ivy--switch-buffer-other-window-action
- :matcher #'ivy--switch-buffer-matcher
- :unwind #'counsel--switch-buffer-unwind
- :caller 'counsel-switch-buffer-other-window))
-
-(ivy-configure 'counsel-switch-buffer-other-window
- :update-fn #'counsel--switch-buffer-update-fn)
+ (let ((ivy-update-fns-alist
+ '((ivy-switch-buffer-other-window .
counsel--switch-buffer-update-fn)))
+ (ivy-unwind-fns-alist
+ '((ivy-switch-buffer-other-window . counsel--switch-buffer-unwind))))
+ (ivy-switch-buffer-other-window)))
(defun counsel-open-buffer-file-externally (buffer)
"Open the file associated with BUFFER with an external program."
diff --git a/ivy.el b/ivy.el
index f846610..bf5bdaf 100644
--- a/ivy.el
+++ b/ivy.el
@@ -1888,6 +1888,14 @@ Examples: `toggle-input-method', (lambda () (insert
\"^\")), etc.
May supersede `ivy-initial-inputs-alist'."
:type '(alist :key-type symbol :value-type function))
+(defvar ivy--occurs-list nil
+ "A list of custom occur generators per command.")
+
+(defun ivy-set-occur (cmd occur)
+ "Assign CMD a custom OCCUR function."
+ (setq ivy--occurs-list
+ (plist-put ivy--occurs-list cmd occur)))
+
(defcustom ivy-update-fns-alist nil
"An alist associating commands to their :update-fn values."
:type '(alist
@@ -1897,11 +1905,15 @@ May supersede `ivy-initial-inputs-alist'."
(const :tag "Off" nil)
(const :tag "Call action on change" auto))))
+(defvar ivy-unwind-fns-alist nil
+ "An alist associating commands to their :unwind values.")
+
(cl-defun ivy-configure (caller
&key
initial-input
occur
update-fn
+ unwind-fn
more-chars)
"Configure `ivy-read' params for CALLER."
(declare (indent 1))
@@ -1911,6 +1923,8 @@ May supersede `ivy-initial-inputs-alist'."
(ivy-set-occur caller occur))
(when update-fn
(setf (alist-get caller ivy-update-fns-alist) update-fn))
+ (when unwind-fn
+ (setf (alist-get caller ivy-unwind-fns-alist) unwind-fn))
(when more-chars
(setf (alist-get caller ivy-more-chars-alist) more-chars)))
@@ -2051,6 +2065,7 @@ customizations apply to the current completion session."
(ivy-alist-setting ivy-display-functions-alist caller)))
result)
(setq update-fn (or update-fn (ivy-alist-setting ivy-update-fns-alist
caller)))
+ (setq unwind (or unwind (ivy-alist-setting ivy-unwind-fns-alist caller)))
(setq ivy-last
(make-ivy-state
:prompt prompt
@@ -4724,14 +4739,6 @@ When `ivy-calling' isn't nil, call `ivy-occur-press'."
(when (fboundp 'wgrep-setup)
(wgrep-setup)))
-(defvar ivy--occurs-list nil
- "A list of custom occur generators per command.")
-
-(defun ivy-set-occur (cmd occur)
- "Assign CMD a custom OCCUR function."
- (setq ivy--occurs-list
- (plist-put ivy--occurs-list cmd occur)))
-
(defun ivy--starts-with-dotslash (str)
(string-match-p "\\`\\.[/\\]" str))