diff options
Diffstat (limited to '.emacs.d/lisp/init-search.el')
-rw-r--r-- | .emacs.d/lisp/init-search.el | 156 |
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 |