summaryrefslogtreecommitdiff
path: root/lsp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lsp/clangd.lua21
-rw-r--r--lsp/lua-language-server.lua2
-rw-r--r--lsp/qmlls.lua5
-rw-r--r--lsp/rust-analyzer.lua25
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" },