pythonのlinter&formatterを設定する
前回neovimに関連したpython環境を見直したが、ついでにlinterやformatterをちゃんと入れておくことにしたのでメモ
linterの設定
vim-lspにて表示するための設定はこちらを参考にして以下のようになった。
https://qiita.com/tk0miya/items/5a5beb2586c63792ce10
[[plugins]]
repo = 'mattn/vim-lsp-settings'
hook_add = '''
let g:lsp_settings = {
\ 'pylsp-all': {
\ 'workspace_config': {
\ 'pylsp-all': {
\ 'configurationSources': ['flake8'],
\ 'plugins': {
\ 'pylsp_mypy': { 'enabled': 1 }
\ }
\ }
\ }
\ }
\}
'''
configurationSourcesの設定を入れることでflake8がデフォルトで見に行く設定ファイルが読まれるようになる。
linterの設定ファイルは setup.cfg を利用。
[pycodestyle]
max-line-length = 119
exclude =
.git
__pychache__
.tox
venv*
[mypy]
ignore_missing_imports = True
[isort]
profile=black
ちなみに、最初以下のようにflake8が有効になるようplugin設定して動かしたのだが、その状態でもpycodestyleが有効になっておりflake8の設定は反映されなかった。
\ 'plugins': {
\ 'flake8': { 'enabled': 1 },
\ 'pycodestyle': { 'enabled': 0 },
\ }
もともとflake8を使っていたというわけではないため、そのままpycodestyleを使うことにし、これ自体の原因は追ってない。
formatter導入
pipxを利用して独立した仮想環境に以下の2つを置いておくことにした
- isort
- black
pipxはアプリケーションを個別の仮想環境にインストールするためのもの。 ~/.local/pipx/venvs の下に各アプリケーション用の環境が作られ、cliは ~/.local/bin に置かれるためここのpathを通しておけばすべてを実行できる。
https://github.com/pypa/pipx
vim-lsp-settingsを使っているのでそちらの仮想環境にもisortはデフォルトで入っている。それに対して手動でsymlinkを貼ってもいいが、変更するときなど手間がかかりそうなのでこちらにいれてしまうことに。
また、vim上でこれらを実行しやすくするpluginもあるようだが、手動で実行するとしても
であるため特にpluginは入れなかった。
参考
https://zenn.dev/yhay81/articles/yhay81-202102-pythonlint https://qiita.com/tk0miya/items/5a5beb2586c63792ce10 https://scrapbox.io/vimemo/Vim%E3%81%A7_python%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E6%95%B4%E3%81%88%E3%82%8B_vim-lsp_%E4%BD%BF%E7%94%A8