.emacs.d/lisp/init-vterm.el
2024-12-28 10:59:10 +08:00

51 lines
1.8 KiB
EmacsLisp

;;; init-vterm.el --- vterm settings -*- lexical-binding: t -*-
;;; Commentary:
;;; Code:
(use-package vterm
:when (memq window-system '(mac ns x pgtk))
:bind (:map vterm-mode-map
("C-y" . vterm-yank)
("M-y" . vterm-yank-pop)
("C-k" . vterm-send-C-k-and-kill))
:init
(setq vterm-shell "zsh")
:config
(setq vterm-always-compile-module t)
(defun vterm-send-C-k-and-kill ()
"Send `C-k' to libvterm, and put content in kill-ring."
(interactive)
(kill-ring-save (point) (vterm-end-of-line))
(vterm-send-key "k" nil nil t)))
(use-package vterm-toggle
:when (memq window-system '(mac ns x pgtk))
:bind (([f8] . vterm-toggle)
([f9] . vterm-compile)
:map vterm-mode-map
([f8] . vterm-toggle)
([(control return)] . vterm-toggle-insert-cd))
:config
(setq vterm-toggle-cd-auto-create-buffer nil)
(defvar vterm-compile-buffer nil)
(defun vterm-compile ()
"Compile the program including the current buffer in `vterm'."
(interactive)
(setq compile-command (compilation-read-command compile-command))
(let ((vterm-toggle-use-dedicated-buffer t)
(vterm-toggle--vterm-dedicated-buffer (if (vterm-toggle--get-window)
(vterm-toggle-hide)
vterm-compile-buffer)))
(with-current-buffer (vterm-toggle-cd)
(setq vterm-compile-buffer (current-buffer))
(rename-buffer "*vterm compilation*")
(compilation-shell-minor-mode 1)
(vterm-send-M-w)
(vterm-send-string compile-command t)
(vterm-send-return)))))
(provide 'init-vterm)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init-vterm.el ends here