cp-mode: use native projectile keymaps

This commit is contained in:
Eric Danan 2018-08-15 14:22:22 +02:00
parent a091875789
commit b1484297c3
2 changed files with 54 additions and 30 deletions

View file

@ -1361,28 +1361,27 @@ If not inside a project, call `counsel-projectile-switch-project'."
;;;; 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 "O c") 'counsel-projectile-org-capture)
(define-key map (kbd "O a") 'counsel-projectile-org-agenda)
(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)
(defcustom counsel-projectile-key-bindings
'((projectile-find-file . counsel-projectile-find-file)
(projectile-find-dir . counsel-projectile-find-dir)
(projectile-switch-to-buffer . counsel-projectile-switch-to-buffer)
(projectile-grep . counsel-projectile-grep)
(projectile-ag . counsel-projectile-ag)
(projectile-switch-project . counsel-projectile-switch-project)
(" " . counsel-projectile)
("sr" . counsel-projectile-rg)
("Oc" . counsel-projectile-org-capture)
("Oa" . counsel-projectile-org-agenda))
"Alist of counsel-projectile key bindings.
(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.")
Each element is of the form \(KEY . DEF\) where KEY is either a
key sequence to bind in `projectile-command-map' or a projectile
command to remap in `projectile-mode-map', and DEF is the
counsel-projectile command to which KEY is remapped or bound."
:type '(alist :key-type (choice (function :tag "Projectile command")
key-sequence)
:value-type (function :tag "Counsel-projectile command"))
:group 'counsel-projectile)
;;;###autoload
(define-minor-mode counsel-projectile-mode
@ -1392,19 +1391,30 @@ With a prefix argument ARG, enable the mode if ARG is positive,
and disable it otherwise. If called from Lisp, enable the mode
if ARG is omitted or nil, and toggle it if ARG is `toggle'.
Counsel-Projectile mode triggers Projectile mode, remaps
Projectile commands that have counsel replacements, and adds key
bindings for Counsel-Projectile commands that have no Projectile
counterpart.
Counsel-Projectile mode turns on Projectile mode, thus enabling
all projectile key bindings, and adds the counsel-projectile key
bindings on top of them.
\\{counsel-projectile-mode-map}"
The counsel-projectile key bindings either remap existing
projectile commands to their counsel-projectile replacements or
bind keys to counsel-projectile commands that have no projectile
counterparts."
:group 'counsel-projectile
:require 'counsel-projectile
:keymap counsel-projectile-mode-map
:global t
(if counsel-projectile-mode
(projectile-mode)
(projectile-mode -1)))
(cond
(counsel-projectile-mode
(projectile-mode)
(dolist (binding counsel-projectile-key-bindings)
(if (functionp (car binding))
(define-key projectile-mode-map `[remap ,(car binding)] (cdr binding))
(define-key projectile-command-map (car binding) (cdr binding)))))
(t
(dolist (binding counsel-projectile-key-bindings)
(if (functionp (car binding))
(define-key projectile-mode-map `[remap ,(car binding)] nil)
(define-key projectile-command-map (car binding) nil)))
(projectile-mode -1))))
;;;; provide