require("mason").setup() local cmp = require('cmp') local cmp_select = {behavior = cmp.SelectBehavior.Select} cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.select_prev_item(cmp_select), [''] = cmp.mapping.select_next_item(cmp_select), [''] = cmp.mapping.confirm({ select = true }), [''] = cmp.mapping.complete(), }), sources = cmp.config.sources( { { name = 'nvim_lsp' }, { name = 'luasnip' } }, { { name = 'buffer' }, { name = 'path' }, { name = 'cmdline' } }), completion = { completeopt = 'menu,menuone,noinsert', }, }) vim.lsp.enable("lua_ls") vim.lsp.config("lua_ls", { on_init = function(client) if client.workspace_folders then local path = client.workspace_folders[1].name if vim.loop.fs_stat(path..'/.luarc.json') or vim.loop.fs_stat(path..'/.luarc.jsonc') then return end end client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { runtime = { version = 'LuaJIT' }, workspace = { checkThirdParty = false, library = { vim.env.VIMRUNTIME } } }) end, settings = { Lua = {} } }) vim.lsp.enable("clangd") vim.lsp.config("clangd", { capabilities = require('cmp_nvim_lsp').default_capabilities(), cmd = { "clangd", "--background-index", "--clang-tidy", "--completion-style=detailed", "--all-scopes-completion", } }) vim.lsp.enable("pyright") vim.lsp.enable("html") vim.lsp.enable("angularls") vim.lsp.enable("ts_ls") vim.lsp.config("ts_ls", { cmd = { "/usr/lib/node_modules/typescript-language-server/lib/cli.mjs", "--stdio" }, filetypes = { "javascript", "typescript", "javascriptreact", "typescriptreact" }, init_options = { plugins = {}, }, on_attach = function(client, bufnr) client.server_capabilities.documentFormattingProvider = false -- Optional end }) vim.lsp.enable("java-language-server") vim.lsp.config("java-language-server", { cmd = {"java-language-server"} })