--INFO: Setup various LSP servers, and completion engines --TODO: use nvim-lsp-installer? local cmp = require('cmp') cmp.setup({ snippet = { expand = function(args) vim.fn['vsnip#anonymous'](args.body) end, }, mapping = { [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), [''] = cmp.mapping.confirm({ select = true }), [''] = function(fallback) if cmp.visible() then cmp.select_next_item() else fallback() end end, }, sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'nvim_lua' }, { name = 'vsnip' }, { name = 'buffer' }, }), }) local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) require('lspconfig').clangd.setup({ capabilities = capabilities, }) require('lspconfig').denols.setup({ cmd = { 'deno', 'lsp' }, capabilities = capabilities, }) require('lspconfig').vls.setup({ cmd = { '/usr/local/bin/vls' }, capabilities = capabilities, }) require('lspconfig').pyright.setup({ capabilities = capabilities, }) --TODO: clean this up local runtime_path = vim.split(package.path, ';') table.insert(runtime_path, 'lua/?.lua') table.insert(runtime_path, 'lua/?/init.lua') local sumneko_root_path = '/home/ruthenic/lua-language-server/bin/Linux/' require('lspconfig').sumneko_lua.setup({ cmd = { sumneko_root_path .. 'lua-language-server', '-E', sumneko_root_path .. 'main.lua' }, settings = { Lua = { runtime = { version = 'LuaJIT', path = runtime_path, }, diagnostics = { globals = { 'vim', 'use' }, }, workspace = { library = vim.api.nvim_get_runtime_file('', true), }, telemetry = { enable = false, }, }, }, capabilities = capabilities, })