about summary refs log tree commit diff stats
path: root/.emacs.d/lisp/init-search.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/lisp/init-search.el')
-rw-r--r--.emacs.d/lisp/init-search.el156
1 files changed, 34 insertions, 122 deletions
diff --git a/.emacs.d/lisp/init-search.el b/.emacs.d/lisp/init-search.el
index f471d0e..f82d527 100644
--- a/.emacs.d/lisp/init-search.el
+++ b/.emacs.d/lisp/init-search.el
@@ -15,95 +15,6 @@
     (goto-char (point-min)))
   (advice-add 'isearch-occur :after 'isearch-occur-advice)
 
-  ;; Modified from http://yummymelon.com/devnull/improving-emacs-isearch-usability-with-transient.html
-  (transient-define-prefix isearch-menu ()
-    "isearch Menu"
-    [["Edit Search String"
-      ("e"
-       "Edit the search string (recursive)"
-       isearch-edit-string
-       :transient nil)
-      ("w"
-       "Pull next word or character word from buffer"
-       isearch-yank-word-or-char
-       :transient nil)
-      ("s"
-       "Pull next symbol or character from buffer"
-       isearch-yank-symbol-or-char
-       :transient nil)
-      ("l"
-       "Pull rest of line from buffer"
-       isearch-yank-line
-       :transient nil)
-      ("y"
-       "Pull string from kill ring"
-       isearch-yank-kill
-       :transient nil)
-      ("t"
-       "Pull thing from buffer"
-       isearch-forward-thing-at-point
-       :transient nil)]
-
-     ["Replace"
-      ("q"
-       "Start ‘query-replace’"
-       anzu-isearch-query-replace
-       :if-nil buffer-read-only
-       :transient nil)
-      ("x"
-       "Start ‘query-replace-regexp’"
-       anzu-isearch-query-replace-regexp
-       :if-nil buffer-read-only
-       :transient nil)]]
-
-    [["Toggle"
-      ("X"
-       "Toggle regexp searching"
-       isearch-toggle-regexp
-       :transient nil)
-      ("S"
-       "Toggle symbol searching"
-       isearch-toggle-symbol
-       :transient nil)
-      ("W"
-       "Toggle word searching"
-       isearch-toggle-word
-       :transient nil)
-      ("F"
-       "Toggle case fold"
-       isearch-toggle-case-fold
-       :transient nil)
-      ("L"
-       "Toggle lax whitespace"
-       isearch-toggle-lax-whitespace
-       :transient nil)]
-
-     ["Misc"
-      ("o"
-       "occur"
-       isearch-occur
-       :transient nil)
-      ("h"
-       "highlight"
-       isearch-highlight-regexp
-       :transient nil)
-      ("H"
-       "highlight lines"
-       isearch-highlight-lines-matching-regexp
-       :transient nil)
-      ("l"
-       "consult-line"
-       consult-line
-       :transient nil)
-      ("<"
-       "isearch-beginning-of-buffer"
-       isearch-beginning-of-buffer
-       :transient nil)
-      (">"
-       "isearch-end-of-buffer"
-       isearch-end-of-buffer
-       :transient nil)]])
-
   :custom
   (search-whitespace-regexp ".*\\b")
   (isearch-lax-whitespace t)
@@ -112,16 +23,25 @@
   (isearch-lazy-count t)
   (lazy-count-prefix-format nil)
   (lazy-count-suffix-format "   (%s/%s)")
