branch: externals/bufferlo commit 3b8a134f10fe7a156da3653572879fbf464dcd0f Author: shipmints <shipmi...@gmail.com> Commit: shipmints <shipmi...@gmail.com>
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))