dot-doom/vterm.el

47 lines
1.8 KiB
EmacsLisp
Raw Permalink Normal View History

2025-06-23 17:04:25 -04:00
;;; vterm.el -*- lexical-binding: t; -*-
;; Vterm adjustemts
(setq vterm-environment '("TERM=xterm-256color"))
(set-language-environment "UTF-8")
(set-default-coding-systems 'utf-8)
;; open vterm in dired location
(after! vterm
(setq vterm-buffer-name-string "vterm %s")
(setq-default vterm-shell (executable-find "fish"))
(setq-default explicit-shell-file-name (executable-find "fish"))
(setq vterm-kill-buffer-on-exit t)
(after! meow (meow-vterm-enable))
;; Modify the default vterm opening behavior
(defadvice! +vterm-use-current-directory-a (fn &rest args)
"Make vterm open in the directory of the current buffer."
:around #'vterm
(let ((default-directory (or (and (buffer-file-name)
(file-name-directory (buffer-file-name)))
(and (eq major-mode 'dired-mode)
(dired-current-directory))
default-directory)))
(apply fn args)))
;; Also modify Doom's specific vterm functions
(defadvice! +vterm-use-current-directory-b (fn &rest args)
"Make Doom's vterm commands open in the directory of the current buffer."
:around #'+vterm/here
(let ((default-directory (or (and (buffer-file-name)
(file-name-directory (buffer-file-name)))
(and (eq major-mode 'dired-mode)
(dired-current-directory))
default-directory)))
(apply fn args))))
(defun open-vterm-in-current-context ()
"Open vterm in the context of the current buffer/window."
(interactive)
(when-let ((buf (current-buffer)))
(with-current-buffer buf
(call-interactively #'+vterm/here))))