blob: 3733c65caa6d1d9484ed8d203633b26cd468bc76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
(use-package vterm
:ensure t
:init
(setq vterm-always-compile-module t
vterm-max-scrollback 100000)
:hook
(vterm-mode . goto-address-mode)
:bind
(:map vterm-mode-map
("C-c C-t" . vterm-copy-mode)
("C-l" . vterm-clear))
:config
(define-key vterm-mode-map (kbd "C-c C-c")
(lambda ()
(interactive)
(vterm-send-string "\C-c"))))
(use-package multi-vterm
:ensure t
: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)
(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-S-t") #'rul/vterm-new-tab))
(provide 'rul-terminals)
|