;;; 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))))