vue-language-serverをvim-lspから使う設定をした

Vue Language Server

  • Vue Language Serverはnpmのパッケージvue-language-serverとして公開されている
    • vlsコマンドとして提供される
  • Vue Language ServerはLanguage Server Protocolのサーバー実装
    • vim-lspをクライアントとしてvimから利用することができる
  • Vue Language ServerはVeturが使用する言語サーバー

Vetur - Visual Studio Marketplace

vim-lspにvue-language-serverを登録する

let s:vls_exe=expand('~/node_modules/.bin/vls')
  
if executable(s:vls_exe)
    au User lsp_setup call lsp#register_server({
        \ 'name': 'vue-language-server',
        \ 'cmd': {server_info->[s:vls_exe]},
        \ 'whitelist': ['vue'],
        \ 'initialization_options': { 'config': {
        \     'html': {}, 'vetur': {'validation': {}, 'completion': {'scaffoldSnippetSources': {}}}
        \     }}
        \ })
else
    echohl ErrorMsg
    echom '`vue-language-server` is not installed.'
    echohl
endif

configが無いと言語サーバーで Cannot read property 'ScaffoldSnippetSources' of undefined などのエラーが発生する

上記のconfigでいくつかの機能を無効にしてるっぽいけど具体的に何するときの何の機能かなのかは確認していない。とりあえずエラーなく起動させるまでやった。

参考にした Vim8でvim-lspとasyncomplete関連でvue-language-serverを使う(細かいオプションは省略) · GitHub