-- nvim_lsp object local nvim_lsp = require'lspconfig' -- function to attach completion when setting up lsp local on_attach = function(client) end -- Enable rust_analyzer nvim_lsp.rust_analyzer.setup({ on_attach=on_attach }) nvim_lsp.gopls.setup({ on_attach=on_attach }) nvim_lsp.pyright.setup({ on_attach=on_attach }) -- Enable diagnostics vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false, signs = true, update_in_insert = false, } ) -- Compe setup require'compe'.setup { enabled = true; autocomplete = true; debug = false; min_length = 1; preselect = 'disable'; throttle_time = 80; source_timeout = 200; incomplete_delay = 400; max_abbr_width = 100; max_kind_width = 100; max_menu_width = 100; documentation = true; source = { path = true; nvim_lsp = true; }; } local t = function(str) return vim.api.nvim_replace_termcodes(str, true, true, true) end local check_back_space = function() local col = vim.fn.col('.') - 1 if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then return true else return false end end -- Use (s-)tab to: --- move to prev/next item in completion menuone --- jump to prev/next snippet's placeholder _G.tab_complete = function() if vim.fn.pumvisible() == 1 then return t "" elseif check_back_space() then return t "" else return vim.fn['compe#complete']() end end _G.s_tab_complete = function() if vim.fn.pumvisible() == 1 then return t "" else return t "" end end vim.api.nvim_set_keymap("i", "", "v:lua.tab_complete()", {expr = true}) vim.api.nvim_set_keymap("s", "", "v:lua.tab_complete()", {expr = true}) vim.api.nvim_set_keymap("i", "", "v:lua.s_tab_complete()", {expr = true}) vim.api.nvim_set_keymap("s", "", "v:lua.s_tab_complete()", {expr = true}) require('lspkind').init({ -- disables text annotations with_text = false, -- default symbol map -- can be either 'default' or 'codicons' preset = 'default', -- override preset symbols -- default: {} symbol_map = { Method = 'm', Function = 'f', Text = 'txt', Constructor = 'new', Variable = 'var', Class = 'cls', Interface = 'iface', Module = 'mod', Property = 'prop', Unit = 'unit', Value = 'val', Enum = 'enum', Keyword = 'kw', Snippet = 'sn', Color = 'color', File = 'file', Folder = 'fold', EnumMember = 'enum', Constant = 'const', Struct = 'struct', }, })