TeX用Language Serverのセットアップ
LSはtexlab/Relaseからバイナリをダウンロードします。実行形式ファイルが1つだけなので、インストールはこの
texlab.exeをc:/Apps/languageServerにコピーするだけです。
次にdein.tomlのnvim-lspconfigのところにLSに関する設定を追加します。
[[plugins]]
# A collection of common configurations for Neovim's built-in language server client.
repo = 'neovim/nvim-lspconfig'
hook_add = '''
set runtimepath+=~/.cache/dein/repos/github.com/neovim/nvim-lspconfig/lua
lua << EOF
local nvim_lsp = require('lspconfig')
nvim_lsp.pyls_ms.setup{
cmd = { "dotnet", "exec", "c:/Apps/languageServer/Microsoft.Python.LanguageServer.dll" },
init_options = {
analysisUpdates = true,
asyncStartup = true,
}
}
nvim_lsp.texlab.setup{
cmd = { "c:/Apps/languageServer/texlab.exe" },
}
EOF
'''
一応これだけでLSPを利用した補完はできるようになります。
ただし、ALEを使っている場合にはALEとLSPで二重にチェックされたりするらしいので、問題がある場合にはその部分で変更が必要です。ALEの設定部分で let g:ale_disable_lsp = 1と設定するといいらしいです。
vimtexとSumatraPDFの連携
vimtexでコンパイルまでできるんだから、逆順検索もちゃんとできるようにします。まず、逆順検索(inverse search)はRPCを使ってNeovimとSumatraPDFがやりとりします。具体的には、SumatraPDF側でクリックされた行情報をRPCでNeovimに送ります。Neovim側はRPCで受け取ったコマンドを実行して、PDFでのクリックされた行のソースにジャンプします。
ということでNeovimを外部から、コントロールするためのneovim-remoteが必要になります。
$ pip install neovim-remoteするとnvrというコマンドが利用できるようになります。
nvrでは予めサーバの場所を指定しておく必要があります。NeovimのRPCの場合には、
\\.\pipe\nvim-1234-0というようにパイプが作成されるので、それを利用する必要がありますが、パイプ名は毎回異なります。
一方、SumatraPDFでは逆順検索コマンドで利用するためにサーバの場所を知りたいのですが、そのためにはNeovimと通信できないとわかりません。毎回手動で設定するのも大変ですし、現実的ではありません。
そこで、起動時にNeovimが作成するRPCサーバとは別に、SumatraPDF専用のRPCサーバを起動してそこと通信させればうまくいきます。
Neovim側で
if has('win32')
call serverstart('\\.\pipe\nvim-vimtex-1234')
endif
let g:vimtex_view_general_options
\ = '-reuse-instance'
\ . ' -forward-search @tex @line @pdf'
\ . ' -inverse-search "nvr --servername ' . '\\.\nvim-vimtex-1234'
\ . ' --remote-send \"\%lG\""'
などとvimtexの設定時にRPCサーバを起動し、このパイプ名をSumatraPDFの逆順検索コマンドに指定してやればよいのです。
nvr --servername \\.\pipe\nvim-vimtex-1234 --remote-send "%lG"これでPDFで行をクリックするとNeovim側で対応する行にジャンプします。 ・・・でも順方向がちゃんと動かない・・・。
0 件のコメント:
コメントを投稿