From e16fce2f4f3611caa864b463549307039601d412 Mon Sep 17 00:00:00 2001 From: Matthew Leong Date: Mon, 9 Jan 2023 17:35:24 -0800 Subject: [PATCH] feat(mappings): add plugin mapping descriptions --- lua/cosmic/lsp/mappings.lua | 2 +- lua/cosmic/plugins/auto-session/mappings.lua | 7 +- lua/cosmic/plugins/gitsigns/init.lua | 95 +++++++++++--------- lua/cosmic/plugins/nvim-tree/mappings.lua | 4 +- lua/cosmic/plugins/telescope/mappings.lua | 19 ++-- lua/cosmic/plugins/terminal/mappings.lua | 12 +-- lua/cosmic/plugins/which-key/init.lua | 32 ++++++- 7 files changed, 109 insertions(+), 62 deletions(-) diff --git a/lua/cosmic/lsp/mappings.lua b/lua/cosmic/lsp/mappings.lua index cd35cf5..7d96d99 100644 --- a/lua/cosmic/lsp/mappings.lua +++ b/lua/cosmic/lsp/mappings.lua @@ -12,7 +12,7 @@ function M.init(client, bufnr) buf_map('n', 'gD', 'lua vim.lsp.buf.declaration()', { desc = 'Go to declaration' }) buf_map('n', 'gi', 'lua vim.lsp.buf.implementation()', { desc = 'Go to implementation' }) buf_map('n', 'gt', 'lua vim.lsp.buf.type_definition()', { desc = 'Go to type definition' }) - buf_map('n', 'gr', 'lua vim.lsp.buf.references()', { desc = 'Find references' }) + buf_map('n', 'gr', 'lua vim.lsp.buf.references()', { desc = 'Go to reference' }) -- diagnostics buf_map('n', '[g', 'lua vim.diagnostic.goto_prev()', { desc = 'Next diagnostic' }) diff --git a/lua/cosmic/plugins/auto-session/mappings.lua b/lua/cosmic/plugins/auto-session/mappings.lua index acdc527..339df10 100644 --- a/lua/cosmic/plugins/auto-session/mappings.lua +++ b/lua/cosmic/plugins/auto-session/mappings.lua @@ -1,10 +1,11 @@ local map = require('cosmic.utils').map -- session -map('n', 'sl', 'silent RestoreSession') -map('n', 'ss', 'SaveSession') +map('n', 'sl', 'silent RestoreSession', { desc = 'Restore session' }) +map('n', 'ss', 'SaveSession', { desc = 'Save session' }) map( 'n', 'si', - 'lua require("cosmic.utils.logger"):log("Session name: " .. require("auto-session-library").current_session_name())' + 'lua require("cosmic.utils.logger"):log("Session name: " .. require("auto-session-library").current_session_name())', + { desc = 'Print session' } ) diff --git a/lua/cosmic/plugins/gitsigns/init.lua b/lua/cosmic/plugins/gitsigns/init.lua index 2fe2535..3c1a1b6 100644 --- a/lua/cosmic/plugins/gitsigns/init.lua +++ b/lua/cosmic/plugins/gitsigns/init.lua @@ -14,51 +14,9 @@ return { topdelete = { hl = 'GitSignsDelete', text = '‾', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, changedelete = { hl = 'GitSignsChange', text = '~', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = false, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - keymaps = { - -- Default keymap options - noremap = true, - - ['n ]c'] = { expr = true, "&diff ? ']c' : 'Gitsigns next_hunk'" }, - ['n [c'] = { expr = true, "&diff ? '[c' : 'Gitsigns prev_hunk'" }, - - ['n hs'] = 'Gitsigns stage_hunk', - ['v hs'] = ':Gitsigns stage_hunk', - ['n hu'] = 'Gitsigns undo_stage_hunk', - ['n hr'] = 'Gitsigns reset_hunk', - ['v hr'] = ':Gitsigns reset_hunk', - ['n hR'] = 'Gitsigns reset_buffer', - ['n hp'] = 'Gitsigns preview_hunk', - ['n hb'] = 'lua require"gitsigns".blame_line{full=true}', - ['n hS'] = 'Gitsigns stage_buffer', - ['n hU'] = 'Gitsigns reset_buffer_index', - - -- Text objects - ['o ih'] = ':Gitsigns select_hunk', - ['x ih'] = ':Gitsigns select_hunk', - }, - watch_gitdir = { - interval = 1000, - follow_files = true, - }, - attach_to_untracked = true, - current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` - current_line_blame_opts = { - virt_text = true, - virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' - delay = 1000, - ignore_whitespace = false, - }, current_line_blame_formatter_opts = { relative_time = false, }, - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - max_file_length = 40000, preview_config = { -- Options passed to nvim_open_win border = user_config.border, @@ -70,6 +28,59 @@ return { yadm = { enable = false, }, + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + local map = u.create_buf_map(bufnr) + -- Navigation + map('n', ']c', function() + if vim.wo.diff then + return ']c' + end + vim.schedule(function() + gs.next_hunk() + end) + return '' + end, { + expr = true, + desc = 'Next git hunk', + }) + + map('n', '[c', function() + if vim.wo.diff then + return '[c' + end + vim.schedule(function() + gs.prev_hunk() + end) + return '' + end, { + expr = true, + desc = 'Prev git hunk', + }) + + -- Actions + map({ 'n', 'v' }, 'hs', ':Gitsigns stage_hunk', { desc = 'Stage hunk' }) + map({ 'n', 'v' }, 'hr', ':Gitsigns reset_hunk', { desc = 'Reset hunk' }) + map('n', 'hS', gs.stage_buffer, { desc = 'Stage buffer' }) + map('n', 'hu', gs.undo_stage_hunk, { desc = 'Under stage hunk' }) + map('n', 'hR', gs.reset_buffer, { desc = 'Reset buffer' }) + map('n', 'hp', gs.preview_hunk, { desc = 'Preview hunk' }) + map('n', 'hb', function() + gs.blame_line({ full = true }) + end, { + desc = 'Blame line preview', + }) + map('n', 'hd', gs.diffthis, { desc = '' }) + map('n', 'hD', function() + gs.diffthis('~') + end, { desc = '' }) + + map('n', 'htb', gs.toggle_current_line_blame, { desc = 'Toggle blame (virtual text)' }) + map('n', 'htd', gs.toggle_deleted, { desc = 'Toggle deleted' }) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', { desc = 'Select hunk' }) + end, }, user_config.plugins.gitsigns or {})) end, enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'gitsigns'), diff --git a/lua/cosmic/plugins/nvim-tree/mappings.lua b/lua/cosmic/plugins/nvim-tree/mappings.lua index 71fb810..a598e62 100644 --- a/lua/cosmic/plugins/nvim-tree/mappings.lua +++ b/lua/cosmic/plugins/nvim-tree/mappings.lua @@ -1,4 +1,4 @@ local map = require('cosmic.utils').map -map('n', '', ':NvimTreeToggle') -map('n', 'r', ':NvimTreeRefresh') +map('n', '', ':NvimTreeToggle', { desc = 'Toggle Tree' }) +map('n', 'r', ':NvimTreeRefresh', { desc = 'Refresh Tree' }) diff --git a/lua/cosmic/plugins/telescope/mappings.lua b/lua/cosmic/plugins/telescope/mappings.lua index 4516bb7..f93af64 100644 --- a/lua/cosmic/plugins/telescope/mappings.lua +++ b/lua/cosmic/plugins/telescope/mappings.lua @@ -11,15 +11,20 @@ end M.init = function() -- navigation - map('n', 'ff', 'lua require("cosmic.plugins.telescope.mappings").project_files()') - map('n', 'fp', ':Telescope find_files') - map('n', 'fk', ':Telescope buffers') - map('n', 'fs', ':Telescope live_grep') - map('n', 'fw', ':Telescope grep_string') + map( + 'n', + 'ff', + 'lua require("cosmic.plugins.telescope.mappings").project_files()', + { desc = 'Find git files' } + ) + map('n', 'fp', ':Telescope find_files', { desc = 'Find file' }) + map('n', 'fk', ':Telescope buffers', { desc = 'Find buffer' }) + map('n', 'fs', ':Telescope live_grep', { desc = 'Live grep' }) + map('n', 'fw', ':Telescope grep_string', { desc = 'Grep string' }) -- git navigation - map('n', 'ggc', ':Telescope git_commits') - map('n', 'ggs', ':Telescope git_status') + map('n', 'ggc', ':Telescope git_commits', { desc = 'Git commits' }) + map('n', 'ggs', ':Telescope git_status', { desc = 'Git status' }) end return M diff --git a/lua/cosmic/plugins/terminal/mappings.lua b/lua/cosmic/plugins/terminal/mappings.lua index ed221dd..1b18aa5 100644 --- a/lua/cosmic/plugins/terminal/mappings.lua +++ b/lua/cosmic/plugins/terminal/mappings.lua @@ -1,8 +1,8 @@ local map = require('cosmic.utils').map -map('n', '', ':FloatermToggle') -map('t', '', [[]]) -map('t', 'l', [[:FloatermNext]]) -map('t', 'h', [[:FloatermPrev]]) -map('t', 'n', [[:FloatermNew]]) -map('t', 'c', [[:FloatermKill]]) +map('n', '', ':FloatermToggle', { desc = 'Toggle Floaterm' }) +map('t', '', [[]], { desc = 'Close Floaterm' }) +map('t', 'l', [[:FloatermNext]], { desc = 'Next terminal' }) +map('t', 'h', [[:FloatermPrev]], { desc = 'Prev terminal' }) +map('t', 'n', [[:FloatermNew]], { desc = 'New terminal' }) +map('t', 'c', [[:FloatermKill]], { desc = 'Kill current terminal' }) diff --git a/lua/cosmic/plugins/which-key/init.lua b/lua/cosmic/plugins/which-key/init.lua index 7438133..0ec46d3 100644 --- a/lua/cosmic/plugins/which-key/init.lua +++ b/lua/cosmic/plugins/which-key/init.lua @@ -3,11 +3,41 @@ return { { -- color scheme 'folke/which-key.nvim', config = function() - require('which-key').setup({ + local wk = require('which-key') + wk.setup({ -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below }) + + wk.register({ + [''] = { + b = { + name = '+buffer', + }, + c = { + name = '+quickfix', + }, + f = { + name = '+file', + }, + h = { + name = '+gitsigns', + t = { + name = '+toggle', + }, + }, + g = { + name = '+goto', + }, + s = { + name = '+session', + }, + t = { + name = '+tab', + }, + }, + }) end, event = 'VeryLazy', enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'which-key'),