EmacsにおけるLaTeX執筆環境構築(2)LaTeXのlanguage serverであるtexlabをeglotから使う

はじめに

LaTeXにもlanguage serverがあると聞いて、早速インストールを試してみたときの記録。そのlanguage serverとはtexlabである。これをEglotによりEmacs上から使うのが目的である。

実行環境

手順

texlabの公式を見ると、Rustをインストールせよ、とのことなのでインストール。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

続いてtexlabのマスターブランチをcloneする(cloneの場所はお好みで)。

 git clone https://github.com/latex-lsp/texlab.git

texlab/srcにcdする。

 cd texlab/src

ビルドする。

cargo build --release

texlab/target/release/texlabが目当てのバイナリである。これをPATHの通った場所に置く(例えば/usr/local/bin)。

コピーが終わったら余分なものは消しておくとディスクスペースの節約になる。ただしtargetフォルダもすべて消えるので注意。

cargo clean

最初からcloneしない方法もある。このあたりはお好みで。

cargo install --git https://github.com/latex-lsp/texlab.git --locked

Emacsの設定

Emacsでlanguage serverを扱うためにEglotを使うことにする。EglotはEmacsのパッケージシステムからインストールできる。

M-x package-install RET eglot RET

Eglotの設定は以下。Eglotはデフォルトでdigestifという別のtex用language serverの設定が入っているので、最初にそれを取り除きtexlabの設定で置き換える。

(require 'eglot)

;; AUCTeXで使う設定
(add-hook 'TeX-mode-hook 'eglot-ensure)
;; digestifの設定を取り除く
(delete (assoc '(tex-mode context-mode texinfo-mode bibtex-mode)
               eglot-server-programs) eglot-server-programs)
;; texlabの設定を追加する
(add-to-list 'eglot-server-programs
             '((latex-mode tex-mode context-mode
                           texinfo-mode bibtex-mode) . ("texlab")))

またLaTeXの編集モードにはAUCTeXを使っている。YaTeXユーザならばyatex-mode-hookにeglot-ensureを引っ掛ければよいだろう。