blob: 9b1c4c4c054f97aff01d85e7b142137366a79acf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
;;; mm-search.el --- Emacs text searching -*- lexical-binding: t; -*-
;;; Classic Emacs text search
(use-package isearch
:demand t
:bind ( :map isearch-mode-map
("M-/" . isearch-complete)
:map minibuffer-local-isearch-map
("M-/" . isearch-complete-edit))
:custom
(search-whitespace-regexp ".*?")
(isearch-lax-whitespace t)
(isearch-regexp-lax-whitespace nil)
(isearch-lazy-count t)
(lazy-highlight-initial-delay 0)
(lazy-count-prefix-format "(%s/%s) ")
(isearch-repeat-on-direction-change t))
(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)
|