📝
nvim-lspでtsconfig.jsonとかの補完をする方法(JSON schema)
追記
SchemaStore.nvim というプラグインが出てきました。
基本的にこの記事で説明されていることをやってくれてさらに定期的に更新されるのでこのプラグインを使うのがおすすめです。
neovim の built-in lsp の話です。lspconfig が入ってるのが前提です。
基本的にはjsonls
の設定で
require("lspconfig")["jsonls"].setup({
filetypes = {"json", "jsonc"},
settings = {
json = {
schemas = {
{fileMatch = {"package.json"}, url = "https://json.schemastore.org/package.json"},
{fileMatch = {"tsconfig*.json"}, url = "https://json.schemastore.org/tsconfig.json"},
}
}
},
})
みたいな感じでつらつらと schema を探して書いていけばできます。
しかしこれを一々書くのはとても面倒臭いです。そこで上のコードの URL にもあるschemastoreというサイトを使います。
このサイトの
にはまさに上の設定通りの schema のカタログが用意されており、これを使えたら便利だと思いませんか?
ただ、json をパースしてとかやるのも面倒臭いのでTypescriptToLua
というツールを使います。
ここの playground に先程のカタログの json を Typescript のオブジェクトとして貼り付けると、なんと lua のコードで出力してくれます。あとはそのコードをコピペしてくるだけです。
変換したものを一応 gist に用意しておきました。
このファイルを適当なところに置いて
local catalog_data = require("schema-catalog")
local schemas = catalog_data.schemas
require("lspconfig")["jsonls"].setup({
filetypes = {"json", "jsonc"},
settings = {
json = {
schemas = schemas
}
},
})
みたいな感じにすればこれでほぼ全てのナントカ config みたいな JSON ファイルが補完できるようになります。ドキュメントもあります。
この記事は https://note.nazo6.dev/blog/989d44e16b1abb とのクロスポストです。
Discussion