Vim: Dart 開発環境を作る
tips development · dart · getting-started · vim · lsp
Dartに入門するにあたり、開発環境を構築した時のメモです。Vim9.0 on macOS Montery です。
環境
- macOS Monterey 12.6 (Apple M1)
- VIM 9.9
- LSP クライアント: prabirshrestha/vim-lsp
Dart 処理系のインストール
Installing the Dart SDK にておすすめされている通り、Homebrew 経由でインストールします。
$ brew tap dart-lang/dart
$ brew install dart
brew info dart
を打ってインストール後の確認。インストール時のバージョンは stable 2.18.6, HEAD
でした。
“Dart SDKをPATHに登録するのを忘れないでね” 注意喚起されるので、素直に _.bashrc_に登録しておきます。
$ cat <<EOF >> ~/.bashrc
HOMEBREW_PREFIX=\$(brew --prefix)
if [[ -d "$HOMEBREW_PREFIX/opt/dart/libexec" ]]; then
export DART_SDK="$HOMEBREW_PREFIX/opt/dart/libexec"
PATH="\$DART_SDK:\$PATH"
fi
EOF
ここまでで、dart
コマンドが実行可能になりました。
念の為確認しましょう。
$ source ~/.bashrc
$ type dart
dart はハッシュされています (/opt/homebrew/bin/dart)
$ dart --version
Dart SDK version: 2.12.4 (stable) (Thu Apr 15 12:26:53 2021 +0200) on "macos_x64"
Vim での Dart 対応
dart-vim-plugin 導入
Docs > Tools & techniques > Overview に記載があるとおり、公式でVimプライグインが用意されています。 私の環境では vim-plug を使っているので、 以下を .vimrc に追加して dart-lang/dart-vim-plugin を導入します。
" $HOME/.vimrc
Plug 'dart-lang/dart-vim-plugin' | \
let g:dart_format_on_save = 1
この時点で Filetype dart に対するシンタックハイライトと、:DartFmt
コマンドが導入されます。
また、g:dart_format_on_save
を有効にしたことで 保存時に自動でフォーマットが適用されるようになりました。
Vim-LSP 設定
Dart SDK にて、LSPサーバ が提供されているため、Vim からそれを呼べるように設定してゆきます。すでに触れた通り、LSPクライアントとして prabirshrestha/vim-lsp が導入されている前提です。1 手動で vim-lsp に Dart向けLSPサーバ を登録する設定について記載してゆきますが、mattn/vim-lsp-settings が導入済みであれば追加登録する必要無くサーバのインストールから登録まで自動でやってくれるのでおすすめです。
ドキュメント - Language Server Protocol には、(1) analysis server のスナップショットが Dart SDK の bin/snapshots
に格納されていること、 (2) --lsp
フラグを付与してそれ実行することで LSP モードでサーバが起動する 旨が記載されています。以上から、vim-lsp に LSPサーバ を登録するには、以下のような感じになります。
" .vimrc かどこかに追記
if executable('dart')
augroup LspDart
au!
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'analysis_server.dart.snapshot',
\ 'cmd': {server_info->[
\ $DART_SDK.'/bin/dart',
\ $DART_SDK.'/bin/snapshots/analysis_server.dart.snapshot',
\ '--lsp',
\ ]},
\ 'root_uri':{server_info->lsp#utils#path_to_uri(
\ lsp#utils#find_nearest_parent_file_directory(
\ lsp#utils#get_buffer_path(),
\ ['.git/', 'analysis_options.yaml']
\ ))},
\ 'allowlist': ['dart'],
\ 'initialization_options': v:null,
\ 'config': {},
\ 'workspace_config': {},
\ })
autocmd FileType dart setlocal omnifunc=lsp#complete
augroup END
endif
ここまで設定が終わると、以下のように LSPの支援を受けつつVimでのdart開発が行えると思います。
やったぜ。
おわり
-
dart-lang/dart-vim-pluginのFAQでは、vim-lscでの設定方法が記載されています。 ↩︎