diff options
| author | Raul Benencia <id@rbenencia.name> | 2026-03-07 10:32:43 -0800 |
|---|---|---|
| committer | Raul Benencia <id@rbenencia.name> | 2026-03-07 10:33:11 -0800 |
| commit | efb606af6638b90be266abccb33c5fc4d714eb01 (patch) | |
| tree | 7a8181f5be5c147d63354c0aae928112e0520462 /.emacs.d/rul-lisp/packages | |
| parent | 9bfac9171ffefedf0088e777923f38ca5990ea17 (diff) | |
emacs: close tab and kill buffer after exiting vterm
Diffstat (limited to '.emacs.d/rul-lisp/packages')
| -rw-r--r-- | .emacs.d/rul-lisp/packages/rul-terminals.el | 17 |
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) |
