[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] scratch/mheerdegen-preview e43d95b 10/32: WIP [el-search] Impleme
From: |
Michael Heerdegen |
Subject: |
[elpa] scratch/mheerdegen-preview e43d95b 10/32: WIP [el-search] Implement 'el-search-keyboard-quit' |
Date: |
Sat, 20 Oct 2018 18:18:59 -0400 (EDT) |
branch: scratch/mheerdegen-preview
commit e43d95be6ce4820a996046db1f99e4be3c2d1188
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>
WIP [el-search] Implement 'el-search-keyboard-quit'
---
packages/el-search/el-search.el | 38 +++++++++++++++++++++++++++++---------
1 file changed, 29 insertions(+), 9 deletions(-)
diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el
index 30169fb..9728039 100644
--- a/packages/el-search/el-search.el
+++ b/packages/el-search/el-search.el
@@ -80,7 +80,8 @@
;; minibuffer). All commands that are not search or scrolling
;; commands terminate the search, while the state of the search is
;; always automatically saved. Like in isearch you can also just
-;; hit RET to exit.
+;; hit RET to exit, or hit C-g to abort and jump back to where you
+;; started.
;;
;; C-R, M-s e r (el-search-pattern-backward)
;; Search backward.
@@ -414,10 +415,6 @@
;;
;; TODO:
;;
-;; - There should be a way to go back to the starting position, like
-;; in Isearch, which does this with (push-mark isearch-opoint t) in
-;; `isearch-done'.
-;;
;; - Add a help command that can be called while searching.
;;
;; - Make searching work in comments, too? (->
@@ -677,6 +674,9 @@ useful for debugging.")
(defvar el-search--current-search nil
"The currently active search, an `el-search-object', or nil.")
+(defvar el-search--search-origin nil
+ "Doc...")
+
(defvar-local el-search--temp-buffer-flag nil
"Non-nil tags file visiting buffers as temporarily opened for searching.")
@@ -1780,10 +1780,24 @@ any case."
(interactive)
nil)
+(defun el-search--set-search-origin-maybe ()
+ (unless (el-search--pending-search-p)
+ (setq el-search--search-origin (copy-marker (point)))))
+
+(defun el-search-keyboard-quit (&optional dont-quit)
+ (interactive)
+ (setq el-search--success nil)
+ (el-search-hl-post-command-fun) ;clear highlighting
+ (switch-to-buffer (marker-buffer el-search--search-origin))
+ (goto-char el-search--search-origin)
+ (unless dont-quit
+ (signal 'quit nil)))
+
(defvar el-search-basic-transient-map
(let ((transient-map (make-sparse-keymap)))
- (define-key transient-map [return] #'el-search-pause-search)
- (define-key transient-map (kbd "RET") #'el-search-pause-search)
+ (define-key transient-map [return] #'el-search-pause-search)
+ (define-key transient-map (kbd "RET") #'el-search-pause-search)
+ (define-key transient-map [(control ?g)] #'el-search-keyboard-quit)
transient-map))
(defvar el-search-prefix-key-transient-map
@@ -1848,6 +1862,7 @@ any case."
(setq el-search-use-transient-map t))
(defun el-search-setup-search-1 (pattern get-buffer-stream &optional
from-here setup-function)
+ (el-search--set-search-origin-maybe)
(setq el-search--success nil)
(setq el-search--current-search
(el-search-make-search pattern get-buffer-stream))
@@ -2381,7 +2396,8 @@ created.")
(concat "[Not at a match] "
(if (= matches-<=-here total-matches)
(format "(%s/%s <-)" matches-<=-here
total-matches)
- (format "(-> %s/%s)" (1+ matches-<=-here)
total-matches))))))))))))
+ (format "(-> %s/%s)" (1+ matches-<=-here)
total-matches))))))))))
+ (when quit-flag (el-search-keyboard-quit 'dont-quit))))
(defun el-search-hl-other-matches (matcher)
"Highlight all visible matches.
@@ -2464,6 +2480,7 @@ In a non-interactive call, ARG should be an integer,
having the
same meaning as a numeric prefix arg, or an el-search-object to
make current."
(interactive "P")
+ (el-search--set-search-origin-maybe)
(when (integerp arg)
(el-search-barf-if-not-search-buffer
(current-buffer)
@@ -2570,6 +2587,8 @@ instead of the position where the search would normally be
continued."
(interactive "P")
(setq this-command 'el-search-pattern)
+ (unless (eq last-command this-command)
+ (el-search--set-search-origin-maybe))
(el-search-compile-pattern-in-search el-search--current-search)
(el-search-protect-search-head
(unwind-protect
@@ -2740,6 +2759,7 @@ executed, and nil else."
With prefix ARG, restart the current search when positive; go to the
last match in the current buffer when negative."
(interactive "P")
+ (el-search--set-search-origin-maybe)
(cond
((< (prefix-numeric-value arg) 0)
(el-search-last-buffer-match))
@@ -2757,7 +2777,7 @@ last match in the current buffer when negative."
(defun el-search-last-buffer-match ()
"Go to the last of this buffer's matches."
(interactive)
- (setq this-command 'el-search-pattern)
+ (el-search--set-search-origin-maybe)
(el-search-barf-if-not-search-buffer)
(el-search--unless-no-buffer-match
(goto-char (point-max))
- [elpa] scratch/mheerdegen-preview 73bca9f 12/32: WIP [el-search] Fix more "redundant _ pattern" cases, (continued)
- [elpa] scratch/mheerdegen-preview 73bca9f 12/32: WIP [el-search] Fix more "redundant _ pattern" cases, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview d27e751 19/32: WIP [el-search] Adjust prev/next match commands for search and occur, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 562b2db 18/32: WIP [el-search] Fix search setup when occur flag bound, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 1f46601 15/32: WIP: Additions to "Mb hints", Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview a8483cd 22/32: WIP: [el-search] Fine tune separator for splicing replace, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 5bdc539 27/32: WIP: Include leading comments in occur defun context, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview f11f566 31/32: WIP: Small fix in el-search--changed-files-in-repo, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview fc2c159 29/32: WIP: Fix C-A and C-J after finished single-buffer search, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview d6a3158 01/32: WIP: [el-search] Fix nested match issues in *El Occur*, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 74cc15a 08/32: WIP: New command 'el-search-repository', Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview e43d95b 10/32: WIP [el-search] Implement 'el-search-keyboard-quit',
Michael Heerdegen <=
- [elpa] scratch/mheerdegen-preview 163a7c7 03/32: WIP: Add package "sscell", Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 216fd06 07/32: WIP: New file el-search/el-search-pp.el, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 4f3d9bf 11/32: WIP [el-search] Add quick help command, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 5b994a5 17/32: WIP [el-search] Fix C-j with numeric arg in error case, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 54e3b67 16/32: WIP: Optimize caching, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 3aa418f 20/32: WIP: Improvements for change and changed, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 8c8e364 30/32: WIP: Small fix in 'el-search--reset-wrap-flag', Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 009dc4d 32/32: WIP: [el-search] Enhance doc of el-search-occur-mode, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview 4ce7e1d 06/32: WIP: Add el-search-hi-lock.el, Michael Heerdegen, 2018/10/20
- [elpa] scratch/mheerdegen-preview e4bf180 25/32: WIP: [el-search] Some minor tweaks, Michael Heerdegen, 2018/10/20