(ivy-set-action 'counsel--find-symbol)
(ivy-done))
-(defun counsel--find-symbol ()
- (let ((full-name (get-text-property 0 'full-name ivy--current)))
+(defun counsel--find-symbol (x)
+ "Find symbol definition that corresponds to string X."
+ (let ((full-name (get-text-property 0 'full-name x)))
(if full-name
(find-library full-name)
- (let ((sym (read ivy--current)))
+ (let ((sym (read x)))
(cond ((boundp sym)
(find-variable sym))
((fboundp sym)
:history 'counsel-describe-symbol-history
:require-match t
:sort t
- :action (lambda ()
+ :action (lambda (x)
(describe-variable
- (intern ivy--current))))))
+ (intern x))))))
(defun counsel-describe-function ()
"Forward to `describe-function'."
:history 'counsel-describe-symbol-history
:require-match t
:sort t
- :action (lambda ()
+ :action (lambda (x)
(describe-function
- (intern ivy--current))))))
+ (intern x))))))
(defvar info-lookup-mode)
(declare-function info-lookup->completions "info-look")
(defun counsel-git ()
"Find file in the current Git repository."
(interactive)
- (ivy-read "Find file: "
- (let ((default-directory (locate-dominating-file
- default-directory ".git")))
- (split-string
- (shell-command-to-string
- "git ls-files --full-name --")
- "\n"
- t))
- :action (lambda () (find-file ivy--current))))
+ (let* ((default-directory (locate-dominating-file
+ default-directory ".git"))
+ (cands (split-string
+ (shell-command-to-string
+ "git ls-files --full-name --")
+ "\n"
+ t))
+ (action (lambda (x) (find-file x))))
+ (ivy-read "Find file: " cands
+ :action action)))
(defvar counsel--git-grep-dir nil
"Store the base git directory.")
(counsel-git-grep-action)
(recenter-top-bottom)))
-(defun counsel-git-grep-action ()
- (let ((lst (split-string ivy--current ":")))
+(defun counsel-git-grep-action (x)
+ (let ((lst (split-string x ":")))
(find-file (expand-file-name (car lst) counsel--git-grep-dir))
(goto-char (point-min))
(forward-line (1- (string-to-number (cadr lst))))
dir) cands)))))))
(maphash (lambda (_k v) (push (car v) res)) cands)
(ivy-read "Load library: " (nreverse res)
- :action (lambda ()
+ :action (lambda (x)
(load-library
- (get-text-property 0 'full-name ivy--current)))
+ (get-text-property 0 'full-name x)))
:keymap counsel-describe-map)))
(provide 'counsel)
(mapcar (lambda (str) (substring str (string-match postfix str)))
ivy--old-cands))))
(cond ((eq new t) nil)
- ((string= new ivy-text) nil)
+ ((string= new ivy-text) nil)
(new
(delete-region (minibuffer-prompt-end) (point-max))
(setcar (last parts) new)
(ivy--exhibit)
(when (ivy-state-action ivy-last)
(with-selected-window (ivy-state-window ivy-last)
- (funcall (ivy-state-action ivy-last)))))
+ (funcall (ivy-state-action ivy-last) ivy--current))))
(defun ivy-previous-line-and-call (&optional arg)
"Move cursor vertically down ARG candidates.
(ivy--exhibit)
(when (ivy-state-action ivy-last)
(with-selected-window (ivy-state-window ivy-last)
- (funcall (ivy-state-action ivy-last)))))
+ (funcall (ivy-state-action ivy-last) ivy--current))))
(defun ivy-previous-history-element (arg)
"Forward to `previous-history-element' with ARG."
When SORT is t, refer to `ivy-sort-functions-alist' for sorting.
-ACTION is a lambda to call after a result was selected.
+ACTION is a lambda to call after a result was selected. It should
+take a single argument, usually a string.
UNWIND is a lambda to call before exiting.
(when (setq unwind (ivy-state-unwind ivy-last))
(funcall unwind)))
(when (setq action (ivy-state-action ivy-last))
- (funcall action)))))
+ (funcall action ivy--current)))))
(defun ivy-completing-read (prompt collection
&optional predicate require-match initial-input
(and virtual
(ivy--virtual-buffers)))))
-(defun ivy--switch-buffer-action ()
- "Finalizer for `ivy-switch-buffer'."
- (if (zerop (length ivy--current))
+(defun ivy--switch-buffer-action (buffer)
+ "Switch to BUFFER.
+BUFFER may be a string or nil."
+ (if (zerop (length buffer))
(switch-to-buffer
ivy-text nil 'force-same-window)
- (let ((virtual (assoc ivy--current ivy--virtual-buffers)))
+ (let ((virtual (assoc buffer ivy--virtual-buffers)))
(if virtual
(find-file (cdr virtual))
(switch-to-buffer
- ivy--current nil 'force-same-window)))))
+ buffer nil 'force-same-window)))))
(defun ivy-switch-buffer ()
"Switch to another buffer."
(if (not ivy-mode)
(call-interactively 'switch-to-buffer)
(ivy-read "Switch to buffer: " 'internal-complete-buffer
- :action #'ivy--switch-buffer-action
- :preselect (buffer-name (other-buffer (current-buffer))))))
+ :preselect (buffer-name (other-buffer (current-buffer)))
+ :action #'ivy--switch-buffer-action)))
(provide 'ivy)