[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master fea1a5e: [el-search] Fix behavior after completed single-b
From: |
Michael Heerdegen |
Subject: |
[elpa] master fea1a5e: [el-search] Fix behavior after completed single-buffer search |
Date: |
Sun, 17 Feb 2019 15:59:39 -0500 (EST) |
branch: master
commit fea1a5e52c9574b3062f45c655ce3285099a0d1c
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>
[el-search] Fix behavior after completed single-buffer search
Make 'el-search-from-beginning' and 'el-search-jump-to-search-head'
after completed single-buffer search work as expected.
* packages/el-search/el-search.el (el-search-pattern)
(el-search-pattern-backward, el-search-this-sexp)
(el-search--occur-button-action)
(el-search--search-and-replace-pattern): Make single-buffer ad-hoc
searches have the search buffer as non-nil 'is-single-buffer' value.
(el-search-object): Add comment about the intended usage of the
'is-single-buffer' property.
(el-search-revive-search): New function.
(el-search-barf-if-not-search-buffer): If we are in the searched
buffer of a completed single-buffer search, silently revive it with
'el-search-revive-search'.
(el-search-jump-to-search-head): When the search needs to be
restarted, use 'el-search-revive-search' instead of only
'el-search-reset-search'.
---
packages/el-search/el-search.el | 93 ++++++++++++++++++++++++-----------------
1 file changed, 54 insertions(+), 39 deletions(-)
diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el
index 7328ec7..27fc93d 100644
--- a/packages/el-search/el-search.el
+++ b/packages/el-search/el-search.el
@@ -1453,7 +1453,8 @@ optional MESSAGE are used to construct the error message."
get-matches ;method returning a stream of all matches
properties ;An alist of additional properties. Meaningful properties
;are:
- ; - is-single-buffer Indicates a single-buffer search
+ ; - is-single-buffer Indicates a single-buffer search; value
should
+ ; then be the searched buffer
; - description When specified, a string describing the
search
)
@@ -1504,9 +1505,20 @@ optional MESSAGE are used to construct the error
message."
(eq (or buffer (current-buffer))
(el-search-head-buffer (el-search-object-head
el-search--current-search)))))
+(defun el-search-revive-search ()
+ (el-search-hl-post-command-fun 'stop)
+ (setq el-search--success nil)
+ (setq el-search--wrap-flag nil)
+ (el-search-reset-search el-search--current-search))
+
(defun el-search-barf-if-not-search-buffer (&optional buffer &rest args)
- (unless (el-search--search-buffer-p buffer)
- (apply #'user-error (or args (list "Not in current search buffer")))))
+ (if (eq (alist-get 'is-single-buffer (el-search-object-properties
el-search--current-search))
+ (current-buffer))
+ (unless (el-search-head-buffer (el-search-object-head
el-search--current-search))
+ (el-search-revive-search)
+ (el-search--next-buffer el-search--current-search))
+ (unless (el-search--search-buffer-p buffer)
+ (apply #'user-error (or args (list "Not in current search buffer"))))))
(defun el-search--get-search-description-string (search &optional verbose
dont-propertize)
(concat
@@ -3011,8 +3023,8 @@ make current."
(el-search-hl-sexp)
(el-search-hl-other-matches (el-search--current-matcher)))))))
(el-search--message-no-log "[Search completed - restarting]")
+ (el-search-revive-search)
(sit-for 1.5)
- (el-search-reset-search el-search--current-search)
(el-search-continue-search))
(el-search-prefix-key-maybe-set-transient-map))
@@ -3160,7 +3172,7 @@ See `el-search-defined-patterns' for a list of defined
patterns."
(el-search--set-wrap-flag nil)
(el-search--message-no-log "[Wrapped search]")
(sit-for .7)
- (el-search-from-beginning 'restart)))
+ (el-search-from-beginning 1)))
((or
(el-search--pending-search-p)
(and (eq this-command last-command)
@@ -3169,12 +3181,13 @@ See `el-search-defined-patterns' for a list of defined
patterns."
(el-search--skip-expression nil t)
(el-search-continue-search 'from-here)))
(t ;create a new search single-buffer search
- (el-search-setup-search
- pattern
- (let ((current-buffer (current-buffer)))
- (lambda () (stream (list current-buffer))))
- (lambda (search) (setf (alist-get 'is-single-buffer
(el-search-object-properties search)) t))
- 'from-here))))
+ (let ((current-buffer (current-buffer)))
+ (el-search-setup-search
+ pattern
+ (lambda () (stream (list current-buffer)))
+ (lambda (search) (setf (alist-get 'is-single-buffer
(el-search-object-properties search))
+ current-buffer))
+ 'from-here)))))
;;;###autoload
(defalias 'el-search #'el-search-pattern)
@@ -3328,12 +3341,13 @@ See the command `el-search-pattern' for more
information."
(progn
(el-search-compile-pattern-in-search el-search--current-search)
(el-search-prefix-key-maybe-set-transient-map))
- (el-search-setup-search-1
- pattern
- (let ((current-buffer (current-buffer)))
- (lambda () (stream (list current-buffer))))
- 'from-here
- (lambda (search) (setf (alist-get 'is-single-buffer
(el-search-object-properties search)) t)))
+ (let ((current-buffer (current-buffer)))
+ (el-search-setup-search-1
+ pattern
+ (lambda () (stream (list current-buffer)))
+ 'from-here
+ (lambda (search) (setf (alist-get 'is-single-buffer
(el-search-object-properties search))
+ current-buffer))))
;; Make this buffer the current search buffer so that a following C-S
;; doesn't delete highlighting
(el-search--next-buffer el-search--current-search))
@@ -3397,12 +3411,13 @@ Use the normal search commands to seize the search."
(user-error "No sexp at point")))))))
(let ((printed-sexp (el-search--pp-to-string sexp)))
(el-search--pushnew-to-history (concat "'" printed-sexp)
'el-search-pattern-history)
- (el-search-setup-search-1
- `',sexp
- (let ((current-buffer (current-buffer)))
- (lambda () (stream (list current-buffer))))
- 'from-here
- (lambda (search) (setf (alist-get 'is-single-buffer
(el-search-object-properties search)) t)))
+ (let ((current-buffer (current-buffer)))
+ (el-search-setup-search-1
+ `',sexp
+ (lambda () (stream (list current-buffer)))
+ 'from-here
+ (lambda (search) (setf (alist-get 'is-single-buffer
(el-search-object-properties search))
+ current-buffer))))
(el-search--next-buffer el-search--current-search)
(setf (el-search-head-position (el-search-object-head
el-search--current-search))
(copy-marker (point)))
@@ -3533,7 +3548,7 @@ Prompt for a new pattern and revert."
'from-here
(lambda (search)
(setf (alist-get 'is-single-buffer (el-search-object-properties
search))
- t)))
+ buffer)))
(el-search--next-buffer el-search--current-search)
(setq this-command 'el-search-pattern
el-search--success t)
@@ -4246,21 +4261,21 @@ exactly you did? Thanks!"))))
(defun el-search--search-and-replace-pattern
(pattern replacement &optional splice to-input-string use-current-search)
(unless use-current-search
- (el-search-setup-search-1 pattern
- (let ((current-buffer (current-buffer)))
- (lambda () (stream (list current-buffer))))
- t
- (let ((here (copy-marker (point))))
- (lambda (search)
- (setf (alist-get 'is-single-buffer
-
(el-search-object-properties search))
- t)
- (setf (alist-get 'description
(el-search-object-properties search))
- "Search created by
`el-search-query-replace'")
- (let ((inhibit-message t))
- (el-search--next-buffer search)
- (setf (el-search-head-position
(el-search-object-head search))
- here))))))
+ (let ((current-buffer (current-buffer)))
+ (el-search-setup-search-1 pattern
+ (lambda () (stream (list current-buffer)))
+ t
+ (let ((here (copy-marker (point))))
+ (lambda (search)
+ (setf (alist-get 'is-single-buffer
+
(el-search-object-properties search))
+ current-buffer)
+ (setf (alist-get 'description
(el-search-object-properties search))
+ "Search created by
`el-search-query-replace'")
+ (let ((inhibit-message t))
+ (el-search--next-buffer search)
+ (setf (el-search-head-position
(el-search-object-head search))
+ here)))))))
(catch 'done
(let ((replace-all nil) (replace-all-and-following nil)
nbr-replaced nbr-skipped (nbr-replaced-total 0) (nbr-changed-buffers
0)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] master fea1a5e: [el-search] Fix behavior after completed single-buffer search,
Michael Heerdegen <=