Files
dotemacs/lisp/ux/search-replace.el
2022-01-09 21:19:46 +01:00

61 lines
1.6 KiB
EmacsLisp

;;; search-replace.el --- Configuration for searching and replacing -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(defun user--search-replace-config ()
"Initialize Emacs search and replace."
(validate-setq
;; Highlight all visible matches.
search-highlight t
query-replace-highlight t
;; Perform certain commands only on the marked region.
transient-mark-mode t)
;;; (Bindings) ;;;
;; Use regular expression searches by default.
(user/bind-key-global :basic :search-forward 'isearch-forward-regexp)
(user/bind-key-global :basic :search-backward 'isearch-backward-regexp)
(user/bind-key-global :basic :search-files 'find-grep)
;;; (Packages) ;;;
(use-package visual-regexp
:defer
:bind* (([remap query-replace-regexp] . vr/query-replace)
([remap replace-regexp] . vr/replace)))
(use-package replace-with-inflections
:bind (:map search-map
("n" . query-replace-names-with-inflections)))
(use-package anzu
:defer
:diminish anzu-mode
:config
(global-anzu-mode t))
(use-package grep
:defer
:config
(validate-setq
;; Highlight matches when using grep.
grep-highlight-matches t)
(when (eq system-type 'darwin)
(-when-let (gnu-find (executable-find "gfind"))
(validate-setq find-program gnu-find)))
(-when-let (gnu-xargs (executable-find "gxargs"))
(validate-setq xargs-program gnu-xargs))
(use-package wgrep
:defer
:config
(use-package wgrep-helm)
(use-package wgrep-ag
:if (executable-find "ag")))))
(user--search-replace-config)
(provide 'ux/search-replace)
;;; search-replace.el ends here