feat(sterni/emacs): project-independent project-find-regexp

I like project-find-regexp better than grep-find-file, but it's a little
annoying to use for arbitrary directories. With C-u, it unnecessarily
prompts for a file name pattern.

For convenience, add a variant of project-find-regexp which always
prompts for a directory, but doesn't require a project nor prompts for a
file name pattern.

Change-Id: I40f0bdcca4aa129f447f4f4790d732afcf76d3f7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/13056
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
This commit is contained in:
sterni 2025-01-26 21:36:44 +01:00 committed by clbot
parent 1fcd827230
commit a8f17cc37a

View file

@ -108,6 +108,22 @@
(setq-default indicate-buffer-boundaries 'left) (setq-default indicate-buffer-boundaries 'left)
(setq sentence-end-double-space nil) (setq sentence-end-double-space nil)
;; search
;; TODO(sterni): can we use ripgrep for xref?
(defun sterni-find-regexp (regexp)
"Find all matches for REGEXP in a specified directory.
Like \\[project-find-regexp], but always ask for a directory (defaulting to
`default-directory') and never prompt for a file glob pattern."
(interactive (list (project--read-regexp)))
(require 'xref)
(let* ((dir (read-directory-name "Base directory: "
default-directory nil t))
(files (project--files-in-directory dir nil)))
(xref-show-xrefs
(apply-partially #'project--find-regexp-in-files regexp files)
nil)))
;;; Configure built in modes ;;; Configure built in modes
;; Perl ;; Perl
@ -228,6 +244,7 @@
(evil-define-key 'normal 'global (kbd "<leader>em") 'man) (evil-define-key 'normal 'global (kbd "<leader>em") 'man)
(evil-define-key '(normal visual) 'global (kbd "<leader>eu") 'browse-url-at-point) (evil-define-key '(normal visual) 'global (kbd "<leader>eu") 'browse-url-at-point)
(evil-define-key '(normal visual) 'global (kbd "<leader>ef") 'ffap) (evil-define-key '(normal visual) 'global (kbd "<leader>ef") 'ffap)
(evil-define-key 'normal 'global (kbd "<leader>eg") 'sterni-find-regexp)
(evil-define-key 'normal 'global (kbd "<leader>er") 'rename-visited-file) (evil-define-key 'normal 'global (kbd "<leader>er") 'rename-visited-file)
;; modify what is displayed ;; modify what is displayed
(evil-define-key 'normal 'global (kbd "<leader>dw") (evil-define-key 'normal 'global (kbd "<leader>dw")