diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 2f4a7e8de..8232851d8 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -520,6 +520,8 @@ (cond ((featurep! :completion ivy) #'ivy-resume) ((featurep! :completion helm) #'helm-resume)) + :desc "Search for symbol in project" "*" #'+default/search-project-for-symbol-at-point + :desc "Find file in project" "SPC" #'projectile-find-file :desc "Blink cursor line" "DEL" #'+nav-flash/blink-cursor :desc "Jump to bookmark" "RET" #'bookmark-jump diff --git a/modules/config/default/autoload/default.el b/modules/config/default/autoload/default.el index dcdce7fb3..85cfb908b 100644 --- a/modules/config/default/autoload/default.el +++ b/modules/config/default/autoload/default.el @@ -235,8 +235,8 @@ If prefix ARG is set, prompt for a directory to search from." ;;;###autoload (defun +default/search-project (&optional arg) - "Conduct a text search in files under the project root. -If prefix ARG is set, prompt for a project to search from." + "Conduct a text search in the current project root. +If prefix ARG is set, prompt for a known project to search from." (interactive "P") (let ((default-directory (if arg @@ -249,3 +249,23 @@ If prefix ARG is set, prompt for a project to search from." (cond ((featurep! :completion ivy) #'+ivy/project-search) ((featurep! :completion helm) #'+helm/project-search) (#'rgrep))))) + +;;;###autoload +(defun +default/search-project-for-symbol-at-point (&optional arg symbol) + "Conduct a text search in the current project for symbol at point. +If prefix ARG is set, prompt for a known project to search from." + (interactive + (list current-prefix-arg + (thing-at-point 'symbol t))) + (let ((default-directory + (if arg + (if-let* ((projects (projectile-relevant-known-projects))) + (completing-read "Switch to project: " projects + nil t nil nil (doom-project-root)) + (user-error "There are no known projects")) + default-directory))) + (cond ((featurep! :completion ivy) + (+ivy/rg nil symbol)) + ((featurep! :completion helm) + (+helm/rg nil symbol)) + ((rgrep (regexp-opt symbol))))))