yn2011's blog

技術メモ

vim-lspを使用してtsxファイルに対してtypescript-language-serverを動かす

環境

  • macOS 10.14.6
  • VIM - Vi IMproved 8.2
  • prabirshrestha/vim-lsp v0.1.0
  • mattn / vim-lsp-settings v0.0.1

方法

前提:vim-lspはインストール済み

wikiの手順と同じだが、whitelistの設定が異なる。

  • LSPをインストール
$ npm install -g typescript typescript-language-server
  • 下記を.vimrcファイルに追加する
if executable('typescript-language-server')
  au User lsp_setup call lsp#register_server({
        \ 'name': 'typescript-language-server',
        \ 'cmd': {server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']},
        \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'tsconfig.json'))},
        \ 'whitelist': ['typescript', 'typescriptreact'],
        \ })
endif
  • デフォルトだとファイルタイプtypescriptのみが有効なので.tsxファイルを開いてもLSPが動作しない

  • .tsxファイルを開いて:LspStatusする

    • typescript-language-server: running と表示されればOK

vim-lsp-settings

(上記のvimrcを書かなくて済むので)vim-lsp-settingsを使いたかったが現状ではうまく動作しなかった

  • ファイルタイプtypescriptreactに対して:LspInstallServerはサポートされていない(README.mdの表にない)
  • しかしtypescript-language-serverを使うことは変わりないので、.tsファイルを開いて:LspInstallServerしてLSPをインストール
  • let g:lsp_settings = {'typescript-language-server':{'whitelist': ['typescript', 'typescriptreact']}}として上書きしたが、
    • .tsファイルを開いた後に.tsxファイルを開くと動作する
    • .tsxファイルを始めに開くと動作しない

動作することはするけど不完全だったので一応issueを作成してみた(英文難しい...)