vimrc/mapping.lua

74 lines
3 KiB
Lua

-- from: https://sharksforarms.dev/posts/neovim-rust/
-- 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
vim.opt.completeopt = "menuone,noinsert,noselect"
-- Avoid showing extra messages when using completion
vim.opt.shortmess:append('c')
-- extend timeout to allow time for three character shortcuts
vim.opt.timeoutlen = 2500
local bufnr = vim.api.nvim_get_current_buf()
local opts = { buffer = bufnr, noremap = true, silent = true }
-- toggle gundo's display
vim.keymap.set('n', '<F5>', vim.cmd.UndotreeToggle)
-- quickly toggle a left, vsplit for an insanely powerful file explorer
vim.keymap.set('n', '<F8>', vim.cmd.NERDTreeToggle)
vim.keymap.set('n', '<F9>', vim.cmd.NERDTreeFind)
-- use similar key, esc, to exit terminal mode
vim.cmd("tnoremap <C-Space><Esc> <C-\\><C-n>")
-- Code navigation shortcuts
-- from https://github.com/neovim/nvim-lspconfig/blob/master/test/minimal_init.lua#L34
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
-- vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
-- vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<Leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<Leader>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<Leader>rn', vim.lsp.buf.rename, opts)
vim.keymap.set('n', '<Leader>gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<Leader>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<Leader>q', vim.diagnostic.setloclist, opts)
vim.keymap.set('n', '<Leader>xx', vim.cmd.TroubleToggle, opts)
vim.keymap.set('n', '<Leader>xw', function()
vim.cmd("TroubleToggle workspace_diagnostics")
end, opts)
vim.keymap.set('n', '<Leader>xd', function()
vim.cmd("TroubleToggle workspace_diagnostics")
end, opts)
vim.keymap.set('n', '<Leader>xq', function()
vim.cmd("TroubleToggle quickfix")
end, opts)
vim.keymap.set('n', '<Leader>xl', function()
vim.cmd("TroubleToggle loclist")
end, opts)
-- work with Trouble to view lists of diagnostic warnings/errors
vim.keymap.set('n', '<Leader>wt', function()
vim.cmd("e ~/Documents/Wiki/tags.md")
end, opts)
vim.keymap.set('n', '<Leader>tr', vim.cmd.VimwikiRebuildTags, opts)
vim.keymap.set('n', '<Leader>tg', vim.cmd.VimwikiGenerateTagLinks, opts)
-- TODO translate to lua
--function! VimwikiFindAllIncompleteTasks()
-- lvimgrep /- \[ \]/ *
-- lopen
--endfunction
--nmap <Leader>wa :call VimwikiFindAllIncompleteTasks()<CR>