2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VimAdvent Calendar 2022

Day 19

LunarVim使ってみた Part2 :null-lsのroot_dirを変える

Last updated at Posted at 2022-12-18

前回「LunarVim使ってみた」の続き

null-lsのroot_dirを変えるのに苦労した話

TL; DR

config.lua
lvim.lsp.null_ls.setup.root_dir = function(fname)
  local util = require "lspconfig.util"
  local root_files = {
    "pyproject.toml",
    "setup.py",
    "setup.cfg",
    "requirements.txt",
    "Pipfile",
    "manage.py",
    "pyrightconfig.json",
  }
  return util.root_pattern(unpack(root_files))(fname) or util.root_pattern ".git" (fname) or util.path.dirname(fname)
end

設定書くとこれだけなんだけど、設定の仕方が見つけられず、
timeoutを変更する方法が
lvim.lsp.null_ls.setup.timeout= 5000 だよ
というタイムアウトに関するissueのコメントを見つけて予想して書いたらうまくいった

結論: LunarVimのドキュメントにない設定変更は、プラグインのドキュメント見てもわからんのでとても苦労する。

経緯

自分用競プロ用のリポジトリがこんな構成

competitive
├── README.md
├── .git
├── go
│   └── 省略
└── python
    ├── pyproject.toml
    ├── src
    │   ├── BIT.py
    │   ├── __init__.py
    │   ├── bsearch.py
    │   ├── combination.py
    │   ├── factorial.py
    │   ├── primes.py
    │   ├── tree.py
    │   └── unionfind.py
    ├── tests
    │   ├── BIT_test.py
    │   ├── __init__.py
    │   ├── bsearch_test.py
    │   ├── combination_test.py
    │   ├── factorial_test.py
    │   ├── primes_test.py
    │   ├── tree_test.py
    │   └── unionfind_test.py
    └── typings

null-lsでpflake8を設定しても、pyproject.tomlの設定値を読んでくれない。

原因調査

  1. コマンドラインで pflake8 実行すると期待通りなのでpyproject.toml は悪くない
  2. pyproject.toml を1個上の階層、つまり、competitive 直下に置くとうまくいく
  3. つまり、 .git がある場所がrootとして認識されているっぽい
  4. よっしゃ null-ls の root_dir判定の設定を変えればいけるはず

で、どう書いたらいいん?

もちろん、LunarVimのnull-lsのセットアップしてる処理にnull-lsのLSPの設定方法通り直接かけばうまくいった。
でも、そこはLunarVimのアップデートで書き換わる部分なわけで。
config.lua にどうかけばいいのかというのがどこにも書いてない。

printfデバッグして、setup処理より前にconfig.luaが実行されているのは確認したけど、
LunarVimがデフォルトで設定するnull-lsの設定値を変えたりしてもうまく行かない。
(luaをpandoc filter書く時とvimの設定するときしか使わないので知識も足りてない)

ググってもroot_dirの件はpyrightのしかひっかからない。
他のLSP設定の仕方をまねてやってみたけど、setupに渡したオプションは反映されない。

最終的にtimeoutの変え方を見て、rood_dirに変えてみたらうまく行った。

結論

Pluginに詳しくなかった自分としては、LunarVim美味しいとこどりしてあって気に入ってたんだけど、
細かい設定を変えようとすると使ってる人少ないし、けっこう苦労する。

Vimの入口としてはけっこういいから、LunarVimの使ってるpluginでいい感じのをneovimのinit.luaに輸入していく感じがいいかもしれない。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?