change counsel-projectile toggle mechanism
This commit is contained in:
parent
499bc4cc23
commit
cba24df908
1 changed files with 46 additions and 68 deletions
|
|
@ -553,7 +553,7 @@ names as in `ivy--buffer-list'."
|
||||||
"Format string to use in `cousel-projectile-grep-function' to
|
"Format string to use in `cousel-projectile-grep-function' to
|
||||||
construct the command.")
|
construct the command.")
|
||||||
|
|
||||||
(defvar counsel-projectile-grep-base-command nil)
|
(defvar counsel-projectile-grep-command nil)
|
||||||
|
|
||||||
(defvar counsel-projectile-grep-options-history nil
|
(defvar counsel-projectile-grep-options-history nil
|
||||||
"History for `counsel-projectile-grep' options.")
|
"History for `counsel-projectile-grep' options.")
|
||||||
|
|
@ -760,7 +760,8 @@ is called with a prefix argument."
|
||||||
|
|
||||||
(defun counsel-projectile-switch-project-action (project)
|
(defun counsel-projectile-switch-project-action (project)
|
||||||
"Switch to PROJECT.
|
"Switch to PROJECT.
|
||||||
Invokes the command referenced by `projectile-switch-project-action' on switch.
|
Invokes the command referenced by
|
||||||
|
`projectile-switch-project-action' on switch.
|
||||||
|
|
||||||
This is a replacement for `projectile-switch-project-by-name'
|
This is a replacement for `projectile-switch-project-by-name'
|
||||||
with a different switching mechanism: the switch-project action
|
with a different switching mechanism: the switch-project action
|
||||||
|
|
@ -831,7 +832,7 @@ PROJECT buffers."
|
||||||
PROJECT from the list of known projects."
|
PROJECT from the list of known projects."
|
||||||
(projectile-remove-known-project project)
|
(projectile-remove-known-project project)
|
||||||
(setq ivy--all-candidates
|
(setq ivy--all-candidates
|
||||||
(delete dir ivy--all-candidates))
|
(delete project ivy--all-candidates))
|
||||||
(ivy--reset-state ivy-last))
|
(ivy--reset-state ivy-last))
|
||||||
|
|
||||||
(defun counsel-projectile-switch-project-action-edit-dir-locals (project)
|
(defun counsel-projectile-switch-project-action-edit-dir-locals (project)
|
||||||
|
|
@ -878,10 +879,7 @@ something into PROJECT."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun counsel-projectile-switch-project ()
|
(defun counsel-projectile-switch-project ()
|
||||||
"Switch to a project we have visited before.
|
"Switch to a project we have visited before."
|
||||||
|
|
||||||
Invokes the command referenced by
|
|
||||||
`projectile-switch-project-action' on switch."
|
|
||||||
(interactive)
|
(interactive)
|
||||||
(ivy-read (projectile-prepend-project-name "Switch to project: ")
|
(ivy-read (projectile-prepend-project-name "Switch to project: ")
|
||||||
(if counsel-projectile-remove-current-project
|
(if counsel-projectile-remove-current-project
|
||||||
|
|
@ -973,71 +971,51 @@ With a prefix ARG invalidates the cache first."
|
||||||
'counsel-projectile
|
'counsel-projectile
|
||||||
'counsel-projectile-transformer)
|
'counsel-projectile-transformer)
|
||||||
|
|
||||||
;;; key bindings
|
;;; counsel-projectile-mode
|
||||||
|
|
||||||
|
(defvar counsel-projectile-command-map
|
||||||
|
(let ((map (make-sparse-keymap)))
|
||||||
|
(set-keymap-parent map projectile-command-map)
|
||||||
|
(define-key map (kbd "s r") 'counsel-projectile-rg)
|
||||||
|
(define-key map (kbd "C-c") 'counsel-projectile-org-capture)
|
||||||
|
(define-key map (kbd "SPC") 'counsel-projectile)
|
||||||
|
map)
|
||||||
|
"Keymap for Counesl-Projectile commands after `projectile-keymap-prefix'.")
|
||||||
|
(fset 'counsel-projectile-command-map counsel-projectile-command-map)
|
||||||
|
|
||||||
|
(defvar counsel-projectile-mode-map
|
||||||
|
(let ((map (make-sparse-keymap)))
|
||||||
|
(define-key map projectile-keymap-prefix 'counsel-projectile-command-map)
|
||||||
|
(define-key map [remap projectile-find-file] 'counsel-projectile-find-file)
|
||||||
|
(define-key map [remap projectile-find-dir] 'counsel-projectile-find-dir)
|
||||||
|
(define-key map [remap projectile-switch-to-buffer] 'counsel-projectile-switch-to-buffer)
|
||||||
|
(define-key map [remap projectile-grep] 'counsel-projectile-grep)
|
||||||
|
(define-key map [remap projectile-ag] 'counsel-projectile-ag)
|
||||||
|
(define-key map [remap projectile-switch-project] 'counsel-projectile-switch-project)
|
||||||
|
map)
|
||||||
|
"Keymap for Counsel-Projectile mode.")
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(eval-after-load 'projectile
|
(define-minor-mode counsel-projectile-mode
|
||||||
'(progn
|
"Toggle Counsel-Projectile mode on or off.
|
||||||
(define-key projectile-command-map (kbd "SPC") #'counsel-projectile)))
|
|
||||||
|
|
||||||
(defun counsel-projectile-commander-bindings ()
|
With a prefix argument ARG, enable the mode if ARG is positive,
|
||||||
(def-projectile-commander-method ?f
|
and disable it otherwise. If called from Lisp, enable the mode
|
||||||
"Find file in project."
|
if ARG is omitted or nil, and toggle it if ARG is `toggle'.
|
||||||
(counsel-projectile-find-file))
|
|
||||||
(def-projectile-commander-method ?d
|
|
||||||
"Find directory in project."
|
|
||||||
(counsel-projectile-find-dir))
|
|
||||||
(def-projectile-commander-method ?b
|
|
||||||
"Switch to project buffer."
|
|
||||||
(counsel-projectile-switch-to-buffer))
|
|
||||||
(def-projectile-commander-method ?g
|
|
||||||
"Run grep on project."
|
|
||||||
(counsel-projectile-grep))
|
|
||||||
(def-projectile-commander-method ?A
|
|
||||||
"Search project files with ag."
|
|
||||||
(counsel-projectile-ag))
|
|
||||||
(def-projectile-commander-method ?s
|
|
||||||
"Switch project."
|
|
||||||
(counsel-projectile-switch-project)))
|
|
||||||
|
|
||||||
(defun counsel-projectile-toggle (toggle)
|
Counsel-Projectile mode triggers Projectile mode, remaps
|
||||||
"Toggle counsel-projectile keybindings."
|
Projectile commands that have counsel replacements, and adds key
|
||||||
(if (> toggle 0)
|
bindings for Counsel-Projectile commands that have no Projectile
|
||||||
(progn
|
counterpart.
|
||||||
(when (eq projectile-switch-project-action #'projectile-find-file)
|
|
||||||
(setq projectile-switch-project-action #'counsel-projectile))
|
|
||||||
(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-switch-project] #'counsel-projectile-switch-project)
|
|
||||||
(define-key projectile-mode-map [remap projectile-grep] #'counsel-projectile-grep)
|
|
||||||
(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)
|
|
||||||
(counsel-projectile-commander-bindings))
|
|
||||||
(progn
|
|
||||||
(when (eq projectile-switch-project-action #'counsel-projectile)
|
|
||||||
(setq projectile-switch-project-action #'projectile-find-file))
|
|
||||||
(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-switch-project] nil)
|
|
||||||
(define-key projectile-mode-map [remap projectile-grep] nil)
|
|
||||||
(define-key projectile-mode-map [remap projectile-ag] nil)
|
|
||||||
(define-key projectile-mode-map [remap projectile-switch-to-buffer] nil)
|
|
||||||
(projectile-commander-bindings))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun counsel-projectile-on ()
|
|
||||||
"Turn on counsel-projectile key bindings."
|
|
||||||
(interactive)
|
|
||||||
(message "Turn on counsel-projectile key bindings")
|
|
||||||
(counsel-projectile-toggle 1))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun counsel-projectile-off ()
|
|
||||||
"Turn off counsel-projectile key bindings."
|
|
||||||
(interactive)
|
|
||||||
(message "Turn off counsel-projectile key bindings")
|
|
||||||
(counsel-projectile-toggle -1))
|
|
||||||
|
|
||||||
|
\\{counsel-projectile-mode-map}"
|
||||||
|
:group 'counsel-projectile
|
||||||
|
:require 'counsel-projectile
|
||||||
|
:keymap counsel-projectile-mode-map
|
||||||
|
:global t
|
||||||
|
(if counsel-projectile-mode
|
||||||
|
(projectile-mode)
|
||||||
|
(projectile-mode -1)))
|
||||||
|
|
||||||
(provide 'counsel-projectile)
|
(provide 'counsel-projectile)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue