Neovim 0.11 に上げたところ、LSP 周りの関数が deprecated になっていた。
init.lua を開いたら Derecated
の警告が出ていて驚いた。
deprecated-0.11
:help deprecated
で非推奨になったものを見ることができる。
今回、対応したのは3つ。
vim.lsp.with()
vim.diagnostic.goto_next()
vim.diagnostic.goto_prev()
vim.lsp.with()
の非推奨化対応
以下のようなホバー時に丸角の枠を付けるために使用していた。
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(
vim.lsp.handlers.hover, { border = 'rounded' }
)
vim.api.nvim_create_autocmd("LspAttach", {
callback = function()
vim.keymap.set('n', 'K', function()
vim.lsp.buf.hover()
end, { buffer = true })
end
})
ヘルプなどを見ていくと、LSP系でフローティング・ウィンドウ(?)を出すような関数は、パラメーターを直接渡せることが分かった。
(使用可能パラメーターは :help vim.lsp.util.open_floating_preview.Opts
辺りを参照)
vim.lsp.with()
は不要になったのだ。
vim.api.nvim_create_autocmd("LspAttach", {
callback = function()
vim.keymap.set('n', 'K', function()
vim.lsp.buf.hover({ border = 'rounded' })
end, { buffer = true })
end
})
vim.diagnostic.goto_next()
と goto_prev()
の非推奨化対応
こちらは、 vim.diagnostic.jump()
を使うことを推奨されている。
count
に正の値を入れると次へ、負の値だと前へジャンプする関数に統合されたわけだ。
vim.keymap.set('n', 'g]', function() vim.diagnostic.jump({ count = 1 }) end, { buffer = true })
vim.keymap.set('n', 'g[', function() vim.diagnostic.jump({ count = -1 }) end, { buffer = true })
こちらも vim.lsp.with()
を使って枠を付けたりしていたが、 vim.diagnostic.config()
で設定可能になることが分かった。
以下の float
と jump
の項目を追加して対応。
vim.diagnostic.config({
-- ...
float = { border = 'double', severity_sort = true },
jump = { float = true }
})