From 67e8f8f45feb59d51ad187989cfb4fb1de8596b2 Mon Sep 17 00:00:00 2001 From: aminnairi <18418459+aminnairi@users.noreply.github.com> Date: Sun, 24 Dec 2023 12:24:16 +0100 Subject: [PATCH] many changes to hopefully get the vim global to work with lua_ls --- .../settings/lazy/plugins/nvim-lspconfig.lua | 448 +++++++++--------- 1 file changed, 225 insertions(+), 223 deletions(-) diff --git a/nvim/lua/settings/lazy/plugins/nvim-lspconfig.lua b/nvim/lua/settings/lazy/plugins/nvim-lspconfig.lua index a4befde..3cc6a1d 100644 --- a/nvim/lua/settings/lazy/plugins/nvim-lspconfig.lua +++ b/nvim/lua/settings/lazy/plugins/nvim-lspconfig.lua @@ -1,241 +1,243 @@ return { - "neovim/nvim-lspconfig", - event = "VeryLazy", - dependencies = { - "williamboman/mason-lspconfig.nvim", - }, - init = function() - local whichKey = require("which-key") + "neovim/nvim-lspconfig", + event = "VeryLazy", + dependencies = { + "williamboman/mason-lspconfig.nvim", + "hrsh7th/nvim-cmp", + }, + config = function() + local lspconfig = require("lspconfig") + local capabilities = require("cmp_nvim_lsp").default_capabilities() + local whichKey = require("which-key") + local signs = { Error = "󰅚 ", Warn = "󰀪 ", Hint = "󰌶 ", Info = " " } - -- Use LspAttach autocommand to only map the following keys - -- after the language server attaches to the current buffer - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("UserLspConfig", {}), - callback = function(ev) - -- Enable completion triggered by - vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" + for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) + end - whichKey.register({ - ["l"] = { - name = "LSP", - d = { - name = "LSP Diagnostic", - o = { - function() - vim.diagnostic.open_float() - end, - "Open LSP diagnostic", - }, - p = { - function() - vim.diagnostic.goto_prev() - end, - "Previous LSP diagnostic", - }, - n = { - function() - vim.diagnostic.goto_next() - end, - "Next LSP diagnostic", - }, - }, - b = { - name = "LSP Buffer", - D = { - function() - vim.lsp.buf.declaration() - end, - "Go to symbol declaration", - buffer = ev.buf, - }, - d = { - function() - vim.lsp.buf.definition() - end, - "Go to symbol definition", - buffer = ev.buf, - }, - h = { - function() - vim.lsp.buf.hover() - end, - "Hover symbol documentation", - buffer = ev.buf, - }, - i = { - function() - vim.lsp.buf.implementation() - end, - "Go to symbol implementation", - buffer = ev.buf, - }, - s = { - function() - vim.lsp.buf.signature_help() - end, - "Go to symbol signature", - buffer = ev.buf, - }, - t = { - function() - vim.lsp.buf.type_definition() - end, - "Go to symbol type definition", - buffer = ev.buf, - }, - r = { - function() - vim.lsp.buf.rename() - end, - "Rename symbol", - buffer = ev.buf, - }, - c = { - function() - vim.lsp.buf.code_action() - end, - "LSP code action", - buffer = ev.buf, - }, - R = { - function() - vim.lsp.buf.references() - end, - "Go to symbol deferences", - buffer = ev.buf, - }, - f = { - function() - vim.lsp.buf.format({ - async = true, - }) - end, - "Format file", - buffer = ev.buf, - }, - }, - }, - }) - end, - }) + local on_attach = function(_, buffer) + whichKey.register({ + ["l"] = { + name = "LSP", + d = { + name = "LSP Diagnostic", + o = { + function() + vim.diagnostic.open_float() + end, + "Open LSP diagnostic", + }, + p = { + function() + vim.diagnostic.goto_prev() + end, + "Previous LSP diagnostic", + }, + n = { + function() + vim.diagnostic.goto_next() + end, + "Next LSP diagnostic", + }, + }, + b = { + name = "LSP Buffer", + D = { + function() + vim.lsp.buf.declaration() + end, + "Go to symbol declaration", + buffer = buffer, + }, + d = { + function() + vim.lsp.buf.definition() + end, + "Go to symbol definition", + buffer = buffer, + }, + h = { + function() + vim.lsp.buf.hover() + end, + "Hover symbol documentation", + buffer = buffer, + }, + i = { + function() + vim.lsp.buf.implementation() + end, + "Go to symbol implementation", + buffer = buffer, + }, + s = { + function() + vim.lsp.buf.signature_help() + end, + "Go to symbol signature", + buffer = buffer, + }, + t = { + function() + vim.lsp.buf.type_definition() + end, + "Go to symbol type definition", + buffer = buffer, + }, + r = { + function() + vim.lsp.buf.rename() + end, + "Rename symbol", + buffer = buffer, + }, + c = { + function() + vim.lsp.buf.code_action() + end, + "LSP code action", + buffer = buffer, + }, + R = { + function() + vim.lsp.buf.references() + end, + "Go to symbol deferences", + buffer = buffer, + }, + f = { + function() + vim.lsp.buf.format({ + async = true, + }) + end, + "Format file", + buffer = buffer, + }, + }, + }, + }) + end - local signs = { Error = "󰅚 ", Warn = "󰀪 ", Hint = "󰌶 ", Info = " " } + lspconfig.lua_ls.setup({ + capabilities = capabilities, + on_attach = on_attach, + on_init = function(client) + local path = client.workspace_folders[1].name + if not vim.loop.fs_stat(path .. '/.luarc.json') and not vim.loop.fs_stat(path .. '/.luarc.jsonc') then + client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using + -- (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT' + }, + diagnostics = { + globals = { + "vim" + }, + }, + -- Make the server aware of Neovim runtime files + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME + -- "${3rd}/luv/library" + -- "${3rd}/busted/library", + } + -- or pull in all of 'runtimepath'. NOTE: this is a lot slower + -- library = vim.api.nvim_get_runtime_file("", true) + } + } + }) - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) - end - end, - config = function() - local lspconfig = require("lspconfig") - local capabilities = require("cmp_nvim_lsp").default_capabilities() - local on_attach = function() end + client.notify("workspace/didChangeConfiguration", { settings = client.config.settings }) + end + return true + end + }) - lspconfig.lua_ls.setup({ - capabilities = capabilities, - on_attach = on_attach, - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you"re using (most likely LuaJIT in the case of Neovim) - version = "LuaJIT", - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = { "vim" }, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = vim.api.nvim_get_runtime_file("", true), - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = { - enable = false, - }, - }, - }, - }) + lspconfig.tsserver.setup({ + capabilities = capabilities, + on_attach = on_attach, + }) - lspconfig.tsserver.setup({ - capabilities = capabilities, - on_attach = on_attach, - }) + lspconfig.volar.setup({ + capabilities = capabilities, + on_attach = on_attach, + filetypes = { + "vue", + }, + }) - lspconfig.volar.setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { - "vue", - }, - }) + lspconfig.cssls.setup({ + capabilities = capabilities, + on_attach = on_attach, + filetypes = { + "css", + "scss", + "sass", + "less", + }, + }) - lspconfig.cssls.setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { - "css", - "scss", - "sass", - "less", - }, - }) + lspconfig.cssmodules_ls.setup({ + capabilities = capabilities, + on_attach = on_attach, + filetypes = { + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + }, + }) - lspconfig.cssmodules_ls.setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - }, - }) + lspconfig.prismals.setup({ + on_attach = on_attach, + filetypes = { + "prisma", + }, + capabilities = capabilities, + }) - lspconfig.prismals.setup({ - on_attach = on_attach, - filetypes = { - "prisma", - }, - capabilities = capabilities, - }) + lspconfig.yamlls.setup({ + capabilities = capabilities, + filetypes = { + "yaml", + }, + }) - lspconfig.yamlls.setup({ - capabilities = capabilities, - filetypes = { - "yaml", - }, - }) + lspconfig.marksman.setup({ + capabilities = capabilities, + filetypes = { + "markdown", + }, + }) - lspconfig.marksman.setup({ - capabilities = capabilities, - filetypes = { - "markdown", - }, - }) + lspconfig.eslint.setup({ + capabilities = capabilities, + on_attach = on_attach, + }) - lspconfig.eslint.setup({ - capabilities = capabilities, - on_attach = on_attach, - }) + lspconfig.dockerls.setup({ + capabilities = capabilities, + on_attach = on_attach, + }) - lspconfig.dockerls.setup({ - capabilities = capabilities, - on_attach = on_attach, - }) + lspconfig.rust_analyzer.setup({ + capabilities = capabilities, + on_attach = on_attach, + }) - lspconfig.rust_analyzer.setup({ - capabilities = capabilities, - on_attach = on_attach, - }) + lspconfig.intelephense.setup({ + capabilities = capabilities, + on_attach = on_attach, + }) - lspconfig.intelephense.setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - lspconfig.elmls.setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - end, + lspconfig.elmls.setup({ + capabilities = capabilities, + on_attach = on_attach, + }) + end, }