はじめに
LaTeXにもlanguage serverがあると聞いて、早速インストールを試してみたときの記録。そのlanguage serverとはtexlabである。これをEglotによりEmacs上から使うのが目的である。
手順
texlabの公式を見ると、Rustをインストールせよ、とのことなのでインストール。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
その後、以下のコマンドでインストールが完了するのでお手軽。
cargo install texlab
githubから最新ソースコードをダウンロードして、コンパイルする方法もある。
texlabのマスターブランチをcloneする(cloneの場所はお好みで)。
git clone https://github.com/latex-lsp/texlab.git
texlab/crates/srcにcdする。
cd texlab/crates/esrc
ビルドする。
cargo build --release
texlab/target/release/texlabが目当てのバイナリである。これをPATHの通った場所に置く(例えば/usr/local/bin)。
コピーが終わったら余分なものは消しておくとディスクスペースの節約になる。ただしtargetフォルダもすべて消えるので注意。
cargo clean
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を引っ掛ければよいだろう。