--require'lspconfig'.gopls.setup{ -- on_attach = function() -- print("gopls loaded") -- -- "n" normal mode -- -- map in normal mode, press K to open buf.hover only in the current buffer -- vim.keymap.set("n", "K", vim.lsp.buf.hover, {buffer=0}) -- vim.keymap.set("n", "gd", vim.lsp.buf.definition, {buffer=0}) -- -- there is a jump list and tag list -- -- ctrl+o to go to previous jump entry -- -- ctrl+t to go to previous tag entry -- vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, {buffer=0}) -- vim.keymap.set("n", "gi", vim.lsp.buf.implementation, {buffer=0}) -- vim.keymap.set("n", "df", vim.diagnostic.goto_next, {buffer=0}) -- -- end, --} -- local o = vim.o local wo = vim.wo local bo = vim.bo -- global options -- +- current line on left side o.relativenumber = true -- also show current exact line number o.number = true o.signcolumn = "number" -- bright colors o.bg = "dark" -- switch between buffers without saving o.hidden = true -- look cool o.listchars = "tab:▶ ,trail:☲,extends:❯,precedes:❮,nbsp:¬,eol:⤦" -- show hidden chars o.list = true -- kill the rat o.mouse = "" -- show chars as search is typed o.incsearch = true -- all lower searches match all cases, any number of caps forces case sensitive o.ignorecase = true o.smartcase = true -- dont show intro text and do some abbreviations o.shortmess = "fiIc" o.syntax = "enable" -- -- Set completeopt to have a better completion experience -- :help completeopt -- menuone: popup even when there's only one match -- noinsert: Do not insert text until a selection is made -- noselect: Do not select, force user to select one from the menu o.completeopt = "menuone,noinsert,noselect" local map = vim.api.nvim_set_keymap options = { silent = true } map('n', '', ':nohlsearch:echo ""', options) map('n', '', ":set nolist nonumber norelativenumber signcolumn=no", options) map('n', '', ":set list number relativenumber signcolumn=number", options) -- vim.cmd('colorscheme papaya') o.termguicolors = true -- " use as trigger keys -- imap (completion_smart_tab) -- imap (completion_smart_s_tab) -- use tab to scroll completion vim.api.nvim_set_keymap('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) vim.api.nvim_set_keymap('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) -- " Code navigation shortcuts options = { silent = true } vim.api.nvim_set_keymap('n', '', ':lua vim.lsp.buf.definition()', options) vim.api.nvim_set_keymap('n', 'K', ':lua vim.lsp.buf.hover()', options) vim.api.nvim_set_keymap('n', 'gD', ':lua vim.lsp.buf.implementation()', options) vim.api.nvim_set_keymap('n', '', ':lua vim.lsp.buf.signature_help()', options) vim.api.nvim_set_keymap('n', '1gD', ':lua vim.lsp.buf.type_definition()', options) vim.api.nvim_set_keymap('n', 'gr', ':lua vim.lsp.buf.references()', options) vim.api.nvim_set_keymap('n', 'g0', ':lua vim.lsp.buf.document_symbol()', options) vim.api.nvim_set_keymap('n', 'gW', ':lua vim.lsp.buf.workspace_symbol()', options) vim.api.nvim_set_keymap('n', 'gd', ':lua vim.lsp.buf.declaration()', options) vim.api.nvim_set_keymap('n', 'ga', ':lua vim.lsp.buf.code_action()', options) -- " Goto previous/next diagnostic warning/error vim.api.nvim_set_keymap('n', 'g]', ':lua vim.lsp.diagnostic.goto_next()', options) vim.api.nvim_set_keymap('n', 'g[', ':lua vim.lsp.diagnostic.goto_prev()', options) o.updatetime = 5000 -- " Show diagnostic popup on cursor hold vim.api.nvim_command('autocmd CursorHold * lua vim.lsp.diagnostic.show_line_diagnostics()') -- type hints! -- vim.api.nvim_command([[ -- autocmd CursorHold,CursorMoved,InsertLeave,BufEnter,BufWinEnter,TabEnter,BufWritePost * lua require'lsp_extensions'.inlay_hints{ prefix = '', highlight = "Comment", enabled = {"TypeHint", "ChainingHint", "ParameterHint"}, prefix = " ⇋ ", } -- ]])