C言語だと clang-format というものがありますがこれは Clang の配布物に含まれていて、別に Clang はいらないけど clang-format を使いたいという場合には 1GB を超えるツールをまるごとインストールするのは大変です。LLVM のダウンロードページにあるインストーラは Clang と LLD、その他の LLVM ツール類がやまほど含まれていて、巨大なパッケージになっています。
でも実際にほしいのは clang-format.exe だけ。ということで、ダウンロードしたインストーラを 7zip で展開してみたら、LLVM のツリー構造がそのまま展開されたので、そこから bin/clang-format.exe だけを抜き出して、パスの通った場所にコピーします。
興味本位でその他のファイルも眺めてみると、clang-format.exe の他に、clang-tidy.exe や clang-refactor.exe、clang-include-fixer.exe などというものもあります。使い方はよくわかりませんが、名前だけ見ると便利そう。ですが、たとえば include-fixer は参照が足りていない #include を構成してくれるというもので、不要な #include を見てくれるわけではないようです。
とりあえず、ALE で clang-format.exe を使って自動整形できればいいので、clang-format.exe だけに着目します。
余談ですが、Visual Studio 2017 や 2019 では、clang-format.exe を同梱しているようです。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\vcpackages
あたりにありますが、バージョンはちょっと古いようです。コマンドプロンプトを開いて、
clang-format -version
などとして動作することがわかったら、Neovim の設定をします。現在は .toml ファイルでプラグインをロードしているので、そちらでの設定です。
[[plugins]] ## Asynchronous Lint Engine repo = 'w0rp/ale' hook_add=''' let g:ale_lint_on_enter = 1 let g:ale_lint_on_text_changed = 1 let g:ale_fix_on_save = 1 let g:ale_fixers = { \ '*': ['remove_trailing_lines', 'trim_whitespace'], \ 'c': ['clang-format'], \ 'cpp': ['clang-format'], \ 'python': ['autopep8', 'isort'], \ 'go': ['gofmt'] \} let g:ale_linters = { \ 'python': ['flake8'], \ 'c': ['cpplint'], \ 'cpp': ['cpplint'] \} let g:ale_python_autopep8_options = '--max-line-length=99' let g:ale_python_flake8_options = '--max-line-length=99' let g:ale_virtualtext_cursor = 1 '''自分がちょくちょく使用する言語の設定だけですが、こんな感じ。ちなみに cpplint は Python で実行されるので、利用するには
pip install cpplint
が必要です。
0 件のコメント:
コメントを投稿