diff options
Diffstat (limited to '')
| -rw-r--r-- | lsp/clangd.lua | 21 | ||||
| -rw-r--r-- | lsp/lua-language-server.lua | 2 | ||||
| -rw-r--r-- | lsp/qmlls.lua | 5 | ||||
| -rw-r--r-- | lsp/rust-analyzer.lua | 25 |
4 files changed, 52 insertions, 1 deletions
diff --git a/lsp/clangd.lua b/lsp/clangd.lua new file mode 100644 index 0000000..9aced07 --- /dev/null +++ b/lsp/clangd.lua @@ -0,0 +1,21 @@ +return { + cmd = { "clangd" }, + filetypes = { "c", "cpp", "objc", "objcpp", "cuda" }, + root_markers = { + ".clangd", + ".clang-tidy", + ".clang-format", + "compile_commands.json", + "compile_flags.txt", + "configure.ac", -- AutoTools + ".git", + }, + capabilities = { + textDocument = { + completion = { + editsNearCursor = true, + }, + }, + offsetEncoding = { "utf-8", "utf-16" }, + }, +} diff --git a/lsp/lua-language-server.lua b/lsp/lua-language-server.lua index a77fcd9..ce0d902 100644 --- a/lsp/lua-language-server.lua +++ b/lsp/lua-language-server.lua @@ -1,6 +1,6 @@ return { cmd = { "lua-language-server" }, - root_markers = { ".luarc.json" }, + root_markers = { ".luarc.json", ".git" }, filetypes = { "lua" }, settings = { diff --git a/lsp/qmlls.lua b/lsp/qmlls.lua new file mode 100644 index 0000000..92dc83b --- /dev/null +++ b/lsp/qmlls.lua @@ -0,0 +1,5 @@ +return { + cmd = { "qmlls", "-E" }, + root_markers = { ".qmlls.ini", ".git" }, + filetypes = { "qml", "qmljs" }, +} diff --git a/lsp/rust-analyzer.lua b/lsp/rust-analyzer.lua index 51f5037..78ed2c5 100644 --- a/lsp/rust-analyzer.lua +++ b/lsp/rust-analyzer.lua @@ -1,8 +1,33 @@ +local serverReady = {} + return { cmd = { "rust-analyzer" }, root_markers = { "Cargo.toml" }, filetypes = { "rust" }, + capabilities = { + experimental = { + serverStatusNotification = true, + }, + }, + + handlers = { + ["experimental/serverStatus"] = function(_, result, ctx) + -- Try to fix inlay hints not being shown on start of + if result.quiescent and not serverReady[ctx.client_id] then + for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do + -- Re-enable inlay hints so they are refreshed + if vim.lsp.inlay_hint.is_enabled() then + vim.lsp.inlay_hint.enable(false, { bufnr = bufnr }) + vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) + end + + serverReady[ctx.client_id] = true + end + end + end, + }, + settings = { ["rust-analyzer"] = { checkOnSave = { command = "clippy" }, |
