return { 'neovim/nvim-lspconfig', event = { 'BufReadPre', 'BufNewFile' }, dependencies = { 'hrsh7th/cmp-nvim-lsp', -- LSP source for nvim-cmp, { 'folke/neodev.nvim', config = true }, }, config = function() require('vim.lsp.protocol') require('mason-lspconfig').setup({ automatic_enable = true, }) vim.lsp.config('*', { capabilities = { textDocument = { completion = { completionItem = { snippetSupport = false, }, }, }, }, }) vim.lsp.config('lua_ls', { on_init = function(client) if client.workspace_folders then local path = client.workspace_folders[1].name if path ~= vim.fn.stdpath('config') and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) then return end end client.config.settings.Lua = 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', -- Tell the language server how to find Lua modules same way as Neovim -- (see `:h lua-module-load`) path = { 'lua/?.lua', 'lua/?/init.lua', }, }, -- Make the server aware of Neovim runtime files workspace = { checkThirdParty = false, library = { vim.env.VIMRUNTIME, -- Depending on the usage, you might want to add additional paths -- here. '${3rd}/luv/library' -- '${3rd}/busted/library' }, -- Or pull in all of 'runtimepath'. -- NOTE: this is a lot slower and will cause issues when working on -- your own configuration. -- See https://github.com/neovim/nvim-lspconfig/issues/3189 -- library = { -- vim.api.nvim_get_runtime_file('', true), -- } }, }) end, settings = { Lua = {}, }, }) vim.diagnostic.config({ virtual_text = { prefix = '●', -- Could be '■', '●', '▎', 'x' }, signs = { text = { [vim.diagnostic.severity.ERROR] = '󰅚 ', [vim.diagnostic.severity.WARN] = '󰀪 ', [vim.diagnostic.severity.INFO] = ' ', [vim.diagnostic.severity.HINT] = '󰌶 ', }, texthl = { [vim.diagnostic.severity.ERROR] = 'DiagnosticSignError', [vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn', [vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo', [vim.diagnostic.severity.HINT] = 'DiagnosticSignHint', }, numhl = { [vim.diagnostic.severity.ERROR] = 'DiagnosticSignError', [vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn', [vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo', [vim.diagnostic.severity.HINT] = 'DiagnosticSignHint', }, }, }) end, }