branch: externals/bufferlo
commit 12f5a043211a0c422dbfb3997558375c5e283d49
Author: shipmints <shipmi...@gmail.com>
Commit: shipmints <shipmi...@gmail.com>

    Added optional tab closing prompts similar to frame closing prompts.
---
 bufferlo.el | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/bufferlo.el b/bufferlo.el
index 1f8c8f23a3..3578505c49 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -125,11 +125,19 @@ This is a list of regular expressions to filter buffer 
names."
   :type 'boolean)
 
 (defcustom bufferlo-delete-frame-kill-buffers-save-bookmark-prompt nil
-  "If non-nil, offer to save bookmark before killing the frame and its 
buffers."
+  "If non-nil, offer to save bookmark before killing the frame and buffers."
   :type 'boolean)
 
 (defcustom bufferlo-delete-frame-kill-buffers-prompt nil
-  "If non-nil, confirm before deleting the frame and killing its buffers."
+  "If non-nil, confirm before deleting the frame and killing buffers."
+  :type 'boolean)
+
+(defcustom bufferlo-close-tab-kill-buffers-save-bookmark-prompt nil
+  "If non-nil, offer to save bookmark before closing the tab and killing 
buffers."
+  :type 'boolean)
+
+(defcustom bufferlo-close-tab-kill-buffers-prompt nil
+  "If non-nil, confirm before closing the tab and killing buffers."
   :type 'boolean)
 
 (defcustom bufferlo-bookmark-frame-load-policy 'current
@@ -954,8 +962,19 @@ The optional arguments KILLALL and INTERNAL-TOO are passed 
to
 `bufferlo-kill-buffers'."
   (interactive "P")
   (bufferlo--warn)
-  (bufferlo-kill-buffers killall nil nil internal-too)
-  (tab-bar-close-tab))
+       (let ((kill t)
+        (tbm (alist-get 'bufferlo-bookmark-tab-name 
(tab-bar--current-tab-find))))
+    (when (and tbm
+               bufferlo-close-tab-kill-buffers-save-bookmark-prompt)
+      (when (y-or-n-p
+             (concat "Save tab bookmark \"" tbm "\"? "))
+        (bufferlo-bookmark-tab-save-current)))
+    (when bufferlo-close-tab-kill-buffers-prompt
+      (setq kill (y-or-n-p
+                  (concat "Kill tab and its buffers? "))))
+               (when kill
+                       (bufferlo-kill-buffers killall nil nil internal-too)
+                       (tab-bar-close-tab))))
 
 (defun bufferlo-isolate-project (&optional file-buffers-only)
   "Isolate a project in the frame or tab.
@@ -2096,7 +2115,9 @@ all unless a prefix argument is specified."
             (tab-bar-select-tab
              (1+ (tab-bar--tab-index
                   (alist-get 'tab (cadr abm)))))
-            (bufferlo-tab-close-kill-buffers))))
+                                               (let 
((bufferlo-close-tab-kill-buffers-save-bookmark-prompt nil)
+                                                                       
(bufferlo-close-tab-kill-buffers-prompt nil))
+                                                       
(bufferlo-tab-close-kill-buffers)))))
       (while-let ((abms (bufferlo--active-bookmarks nil 'fbm)))
         (let* ((abm (car abms))
                (abm-frame (alist-get 'frame (cadr abm))))

Reply via email to