summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-03-28 11:47:42 +0200
committerMartin Polden <mpolden@mpolden.no>2021-03-28 11:47:42 +0200
commit8c836d63d4e72d284ac025fc41876caa7d5b30c8 (patch)
tree7168aea67097c25ace6b168fc117388da5ba73f3
parent0473e47bba5e3e4e47e115057bda3e2986015282 (diff)
git, grep: Defer grep loading
-rw-r--r--lisp/init-git.el10
-rw-r--r--lisp/init-grep.el4
-rw-r--r--lisp/init-project.el11
3 files changed, 12 insertions, 13 deletions
diff --git a/lisp/init-git.el b/lisp/init-git.el
index 996119f..aa0dba6 100644
--- a/lisp/init-git.el
+++ b/lisp/init-git.el
@@ -16,6 +16,11 @@ If NOSELECT is non-nil, do not select the window."
(interactive)
(mpolden/magit-visit-file-other-window t))
+(defun mpolden/vc-git-grep ()
+ "Run git grep interactively in the current VC tree."
+ (interactive)
+ (vc-git-grep (grep-read-regexp) "" (vc-root-dir)))
+
(use-package magit
:ensure t
:init
@@ -56,6 +61,11 @@ If NOSELECT is non-nil, do not select the window."
:init
(setq smerge-command-prefix (kbd "C-c x")))
+(use-package vc-git
+ :commands vc-git-grep
+ :bind (;; C-c g runs git grep in current vc tree
+ ("C-c g" . mpolden/vc-git-grep)))
+
;; follow symlinks to files under version control
(setq vc-follow-symlinks t)
diff --git a/lisp/init-grep.el b/lisp/init-grep.el
index f3d9620..4850b73 100644
--- a/lisp/init-grep.el
+++ b/lisp/init-grep.el
@@ -21,10 +21,8 @@ If NOSELECT is non-nil, do not select the window."
(setq-local truncate-lines nil))
(use-package grep
- :demand t ;; this cannot lazy load as bindings are inside a mode map
-
+ :commands grep-read-regexp
:hook (grep-mode . mpolden/grep-mode-buffer-local-variables)
-
:bind (:map grep-mode-map
;; make C-o and o behave as in dired
("o" . mpolden/grep-visit-buffer-other-window)
diff --git a/lisp/init-project.el b/lisp/init-project.el
index 5ce518a..28c7e66 100644
--- a/lisp/init-project.el
+++ b/lisp/init-project.el
@@ -2,13 +2,6 @@
;;; Commentary:
;;; Code:
-(defun mpolden/project-git-grep ()
- "Run git grep interactively in the current project."
- (interactive)
- (let ((search-regexp (grep-read-regexp))
- (dir (project-root (project-current t))))
- (vc-git-grep search-regexp "" dir)))
-
(use-package project
:ensure t
:init
@@ -16,15 +9,13 @@
(setq project-switch-commands '((project-find-file "Find file")
(project-dired "Dired")
(project-eshell "Eshell")
- (mpolden/project-git-grep "Grep" ?g)
+ (mpolden/vc-git-grep "Grep" ?g)
(magit-project-status "Magit" ?m)))
:bind (;; C-x f finds file in project
("C-x f" . project-find-file)
;; C-c p switches project
("C-c p" . project-switch-project)
- ;; C-c g runs git grep in project
- ("C-c g" . mpolden/project-git-grep)
;; C-c m compiles project
("C-c m" . project-compile)))