aboutsummaryrefslogtreecommitdiff
path: root/.emacs.d/rul-lisp
diff options
context:
space:
mode:
authorRaul Benencia <id@rbenencia.name>2026-03-07 10:32:43 -0800
committerRaul Benencia <id@rbenencia.name>2026-03-07 10:33:11 -0800
commitefb606af6638b90be266abccb33c5fc4d714eb01 (patch)
tree7a8181f5be5c147d63354c0aae928112e0520462 /.emacs.d/rul-lisp
parent9bfac9171ffefedf0088e777923f38ca5990ea17 (diff)
emacs: close tab and kill buffer after exiting vterm
Diffstat (limited to '.emacs.d/rul-lisp')
-rw-r--r--.emacs.d/rul-lisp/packages/rul-terminals.el17
1 files 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)
nihil fit ex nihilo