[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search 43779b9 329/332: [el-search] Improve "New com
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search 43779b9 329/332: [el-search] Improve "New command el-search-repository" |
Date: |
Tue, 1 Dec 2020 15:49:15 -0500 (EST) |
branch: externals/el-search
commit 43779b910025aba2574213cf3eabee2132c0a175
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
[el-search] Improve "New command el-search-repository"
Also bump version to 1.12.6.1.
* packages/el-search/el-search.el
(el-search-repository): Clean up revision files created by us.
---
el-search.el | 59 ++++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 36 insertions(+), 23 deletions(-)
diff --git a/el-search.el b/el-search.el
index c3c1cf2..46c3260 100644
--- a/el-search.el
+++ b/el-search.el
@@ -7,7 +7,7 @@
;; Created: 29 Jul 2015
;; Keywords: lisp
;; Compatibility: GNU Emacs 25
-;; Version: 1.12.6
+;; Version: 1.12.6.1
;; Package-Requires: ((emacs "25") (stream "2.2.4") (cl-print "1.0"))
@@ -4135,6 +4135,16 @@ related user options."
(lambda (search) (setf (alist-get 'description (el-search-object-properties
search))
"el-search-ibuffer-marked-files"))))
+(defun el-search-repository--delete-buffer-file ()
+ (when (and (stringp buffer-file-name)
+ (file-exists-p buffer-file-name))
+ (delete-file buffer-file-name)))
+
+(defun el-search-repository--clean-up ()
+ (dolist (b (buffer-list))
+ (when (with-current-buffer b (memq
#'el-search-repository--delete-buffer-file kill-buffer-hook))
+ (kill-buffer b))))
+
(declare-function vc-read-revision 'vc)
(declare-function vc-find-revision 'vc)
;;;###autoload
@@ -4147,9 +4157,7 @@ regexp, and only matching files will be el-searched.
When called interactively, you are prompted for all arguments.
-Searching any REVISION is using temporarily files. If you
-interrupt a search or open versions of files from *El Occur*, the
-checked out file versions need to be deleted manually."
+Searching any REVISION is internally using temporarily files."
(interactive
(cl-flet* ((return (v) (if (equal v "") nil v))
(choose (l &rest nums) (mapcar (lambda (n) (return (nth n l)))
nums)))
@@ -4159,7 +4167,7 @@ checked out file versions need to be deleted manually."
this-vc-root-dir this-vc-root-dir
'mustmatch))))
(choose (list repo
(vc-read-revision "Revision (leave empty for
\"worktree\"): " (list repo) 'Git)
- (read-string "File filter regexp (leave empty for none):
")
+ (read-string "File filter regexp (leave empty for no
filtering): ")
(el-search-read-pattern-for-interactive "Search pattern:
"))
0 3 1 2))))
(let ((just-worktree (not revision)))
@@ -4182,24 +4190,29 @@ checked out file versions need to be deleted manually."
(if just-worktree files
(seq-map
(lambda (filename)
- (let ((default-directory repo-root-dir))
- (let* ((dd default-directory)
- (get-buffer
- (lambda ()
- (with-current-buffer (let ((inhibit-message t)
- (default-directory dd))
- (vc-find-revision filename
revision))
- (add-hook 'kill-buffer-hook
- (lambda ()
- (when (file-exists-p buffer-file-name)
- (delete-file buffer-file-name)))
- 'append 'local)
- (current-buffer)))))
- (with-current-buffer (funcall get-buffer)
- ;; This is a bit hackish...
- (setq-local el-search--temp-buffer-flag t)
- (setq el-search--get-buffer-fun get-buffer)
- (current-buffer)))))
+ (cl-flet ((get-buffer+newflag
+ (lambda ()
+ (let* ((buffer-list-before (buffer-list))
+ (b (let ((inhibit-message t)
+ (default-directory repo-root-dir))
+ (vc-find-revision filename revision)))
+ (buffer-new? (not (memq b
buffer-list-before))))
+ (when buffer-new?
+ (with-current-buffer b
+ ;; We must delete any temporary files VC
creates. We don't check
+ ;; whether these files might have existed
before.
+ (add-hook 'kill-buffer-hook
+
#'el-search-repository--delete-buffer-file
+ 'append 'local)
+ (add-hook 'kill-emacs-hook
#'el-search-repository--clean-up)))
+ (cons b buffer-new?)))))
+ (pcase-let ((`(,b . ,buffer-new?) (get-buffer+newflag)))
+ (with-current-buffer b
+ (when buffer-new?
+ (setq-local el-search--temp-buffer-flag t))
+ (setq-local el-search--get-buffer-fun
+ (lambda () (car (get-buffer+newflag)))))
+ b)))
files)))))))
;;;; Register usage
- [elpa] externals/el-search fdb5656 270/332: [el-search] Make y move forward after replacing, (continued)
- [elpa] externals/el-search fdb5656 270/332: [el-search] Make y move forward after replacing, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 75d0232 279/332: [el-search] Fix C-J with numeric arg in case of no match, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search a661225 272/332: [el-search] Minor tweaks in el-search-query-replace, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search e29370e 281/332: [el-search] Fix more "redundant _ pattern" warnings, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 5c903d9 292/332: [el-search] Small fix for my last commit, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search be0324a 301/332: [el-search] Some minor tweaks and bump version to 1.10.1, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3b4b95b 304/332: [el-search] Small fix in el-search--changed-files-in-repo, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2f427dd 318/332: [el-search] Query-replace: Change skip keys, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search a5dd88c 322/332: [el-search] Minor fix in el-search-query-replace--read-args, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1939340 324/332: [el-search] Harmonize search and qu-replace prefix arg, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 43779b9 329/332: [el-search] Improve "New command el-search-repository",
Stefan Monnier <=
- [elpa] externals/el-search 0c25a34 331/332: Update copyright years of some packages, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search cd535ba 194/332: packages/el-search: Some minor tweaks, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 368a5dd 195/332: * el-search/el-search.el: Declare doc-string in el-search-defpattern, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search f1ebc2e 201/332: * el-search/el-search.el: Get rid of orgstruct-mode, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 5eb7614 206/332: Tweak el-search--get-search-description-string, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 179aa59 209/332: * el-search/el-search.el: Bump version to 1.5, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search b5b35ef 232/332: * el-search/el-search-x.el: Some more tweaks, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 63172a4 222/332: Treat inserted replacements as potential to-replace candidates, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search e0e2994 111/332: Some details, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search f26277b 117/332: Rewrite of el-search for version 1.0, Stefan Monnier, 2020/12/01