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 }
})