Closed5
Neovim LSPでカーソル下の変数をハイライトする機能
LSPでカーソル下の変数をハイライトする機能は highlight reference と呼ぶらしい。Vimでは有効になっているが、Neovimだと手動で有効にしないといけない
nvim lsp highlight document でググったけど情報少ない。このページのコードコピペしても動かなかった
augroup lsp_document_highlight
autocmd! * <buffer>
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
augroup END
-
:help lsp-highlight
-
:help vim.lsp.buf.document_hightlight()
あたりを調べるとこんな記述があった。どうやって定義するのか確認する
注意: vim.lsp.buf.document_highlight() の使用は、以下のハイライトグループが定義されている必要があり、さもなければ実際のハイライトを見ることができまん。LspReferenceText , LspReferenceRead , LspReferenceWrite 。
とりあえずできた
-
ハイライトするまでの時間は3秒くらい。もうちょっと短くしたい
- デフォルトは
set updatetime=4000
4秒だった。0.5秒くらいにしようかな
- デフォルトは
-
ハイライトは無効になっててアンダーラインだけ。色設定適当だからしゃーない
autocmd ColorScheme * highlight Normal ctermbg=none guibg=none
と競合してるくさいな- 別にそんなことはなかった。カラースキーマに合わせて変えられないかな
vim.cmd [[
highlight LspReferenceText cterm=underline ctermbg=8 gui=underline guibg=#104040
highlight LspReferenceRead cterm=underline ctermbg=8 gui=underline guibg=#104040
highlight LspReferenceWrite cterm=underline ctermbg=8 gui=underline guibg=#104040
]]
require("nvim-lsp-installer").on_server_ready(function(server)
local opt = {
on_attach = function(client, bufnr)
-- keymap setting ...
vim.api.nvim_create_augroup("lsp_document_highlight", { clear = true })
vim.api.nvim_clear_autocmds { buffer = bufnr, group = "lsp_document_highlight" }
vim.api.nvim_create_autocmd({"CursorHold", "CursorHoldI"}, {
callback = vim.lsp.buf.document_highlight,
buffer = bufnr,
group = "lsp_document_highlight",
desc = "Document Highlight",
})
vim.api.nvim_create_autocmd({"CursorMoved", "CursorMovedI"}, {
callback = vim.lsp.buf.clear_references,
buffer = bufnr,
group = "lsp_document_highlight",
desc = "Clear All the References",
})
end,
-- capabilities setting ...
}
server:setup(opt)
end)
-
ファイル2つ開くと1つ目で動作しなくなる。要確認
- これでちゃんと動いた。vim.api の設定のやり方が違ったのかな?
require("nvim-lsp-installer").on_server_ready(function(server)
local opt = {
on_attach = function(client, bufnr)
-- keymap setting ...
vim.cmd [[
augroup lsp_document_highlight
autocmd! * <buffer>
autocmd CursorHold,CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorMoved,CursorMovedI <buffer> lua vim.lsp.buf.clear_references()
augroup END
]]
end,
-- capabilities setting ...
}
server:setup(opt)
end)
このスクラップは2022/07/29にクローズされました