summaryrefslogtreecommitdiffstats
path: root/lisp/init-grep.el
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-07-09 09:10:28 +0200
committerMartin Polden <mpolden@mpolden.no>2021-07-09 09:10:28 +0200
commit0197b288cea1ce7b49e8a4e0130abc9b79c3fb19 (patch)
tree9948a5b5c2e8f976d79d446bfa09a9c1484dc838 /lisp/init-grep.el
parentb151178b2e1784c4385429be23c88fd908d77e53 (diff)
grep: Use locate-dominating-file
Diffstat (limited to 'lisp/init-grep.el')
-rw-r--r--lisp/init-grep.el16
1 files changed, 3 insertions, 13 deletions
diff --git a/lisp/init-grep.el b/lisp/init-grep.el
index 6f23f47..7afe4ac 100644
--- a/lisp/init-grep.el
+++ b/lisp/init-grep.el
@@ -5,22 +5,12 @@
(defvar mpolden/rg-template "rg -nH --no-heading <C> -e <R> -- "
"The grep template to use when rg (ripgrep) is installed.")
-(defun mpolden/git-root-dir (filename)
- "Return the root directory to the Git repository of FILENAME.
-Return nil if FILENAME is not in a Git repository."
- (let* ((dir (if (directory-name-p filename)
- filename
- (file-name-directory filename)))
- (git-dir (expand-file-name ".git" dir)))
- (cond ((file-directory-p git-dir) dir)
- ((not (equal dir "/")) (mpolden/git-root-dir
- (directory-file-name dir))))))
-
(defun mpolden/grep ()
"Run grep interactively in `default-directory' or current Git repository."
(interactive)
- (let ((git-root-dir (mpolden/git-root-dir (or buffer-file-name
- default-directory))))
+ (let ((git-root-dir (locate-dominating-file (or buffer-file-name
+ default-directory)
+ ".git")))
(if git-root-dir
(vc-git-grep (grep-read-regexp) "" git-root-dir)
(lgrep (grep-read-regexp) "" default-directory))))