diff options
| author | Robert Günzler <r@gnzler.io> | 2022-05-27 12:53:21 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2022-05-27 13:16:14 +0200 |
| commit | c35b450705899b011957f16c2a583e1e3818af8c (patch) | |
| tree | c736ecd9c9dd1571a1c7f3b587e4d539a4f3db5e | |
| parent | 18b0a7c1943f28342dd2272135bf562f100d2839 (diff) | |
vim: register keybinds with which-key
| -rw-r--r-- | .vim/after/ftplugin/markdown.lua | 12 | ||||
| -rw-r--r-- | .vim/init.lua | 48 | ||||
| -rw-r--r-- | .vim/lua/colors.lua | 7 | ||||
| -rw-r--r-- | .vim/lua/debugger.lua | 16 | ||||
| -rw-r--r-- | .vim/lua/globals.lua | 8 | ||||
| -rw-r--r-- | .vim/lua/lsp.lua | 30 | ||||
| -rw-r--r-- | .vim/lua/plugins.lua | 140 | ||||
| -rw-r--r-- | .vim/lua/statusline.lua | 16 |
8 files changed, 175 insertions, 102 deletions
diff --git a/.vim/after/ftplugin/markdown.lua b/.vim/after/ftplugin/markdown.lua index 373b79e..22c19cb 100644 --- a/.vim/after/ftplugin/markdown.lua +++ b/.vim/after/ftplugin/markdown.lua @@ -6,16 +6,20 @@ vim.opt.foldlevel = 1 -- vim.fn.matchadd('Conceal', '\\[-\\]', 0, -1, { conceal = '☒' }) -- vim.fn.matchadd('Conceal', '\\[\\]', 0, -1, { conceal = '🞕' }) -vim.keymap.set('n', - '<Plug>Markdown_OpenUrlUnderCursor', +vim.keymap.set('n', '<Plug>Markdown_OpenUrlUnderCursor', function() require('misc').open_under_cursor('url-launcher') end ) -vim.keymap.set('n', - '<leader>l', +vim.keymap.set('n', '<localleader>l', function() require('misc').link_preview() end ) +wk_register { ['<localleader>l'] = {'link preview'} } -- vim.keymap.set('n', '<leader>zn', function() require('zk').new() end) -- vim.keymap.set('n', '<leader>zi', function() require('zk').index() end) -- vim.cmd [[ command! -nargs=* ZettelkastenNew lua require('zk').new(nil, <f-args>) ]] + +vim.keymap.set('n', 'gt', function() + require('telescope._extensions.todo-comments').exports.todo {cwd=vim.env.ZK_NOTEBOOK_DIR} +end) +wk_register { ['gt'] = {[[zk todo]]} } diff --git a/.vim/init.lua b/.vim/init.lua index 73a9a4b..c6c1d4f 100644 --- a/.vim/init.lua +++ b/.vim/init.lua @@ -145,6 +145,10 @@ vim.keymap.set('n', '<leader>D', function() end _G.diagnostic_hidden = not _G.diagnostic_hidden end) +wk_register { + ['<localleader>d'] = {'show diagnositics'}, + ['<leader>D'] = {'toggle diagnositics'}, +} -- }}} -- KEY BINDS -- {{{ @@ -177,22 +181,48 @@ vim.keymap.set('n', 'gd', function() misc.open_under_cursor(nil, true) end) -- vim.keymap.set('n', 'gf', function() misc.file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end) vim.keymap.set('n', 'gx', function() misc.open_under_cursor('url-launcher') end) vim.keymap.set('n', 'gu', function() misc.open_under_cursor('url-launcher') end) -vim.keymap.set('n', 'gGw', function() misc.word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) -vim.keymap.set('n', 'gGe', function() misc.expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) -vim.keymap.set('n', 'gGf', function() misc.file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) -vim.keymap.set('n', 'gss', function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end) + +vim.keymap.set('n', '<localleader>gw', function() misc.word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) +vim.keymap.set('n', '<localleader>ge', function() misc.expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) +vim.keymap.set('n', '<localleader>gf', function() misc.file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) +vim.keymap.set('n', '<localleader>gs', function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end) +wk_register { + ['<localleader>g'] = { + name = '+Grep', + w = {'word_under_cursor'}, + e = {'expr_under_cursor'}, + f = {'file_under_cursor'}, + s = {'substitute'}, + } +} vim.keymap.set('n', '<leader>r', misc.live_grep) vim.keymap.set('n', '<leader>f', misc.find_files) +wk_register { + ['<leader>r'] = {'rg'}, + ['<leader>f'] = {'fd'}, +} -vim.keymap.set('n', 'dgl', 'diffget LOCAL') -vim.keymap.set('n', 'dgr', 'diffget REMOTE') -vim.keymap.set('n', 'dpl', 'diffpush LOCAL') -vim.keymap.set('n', 'dpr', 'diffpush REMOTE') +vim.keymap.set('n', '<localleader>dgl', 'diffget LOCAL') +vim.keymap.set('n', '<localleader>dgr', 'diffget REMOTE') +vim.keymap.set('n', '<localleader>dpl', 'diffpush LOCAL') +vim.keymap.set('n', '<localleader>dpr', 'diffpush REMOTE') +wk_register { + ['<localleader>d'] = { + name = '+Diff', + gl = {'get local'}, + gr = {'get remote'}, + pl = {'push local'}, + pr = {'push remote'}, + } +} -vim.keymap.set('x', '<leader>bf', +vim.keymap.set('x', '<localleader>f', [[<ESC><CMD>lua require("misc").fold_block()<CR>]], { noremap = true, silent = true }) +wk_register { ['<localleader>f'] = {'fold block'} } + +-- vim.keymap.set('v', '<c-r>', [[y:%s/<c-r>h//gc<left><left><left>]], { noremap = true, silent = true }) -- }}} -- AUTO GROUPS -- {{{ diff --git a/.vim/lua/colors.lua b/.vim/lua/colors.lua index 142d2fc..0b76ffb 100644 --- a/.vim/lua/colors.lua +++ b/.vim/lua/colors.lua @@ -289,6 +289,13 @@ return lush(function() CmpItemKindProperty { TSField }, CmpItemKindUnit { Special }, + WhichKey { CursorLineNr }, + WhichKeyGroup { Keyword }, + WhichKeySeparator { fg = Comment.fg }, + WhichKeyDesc { Identifier }, + WhichKeyFloat { NormalFloat }, + WhichKeyValue { Comment }, + -- Plugin configs END }}} -- Config specific diff --git a/.vim/lua/debugger.lua b/.vim/lua/debugger.lua index d22c666..67fcf16 100644 --- a/.vim/lua/debugger.lua +++ b/.vim/lua/debugger.lua @@ -22,6 +22,22 @@ local widgets = require('dap.ui.widgets') vim.keymap.set('n', '<leader>dh', widgets.hover) vim.keymap.set('n', '<leader>dB', require('telescope').extensions.dap.list_breakpoints) +wk_register { + ['<leader>d'] = { + name = '+Dap', + d = {'toggle_breakpoint'}, + b = {'toggle_breakpoint'}, + c = {'continue'}, + o = {'step_over'}, + i = {'step_into'}, + O = {'step_out'}, + R = {'repl'}, + L = {'run_last'}, + t = {'terminate'}, + h = {'hover'}, + B = {'list_breakpoints'} + } +} -- ADAPTERS dap.adapters.go_dlv_local = function(callback, config) -- {{{ diff --git a/.vim/lua/globals.lua b/.vim/lua/globals.lua index 6b2f004..5492b73 100644 --- a/.vim/lua/globals.lua +++ b/.vim/lua/globals.lua @@ -12,3 +12,11 @@ _G.augroup = function(tbl) end end end + +_G.wk_register = function(mappings, opts) + local wk = package.loaded['which-key'] + -- local _, wk = pcall(require, 'which-key') + if wk then return wk.register(mappings, opts) end + vim.notify_once('which-key missing') +end + diff --git a/.vim/lua/lsp.lua b/.vim/lua/lsp.lua index 64a6895..98e9e58 100644 --- a/.vim/lua/lsp.lua +++ b/.vim/lua/lsp.lua @@ -16,12 +16,19 @@ local my_attach = function(client, bufnr) vim.keymap.set('n', '<C-]>' , vim.lsp.buf.definition) vim.keymap.set('n', 'gd' , vim.lsp.buf.definition) vim.keymap.set('n', 'gR' , vim.lsp.buf.references) + wk_register({ + ['gd'] = {'goto definition'}, + ['gR'] = {'goto references'}, + }, { buffer = bufnr }) end if client.resolved_capabilities.hover then vim.keymap.set('n', 'K' , vim.lsp.buf.hover) end if client.resolved_capabilities.rename then vim.keymap.set('n', 'grr' , vim.lsp.buf.rename) + wk_register({ + ['grr'] = {'rename'}, + }, { buffer = bufnr }) end if client.resolved_capabilities.signature_help then vim.keymap.set('n', '<c-h>' , vim.lsp.buf.signature_help) @@ -32,26 +39,35 @@ local my_attach = function(client, bufnr) end if client.resolved_capabilities.type_definition then vim.keymap.set('n', 'gT' , vim.lsp.buf.type_definition) + wk_register({ + ['gT'] = {'goto typedef'}, + }, { buffer = bufnr }) end if client.resolved_capabilities.declaration then vim.keymap.set('n', 'gD' , vim.lsp.buf.declaration) + wk_register({ + ['gD'] = {'goto declaration'}, + }, { buffer = bufnr }) end if client.resolved_capabilities.implementation then vim.keymap.set('n', 'gI' , vim.lsp.buf.implementation) + wk_register({ + ['gI'] = {'goto implementation'}, + }, { buffer = bufnr }) end if client.resolved_capabilities.workspace_symbol then vim.keymap.set('n', 'gW' , vim.lsp.buf.workspace_symbol) + wk_register({ + ['gW'] = {'goto symbol'}, + }, { buffer = bufnr }) end -- if client.resolved_capabilities.document_symbol then -- vim.keymap.set('n', 'g0', 'vim.lsp.buf.document_symbol') -- end - - augroup { - lsp_user = { - {'BufWritePre' , '*' , 'lua require("lsp").format(vim.fn.expand("<afile>:p"))'}, - {'BufWritePre' , '*.go' , 'lua vim.lsp.buf.code_action({ only = {"source.organizeImports"} })'}, - } - } + if client.supports_method('textDocument/codeAction') then + vim.keymap.set('n', 'ga', vim.lsp.buf.code_action) + wk_register({['ga'] = {'code action'}}, {buffer = bufnr}) + end end local my_exit = function(code, signal, client_id) diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua index 17fd879..07d2b45 100644 --- a/.vim/lua/plugins.lua +++ b/.vim/lua/plugins.lua @@ -71,10 +71,11 @@ return require('packer').startup({function() use {'lewis6991/impatient.nvim'} -- neat helper for when you don't remember your keymap - use {'folke/which-key.nvim', module = {'which-key'}, -- {{{ + use {'folke/which-key.nvim', -- {{{ config = function() require('which-key').setup { - icons = { separator = ':' } + icons = { separator = '→ ', group = '🞱 ' }, + triggers = {'<leader>', '<localleader>', ';', 'g', '[', ']'}, } end} -- }}} @@ -666,40 +667,25 @@ return require('packer').startup({function() }) end) - -- do - -- local group = vim.api.nvim_create_augroup('Telescope', { clear = true }) - -- vim.api.nvim_create_autocmd('QuickFixCmdPost', { - -- callback = require('telescope.builtin').quickfix, - -- group = group, - -- }) - -- end - - do - local installed, wk = pcall(require, 'which-key') - if not installed then return end - wk.register { - [';'] = { - name = '+telescope', - Q = {'quickfix'}, - C = {'loclist'}, - H = {'help'}, - b = {'buffers'}, - c = {'commands'}, - f = {'fd'}, - g = {'grep'}, - h = {'command history'}, - l = {'fuzzy find buffer'}, - o = {'oldfiles (mcu)'}, - t = {'tags'}, - v = {'vimrc'}, - d = {'diagnostics'}, - s = {'workspace symbols'}, - a = {'code actions'}, - r = {'references'}, - z = {'zk'}, - } + wk_register { + [';'] = { + name = '+Telescope', + Q = {'quickfix'}, + C = {'loclist'}, + H = {'help'}, + b = {'buffers'}, + c = {'commands'}, + f = {'fd'}, + g = {'grep'}, + h = {'command history'}, + l = {'fuzzy find buffer'}, + o = {'oldfiles (mcu)'}, + v = {'vimrc'}, + d = {'diagnostics'}, + -- s = {'workspace symbols'}, + -- r = {'references'}, } - end + } end} -- }}} use {'junegunn/vim-easy-align', cmd = {'EasyAlign', 'LiveEasyAlign'}, -- {{{ @@ -763,47 +749,43 @@ return require('packer').startup({function() }):find() end) - do - local installed, wk = pcall(require, 'which-key') - if not installed then return end - wk.register { - ['<leader>o'] = { - name = '+orgmode', - a = {'agenda prompt'}, - c = {'capture prompt'}, - r = {'refile'}, - [','] = {'set priority'}, - ['*'] = {'toggle headline'}, - ['o'] = {'follow link/date'}, - ['\''] = {'create source block'}, - ['$'] = {'archive current headline'}, - ['<cr>'] = {'insert heading/item/row'}, - t = {'set tags'}, - A = {'toggle ARCHIVE tag'}, - K = {'subtree up'}, - J = {'subtree down'}, - e = {'export'}, - ['i'] = { - name = '+timestamp', - d = {'set deadline'}, - s = {'set scheduled'}, - h = {'insert heading (respect content)'}, - T = {'insert todo'}, - t = {'insert todo (respect content)'}, - ['.'] = {'set date'}, - ['!'] = {'set inactive'}, - }, - ['x'] = { - name = '+clock', - i = {'clock in'}, - o = {'clock out'}, - q = {'cancel active clock'}, - j = {'jump to active clock'}, - e = {'set effort estimate property'}, - } + wk_register { + ['<leader>o'] = { + name = '+Orgmode', + a = {'agenda prompt'}, + c = {'capture prompt'}, + r = {'refile'}, + [','] = {'set priority'}, + ['*'] = {'toggle headline'}, + ['o'] = {'follow link/date'}, + ['\''] = {'create source block'}, + ['$'] = {'archive current headline'}, + ['<cr>'] = {'insert heading/item/row'}, + t = {'set tags'}, + A = {'toggle ARCHIVE tag'}, + K = {'subtree up'}, + J = {'subtree down'}, + e = {'export'}, + ['i'] = { + name = '+Timestamp', + d = {'set deadline'}, + s = {'set scheduled'}, + h = {'insert heading (respect content)'}, + T = {'insert todo'}, + t = {'insert todo (respect content)'}, + ['.'] = {'set date'}, + ['!'] = {'set inactive'}, }, - } - end + ['x'] = { + name = '+Clock', + i = {'clock in'}, + o = {'clock out'}, + q = {'cancel active clock'}, + j = {'jump to active clock'}, + e = {'set effort estimate property'}, + } + }, + } end} -- }}} use {'nvim-neorg/neorg', ft = {'norg'}, module = {'neorg'}, cmd = {'Neorg'}, -- {{{ @@ -874,6 +856,7 @@ return require('packer').startup({function() }, } vim.keymap.set('n', ';z', function() require('zk').edit(nil, { multi_select = false }) end) + wk_register { [';'] = { name = '+Telescope', z = {'zk'} } } end} -- }}} -- languages @@ -1067,6 +1050,9 @@ return require('packer').startup({function() group = group, }) end + + vim.keymap.set('n', '<leader>a', function() vim.cmd [[Alpha]] end) + wk_register { ['<leader>a'] = {'alpha'} } end} -- }}} use {'ruifm/gitlinker.nvim', -- {{{ @@ -1077,6 +1063,7 @@ return require('packer').startup({function() action_callback = require('gitlinker.actions').copy_to_clipboard, }, } + wk_register { ['<leader>g'] = { name = '+Git', y = {'gitlinker'} } } end} -- }}} use {'rhysd/git-messenger.vim', -- {{{ @@ -1086,6 +1073,7 @@ return require('packer').startup({function() vim.g.git_messenger_close_on_cursor_moved = true vim.g.git_messenger_no_default_mappings = true vim.keymap.set('n', '<leader>gm', function() vim.cmd [[GitMessenger]] end) + wk_register { ['<leader>g'] = { name = '+Git', m = {'git-messenger'} } } end} -- }}} -- restore last curosr position (and handle many edge cases) @@ -1094,6 +1082,8 @@ return require('packer').startup({function() use {'folke/todo-comments.nvim', -- {{{ config = function() require('todo-comments').setup {} + -- vim.keymap.set('n', ';t', function() vim.cmd [[TodoTelescope]] end) + -- wk_register { [';'] = { name = '+Telescope', t = {'todo-comments'} } } end} -- }}} use {'lewis6991/spellsitter.nvim', disable = true, -- {{{ diff --git a/.vim/lua/statusline.lua b/.vim/lua/statusline.lua index 48a134d..796342e 100644 --- a/.vim/lua/statusline.lua +++ b/.vim/lua/statusline.lua @@ -140,6 +140,7 @@ local notify = function(m, l, o) elseif l == vim.log.levels.ERROR then hi = 'DiagnosticError' end + -- get level string lvl_string = vim.lsp.log_levels[l] end local display = m @@ -180,13 +181,13 @@ vim.notify = function( m, l, o) end end -vim.keymap.set('n', '<leader>N', function() +vim.keymap.set('n', '<leader>n', function() local pickers = require('telescope.pickers') local finders = require('telescope.finders') local conf = require('telescope.config').values local actions = require('telescope.actions') -- local action_state = require('telescope.actions.state') - local previewers = require('telescope.previewers') + -- local previewers = require('telescope.previewers') local opts = {} pickers.new(opts, { @@ -213,12 +214,13 @@ vim.keymap.set('n', '<leader>N', function() end) return true end, - previewer = previewers.new_buffer_previewer { - define_preview = function(self, entry) - vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, vim.split(vim.inspect(entry.value), '\n')) - end, - }, + -- previewer = previewers.new_buffer_previewer { + -- define_preview = function(self, entry) + -- vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, {entry.value.display}) + -- end, + -- }, }):find() end) +wk_register { ['<leader>n'] = {'notifications'} } vim.opt.statusline = '%!luaeval("statusline()")' |