Emacsのターミナルエミュレーターは制御コードを上手く処理できずにしばしば壊れる。 libvtermはそれを回避できそうなのでインストールしてみる。

依存パッケージのインストール

まずは依存パッケージをインストールする。

libvterm

brew install libvterm

libtool

brew install libtool

cmake

brew install cmake

依存パッケージをインストールできたらemacs-libvtermをインストールする。

cmakeなどが見つからない場合はエラーするが、その場合は概ねcmakeへのパスが通っていない。 homebrewで入れた場合は /usr/local/bin に入っているのでパスを通す。

(add-to-list 'exec-path "/usr/local/bin")
(setenv "PATH" (string-join exec-path ":"))

libvtermをMELPAからインストール

今回はuse-packageを用いてMELPAからlibvtermをインストールする。

(use-package libvterm :ensure t)

コンパイルするかどうかを聞かれるのでyesと答える。

コマンドのみを実行するなど

指定したコマンドを実行したりバッファ名を指定する場合は変数をシャドーイングすればよい。

(let ((default-directory cwd)
      (vterm-shell line)
      (vterm-buffer-name (format "%s: In %s" (car (split-string line)) (expand-file-name cwd)))
      (vterm-kill-buffer-on-exit nil))
  (vterm)))