[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] scratch/mheerdegen-preview 74cc15a 08/32: WIP: New command 'el-se
From: |
Michael Heerdegen |
Subject: |
[elpa] scratch/mheerdegen-preview 74cc15a 08/32: WIP: New command 'el-search-repository' |
Date: |
Sat, 20 Oct 2018 18:18:59 -0400 (EDT) |
branch: scratch/mheerdegen-preview
commit 74cc15acd5cd003f202487b33b1d6693b21e55a0
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>
WIP: New command 'el-search-repository'
---
packages/el-search/el-search.el | 50 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el
index efb9033..bfab694 100644
--- a/packages/el-search/el-search.el
+++ b/packages/el-search/el-search.el
@@ -3514,6 +3514,56 @@ related user options."
(lambda (search) (setf (alist-get 'description (el-search-object-properties
search))
"el-search-ibuffer-marked-files"))))
+(declare-function vc-read-revision 'vc)
+(declare-function vc-find-revision 'vc)
+(defun el-search-repository (repo revision pattern &optional file-regexp)
+ ;; FIXME: this is a stub. Occur to-match-jumping doesn't work.
+ ;; Currently only works with git. Slow.
+ (interactive (let* ((repo (let ((this-vc-root-dir (vc-root-dir)))
+ (expand-file-name
+ (read-directory-name "Repository root: "
+ this-vc-root-dir
this-vc-root-dir 'mustmatch))))
+ (result (list repo
+ (read-string "Revision (leave empty for
\"worktree\"): ")
+ (read-string "File regexp: ")
+ (el-search-read-pattern-for-interactive
"Search pattern: "))))
+ (cl-rotatef (nth 2 result) (nth 3 result))
+ result))
+ (let ((just-worktree (or (not revision) (string= revision ""))))
+ (el-search-setup-search
+ pattern
+ (lambda ()
+ (let* ((default-directory repo)
+ (files (seq-filter
+ #'el-search--elisp-file-p
+ (seq-filter
+ (if file-regexp
+ (lambda (fn) (string-match-p file-regexp fn))
+ #'el-search-true)
+ (mapcar #'expand-file-name
+ (split-string
+ (shell-command-to-string
+ (if just-worktree
+ "git ls-files -z --recurse-submodules"
+ (format "git ls-tree --name-only -z -r %s
--"
+ (shell-quote-argument revision))))
+ "\0" t))))))
+ (seq-map (lambda (filename)
+ (let ((default-directory repo))
+ (if just-worktree
+ filename
+ (with-current-buffer
+ (let ((inhibit-message t))
+ (vc-find-revision filename revision))
+ (setq-local el-search--temp-buffer-flag t)
+ (add-hook 'kill-buffer-hook
+ (lambda ()
+ (when (file-exists-p buffer-file-name)
+ (delete-file buffer-file-name)))
+ 'append 'local)
+ (current-buffer)))))
+ (stream files)))))))
+
;;;; Register usage
(defun el-search-to-register (register &optional el-search-object)
- [elpa] scratch/mheerdegen-preview b8542ca 04/32: WIP: New package "gnus-article-notes", (continued)
- [elpa] scratch/mheerdegen-preview b8542ca 04/32: WIP: New package "gnus-article-notes", Michael Heerdegen, 2018/10/20
- [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 <=
- [elpa] scratch/mheerdegen-preview e43d95b 10/32: WIP [el-search] Implement 'el-search-keyboard-quit', Michael Heerdegen, 2018/10/20
- [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