[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 27774a5: Recover from search head pointing to a killed buf
From: |
Michael Heerdegen |
Subject: |
[elpa] master 27774a5: Recover from search head pointing to a killed buffer |
Date: |
Sun, 29 Oct 2017 09:54:24 -0400 (EDT) |
branch: master
commit 27774a575cbb074d2fab4acbed50c276739783db
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>
Recover from search head pointing to a killed buffer
Try to resume from the associated buffer file; alternatively restart
the search.
---
packages/el-search/el-search.el | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el
index 11610dd..23f1abe 100644
--- a/packages/el-search/el-search.el
+++ b/packages/el-search/el-search.el
@@ -338,8 +338,6 @@
;;
;; - The default keys are not available in the terminal
;;
-;; - Handle buffers killed/files closed when resuming a search
-;;
;; - Make searching work in comments, too? (->
;; `parse-sexp-ignore-comments'). Related: should the pattern
;; `symbol' also match strings that contain matches for a symbol so
@@ -1911,7 +1909,30 @@ that the current search."
(current-head (el-search-object-head search))
(current-search-buffer (el-search-head-buffer current-head)))
(if (not (buffer-live-p current-search-buffer))
- (user-error "Search head points to a killed buffer")
+ (let* ((head-file-name (el-search-head-file current-head))
+ (search (el-search-reset-search search))
+ (buffer-stream (el-search-head-buffers (el-search-object-head
search)))
+ (buffer-stream-from-head-file
+ (let ((inhibit-message t))
+ (and head-file-name
+ (cadr (stream-divide-with-get-rest-fun
+ buffer-stream
+ (lambda (s)
+ (while (and (not (stream-empty-p s))
+ (or (not (stringp (stream-first
s)))
+ (not (file-equal-p
(stream-first s) head-file-name))))
+ (stream-pop s))
+ s)))))))
+ (message "Search head points to a killed buffer...")
+ (sit-for 1)
+ (if (or (not head-file-name)
+ (stream-empty-p buffer-stream-from-head-file))
+ (el-search--message-no-log "Restarting search...")
+ (setf (el-search-head-buffers (el-search-object-head search))
+ buffer-stream-from-head-file)
+ (message "Restarting from %s..." (file-name-nondirectory
head-file-name)))
+ (sit-for 2)
+ (el-search-continue-search))
(setq this-command 'el-search-pattern)
(pop-to-buffer current-search-buffer
el-search-display-buffer-popup-action)
(let ((last-match (el-search-object-last-match search)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] master 27774a5: Recover from search head pointing to a killed buffer,
Michael Heerdegen <=