summaryrefslogtreecommitdiff
path: root/emacs
diff options
context:
space:
mode:
authorGrégoire Duchêne <gduchene@awhk.org>2022-01-15 13:48:37 +0000
committerGrégoire Duchêne <gduchene@awhk.org>2022-01-15 13:48:37 +0000
commit240973f98e87431a5678188f653224013b9501a8 (patch)
treec1113e97d89b587e4deb581c289dcdd6f6303f51 /emacs
parent890c31f329c9f17641a6f4068aa3ae7116b60db6 (diff)
emacs: Add my/swiper and bind it to C-c s
If the region is active, my/swiper will call swiper with the contents of the region as initial input. Also, When invoked with a prefix argument, swiper-all is called instead.
Diffstat (limited to 'emacs')
-rw-r--r--emacs/functions.el11
-rw-r--r--emacs/init.el3
2 files changed, 12 insertions, 2 deletions
diff --git a/emacs/functions.el b/emacs/functions.el
index fc8431f..b322af6 100644
--- a/emacs/functions.el
+++ b/emacs/functions.el
@@ -19,6 +19,17 @@ is active."
(isearch-yank-string (buffer-substring-no-properties
(region-beginning) (region-end)))))
+(defun my/swiper (&optional swiper-all)
+ "Call ‘swiper’ (‘swiper-all’ when prefixed) with the contents
+of the region if it is active."
+ (interactive "P")
+ (if (use-region-p)
+ (let ((initial-input (buffer-substring-no-properties
+ (region-beginning) (region-end))))
+ (deactivate-mark)
+ (if swiper-all (swiper-all initial-input) (swiper initial-input)))
+ (if swiper-all (swiper-all) (swiper))))
+
;; Theme Functions
diff --git a/emacs/init.el b/emacs/init.el
index 554d7c1..30140ce 100644
--- a/emacs/init.el
+++ b/emacs/init.el
@@ -89,8 +89,7 @@
(counsel-mode 1)
(diminish 'counsel-mode)
-(global-set-key (kbd "C-c s") #'swiper)
-(global-set-key (kbd "C-c x") #'swiper-all)
+(global-set-key (kbd "C-c s") #'my/swiper)
(dolist (fn '(isearch-forward isearch-backward))
(advice-add fn :after #'my/isearch-region))