branch: externals/bufferlo
commit 3b8a134f10fe7a156da3653572879fbf464dcd0f
Author: shipmints <[email protected]>
Commit: shipmints <[email protected]>
Support define-ibuffer-op opstring prompt functions
For Emacs < 31, use static strings.
For Emacs > 30, use context-sensitive prompt functions.
---
bufferlo.el | 52 +++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 39 insertions(+), 13 deletions(-)
diff --git a/bufferlo.el b/bufferlo.el
index b620a57e5b..7d14364f7b 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -1887,19 +1887,45 @@ The parameters OTHER-WINDOW-P NOSELECT SHRINK are
passed to `ibuffer'."
(ibuffer other-window-p name '((bufferlo-orphan-buffers . nil))
noselect shrink)))
-(define-ibuffer-op ibuffer-do-bufferlo-remove ()
- "Remove marked buffers from bufferlo's local buffer list."
- (
- :active-opstring "remove from bufferlo locals" ; prompt
- :opstring "removed from bufferlo locals:" ; success
- :modifier-p t
- :dangerous t
- :complex t
- :after (ibuffer-update nil t)
- )
- (when bufferlo-mode
- (bufferlo-remove buf)
- t))
+(eval-when-compile
+ (if (< emacs-major-version 31)
+ (define-ibuffer-op ibuffer-do-bufferlo-remove ()
+ "Remove marked buffers from bufferlo's local buffer list."
+ (
+ :active-opstring "remove from bufferlo locals" ; prompt
+ :opstring "removed from bufferlo locals:" ; success
+ :modifier-p t
+ :dangerous t
+ :complex t
+ :after (ibuffer-update nil t)
+ )
+ (when bufferlo-mode
+ (bufferlo-remove buf)
+ t))
+
+ (defun bufferlo--ibuffer-do-bufferlo-remove-prompt (op)
+ "`ibuffer' prompt helper for OP."
+ (let ((bookmark-name (bufferlo--current-bookmark-name)))
+ (format "%s from %slocals:" op
+ (if bookmark-name
+ (format "bufferlo bookmark \"%s\" " bookmark-name)
+ ""))))
+
+ (define-ibuffer-op ibuffer-do-bufferlo-remove ()
+ "Remove marked buffers from bufferlo\'s local buffer list."
+ (
+ :active-opstring (lambda ()
+ (bufferlo--ibuffer-do-bufferlo-remove-prompt "remove"))
+ :opstring (lambda ()
+ (bufferlo--ibuffer-do-bufferlo-remove-prompt "removed"))
+ :modifier-p t
+ :dangerous t
+ :complex t
+ :after (ibuffer-update nil t)
+ )
+ (when bufferlo-mode
+ (bufferlo-remove buf)
+ t))))
(when bufferlo-ibuffer-bind-keys
(define-key ibuffer-mode-map "-" #'ibuffer-do-bufferlo-remove))