[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/embark a7805f2491 6/7: Add embark-live back
From: |
ELPA Syncer |
Subject: |
[elpa] externals/embark a7805f2491 6/7: Add embark-live back |
Date: |
Sun, 20 Mar 2022 22:57:33 -0400 (EDT) |
branch: externals/embark
commit a7805f24917cd00d6e3a07792851b6ff07621a67
Author: Omar Antolín <omar.antolin@gmail.com>
Commit: Omar Antolín <omar.antolin@gmail.com>
Add embark-live back
This implementation is significantly simpler than before.
---
embark.el | 78 +++++++++++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 58 insertions(+), 20 deletions(-)
diff --git a/embark.el b/embark.el
index 21bfe3c51c..5eef1be5fa 100644
--- a/embark.el
+++ b/embark.el
@@ -2866,16 +2866,13 @@ Refresh the buffer afterwards."
(with-current-buffer buffer
(setq embark--type type embark-collect--candidates candidates))))
-;;;###autoload
-(defun embark-collect ()
- "Create an Embark Collect buffer.
+(defun embark--collect (buffer-name)
+ "Create an Embark Collect buffer named BUFFER-NAME.
-To control the display, add an entry to `display-buffer-alist'
-with key \"Embark Collect\"."
+The function `generate-new-buffer-name' is used to ensure the
+buffer has a unique name."
(interactive)
- (let ((from (current-buffer))
- (buffer (generate-new-buffer "*Embark Collect*")))
-
+ (let ((buffer (generate-new-buffer buffer-name)))
(with-current-buffer buffer
;; we'll run the mode hooks once the buffer is displayed, so
;; the hooks can make use of the window
@@ -2899,20 +2896,61 @@ with key \"Embark Collect\"."
(run-mode-hooks)
(revert-buffer))
(set-window-dedicated-p window t)
- (when (minibufferp from)
- ;; A function added to `minibuffer-exit-hook' locally isn't called if
- ;; we `abort-recursive-edit' from outside the minibuffer, that is why
- ;; we use `change-major-mode-hook', which is also run on minibuffer
- ;; exit.
- (add-hook
- 'change-major-mode-hook
- (lambda ()
- (when (buffer-live-p buffer)
- (embark--run-after-command #'pop-to-buffer buffer)))
- nil t))
- (embark--quit-and-run #'message nil)
buffer)))
+;;;###autoload
+(defun embark-collect ()
+ "Create an Embark Collect buffer.
+
+To control the display, add an entry to `display-buffer-alist'
+with key \"Embark Collect\"."
+ (interactive)
+ (let ((buffer (embark--collect
+ (format "*Embark Collect: %s*"
+ (if (minibufferp)
+ (format "M-x %s RET %s" embark--command
+ (minibuffer-contents-no-properties))
+ (buffer-name))))))
+ (when (minibufferp)
+ (embark--run-after-command #'pop-to-buffer buffer)
+ (embark--quit-and-run #'message nil))))
+
+;;;###autoload
+(defun embark-live ()
+ "Create a live-updating Embark Collect buffer.
+
+To control the display, add an entry to `display-buffer-alist'
+with key \"Embark Live\"."
+ (interactive)
+ (let ((live-buffer (embark--collect
+ (format "*Embark Live: %s*"
+ (if (minibufferp)
+ (format "M-x %s" embark--command)
+ (buffer-name)))))
+ (run-collect (make-symbol "run-collect"))
+ (stop-collect (make-symbol "stop-collect"))
+ timer)
+ (setf (symbol-function stop-collect)
+ (lambda ()
+ (remove-hook 'change-major-mode-hook stop-collect t)
+ (remove-hook 'after-change-functions run-collect t)))
+ (setf (symbol-function run-collect)
+ (lambda (_1 _2 _3)
+ (unless timer
+ (setq timer
+ (run-with-idle-timer
+ 0.05 nil
+ (lambda ()
+ (if (not (buffer-live-p live-buffer))
+ (funcall stop-collect)
+ (embark-collect--update-candidates live-buffer)
+ (with-current-buffer live-buffer
+ (save-excursion (revert-buffer)))
+ (setq timer nil))))))))
+ (add-hook 'after-change-functions run-collect nil t)
+ (when (minibufferp)
+ (add-hook 'change-major-mode-hook stop-collect nil t))))
+
;;;###autoload
(defun embark-export ()
"Create a type-specific buffer to manage current candidates.
- [elpa] externals/embark updated (5a74f42bd0 -> 3a9e5e1744), ELPA Syncer, 2022/03/20
- [elpa] externals/embark 3c6195e9ad 1/7: Initial removal of embark-collect-{live, completions}, ELPA Syncer, 2022/03/20
- [elpa] externals/embark 7ee2c06880 2/7: Make embark-collect variables private, ELPA Syncer, 2022/03/20
- [elpa] externals/embark 9ae1ad77ea 4/7: Remove embark-collect's initial-view interactive argument, ELPA Syncer, 2022/03/20
- [elpa] externals/embark 21d4ca14e3 3/7: Cache both annotations and "for display versions" of candidates, ELPA Syncer, 2022/03/20
- [elpa] externals/embark a52e795659 5/7: Update embark-consult for changes to embark-collect, ELPA Syncer, 2022/03/20
- [elpa] externals/embark a7805f2491 6/7: Add embark-live back,
ELPA Syncer <=
- [elpa] externals/embark 3a9e5e1744 7/7: Remove some old obsolete definitions, ELPA Syncer, 2022/03/20