From 1cebfd8c89a469abc06420293f879427337a138e Mon Sep 17 00:00:00 2001 From: Filip Wandzio Date: Sun, 12 Oct 2025 13:56:19 +0200 Subject: Ensure nvim v3.0.0 LSP api compliance --- init.lua | 53 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 11 deletions(-) (limited to 'init.lua') diff --git a/init.lua b/init.lua index b42faf2..9942d1b 100644 --- a/init.lua +++ b/init.lua @@ -241,28 +241,59 @@ require("lazy").setup( local lsp_servers = { clangd = {filetypes = {"c", "h"}}, svelte = {filetypes = {"svelte"}}, - ts_ls = {filetypes = {"typescript", "typescriptreact", "javascript", "javascriptreact"}}, - rust_analyzer = {filetypes = {"rust"}} + ts_ls = {filetypes = { + "typescript", + "typescriptreact", + "javascript", + "javascriptreact"} + }, + rust_analyzer = { + filetypes = {"rust"}, + imports = { + granularity = { + group = "module", + }, + prefix = "self", + }, + cargo = { + buildScripts = { + enable = true, + }, + }, + procMacro = { + enable = true + }, + } } local function server_maps(opts) local buf = opts.buffer end + + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require("coq").lsp_ensure_capabilities(capabilities) + for server_name, config in pairs(lsp_servers) do - require("lspconfig")[server_name].setup( - coq.lsp_ensure_capabilities( - { + vim.api.nvim_create_autocmd("FileType", { + pattern = config.filetypes, + callback = function() + vim.lsp.start({ + name = server_name, + cmd = vim.lsp.get_server_capabilities(server_name).cmd or { server_name }, + root_dir = vim.fs.dirname(vim.api.nvim_buf_get_name(0)), + capabilities = capabilities, + settings = config.settings, on_attach = function(client, bufnr) server_maps({buffer = bufnr}) - end, - filetypes = config.filetypes, - settings = config.settings or {} - } - ) - ) + end + }) + end + }) end + set_highlights() vim.g.mapleader = " " -- cgit v1.2.3