feat: add keybinds for comment box

refactor description field to be more concise
This commit is contained in:
2024-11-29 17:10:50 -05:00
parent 03a7511bf2
commit ca1e108304
+150 -134
View File
@@ -1,187 +1,203 @@
-- ──────────────────────[ set leader key to space ]───────────────────── -- ───────────────────────────────────────( set leader key to space )
vim.g.mapleader = ' ' vim.g.mapleader = ' '
vim.g.maplocalleader = '\\' vim.g.maplocalleader = '\\'
local keymap = vim.keymap local keymap = vim.keymap
-- ────────────────────────────[ general use ]──────────────────────────── local function opts(desc)
keymap.set('i', 'jk', '<ESC>', { desc = 'Exit insert mode with jk' }) return { desc = desc, silent = true }
keymap.set('n', '<leader>nh', ':nohl<CR>', { desc = 'Clear search highlights' }) end
-- ────────────────────────────[ formatting ]─────────────────────── -- ───────────────────────────────────────────────────( general use )
keymap.set('i', 'jk', '<ESC>', opts('Exit insert mode with jk'))
keymap.set('n', '<leader>nh', ':nohl<CR>', opts('Clear search highlights'))
keymap.set({ 'n', 'v' }, '<leader>cm', '<cmd>Noice dismiss<CR>', opts('Dismiss notifications'))
-- ────────────────────────────────────────────────────( formatting )─
keymap.set({ 'n', 'v' }, '<leader>F', function() keymap.set({ 'n', 'v' }, '<leader>F', function()
require('conform').format({ require('conform').format({
lsp_fallback = true, lsp_fallback = true,
async = false, async = false,
timeout_ms = 1000, timeout_ms = 1000,
}) })
end, { desc = 'Format file or selection' }) end, opts('Format file or selection'))
-- ──────────────────────────────[ linting ]────────────────────────────── -- ───────────────────────────────────────────────────────( linting )
keymap.set('n', '<leader>l', function() keymap.set('n', '<leader>l', function()
require('lint').try_lint() require('lint').try_lint()
end, { desc = 'Trigger linting for current file' }) end, opts('Trigger linting for current file'))
-- ──────────────────────────[ inc/dec numbers ]───────────────────────── -- ───────────────────────────────────────────────( inc/dec numbers )
keymap.set('n', '<leader>+', '<C-a>', { desc = 'Increment number' }) keymap.set('n', '<leader>+', '<C-a>', opts('Increment number'))
keymap.set('n', '<leader>-', '<C-x>', { desc = 'Decrement number' }) keymap.set('n', '<leader>-', '<C-x>', opts('Decrement number'))
-- ─────────────────────────[ split management ]────────────────────── -- ──────────────────────────────────────────────( split management )
keymap.set('n', '<leader>sv', '<C-w>v', { desc = 'Split window vertically' }) keymap.set('n', '<leader>sv', '<C-w>v', opts('Split window vertically'))
keymap.set('n', '<leader>sh', '<C-w>s', { desc = 'Split window horizontally' }) keymap.set('n', '<leader>sh', '<C-w>s', opts('Split window horizontally'))
keymap.set('n', '<leader>se', '<C-w>=', { desc = 'Make splits equal size' }) keymap.set('n', '<leader>se', '<C-w>=', opts('Make splits equal size'))
keymap.set('n', '<leader>sx', '<cmd>close<CR>', { desc = 'Close current split' }) keymap.set('n', '<leader>sx', '<cmd>close<CR>', opts('Close current split'))
keymap.set('n', '<leader>sm', '<cmd>MaximizerToggle<CR>', { desc = 'Maximize/Minimize a split' }) keymap.set('n', '<leader>sm', '<cmd>MaximizerToggle<CR>', opts('Maximize/Minimize a split'))
-- ──────────────────────────[ tab management ]─────────────────────── -- ────────────────────────────────────────────────( tab management )
keymap.set('n', '<leader>to', '<cmd>tabnew<CR>', { desc = 'Open new tab' }) keymap.set('n', '<leader>to', '<cmd>tabnew<CR>', opts('Open new tab'))
keymap.set('n', '<leader>tx', '<cmd>tabclose<CR>', { desc = 'Close current tab' }) keymap.set('n', '<leader>tx', '<cmd>tabclose<CR>', opts('Close current tab'))
-- keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" }) -- keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", opts("Go to next tab"))
-- keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" }) -- keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", opts("Go to previous tab"))
keymap.set('n', '<leader>tf', '<cmd>tabnew %<CR>', { desc = 'Open current buffer in new tab' }) keymap.set('n', '<leader>tf', '<cmd>tabnew %<CR>', opts('Open current buffer in new tab'))
-- ────────────────────────────[ bufferline ]───────────────────────── -- ────────────────────────────────────────────────────( bufferline )
keymap.set('n', '<leader>bp', '<cmd>BufferLineTogglePin<CR>', { desc = 'Toggle pinned tab' }) keymap.set('n', '<leader>bp', '<cmd>BufferLineTogglePin<CR>', opts('Toggle pinned tab'))
keymap.set('n', '<leader>bg', '<cmd>BufferLinePick<CR>', { desc = 'Pick tab' }) keymap.set('n', '<leader>bg', '<cmd>BufferLinePick<CR>', opts('Pick tab'))
keymap.set('n', '<leader>bx', '<cmd>bdelete<CR>', { desc = 'Close tab' }) keymap.set('n', '<leader>bx', '<cmd>bdelete<CR>', opts('Close tab'))
keymap.set('n', '<leader>bX', '<cmd>BufferLineCloseOthers<CR>', { desc = 'Close other tabs' }) keymap.set('n', '<leader>bX', '<cmd>BufferLineCloseOthers<CR>', opts('Close other tabs'))
keymap.set('n', ']b', '<cmd>BufferLineCycleNext<CR>', { desc = 'Next tab' }) keymap.set('n', ']b', '<cmd>BufferLineCycleNext<CR>', opts('Next tab'))
keymap.set('n', '[b', '<cmd>BufferLineCyclePrev<CR>', { desc = 'Previous tab' }) keymap.set('n', '[b', '<cmd>BufferLineCyclePrev<CR>', opts('Previous tab'))
keymap.set('n', '<S-L>', '<cmd>BufferLineMoveNext<CR>', { desc = 'Move tab to the right' }) keymap.set('n', '<S-L>', '<cmd>BufferLineMoveNext<CR>', opts('Move tab to the right'))
keymap.set('n', '<S-H>', '<cmd>BufferLineMovePrev<CR>', { desc = 'Move tab to the left' }) keymap.set('n', '<S-H>', '<cmd>BufferLineMovePrev<CR>', opts('Move tab to the left'))
-- ────────────────────────[ session management ]───────────────────── -- ────────────────────────────────────────────( session management )
keymap.set('n', '<leader>wa', '<cmd>SessionToggleAutoSave<CR>', { desc = 'Toggle session autosave' }) keymap.set('n', '<leader>wa', '<cmd>SessionToggleAutoSave<CR>', opts('Toggle session autosave'))
keymap.set('n', '<leader>wD', '<cmd>Autosession delete<CR>', { desc = 'Delete a session' }) keymap.set('n', '<leader>wD', '<cmd>Autosession delete<CR>', opts('Delete a session'))
keymap.set('n', '<leader>wd', '<cmd>SessionDelete<CR>', { desc = 'Delete session for cwd' }) keymap.set('n', '<leader>wd', '<cmd>SessionDelete<CR>', opts('Delete session for cwd'))
keymap.set('n', '<leader>wl', '<cmd>SessionSearch<CR>', { desc = 'Open session picker' }) keymap.set('n', '<leader>wl', '<cmd>SessionSearch<CR>', opts('Open session picker'))
keymap.set('n', '<leader>wr', '<cmd>SessionRestore<CR>', { desc = 'Restore session for cwd' }) keymap.set('n', '<leader>wr', '<cmd>SessionRestore<CR>', opts('Restore session for cwd'))
keymap.set('n', '<leader>ws', '<cmd>SessionSave<CR>', { desc = 'Save session for cwd' }) keymap.set('n', '<leader>ws', '<cmd>SessionSave<CR>', opts('Save session for cwd'))
-- ───────────────────────────[ todo comments ]─────────────────────────── -- ─────────────────────────────────────────────────( todo comments )
keymap.set('n', ']t', function() keymap.set('n', ']t', function()
require('todo-comments').jump_next() require('todo-comments').jump_next()
end, { desc = 'Next todo comment' }) end, opts('Next todo comment'))
keymap.set('n', '[t', function() keymap.set('n', '[t', function()
require('todo-comments').jump_prev() require('todo-comments').jump_prev()
end, { desc = 'Previous todo comment' }) end, opts('Previous todo comment'))
-- ──────────────────────────────[ trouble ]────────────────────────────── -- ───────────────────────────────────────────────────────( trouble )
keymap.set('n', '<leader>xw', '<cmd>Trouble diagnostics toggle<CR>', { desc = 'Open trouble workspace diagnostics' }) keymap.set('n', '<leader>xw', '<cmd>Trouble diagnostics toggle<CR>', opts('Open trouble workspace diagnostics'))
keymap.set( keymap.set(
'n', 'n',
'<leader>xd', '<leader>xd',
'<cmd>Trouble diagnostics toggle filter.buf=0<CR>', '<cmd>Trouble diagnostics toggle filter.buf=0<CR>',
{ desc = 'Open trouble document diagnostics' } opts('Open trouble document diagnostics')
) )
keymap.set('n', '<leader>xq', '<cmd>Trouble quickfix toggle<CR>', { desc = 'Open trouble quickfix list' }) keymap.set('n', '<leader>xq', '<cmd>Trouble quickfix toggle<CR>', opts('Open trouble quickfix list'))
keymap.set('n', '<leader>xl', '<cmd>Trouble loclist toggle<CR>', { desc = 'Open trouble location list' }) keymap.set('n', '<leader>xl', '<cmd>Trouble loclist toggle<CR>', opts('Open trouble location list'))
keymap.set('n', '<leader>xt', '<cmd>Trouble todo toggle<CR>', { desc = 'Open todos in trouble' }) keymap.set('n', '<leader>xt', '<cmd>Trouble todo toggle<CR>', opts('Open todos in trouble'))
-- ─────────────────────────────[ telescope ]───────────────────────────── -- ─────────────────────────────────────────────────────( telescope )
keymap.set( keymap.set(
'n', 'n',
'<leader>ff', '<leader>ff',
'<cmd>Telescope find_files initial_mode=insert sort_mru=true sort_lastused=true select_current=true<cr>', '<cmd>Telescope find_files initial_mode=insert sort_mru=true sort_lastused=true select_current=true<cr>',
{ desc = 'Fuzzy find files in cwd' } opts('Fuzzy find files in cwd')
) )
keymap.set( keymap.set(
'n', 'n',
'<leader>fr', '<leader>fr',
'<cmd>Telescope oldfiles initial_mode=insert sort_mru=true sort_lastused=true select_current=true<cr>', '<cmd>Telescope oldfiles initial_mode=insert sort_mru=true sort_lastused=true select_current=true<cr>',
{ desc = 'Fuzzy find recent files' } opts('Fuzzy find recent files')
) )
keymap.set('n', '<leader>fs', '<cmd>Telescope current_buffer_fuzzy_find<cr>', { desc = 'Find string in this buffer' }) keymap.set('n', '<leader>fs', '<cmd>Telescope current_buffer_fuzzy_find<cr>', opts('Find string in this buffer'))
keymap.set('n', '<leader>fS', '<cmd>Telescope live_grep<cr>', { desc = 'Find string in cwd' }) keymap.set('n', '<leader>fS', '<cmd>Telescope live_grep<cr>', opts('Find string in cwd'))
keymap.set('n', '<leader>fc', '<cmd>Telescope grep_string<cr>', { desc = 'Find string under cursor in cwd' }) keymap.set('n', '<leader>fc', '<cmd>Telescope grep_string<cr>', opts('Find string under cursor in cwd'))
keymap.set( keymap.set(
'n', 'n',
'<leader>ft', '<leader>ft',
'<cmd>TodoTelescope initial_mode=normal sort_mru=true sort_lastused=true select_current=true<cr>', '<cmd>TodoTelescope initial_mode=normal sort_mru=true sort_lastused=true select_current=true<cr>',
{ desc = 'Find todos' } opts('Find todos')
) )
keymap.set( keymap.set(
'n', 'n',
'<leader>bb', '<leader>bb',
'<cmd>Telescope buffers initial_mode=normal sort_mru=true sort_lastused=true select_current=true<cr>', '<cmd>Telescope buffers initial_mode=normal sort_mru=true sort_lastused=true select_current=true<cr>',
{ desc = 'Select from open buffers' } opts('Select from open buffers')
) )
-- ────────────────────────────[ substitute ]───────────────────────── -- ────────────────────────────────────────────────────( substitute )
keymap.set('n', 's', function() keymap.set('n', 's', function()
require('substitute').operator() require('substitute').operator()
end, { desc = 'Substitute with motion' }) end, opts('Substitute with motion'))
keymap.set('n', 'ss', function() keymap.set('n', 'ss', function()
require('substitute').line() require('substitute').line()
end, { desc = 'Substitute line' }) end, opts('Substitute line'))
keymap.set('n', 'S', function() keymap.set('n', 'S', function()
require('substitute').eol() require('substitute').eol()
end, { desc = 'Substitute to end of line' }) end, opts('Substitute to end of line'))
keymap.set('x', 's', function() keymap.set('x', 's', function()
require('substitute').visual() require('substitute').visual()
end, { desc = 'Substitute in visual mode' }) end, opts('Substitute in visual mode'))
-- ─────────────────────────────[ nvim-tree ]───────────────────────────── -- ─────────────────────────────────────────────────────( nvim-tree )
keymap.set('n', '<leader>ee', '<cmd>NvimTreeToggle<CR>', { desc = 'Toggle file explorer' }) keymap.set('n', '<leader>ee', '<cmd>NvimTreeToggle<CR>', opts('Toggle file explorer'))
keymap.set('n', '<leader>ef', '<cmd>NvimTreeFindFileToggle<CR>', { desc = 'Toggle file explorer on current file' }) keymap.set('n', '<leader>ef', '<cmd>NvimTreeFindFileToggle<CR>', opts('Toggle file explorer on current file'))
keymap.set('n', '<leader>ec', '<cmd>NvimTreeCollapse<CR>', { desc = 'Collapse file explorer' }) keymap.set('n', '<leader>ec', '<cmd>NvimTreeCollapse<CR>', opts('Collapse file explorer'))
keymap.set('n', '<leader>er', '<cmd>NvimTreeRefresh<CR>', { desc = 'Refresh file explorer' }) keymap.set('n', '<leader>er', '<cmd>NvimTreeRefresh<CR>', opts('Refresh file explorer'))
-- ───────────────────────────────[ diff ]──────────────────────────── -- ──────────────────────────────────────────────────────────( diff )
keymap.set('n', '<leader>hd', function() keymap.set('n', '<leader>hd', function()
require('gitsigns').diffthis() require('gitsigns').diffthis()
end, { desc = 'Diff this' }) end, opts('Diff this'))
keymap.set('n', '<leader>hD', function() keymap.set('n', '<leader>hD', function()
require('gitsigns').diffthis('~') require('gitsigns').diffthis('~')
end, { desc = 'Diff this ~' }) end, opts('Diff this ~'))
-- ────────────────────────────────[ git ]──────────────────────────────── -- ───────────────────────────────────────────────────────────( git )
keymap.set('n', '<leader>lg', '<cmd>LazyGit<cr>', { desc = 'Open LazyGit' }) keymap.set('n', '<leader>Lg', '<cmd>LazyGit<cr>', opts('Open LazyGit'))
keymap.set('n', ']h', function() keymap.set('n', ']h', function()
require('gitsigns').nav_hunk('next') require('gitsigns').nav_hunk('next')
end, { desc = 'Next hunk' }) end, opts('Next hunk'))
keymap.set('n', '[h', function() keymap.set('n', '[h', function()
require('gitsigns').nav_hunk('prev') require('gitsigns').nav_hunk('prev')
end, { desc = 'Prev hunk' }) end, opts('Prev hunk'))
keymap.set('n', '<leader>hs', function() keymap.set('n', '<leader>hs', function()
require('gitsigns').stage_hunk() require('gitsigns').stage_hunk()
end, { desc = 'Stage Hunk' }) end, opts('Stage Hunk'))
keymap.set('n', '<leader>hr', function() keymap.set('n', '<leader>hr', function()
require('gitsigns').reset_hunk() require('gitsigns').reset_hunk()
end, { desc = 'Reset Hunk' }) end, opts('Reset Hunk'))
keymap.set('v', '<leader>hs', function() keymap.set('v', '<leader>hs', function()
require('gitsigns').stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) require('gitsigns').stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end, { desc = 'Stage Hunk' }) end, opts('Stage Hunk'))
keymap.set('v', '<leader>hr', function() keymap.set('v', '<leader>hr', function()
require('gitsigns').reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) require('gitsigns').reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end, { desc = 'Reset Hunk' }) end, opts('Reset Hunk'))
keymap.set('n', '<leader>hS', function() keymap.set('n', '<leader>hS', function()
require('gitsigns').stage_buffer() require('gitsigns').stage_buffer()
end, { desc = 'Stage buffer' }) end, opts('Stage buffer'))
keymap.set('n', '<leader>hR', function() keymap.set('n', '<leader>hR', function()
require('gitsigns').reset_buffer() require('gitsigns').reset_buffer()
end, { desc = 'Reset buffer' }) end, opts('Reset buffer'))
keymap.set('n', '<leader>hu', function() keymap.set('n', '<leader>hu', function()
require('gitsigns').undo_stage_hunk() require('gitsigns').undo_stage_hunk()
end, { desc = 'Undo stage hunk' }) end, opts('Undo stage hunk'))
keymap.set('n', '<leader>hp', function() keymap.set('n', '<leader>hp', function()
require('gitsigns').preview_hunk() require('gitsigns').preview_hunk()
end, { desc = 'Preview hunk' }) end, opts('Preview hunk'))
keymap.set('n', '<leader>hb', function() keymap.set('n', '<leader>hb', function()
require('gitsigns').blame_line({ full = true }) require('gitsigns').blame_line({ full = true })
end, { desc = 'Blame line' }) end, opts('Blame line'))
keymap.set('n', '<leader>hB', function() keymap.set('n', '<leader>hB', function()
require('gitsigns').toggle_current_line_blame() require('gitsigns').toggle_current_line_blame()
end, { desc = 'Toggle line blame' }) end, opts('Toggle line blame'))
keymap.set({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'Gitsigns select hunk' }) keymap.set({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', opts('Gitsigns select hunk'))
-- ────────────────────────────[ icon picker ]─────────────────────────── -- ────────────────────────────────────────────────( fancy comments )
keymap.set( keymap.set({ 'n', 'v' }, '<leader>Cd', '<cmd>CBd<CR>', opts('Delete comment decoration'))
'n', keymap.set({ 'n', 'v' }, '<leader>Cy', '<cmd>CBy<CR>', opts('Yank comment'))
'<Leader>i', -- ────────────────────────────────────────────────── comment boxes ──
'<cmd>Telescope symbols initial_mode=normal theme=get_ivy<cr>', keymap.set({ 'n', 'v' }, '<leader>Cbl', '<cmd>CBllbox12<CR>', opts('Insert a comment box'))
{ desc = 'Open icon picker' } keymap.set({ 'n', 'v' }, '<leader>Cbc', '<cmd>CBccbox18<CR>', opts('Insert a comment box'))
) keymap.set({ 'n', 'v' }, '<leader>Cbr', '<cmd>CBrrbox15<CR>', opts('Insert a comment box'))
-- keymap.set("n", "<Leader>iy", "<cmd>IconPickerYank<cr>", { desc = "Yank icon into register" }) --> Yank the selected icon into register keymap.set({ 'n', 'v' }, '<leader>Cba', '<cmd>CBccbox6<CR>', opts('Insert a callout'))
-- keymap.set("i", "<C-i>", "<cmd>Telescope symbols initial_mode=normal theme=get_ivy<cr>", { desc = "Open icon picker" }) -- ────────────────────────────────────────────────── comment lines ──
keymap.set({ 'n', 'v' }, '<leader>Cll', '<cmd>CBclline7<CR>', opts('Insert a left-aligned comment line'))
keymap.set({ 'n', 'v' }, '<leader>Clc', '<cmd>CBccline7<CR>', opts('Insert a centered comment line'))
keymap.set({ 'n', 'v' }, '<leader>Clr', '<cmd>CBcrline7<CR>', opts('Insert a right-aligned comment line'))
keymap.set({ 'n', 'v' }, '<leader>ClL', '<cmd>CBclline<CR>', opts('Insert a simple comment line'))
keymap.set({ 'n', 'v' }, '<leader>ClC', '<cmd>CBccline<CR>', opts('Insert a simple comment line'))
keymap.set({ 'n', 'v' }, '<leader>ClR', '<cmd>CBcrline<CR>', opts('Insert a simple comment line'))
-- ───────────────────────────────────────────────────( icon picker )─
keymap.set('n', '<Leader>i', '<cmd>Telescope symbols initial_mode=normal theme=get_ivy<cr>', opts('Open icon picker'))
-- keymap.set("n", "<Leader>iy", "<cmd>IconPickerYank<cr>", opts("Yank icon into register")) --> Yank the selected icon into register
-- keymap.set("i", "<C-i>", "<cmd>Telescope symbols initial_mode=normal theme=get_ivy<cr>", opts("Open icon picker"))