doomemacs/modules/tools/vterm/config.el

49 lines
2.3 KiB
EmacsLisp
Raw Normal View History

2019-02-17 00:03:36 +08:00
;;; tools/vterm/config.el -*- lexical-binding: t; -*-
(def-package! vterm
:load-path (lambda () (list (concat doom-packages-dir "/quelpa/build/vterm")))
:init
(unless (file-executable-p (concat
(file-name-directory (locate-library "vterm"))
"vterm-module.so"))
;; let vterm compile `vterm-modules.so'
(setq-default vterm-install t))
:when (and (string-match-p "MODULES" system-configuration-features)
(display-graphic-p))
:config
(set-env! "SHELL")
(add-hook 'vterm-mode-hook #'doom|mark-buffer-as-real)
;; Automatically kill buffer when vterm exits.
(add-hook 'vterm-exit-functions #'(lambda (buffer)
(when buffer (kill-buffer buffer))))
2019-02-17 00:04:51 +08:00
(when (featurep! :ui popup +defaults)
(set-popup-rule! "^vterm" :size 0.25 :vslot -4 :select t :quit nil :ttl 0))
(when (featurep! :feature evil)
(evil-set-initial-state 'vterm-mode 'insert)
;; Those keys are commonly needed by terminals.
(evil-define-key 'insert vterm-mode-map
2019-02-01 22:34:49 +08:00
(kbd "C-a") #'vterm--self-insert
(kbd "C-b") #'vterm--self-insert ; Should not be necessary.
(kbd "C-d") #'vterm--self-insert
(kbd "C-e") #'vterm--self-insert
(kbd "C-f") #'vterm--self-insert ; Should not be necessary.
(kbd "C-k") #'vterm--self-insert
(kbd "C-l") #'vterm--self-insert ; Should not be necessary.
(kbd "C-n") #'vterm--self-insert
(kbd "C-o") #'vterm--self-insert
(kbd "C-p") #'vterm--self-insert
(kbd "C-q") #'vterm--self-insert ; Should not be necessary.
(kbd "C-r") #'vterm--self-insert
(kbd "C-s") #'vterm--self-insert ; Should not be necessary.
(kbd "C-t") #'vterm--self-insert
(kbd "C-u") #'vterm--self-insert ; Should not be necessary.
(kbd "C-v") #'vterm--self-insert ; Should not be necessary.
(kbd "C-w") #'vterm--self-insert
(kbd "C-y") #'vterm--self-insert
(kbd "C-z") #'vterm--self-insert)
;; Go back to normal state but don't move cursor backwards.
;; Moving cursor backwards is the default Vim behavior but
;; it is not appropriate in some cases like terminals.
(add-hook 'vterm-mode-hook #'(lambda ()
(setq-local evil-move-cursor-back nil)))))