+  (lazy-highlight-initial-delay 0)
   (isearch-message-properties '(read-only t cursor-intangible t face isearch-prompt))
   :bind-keymap ("C-c s" . search-map) ;; M-s clashes with paredit/smartparens bindings
   :bind
-  ("C-*" . isearch-forward-symbol-at-point)
-  (:map isearch-mode-map ("<f2>" . isearch-menu))
   (:map search-map
-        ("M-s M-<" . isearch-beginning-of-buffer)
-        ("M-s M->" . isearch-end-of-buffer)
-        ("C-c s M-<" . isearch-beginning-of-buffer)
-        ("C-c s M->" . isearch-end-of-buffer)))
+        ("<" . isearch-beginning-of-buffer)
+        (">" . isearch-end-of-buffer)))
+
+(use-feature casual-isearch
+  :after isearch
+  :bind (:map isearch-mode-map ("C-o" . casual-isearch-tmenu))
+  :config
+  ;; Replace isearch-query-replace functions with their aznu equivalents
+  (transient-replace-suffix 'casual-isearch-tmenu "r" '("r" "Start ‘anzu-query-replace’" anzu-isearch-query-replace
+                                                        :if-nil buffer-read-only))
+  (transient-replace-suffix 'casual-isearch-tmenu "x" '("x" "Start ‘anzu-query-replace-regexp’" anzu-isearch-query-replace-regexp
+                                                        :if-nil buffer-read-only))
+  ;; Add consult-line to Misc section
+  (transient-append-suffix 'casual-isearch-tmenu "u" '("l" "consult-line" consult-line)))
 
 (use-package isearch-dabbrev
   :after isearch
@@ -153,34 +73,32 @@
 
 (use-package deadgrep
   :config
-  (defun deadgrep-symbol-at-point ()
-    (interactive)
-    (deadgrep (thing-at-point 'symbol)))
   (defun deadgrep-current-directory (search-term)
     (interactive (list (deadgrep--read-search-term)))
     (deadgrep search-term (file-name-directory buffer-file-name)))
-  (defvar include-all nil)
+  (defvar deadgrep--include-all nil)
   (defun deadgrep--include-all-advice (rg-args)
-    (if include-all
+    (if deadgrep--include-all
         (push "-uuuLz" rg-args)
       rg-args))
   (advice-add 'deadgrep--arguments :filter-return #'deadgrep--include-all-advice)
   (defun deadgrep-all (search-term)
     (interactive (list (deadgrep--read-search-term)))
-    (let ((include-all t))
+    (let ((deadgrep--include-all t))
       (deadgrep search-term)))
+  :hook (deadgrep-mode . next-error-follow-minor-mode)
   :bind
   ("C-c c d" . deadgrep)
   ("C-c c M-d" . deadgrep-all)
-  ("C-S-z" . deadgrep-symbol-at-point)
   ("C-c c C-d" . deadgrep-current-directory)
   (:map deadgrep-mode-map
-        ("e" . deadgrep-edit-mode))
+        ("e" . deadgrep-edit-mode)
+        ("{" . deadgrep-backward-filename)
+        ("}" . deadgrep-forward-filename))
   (:map search-map
         ("d" . deadgrep)
         ("M-d" . deadgrep-all)
-        ("C-d" . deadgrep-current-directory)
-        ("D" . deadgrep-symbol-at-point)))
+        ("C-d" . deadgrep-current-directory)))
 
 (use-package affe
   :config
@@ -190,28 +108,22 @@
     (setq input (cdr (orderless-compile input)))
     (cons input (apply-partially #'orderless--highlight input t)))
   (setq affe-regexp-compiler #'affe-orderless-regexp-compiler)
-  ;; Manual preview key for `affe-grep'
-  (consult-customize affe-grep :preview-key (kbd "M-."))
-  (defun my/affe-grep-symbol-at-point (&optional dir initial)
-    (interactive
-     (list prefix-arg (when-let ((s (symbol-at-point)))
-                        (symbol-name s))))
-    (affe-grep dir initial))
-  (defun my/affe-find-symbol-at-point (&optional dir initial)
-    (interactive
-     (list prefix-arg (when-let ((s (symbol-at-point)))
-                        (symbol-name s))))
-    (affe-find dir initial))
+  (defalias 'affe-grep-symbol-at-point 'affe-grep)
+  (defalias 'affe-find-symbol-at-point 'affe-find)
+  (consult-customize
+   affe-grep :preview-key "M-."
+   affe-grep-symbol-at-point :initial (thing-at-point 'symbol) :preview-key "M-."
+   affe-find-symbol-at-point :initial (thing-at-point 'symbol) :preview-key "M-.")
   :bind
-  ("C-#" . affe-grep)
+  ("C-c C-#" . affe-grep)
   ("C-c z" . affe-find)
-  ("C-c Z" . my/affe-find-symbol-at-point)
-  ("C-~" . my/affe-grep-symbol-at-point)
+  ("C-c Z" . affe-find-symbol-at-point)
+  ("C-c C-~" . affe-grep-symbol-at-point)
   (:map search-map
         ("#" . affe-grep)
-        ("~" . my/affe-grep-symbol-at-point)
+        ("~" . affe-grep-symbol-at-point)
         ("a" . affe-find)
-        ("A" . my/affe-find-symbol-at-point)))
+        ("A" . affe-find-symbol-at-point)))
 
 (provide 'init-search)
 ;;; init-search.el ends here