aboutsummaryrefslogtreecommitdiff
path: root/projectile.el
diff options
context:
space:
mode:
authorBozhidar Batsov <bozhidar@batsov.dev>2022-10-27 19:19:59 +0300
committerBozhidar Batsov <bozhidar@batsov.dev>2022-10-27 19:19:59 +0300
commit93c61a98f2ee983d856f1c419caea7fb2ab1ad19 (patch)
tree5314c97f2a5d66758b116ff5aa06508b970bb232 /projectile.el
parentf5a2a3ab268b905c796de255e04790e6e69a61ab (diff)
Add new command projectile-find-references
Diffstat (limited to 'projectile.el')
-rw-r--r--projectile.el15
1 files changed, 14 insertions, 1 deletions
diff --git a/projectile.el b/projectile.el
index 9041cd9..f746c0b 100644
--- a/projectile.el
+++ b/projectile.el
@@ -4216,6 +4216,16 @@ installed to work."
args))
(t (error "Packages `ripgrep' and `rg' are not available")))))
+(defun projectile-find-references (&optional symbol)
+ "Find all references to SYMBOL in the current project.
+
+A thin wrapper around `xref-references-in-directory'."
+ (interactive)
+ (when (fboundp 'xref-references-in-directory)
+ (let ((project-root (projectile-acquire-root))
+ (symbol (or symbol (read-from-minibuffer "Lookup in project: " (projectile-symbol-at-point)))))
+ (xref--show-xrefs (xref-references-in-directory symbol project-root) nil))))
+
(defun projectile-tags-exclude-patterns ()
"Return a string with exclude patterns for ctags."
(mapconcat (lambda (pattern) (format "--exclude=\"%s\""
@@ -5815,6 +5825,7 @@ thing shown in the mode line otherwise."
(define-key map (kbd "5 t") #'projectile-find-implementation-or-test-other-frame)
(define-key map (kbd "!") #'projectile-run-shell-command-in-root)
(define-key map (kbd "&") #'projectile-run-async-shell-command-in-root)
+ (define-key map (kbd "?") #'projectile-find-references)
(define-key map (kbd "a") #'projectile-find-other-file)
(define-key map (kbd "b") #'projectile-switch-to-buffer)
(define-key map (kbd "d") #'projectile-find-dir)
@@ -5838,6 +5849,7 @@ thing shown in the mode line otherwise."
(define-key map (kbd "s g") #'projectile-grep)
(define-key map (kbd "s r") #'projectile-ripgrep)
(define-key map (kbd "s s") #'projectile-ag)
+ (define-key map (kbd "s x") #'projectile-find-references)
(define-key map (kbd "S") #'projectile-save-project-buffers)
(define-key map (kbd "t") #'projectile-toggle-between-implementation-and-test)
(define-key map (kbd "T") #'projectile-find-test-file)
@@ -5912,7 +5924,8 @@ thing shown in the mode line otherwise."
["Search with ag" projectile-ag]
["Search with ripgrep" projectile-ripgrep]
["Replace in project" projectile-replace]
- ["Multi-occur in project" projectile-multi-occur])
+ ["Multi-occur in project" projectile-multi-occur]
+ ["Find references in project" projectile-find-references])
("Run..."
["Run shell" projectile-run-shell]
["Run eshell" projectile-run-eshell]