-- 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 }) nvim_lsp.clangd.setup({ on_attach=on_attach }) nvim_lsp.efm.setup { init_options = {documentFormatting = true}, settings = { rootMarkers = {".git/"}, languages = { lua = { { formatCommand = "lua-format -i", formatStdin = true } }, python = { { formatCommand = 'black --quiet -', formatStdin = true } } } } } -- 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; }; } signature_cfg = { hint_enable = true, hint_prefix = "% ", handler_opts = { border = "none" }, } require'lsp_signature'.on_attach(signature_cfg) saga_cfg = { code_action_prompt = { enable = false, sign = false, virtual_text = false, }, } -- require'lspsaga'.init_lsp_saga(saga_cfg) 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', }, }) require('telescope').setup { defaults = { mappings = { n = { ["q"] = require('telescope.actions').close, }, }, }, pickers = { lsp_code_actions = { theme = "ivy", }, lsp_range_code_actions = { theme = "ivy", }, lsp_references = { theme = "ivy", }, }, } local builtin = require'telescope.builtin' local dropdown = require'telescope.themes'.get_dropdown({ --previewer = false, --prompt_title = "", --results_height = 16, --width = 0.6, --borderchars = { --{"─", "│", "─", "│", "╭", "╮", "╯", "╰"}, --prompt = {"─", "│", " ", "│", "╭", "╮", "│", "│"}, --results = {"─", "│", "─", "│", "├", "┤", "╯", "╰"}, --preview = {"─", "│", "─", "│", "╭", "╮", "╯", "╰"} --}, --winblend = 10 }) live_grep_repo = function(conf) --local opt = dropdown local opt = { cwd = vim.fn.systemlist("git rev-parse --show-toplevel")[1] } for k,v in pairs(conf) do opt[k] = v end builtin.live_grep(opt) end git_grep_word = function(conf) --local opt = dropdown local opt = { cwd = vim.fn.systemlist("git rev-parse --show-toplevel")[1] } for k,v in pairs(conf) do opt[k] = v end builtin.grep_string(opt) end