cp-find-file-dwim: Add

This commit is contained in:
Eric Danan 2018-08-15 16:20:29 +02:00
parent 842a105af4
commit ab400743e6
2 changed files with 35 additions and 18 deletions

View file

@ -67,15 +67,16 @@ Note that if you turn on projectile mode but not counsel-projectile mode, the co
## Summary of interactive commands ## Summary of interactive commands
Replacements for existing commands: Replacements for existing commands:
| Key binding | Command | Description | | Key binding | Command | Description |
| :------------------- | :------------------------------------ | :-------------------------- | | :------------------- | :------------------------------------ | :------------------------------------------------------- |
| <kbd>C-c p p</kbd> | `counsel-projectile-switch-project` | Switch project | | <kbd>C-c p p</kbd> | `counsel-projectile-switch-project` | Switch project |
| <kbd>C-c p f</kbd> | `counsel-projectile-find-file` | Jump to a project file | | <kbd>C-c p f</kbd> | `counsel-projectile-find-file` | Jump to a project file |
| <kbd>C-c p d</kbd> | `counsel-projectile-find-dir` | Jump to a project directory | | <kbd>C-c p g</kbd> | `counsel-projectile-find-file-dwim` | Jump to a project file using completion based on context |
| <kbd>C-c p b</kbd> | `counsel-projectile-switch-to-buffer` | Jump to a project buffer | | <kbd>C-c p d</kbd> | `counsel-projectile-find-dir` | Jump to a project directory |
| <kbd>C-c p s g</kbd> | `counsel-projectile-grep` | Search project with grep | | <kbd>C-c p b</kbd> | `counsel-projectile-switch-to-buffer` | Jump to a project buffer |
| <kbd>C-c p s s</kbd> | `counsel-projectile-ag` | Search project with ag | | <kbd>C-c p s g</kbd> | `counsel-projectile-grep` | Search project with grep |
| <kbd>C-c p s r</kbd> | `counsel-projectile-rg` | Search project with rg | | <kbd>C-c p s s</kbd> | `counsel-projectile-ag` | Search project with ag |
| <kbd>C-c p s r</kbd> | `counsel-projectile-rg` | Search project with rg |
New commands: New commands:
@ -142,6 +143,10 @@ This command is a replacement for `projectile-find-file`. It displays a list of
| <kbd>r</kbd> | Open file as root | | <kbd>r</kbd> | Open file as root |
| <kbd>m</kbd> | Find file manually: call `counsel-find-file` from file's directory | | <kbd>m</kbd> | Find file manually: call `counsel-find-file` from file's directory |
| <kbd>p</kbd> | Switch project: call `counsel-projectile-switch-project` (see above) | | <kbd>p</kbd> | Switch project: call `counsel-projectile-switch-project` (see above) |
## The `counsel-projectile-find-file-dwim` command
Default key binding: <kbd>C-c p g</kbd>.
This command is a replacement for `projectile-find-file-dwim`. It is similar to `counsel-projectile-find-file` except that the list of project files is restricted to those matching the filename at point, if any.
## The `counsel-projectile-find-dir` command ## The `counsel-projectile-find-dir` command
Default key binding: <kbd>C-c p d</kbd>. Default key binding: <kbd>C-c p d</kbd>.

View file

@ -368,24 +368,35 @@ on `counsel-find-file-ignore-regexp'."
str)) str))
;;;###autoload ;;;###autoload
(defun counsel-projectile-find-file (&optional arg) (defun counsel-projectile-find-file (&optional arg dwim)
"Jump to a file in the current project. "Jump to a file in the current project.
With a prefix ARG, invalidate the cache first." With a prefix ARG, invalidate the cache first. If DWIM is
non-nil, use completion based on context."
(interactive "P") (interactive "P")
(projectile-maybe-invalidate-cache arg) (projectile-maybe-invalidate-cache arg)
(ivy-read (projectile-prepend-project-name "Find file: ") (let* ((project-files (projectile-current-project-files))
(projectile-current-project-files) (files (and dwim (projectile-select-files project-files))))
:matcher counsel-projectile-find-file-matcher (ivy-read (projectile-prepend-project-name "Find file: ")
:require-match t (or files project-files)
:sort counsel-projectile-sort-files :matcher counsel-projectile-find-file-matcher
:action counsel-projectile-find-file-action :require-match t
:caller 'counsel-projectile-find-file)) :sort counsel-projectile-sort-files
:action counsel-projectile-find-file-action
:caller 'counsel-projectile-find-file)))
(ivy-set-display-transformer (ivy-set-display-transformer
'counsel-projectile-find-file 'counsel-projectile-find-file
'counsel-projectile-find-file-transformer) 'counsel-projectile-find-file-transformer)
;;;###autoload
(defun counsel-projectile-find-file-dwim (&optional arg)
"Jump to a file in the current project using completion based on context.
With a prefix ARG, invalidate the cache first."
(interactive "P")
(counsel-projectile-find-file arg t))
;;;; counsel-projectile-find-dir ;;;; counsel-projectile-find-dir
(defcustom counsel-projectile-sort-directories nil (defcustom counsel-projectile-sort-directories nil
@ -1363,6 +1374,7 @@ If not inside a project, call `counsel-projectile-switch-project'."
(defcustom counsel-projectile-key-bindings (defcustom counsel-projectile-key-bindings
'((projectile-find-file . counsel-projectile-find-file) '((projectile-find-file . counsel-projectile-find-file)
(projectile-find-file-dwim . counsel-projectile-find-file-dwim)
(projectile-find-dir . counsel-projectile-find-dir) (projectile-find-dir . counsel-projectile-find-dir)
(projectile-switch-to-buffer . counsel-projectile-switch-to-buffer) (projectile-switch-to-buffer . counsel-projectile-switch-to-buffer)
(projectile-grep . counsel-projectile-grep) (projectile-grep . counsel-projectile-grep)