74 lines
2.9 KiB
Lua
74 lines
2.9 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 opts = { 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', '<Leader>ga', vim.lsp.buf.code_action)
|
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration)
|
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition)
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover)
|
|
vim.keymap.set('n', '<Leader>gi', vim.lsp.buf.implementation)
|
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help)
|
|
-- 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)
|
|
vim.keymap.set('n', '<Leader>nr', vim.lsp.buf.rename)
|
|
vim.keymap.set('n', '<Leader>gr', vim.lsp.buf.references)
|
|
vim.keymap.set('n', '<Leader>e', vim.diagnostic.open_float)
|
|
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)
|
|
|
|
|
|
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>
|