46 lines
1.8 KiB
EmacsLisp
46 lines
1.8 KiB
EmacsLisp
;;; 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))))
|