branch: master commit e3dabec86a78b97331fb175583e5600e9ddf6476 Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
counsel.el: Use ivy-configure :unwind-fn --- counsel.el | 50 ++++++++++++++------------ swiper.el | 118 ++++++++++++++++++++++++++++++------------------------------- 2 files changed, 86 insertions(+), 82 deletions(-) diff --git a/counsel.el b/counsel.el index a73fa03..2286d9c 100644 --- a/counsel.el +++ b/counsel.el @@ -426,9 +426,11 @@ Update the minibuffer with the amount of lines collected every (setq ivy-completion-end (point)) (ivy-read "Candidate: " company-candidates :action #'ivy-completion-in-region-action - :unwind #'company-abort :caller 'counsel-company)))) +(ivy-configure 'counsel-company + :unwind-fn #'company-abort) + ;;** `counsel-irony' (declare-function irony-completion-candidates-async "ext:irony-completion") (declare-function irony-completion-symbol-bounds "ext:irony-completion") @@ -1483,6 +1485,10 @@ On success, RESULT-FN is called in output buffer with no arguments." "Forward COMMAND to `counsel--call'." (counsel--call command)) +(defun counsel--grep-unwind () + (counsel-delete-process) + (swiper--cleanup)) + ;;;###autoload (defun counsel-git-grep (&optional initial-input initial-directory cmd) "Grep for a string in the current Git repository. @@ -1500,10 +1506,6 @@ When CMD is non-nil, prompt for a specific \"git grep\" command." (if proj #'counsel-git-grep-proj-function #'counsel-git-grep-function)) - (unwind-function - (lambda () - (counsel-delete-process) - (swiper--cleanup))) (default-directory (or initial-directory (if proj (car proj) @@ -1513,12 +1515,13 @@ When CMD is non-nil, prompt for a specific \"git grep\" command." :dynamic-collection t :keymap counsel-git-grep-map :action #'counsel-git-grep-action - :unwind unwind-function :history 'counsel-git-grep-history :caller 'counsel-git-grep)))) (ivy-configure 'counsel-git-grep - :occur #'counsel-git-grep-occur) + :occur #'counsel-git-grep-occur + :unwind-fn #'counsel--grep-unwind) + (cl-pushnew 'counsel-git-grep ivy-highlight-grep-commands) (defun counsel-git-grep-proj-function (str) @@ -1753,9 +1756,11 @@ currently checked out." (ivy-read "Grep log: " #'counsel-git-log-function :dynamic-collection t :action #'counsel-git-log-action - :unwind #'counsel-delete-process :caller 'counsel-git-log)) +(ivy-configure 'counsel-git-log + :unwind-fn #'counsel-delete-process) + (add-to-list 'ivy-format-functions-alist '(counsel-git-log . counsel--git-log-format-function)) (add-to-list 'ivy-height-alist '(counsel-git-log . 4)) (add-to-list 'counsel-async-split-string-re-alist '(counsel-git-log . "^commit ")) @@ -2505,9 +2510,11 @@ INITIAL-INPUT can be given as the initial minibuffer input." (with-ivy-window (find-file (concat (file-remote-p default-directory) file))))) - :unwind #'counsel-delete-process :caller 'counsel-locate)) +(ivy-configure 'counsel-locate + :unwind-fn #'counsel-delete-process) + ;;** `counsel-fzf' (defvar counsel-fzf-cmd "fzf -f \"%s\"" "Command for `counsel-fzf'.") @@ -2556,11 +2563,11 @@ FZF-PROMPT, if non-nil, is passed as `ivy-read' prompt argument." :re-builder #'ivy--regex-fuzzy :dynamic-collection t :action #'counsel-fzf-action - :unwind #'counsel-delete-process :caller 'counsel-fzf)) (ivy-configure 'counsel-fzf - :occur #'counsel-fzf-occur) + :occur #'counsel-fzf-occur + :unwind-fn #'counsel-delete-process) (defun counsel-fzf-action (x) "Find file X in current fzf directory." @@ -2840,13 +2847,11 @@ CALLER is passed to `ivy-read'." :keymap counsel-ag-map :history 'counsel-git-grep-history :action #'counsel-git-grep-action - :unwind (lambda () - (counsel-delete-process) - (swiper--cleanup)) :caller (or caller 'counsel-ag)))) (ivy-configure 'counsel-ag - :occur #'counsel-ag-occur) + :occur #'counsel-ag-occur + :unwind-fn #'counsel--grep-unwind) (defun counsel-cd () "Change the directory for the currently running Ivy grep-like command. @@ -2980,7 +2985,8 @@ Example input with inclusion and exclusion file patterns: :caller 'counsel-rg))) (ivy-configure 'counsel-rg - :occur #'counsel-ag-occur) + :occur #'counsel-ag-occur + :unwind-fn #'counsel--grep-unwind) (cl-pushnew 'counsel-rg ivy-highlight-grep-commands) ;;** `counsel-grep' @@ -3095,15 +3101,13 @@ When non-nil, INITIAL-INPUT is the initial search pattern." :history 'counsel-grep-history :re-builder #'ivy--regex :action #'counsel-grep-action - :unwind (lambda () - (counsel-delete-process) - (swiper--cleanup)) :caller 'counsel-grep)) (unless res (goto-char init-point))))) (ivy-configure 'counsel-grep :update-fn 'auto + :unwind-fn #'counsel--grep-unwind :occur #'counsel-grep-occur :more-chars 2) @@ -3201,9 +3205,11 @@ INITIAL-INPUT can be given as the initial minibuffer input." (find-file file-name) (unless (string-match "pdf$" x) (swiper ivy-text))))) - :unwind #'counsel-delete-process :caller 'counsel-recoll)) +(ivy-configure 'counsel-recoll + :unwind-fn #'counsel-delete-process) + ;;* Org ;;** `counsel-org-tag' (defvar counsel-org-tags nil @@ -3837,12 +3843,12 @@ Obeys `widen-automatically', which see." (error "\ Position of selected mark outside accessible part of buffer"))) (goto-char pos)))) - :unwind #'counsel--mark-ring-unwind :caller 'counsel-mark-ring) (message "Mark ring is empty")))) (ivy-configure 'counsel-mark-ring - :update-fn #'counsel--mark-ring-update-fn) + :update-fn #'counsel--mark-ring-update-fn + :unwind-fn #'counsel--mark-ring-unwind) ;;** `counsel-package' (defvar package--initialized) diff --git a/swiper.el b/swiper.el index 324ac6e..6af5a25 100644 --- a/swiper.el +++ b/swiper.el @@ -550,17 +550,6 @@ numbers; replaces calculating the width from buffer line count." "The point when `swiper' starts.") ;;;###autoload -(defun swiper (&optional initial-input) - "`isearch-forward' with an overview. -When non-nil, INITIAL-INPUT is the initial search pattern." - (interactive) - (swiper--ivy (swiper--candidates) initial-input)) - -(ivy-configure 'swiper - :occur #'swiper-occur - :update-fn #'swiper--update-input-ivy) - -;;;###autoload (defun swiper-backward (&optional initial-input) "`isearch-backward' with an overview. When non-nil, INITIAL-INPUT is the initial search pattern." @@ -769,51 +758,58 @@ line numbers. For the buffer, use `ivy--regex' instead." "When non-nil don't go back to search start on abort." :type 'boolean) -(defun swiper--ivy (candidates &optional initial-input) - "Select one of CANDIDATES and move there. +;;;###autoload +(defun swiper (&optional initial-input) + "`isearch-forward' with an overview. When non-nil, INITIAL-INPUT is the initial search pattern." - (swiper--init) - (setq swiper-invocation-face - (plist-get (text-properties-at (point)) 'face)) - (let ((preselect - (if (or swiper-use-visual-line (null search-invisible)) - (count-screen-lines - (point-min) - (save-excursion (beginning-of-visual-line) (point))) - (1- (line-number-at-pos)))) - (minibuffer-allow-text-properties t) - res) - (unwind-protect - (and - (setq res - (ivy-read - "Swiper: " - candidates - :initial-input initial-input - :keymap swiper-map - :preselect - (if initial-input - (cl-position-if - (lambda (x) - (= (1+ preselect) (get-text-property 0 'swiper-line-number x))) - (progn - (setq ivy--old-re nil) - (ivy--filter initial-input candidates))) - preselect) - :require-match t - :unwind #'swiper--cleanup - :action #'swiper--action - :re-builder #'swiper--re-builder - :history 'swiper-history - :caller 'swiper)) - (point)) - (unless (or res swiper-stay-on-quit) - (goto-char swiper--opoint)) - (unless (or res (string= ivy-text "")) - (cl-pushnew ivy-text swiper-history)) - (setq swiper--current-window-start nil) - (when swiper--reveal-mode - (reveal-mode 1))))) + (interactive) + (let ((candidates (swiper--candidates))) + (swiper--init) + (setq swiper-invocation-face + (plist-get (text-properties-at (point)) 'face)) + (let ((preselect + (if (or swiper-use-visual-line (null search-invisible)) + (count-screen-lines + (point-min) + (save-excursion (beginning-of-visual-line) (point))) + (1- (line-number-at-pos)))) + (minibuffer-allow-text-properties t) + res) + (unwind-protect + (and + (setq res + (ivy-read + "Swiper: " + candidates + :initial-input initial-input + :keymap swiper-map + :preselect + (if initial-input + (cl-position-if + (lambda (x) + (= (1+ preselect) (get-text-property 0 'swiper-line-number x))) + (progn + (setq ivy--old-re nil) + (ivy--filter initial-input candidates))) + preselect) + :require-match t + :action #'swiper--action + :re-builder #'swiper--re-builder + :history 'swiper-history + :caller 'swiper)) + (point)) + (unless (or res swiper-stay-on-quit) + (goto-char swiper--opoint)) + (unless (or res (string= ivy-text "")) + (cl-pushnew ivy-text swiper-history)) + (setq swiper--current-window-start nil) + (when swiper--reveal-mode + (reveal-mode 1)))))) + +(ivy-configure 'swiper + :occur #'swiper-occur + :update-fn #'swiper--update-input-ivy + :unwind-fn #'swiper--cleanup) (defun swiper-toggle-face-matching () "Toggle matching only the candidates with `swiper-invocation-face'." @@ -1134,9 +1130,11 @@ Run `swiper' for those buffers." (let ((swiper-window-width (- (- (frame-width) (if (display-graphic-p) 0 1)) 4))) (ivy-read "Swiper: " swiper-multi-candidates :action #'swiper-multi-action-2 - :unwind #'swiper--cleanup :caller 'swiper-multi))) +(ivy-configure 'swiper-multi + :unwind-fn #'swiper--cleanup) + (defun swiper-multi-action-1 (x) "Add X to list of selected buffers `swiper-multi-buffers'. If X is already part of the list, remove it instead. Quit the selection if @@ -1278,14 +1276,14 @@ See `ivy-format-functions-alist' for further information." (let ((swiper-window-width (- (frame-width) (if (display-graphic-p) 0 1)))) (ivy-read "swiper-all: " 'swiper-all-function :action #'swiper-all-action - :unwind #'swiper--cleanup :dynamic-collection t :keymap swiper-all-map :initial-input initial-input :caller 'swiper-all))) (ivy-configure 'swiper-all - :update-fn 'auto) + :update-fn 'auto + :unwind-fn #'swiper--cleanup) (add-to-list 'ivy-format-functions-alist '(swiper-multi . swiper--all-format-function)) (add-to-list 'ivy-format-functions-alist '(swiper-all . swiper--all-format-function)) @@ -1609,7 +1607,6 @@ When not running `swiper-isearch' already, start it." :dynamic-collection t :require-match t :action #'swiper-isearch-action - :unwind #'swiper--cleanup :re-builder #'swiper--re-builder :history 'swiper-history :caller 'swiper-isearch)) @@ -1623,7 +1620,8 @@ When not running `swiper-isearch' already, start it." (ivy-configure 'swiper-isearch :occur #'swiper-occur - :update-fn 'auto) + :update-fn 'auto + :unwind-fn #'swiper--cleanup) ;;;###autoload (defun swiper-isearch-backward (&optional initial-input)