From efb606af6638b90be266abccb33c5fc4d714eb01 Mon Sep 17 00:00:00 2001 From: Raul Benencia Date: Sat, 7 Mar 2026 10:32:43 -0800 Subject: emacs: close tab and kill buffer after exiting vterm --- .emacs.d/rul-lisp/packages/rul-terminals.el | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.emacs.d/rul-lisp/packages/rul-terminals.el b/.emacs.d/rul-lisp/packages/rul-terminals.el index a0101a4..3733c65 100644 --- a/.emacs.d/rul-lisp/packages/rul-terminals.el +++ b/.emacs.d/rul-lisp/packages/rul-terminals.el @@ -20,13 +20,26 @@ :after vterm :bind (("C-c t" . multi-vterm)) :config + (setq vterm-kill-buffer-on-exit t) + + (defvar-local rul/vterm-close-tab-on-kill nil + "When non-nil, close this buffer's tab when the vterm buffer is killed.") + + (defun rul/vterm-maybe-close-tab () + "Close the current tab if this vterm buffer was opened in its own tab." + (when rul/vterm-close-tab-on-kill + (tab-close))) + (defun rul/vterm-new-tab () "Create a new tab and open a new vterm." (interactive) (tab-new) - (multi-vterm)) + (multi-vterm) + (setq-local rul/vterm-close-tab-on-kill t) + (add-hook 'kill-buffer-hook #'rul/vterm-maybe-close-tab nil t)) ;; Inside vterm buffers, make C-c t spawn a new tab + vterm - (define-key vterm-mode-map (kbd "C-c t") #'rul/vterm-new-tab)) + (define-key vterm-mode-map (kbd "C-c t") #'rul/vterm-new-tab) + (define-key vterm-mode-map (kbd "C-S-t") #'rul/vterm-new-tab)) (provide 'rul-terminals) -- cgit v1.2.3