doomemacs/modules/term/vterm/config.el
Henrik Lissner 1a943aea69
refactor: cut down on pseudo-features
Way back, I added these three pseudo-features:

  (featurep 'dynamic-modules)
  (featurep 'harfbuzz)
  (featurep 'jansson)

Why? Because some build features have pseudo features (like
`tty-child-frames`, `pgtk`, and `threads`), but others don't, and I
wanted more consistency around build feature detection. Years later, I
realized it wasn't used much internally and only ended up confusing
readers who didn't realize these were Doom's additions and not built
into Emacs. Emacs' idiosyncrasies may not be nice or elegant, but
they're less surprising to elisp beginners and veterans alike.
2026-01-23 20:26:28 -05:00

33 lines
1.2 KiB
EmacsLisp

;;; term/vterm/config.el -*- lexical-binding: t; -*-
(use-package! vterm
:when (bound-and-true-p module-file-suffix) ; requires dynamic-modules support
:commands vterm-mode
:hook (vterm-mode . doom-mark-buffer-as-real-h)
:hook (vterm-mode . hide-mode-line-mode) ; modeline serves no purpose in vterm
:preface
;; HACK Because vterm clusmily forces vterm-module.so's compilation on us when
;; the package is loaded, this is necessary to prevent it when
;; byte-compiling this file (`use-package' blocks eagerly loads packages
;; when compiled).
(when noninteractive
(advice-add #'vterm-module-compile :override #'ignore)
(provide 'vterm-module))
:config
(set-popup-rule! "^\\*vterm" :size 0.25 :vslot -4 :select t :quit nil :ttl 0)
(map! :map vterm-mode-map "C-q" #'vterm-send-next-key)
;; Once vterm is dead, the vterm buffer is useless. Why keep it around? We can
;; spawn another if want one.
(setq vterm-kill-buffer-on-exit t)
;; 5000 lines of scrollback, instead of 1000
(setq vterm-max-scrollback 5000)
(setq-hook! 'vterm-mode-hook
;; Don't prompt about dying processes when killing vterm
confirm-kill-processes nil
;; Prevent premature horizontal scrolling
hscroll-margin 0))