add counsel-projectile-ag

This commit is contained in:
Eric Danan 2016-10-12 20:45:41 +02:00
parent 87957f1919
commit 7b9a81ce5c
2 changed files with 42 additions and 7 deletions

View file

@ -24,6 +24,7 @@ Counsel-projectile also provides replacements for several standard projectile co
- <kbd>C-c p f</kbd> `counsel-projectile-find-file`: find a project file, - <kbd>C-c p f</kbd> `counsel-projectile-find-file`: find a project file,
- <kbd>C-c p d</kbd> `counsel-projectile-find-dir`: find a project directory, - <kbd>C-c p d</kbd> `counsel-projectile-find-dir`: find a project directory,
- <kbd>C-c p b</kbd> `counsel-projectile-switch-to-buffer`: switch to a project buffer, - <kbd>C-c p b</kbd> `counsel-projectile-switch-to-buffer`: switch to a project buffer,
- <kbd>C-c p s s</kbd> `counsel-projectile-ag`: search project files with ag,
- <kbd>C-c p p</kbd> `counsel-projectile-switch-project`: switch to another project (see above). - <kbd>C-c p p</kbd> `counsel-projectile-switch-project`: switch to another project (see above).
If your default action for switching to a project (stored in the variable `projectile-switch-project-action`) is `projectile-find-file` (the default), then `counsel-projectile-on` also replaces it with `counsel-projectile-find-file-or-buffer` (see above). If your default action for switching to a project (stored in the variable `projectile-switch-project-action`) is `projectile-find-file` (the default), then `counsel-projectile-on` also replaces it with `counsel-projectile-find-file-or-buffer` (see above).

View file

@ -193,6 +193,34 @@ With a prefix ARG invalidates the cache first."
(projectile-maybe-invalidate-cache arg) (projectile-maybe-invalidate-cache arg)
(counsel-projectile-switch-to-buffer t)) (counsel-projectile-switch-to-buffer t))
;;; counsel-projectile-ag
(defun counsel-projectile-ag (&optional options)
"Ivy version of `projectile-ag'."
(interactive)
(if (projectile-project-p)
(let* ((options
(if current-prefix-arg
(read-string "options: ")
options))
(ignored
(unless (eq (projectile-project-vcs) 'git)
;; ag supports git ignore files
(append
(cl-union (projectile-ignored-files-rel) grep-find-ignored-files)
(cl-union (projectile-ignored-directories-rel) grep-find-ignored-directories))))
(options
(concat options
(mapconcat (lambda (i)
(concat "--ignore " i))
ignored
" "))))
(counsel-ag nil
(projectile-project-root)
options
(projectile-prepend-project-name "ag")))
(user-error "You're not in a project")))
;;; counsel-projectile-switch-project ;;; counsel-projectile-switch-project
;;;###autoload ;;;###autoload
@ -248,7 +276,11 @@ With a prefix ARG invokes `projectile-commander' instead of `projectile-switch-p
("e" (lambda (dir) ("e" (lambda (dir)
(let ((projectile-switch-project-action 'projectile-run-eshell)) (let ((projectile-switch-project-action 'projectile-run-eshell))
(projectile-switch-project-by-name dir arg))) (projectile-switch-project-by-name dir arg)))
"start eshell"))) "start eshell")
("a" (lambda (dir)
(let ((projectile-switch-project-action 'counsel-projectile-ag))
(projectile-switch-project-by-name dir arg)))
"search with ag")))
;;; counsel-projectile ;;; counsel-projectile
@ -273,15 +305,15 @@ With a prefix ARG invalidates the cache first."
(def-projectile-commander-method ?f (def-projectile-commander-method ?f
"Find file in project." "Find file in project."
(counsel-projectile-find-file)) (counsel-projectile-find-file))
(def-projectile-commander-method ?b
"Switch to project buffer."
(counsel-projectile-switch-to-buffer))
(def-projectile-commander-method ?d (def-projectile-commander-method ?d
"Find directory in project." "Find directory in project."
(counsel-projectile-find-dir)) (counsel-projectile-find-dir))
(def-projectile-commander-method ?b
"Switch to project buffer."
(counsel-projectile-switch-to-buffer))
(def-projectile-commander-method ?A
"Search project files with ag."
(counsel-projectile-ag))
(def-projectile-commander-method ?s (def-projectile-commander-method ?s
"Switch project." "Switch project."
(counsel-projectile-switch-project))) (counsel-projectile-switch-project)))
@ -295,6 +327,7 @@ With a prefix ARG invalidates the cache first."
(define-key projectile-mode-map [remap projectile-find-file] #'counsel-projectile-find-file) (define-key projectile-mode-map [remap projectile-find-file] #'counsel-projectile-find-file)
(define-key projectile-mode-map [remap projectile-find-dir] #'counsel-projectile-find-dir) (define-key projectile-mode-map [remap projectile-find-dir] #'counsel-projectile-find-dir)
(define-key projectile-mode-map [remap projectile-switch-project] #'counsel-projectile-switch-project) (define-key projectile-mode-map [remap projectile-switch-project] #'counsel-projectile-switch-project)
(define-key projectile-mode-map [remap projectile-ag] #'counsel-projectile-ag)
(define-key projectile-mode-map [remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer) (define-key projectile-mode-map [remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer)
(counsel-projectile-commander-bindings)) (counsel-projectile-commander-bindings))
(progn (progn
@ -303,6 +336,7 @@ With a prefix ARG invalidates the cache first."
(define-key projectile-mode-map [remap projectile-find-file] nil) (define-key projectile-mode-map [remap projectile-find-file] nil)
(define-key projectile-mode-map [remap projectile-find-dir] nil) (define-key projectile-mode-map [remap projectile-find-dir] nil)
(define-key projectile-mode-map [remap projectile-switch-project] nil) (define-key projectile-mode-map [remap projectile-switch-project] nil)
(define-key projectile-mode-map [remap projectile-ag] nil)
(define-key projectile-mode-map [remap projectile-switch-to-buffer] nil) (define-key projectile-mode-map [remap projectile-switch-to-buffer] nil)
(projectile-commander-bindings)))) (projectile-commander-bindings))))