summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/mm-search.el
diff options
context:
space:
mode:
Diffstat (limited to '.config/emacs/modules/mm-search.el')
-rw-r--r--.config/emacs/modules/mm-search.el31
1 files changed, 30 insertions, 1 deletions
diff --git a/.config/emacs/modules/mm-search.el b/.config/emacs/modules/mm-search.el
index 9de1eed..9b1c4c4 100644
--- a/.config/emacs/modules/mm-search.el
+++ b/.config/emacs/modules/mm-search.el
@@ -17,4 +17,33 @@
(lazy-count-prefix-format "(%s/%s) ")
(isearch-repeat-on-direction-change t))
-(provide 'mm-search) \ No newline at end of file
+(defun mm--project-find-wrapper (command regexp)
+ (let (csf)
+ (cond ((string-suffix-p "/i" regexp)
+ (setq regexp (string-remove-suffix "/i" regexp)
+ csf t))
+ ((string-suffix-p "/I" regexp)
+ (setq regexp (string-remove-suffix "/I" regexp)
+ csf nil))
+ (:else
+ (setq csf case-fold-search)))
+ (let ((case-fold-search csf))
+ (funcall-interactively command regexp))))
+
+(defun mm-project-find-regexp (regexp)
+ "Find all matches for REGEXP in the current project’s roots.
+This is a thin wrapper around `project-find-regexp' that supports the
+`/i' and `/I' suffixes to enable and disable case-sensitive matching
+respectively."
+ (interactive (list (project--read-regexp)))
+ (mm--project-find-wrapper #'project-find-regexp regexp))
+
+(defun mm-project-or-external-find-regexp (regexp)
+ "Find all matches for REGEXP in the project roots or external roots.
+This is a thin wrapper around `project-or-external-find-regexp' that
+supports the `/i' and `/I' suffixes to enable and disable case-sensitive
+matching respectively."
+ (interactive (list (project--read-regexp)))
+ (mm--project-find-wrapper #'project-or-external-find-regexp regexp))
+
+(provide 'mm-search)