branch: elpa/isl
commit c3768f64fb18aba86b2e7a4a93313e2a4bb64cb1
Author: Thierry Volpiatto <[email protected]>
Commit: Thierry Volpiatto <[email protected]>
Provide isl-resume
---
isearch-light.el | 47 +++++++++++++++++++++++++++++++++++++----------
1 file changed, 37 insertions(+), 10 deletions(-)
diff --git a/isearch-light.el b/isearch-light.el
index 56274bef1cb..1feeb37c598 100644
--- a/isearch-light.el
+++ b/isearch-light.el
@@ -54,6 +54,8 @@
;; Internals
(defvar isl-pattern "")
+(defvar isl-last-query nil)
+(defvar isl-last-object nil)
(defvar isl-current-buffer nil)
(defvar isl--item-overlays nil)
(defvar isl--iterator nil)
@@ -807,7 +809,7 @@ appended at end."
(isl-setup-mode-line)
(goto-char isl-initial-pos)))))))
-(defun isl-read-from-minibuffer (prompt)
+(defun isl-read-from-minibuffer (prompt &optional initial-input)
"Read input from minibuffer with prompt PROMPT."
(let (timer)
(unwind-protect
@@ -816,7 +818,7 @@ appended at end."
(setq timer (run-with-idle-timer
isl-timer-delay 'repeat #'isl-check-input)))
(read-from-minibuffer
- prompt nil isl-map nil 'isl-history
+ prompt initial-input isl-map nil 'isl-history
(if (region-active-p)
(buffer-substring-no-properties
(region-beginning)
@@ -831,6 +833,19 @@ appended at end."
(hs-show-hook (list (lambda () (and pos (goto-char pos))))))
(when (buffer-live-p (get-buffer isl-help-buffer-name))
(kill-buffer isl-help-buffer-name))
+ (setq isl-last-object
+ (lambda ()
+ (setq mode-line-format mode-line-format
+ isl-last-query isl-pattern
+ isl-initial-pos pos
+ isl--yank-point isl--yank-point
+ isl--iterator isl--iterator
+ isl--number-results isl--number-results
+ isl-case-fold-search isl-case-fold-search
+ isl-search-function isl-search-function
+ buffer-invisibility-spec buffer-invisibility-spec
+ isl--hidding isl--hidding
+ cursor-in-non-selected-windows
cursor-in-non-selected-windows)))
(isl-delete-overlays)
(setq mode-line-format (default-value 'mode-line-format)
isl--yank-point nil
@@ -859,18 +874,21 @@ appended at end."
(derived-mode-p 'markdown-mode))
(markdown-show-entry)))
(error nil)))))
+
-(defun isl-search-1 ()
+(defun isl-search-1 (&optional resume)
"Launch isl in current-buffer."
- (setq isl-initial-pos (point)
- isl-pattern ""
- isl--direction 'forward
- isl-current-buffer (current-buffer)
- isl--buffer-invisibility-spec buffer-invisibility-spec
- cursor-in-non-selected-windows nil)
+ (unless resume
+ (setq isl-initial-pos (point)
+ isl-pattern ""
+ isl--direction 'forward
+ isl-current-buffer (current-buffer)
+ isl--buffer-invisibility-spec buffer-invisibility-spec
+ cursor-in-non-selected-windows nil))
(unwind-protect
(condition-case-unless-debug nil
- (isl-read-from-minibuffer "Search: ")
+ (isl-read-from-minibuffer
+ "Search: " (when resume isl-last-query))
(quit
(setq isl--quit t)
(goto-char isl-initial-pos)))
@@ -888,6 +906,15 @@ appended at end."
isl--point-max nil)
(isl-search-1))
+(defun isl-resume ()
+ "Resume previous isl session."
+ (interactive)
+ (switch-to-buffer isl-current-buffer)
+ (with-current-buffer isl-current-buffer
+ (funcall isl-last-object)
+ (setq isl-pattern ""))
+ (isl-search-1 'resume))
+
;;;###autoload
(defun isl-narrow-to-defun ()
"Start incremental searching in current defun."