aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fürmetz <fuermetz@mailbox.org>2017-07-26 15:20:07 +0200
committerLukas Fürmetz <fuermetz@mailbox.org>2017-07-26 15:20:07 +0200
commite164ae7313e78c2ab31d4496a801ac0ec4d50535 (patch)
treebbe0ac77f624bce0f00d99f4593c9ea823204ff5
parentafecd203861d582b78629438cca60014c8e6c5dd (diff)
Cancel timer, when buffer is killed
-rw-r--r--vterm.el15
1 files changed, 12 insertions, 3 deletions
diff --git a/vterm.el b/vterm.el
index c52c2eb..e564f65 100644
--- a/vterm.el
+++ b/vterm.el
@@ -4,7 +4,11 @@
(defvar vterm-term nil
"Pointer to struct Term.")
-(make-variable-buffer-local 'term)
+(make-variable-buffer-local 'vterm-term)
+
+(defvar vterm-timer nil
+ "Timer to update the term.")
+(make-variable-buffer-local 'vterm-timer)
(defvar vterm-keymap-exceptions '("C-x" "C-u" "C-g" "C-h" "M-o")
"Exceptions for vterm-keymap.
@@ -18,7 +22,8 @@ be send to the terminal.")
(setq vterm-term (vterm-new (window-height) (window-width))
buffer-read-only t)
(setq-local scroll-conservatively 101)
- (setq-local scroll-margin 0))
+ (setq-local scroll-margin 0)
+ (add-hook 'kill-buffer-hook #'vterm-kill-buffer-hook t t))
;; Keybindings
(define-key vterm-mode-map [t] #'vterm-self-insert)
@@ -50,7 +55,7 @@ be send to the terminal.")
(pop-to-buffer buffer)
(with-current-buffer buffer
(vterm-mode)
- (run-with-timer 0 .1 #'vterm-run-timer buffer))))
+ (setq vterm-timer (run-with-timer 0 .1 #'vterm-run-timer buffer)))))
(defun vterm-run-timer (buffer)
(interactive)
@@ -59,4 +64,8 @@ be send to the terminal.")
(with-current-buffer buffer
(vterm-update vterm-term))))
+(defun vterm-kill-buffer-hook ()
+ (when (eq major-mode 'vterm-mode)
+ (cancel-timer vterm-timer)))
+
(provide 'vterm)