-- Smaller updatetime for CursorHold & CursorHoldI vim.opt.updatetime = 300 -- Coc don't use completeopt vim.opt.completeopt = {} -- don't give |ins-completion-menu| messages. vim.opt.shortmess:append("c") -- always show signcolumns vim.opt.signcolumn = "yes" -- Some server have issues with backup files, see coc#649 vim.opt.backup = false vim.opt.writebackup = false -- Better display for messages vim.opt.cmdheight = 2 -- Use for trigger completion. vim.keymap.set("i", "", vim.fn["coc#refresh"], { silent = true, expr = true, }) -- Use for confirm completion, `u` means break undo chain at current -- position. Coc only does snippet and additional edit on confirm. local function confirm_coc_completion() if vim.call("coc#pum#visible") == 1 then vim.call("coc#pum#confirm") return "" else return "" end end vim.keymap.set("i", "", confirm_coc_completion, { expr = true, silent = true }) local sr_opts = { silent = true, remap = true } -- Use `[c` and `]c` for navigate diagnostics vim.keymap.set("n", "[c", "(coc-diagnostic-prev)", sr_opts) vim.keymap.set("n", "]c", "(coc-diagnostic-next)", sr_opts) -- Remap keys for gotos vim.keymap.set("n", "gd", "(coc-definition)", sr_opts) vim.keymap.set("n", "gy", "(coc-type-definition)", sr_opts) vim.keymap.set("n", "gi", "(coc-implementation)", sr_opts) vim.keymap.set("n", "gr", "(coc-references)", sr_opts) -- Remap for do code action of current line vim.keymap.set("n", "a", "(coc-codeaction)") -- Remap for rename current word vim.keymap.set("n", "n", "(coc-rename)") -- Mapping for CocList vim.keymap.set("n", "cl", ":CocList") vim.keymap.set("n", "cd", ":CocList diagnostics") vim.keymap.set("n", "cc", ":CocList commands") vim.keymap.set("n", "co", ":CocList outline") vim.keymap.set("n", "cs", ":CocList symbols")