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 件のコメント:
コメントを投稿