📖
[備忘録] NeovimでTreeSitterを使ってコメント中のNOTEやFIXMEをハイライトする方法
実現方法
comment
モジュールのインストール
1. comment という TreeSitter module が、まさにそのための機能を提供してくれている。
この module は NOTE:
や FIX(hoge)
などの構文を解析してくれる。
Playground もあるので触ってみるととても分かりやすい。
2. ハイライトの設定
コメント中の NOTE
や TODO
はそれぞれ @text.note
や @text.todo
グループとしてキャプチャされる。
この対応は、 comment
モジュールではなく TreeSitter 本体が設定している。
comment
モジュールはあくまでも構文解析をするのみで、クエリの設定(その解析結果の構文木のどの部分を何というグループでキャプチャするかの設定)はモジュールの利用者、基本的には TreeSitter 本体が行っている。
実際にその設定を行っている部分は↓
これをみると、 @text.todo
, @text.note
, @text.warning
, @text.danger
グループにハイライトを設定してあげれば良さそうということがわかる。
@text.todo
だけは元から設定されていたので、他のグループのハイライトをとりあえず以下のように設定してみた。
この設定は、それぞれのグループを molokai で設定されてるハイライトにリンクしている。
vim.api.nvim_set_hl(0, "@text.note", { link = "ModeMsg" })
vim.api.nvim_set_hl(0, "@text.warning", { link = "Error" })
vim.api.nvim_set_hl(0, "@text.danger", { link = "ErrorMsg" })
Discussion