Vim: Dart 開発環境 構築メモ

              · · · ·

Dartに入門するにあたり、開発環境を構築した時のメモです。macOS Big Sur on Apple M1 + Vim8 環境下を想定しています。

環境

Dart 処理系のインストール

Installing the Dart SDK にておすすめされている通り、Homebrew 経由でインストールします。

$ brew tap dart-lang/dart
$ brew install dart

brew info dart を打ってインストール後の確認。どうやら stable 2.12.4, HEAD が落ちてきたみたいです。 『Dart SDKをPATHに登録するのを忘れないでね』 とあるので、.bashrc にて登録しておきましょう。

Please note the path to the Dart SDK:
/opt/homebrew/opt/dart/libexec

# .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

ここまでで、dart コマンドが実行可能になりました。

$ 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 を有効にしたことで 保存時に自動でフォーマットが適用されるようになりました。

screencast.2021-05-01.00-29-52.gif

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

以上で、とりあえず Dart に入門する準備が整いました 🤩 やったぜ

screencast_2021-05-07_03-08-41.gif

おわり


  1. dart-lang/dart-vim-pluginFAQでは、vim-lscでの設定方法が記載されています。 ↩︎

comments powered by Disqus