return { -- Mason. { "williamboman/mason.nvim", config = function() require("mason").setup() end, }, -- Mason LSP Config. { "williamboman/mason-lspconfig.nvim", config = function() require("lspconfig").gdscript.setup({}) require("mason-lspconfig").setup({ ensure_installed = { "clangd", "neocmake", "jdtls", "ts_ls", "lua_ls", "pyright", "omnisharp", "html", "cssls", "glsl_analyzer", "biome", "somesass_ls", "ocamllsp", }, }) end, }, -- NeoVim LSP Config. { "neovim/nvim-lspconfig", config = function() -- Autocomplete and snippets stuff. local capabilities = require("cmp_nvim_lsp").default_capabilities() -- Setting up languages. local lspconfig = require("lspconfig") lspconfig.clangd.setup({ capabilities = capabilities }) lspconfig.jdtls.setup({ capabilities = capabilities }) lspconfig.lua_ls.setup({ capabilities = capabilities }) lspconfig.ts_ls.setup({ capabilities = capabilities }) lspconfig.pyright.setup({ capabilities = capabilities }) lspconfig.html.setup({ capabilities = capabilities, filetypes = { "html", "jinja.html" }, }) lspconfig.cssls.setup({ capabilities = capabilities }) lspconfig.glsl_analyzer.setup({ capabilities = capabilities }) lspconfig.somesass_ls.setup({ capabilities = capabilities }) -- Specific stuff for CMake. local cmakeCapabilities = vim.lsp.protocol.make_client_capabilities() cmakeCapabilities.textDocument.completion.completionItem.snippetSupport = true lspconfig.neocmake.setup({ capabilities = cmakeCapabilities }) -- Specific stuff to C# omnisharp lspconfig.omnisharp.setup({ capabilities = capabilities, cmd = { "dotnet", vim.fn.stdpath("data") .. "/mason/packages/omnisharp/libexec/OmniSharp.dll" }, enable_import_completion = true, organize_imports_on_format = true, enable_roslyn_analyzers = true, root_dir = function() return vim.loop.cwd() -- Current Working Directory end, -- Settings stuff settings = { FormattingOptions = { EnableEditorConfigSupport = true, OrganizeImports = true, }, MsBuild = { LoadProjectsOnDemand = false, }, RoslynExtensionsOptions = { EnableAnalyzersSupport = true, EnableImportCompletion = true, AnalyzeOpenDocumentsOnly = false, }, Sdk = { IncludePrereleases = true, }, }, }) -- Setting up keybinds. vim.keymap.set("n", "K", vim.lsp.buf.hover, {}) vim.keymap.set("n", "gd", vim.lsp.buf.definition, {}) vim.keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, {}) end, }, }