135 lines
7.1 KiB
Lua
135 lines
7.1 KiB
Lua
-- Clues
|
|
Config.leader_group_clues = {
|
|
{ mode = 'n', keys = '<Leader>b', desc = '+Buffer' },
|
|
{ mode = 'n', keys = '<Leader>d', desc = '+Debug' },
|
|
{ mode = 'n', keys = '<Leader>e', desc = '+Explore' },
|
|
{ mode = 'n', keys = '<Leader>f', desc = '+Find' },
|
|
{ mode = 'n', keys = '<Leader>g', desc = '+Git' },
|
|
{ mode = 'n', keys = '<Leader>l', desc = '+Language' },
|
|
{ mode = 'n', keys = '<Leader>r', desc = '+Request' },
|
|
{ mode = 'n', keys = '<Leader>s', desc = '+Session' },
|
|
{ mode = 'n', keys = '<Leader>t', desc = '+Terminal' },
|
|
{ mode = 'x', keys = '<Leader>g', desc = '+Git' },
|
|
{ mode = 'x', keys = '<Leader>l', desc = '+Language' },
|
|
}
|
|
|
|
-- Keymap Helpers
|
|
local nmap_leader = function(suffix, rhs, desc)
|
|
vim.keymap.set('n', '<Leader>' .. suffix, rhs, { desc = desc, silent = true })
|
|
end
|
|
|
|
local xmap_leader = function(suffix, rhs, desc)
|
|
vim.keymap.set('x', '<Leader>' .. suffix, rhs, { desc = desc, silent = true })
|
|
end
|
|
|
|
-- Buffers
|
|
local new_scratch_buffer = function()
|
|
vim.api.nvim_win_set_buf(0, vim.api.nvim_create_buf(true, true))
|
|
end
|
|
|
|
local close_invisible_buffers = function()
|
|
local visible = vim.iter(vim.api.nvim_list_wins()):map(vim.api.nvim_win_get_buf):totable()
|
|
vim.iter(vim.api.nvim_list_bufs())
|
|
:filter(function(buf) return not vim.list_contains(visible, buf) end)
|
|
:each(function(buf) pcall(vim.api.nvim_buf_delete, buf, { force = false }) end)
|
|
end
|
|
|
|
nmap_leader('bd', '<Cmd>bdelete<CR>', 'Delete')
|
|
nmap_leader('bD', '<Cmd>bdelete!<CR>', 'Delete!')
|
|
nmap_leader('bs', new_scratch_buffer, 'Scratch')
|
|
nmap_leader('bw', '<Cmd>bwipeout<CR>', 'Wipeout')
|
|
nmap_leader('bW', '<Cmd>bwipeout!<CR>', 'Wipeout!')
|
|
nmap_leader('bo', close_invisible_buffers, 'Close invisible buffers')
|
|
|
|
-- Debug
|
|
nmap_leader('db', '<Cmd>lua require("dap").toggle_breakpoint()<CR>', 'Toggle Breakpoint')
|
|
nmap_leader('dl', '<Cmd>lua require("dap").set_breakpoint(nil, nil, vim.fn.input("Log point: "))<CR>', 'Log point')
|
|
nmap_leader('dc', '<Cmd>lua require("dap").continue()<CR>', 'Run/Continue')
|
|
nmap_leader('dC', '<Cmd>lua require("dap").run_to_cursor()<CR>', 'Run to Cursor')
|
|
nmap_leader('de', '<Cmd>lua require("dap.ui.widgets").hover()<CR>', 'Inspect')
|
|
nmap_leader('dr', '<Cmd>lua require("dap").repl.open()<CR>', 'Open REPL')
|
|
nmap_leader('dt', '<Cmd>lua require("dap").terminate()<CR>', 'Terminate')
|
|
|
|
-- Explore
|
|
local explore_at_file = function()
|
|
local file = vim.api.nvim_buf_get_name(0)
|
|
MiniFiles.open(vim.uv.fs_stat(file) and file or nil)
|
|
end
|
|
|
|
nmap_leader('ed', '<Cmd>lua MiniFiles.open()<CR>', 'Directory')
|
|
nmap_leader('ef', explore_at_file, 'File directory')
|
|
nmap_leader('ey', '<Cmd>lua vim.fn.setreg("+", vim.api.nvim_buf_get_name(0))<CR>', 'Yank absolute path')
|
|
nmap_leader('en', '<Cmd>messages<CR>', 'Notifications')
|
|
|
|
-- Find
|
|
nmap_leader('fb', '<Cmd>lua MiniPick.builtin.buffers()<CR>', 'Buffers')
|
|
nmap_leader('fc', '<Cmd>lua MiniExtra.pickers.git_commits()<CR>', 'Commits (all)')
|
|
nmap_leader('fC', '<Cmd>lua MiniExtra.pickers.git_commits({ path = "%" })<CR>', 'Commits (buf)')
|
|
nmap_leader('fd', '<Cmd>lua MiniExtra.pickers.diagnostic({ scope = "all" })<CR>', 'Diagnostic workspace')
|
|
nmap_leader('fD', '<Cmd>lua MiniExtra.pickers.diagnostic({ scope = "current" })<CR>', 'Diagnostic buffer')
|
|
nmap_leader('ff', '<Cmd>lua MiniPick.builtin.files()<CR>', 'Files')
|
|
nmap_leader('fg', '<Cmd>lua MiniPick.builtin.grep_live()<CR>', 'Grep live')
|
|
nmap_leader('fG', '<Cmd>lua MiniPick.builtin.grep({ pattern = vim.fn.expand("<cword>") })<CR>', 'Grep word')
|
|
nmap_leader('fh', '<Cmd>lua MiniPick.builtin.help()<CR>', 'Help tags')
|
|
nmap_leader('fl', '<Cmd>lua MiniPick.builtin.buf_lines({ scope = "all" })<CR>', 'Lines (all)')
|
|
nmap_leader('fL', '<Cmd>lua MiniPick.builtin.buf_lines({ scope = "current" })<CR>', 'Lines (buf)')
|
|
nmap_leader('fr', '<Cmd>lua MiniPick.builtin.resume()<CR>', 'Resume')
|
|
nmap_leader('fs', '<Cmd>lua MiniExtra.pickers.lsp({ scope = "workspace_symbol_live" })<CR>', 'Symbols workspace')
|
|
nmap_leader('fS', '<Cmd>lua MiniExtra.pickers.lsp({ scope = "document_symbol" })<CR>', 'Symbols document')
|
|
nmap_leader('f:', '<Cmd>lua MiniExtra.pickers.history({ scope = ":" })<CR>', 'Command history')
|
|
|
|
-- Git
|
|
local git_log_cmd = [[Git log --pretty=format:\%h\ \%as\ │\ \%s --topo-order]]
|
|
local git_log_buf_cmd = git_log_cmd .. ' --follow -- %'
|
|
|
|
nmap_leader('ga', '<Cmd>Git diff --cached<CR>', 'Added diff')
|
|
nmap_leader('gA', '<Cmd>Git diff --cached -- %<CR>', 'Added diff buffer')
|
|
nmap_leader('gd', '<Cmd>Git diff<CR>', 'Diff')
|
|
nmap_leader('gD', '<Cmd>Git diff -- %<CR>', 'Diff buffer')
|
|
nmap_leader('gl', '<Cmd>' .. git_log_cmd .. '<CR>', 'Log')
|
|
nmap_leader('gL', '<Cmd>' .. git_log_buf_cmd .. '<CR>', 'Log buffer')
|
|
nmap_leader('go', '<Cmd>lua MiniDiff.toggle_overlay()<CR>', 'Toggle overlay')
|
|
nmap_leader('gs', '<Cmd>lua MiniGit.show_at_cursor()<CR>', 'Show at cursor')
|
|
xmap_leader('gs', '<Cmd>lua MiniGit.show_at_cursor()<CR>', 'Show at selection')
|
|
|
|
-- Language
|
|
nmap_leader('la', '<Cmd>lua vim.lsp.buf.code_action()<CR>', 'Actions')
|
|
nmap_leader('ld', '<Cmd>lua vim.diagnostic.open_float()<CR>', 'Diagnostic popup')
|
|
nmap_leader('lf', '<Cmd>lua require("conform").format({ async = true })<CR>', 'Format')
|
|
xmap_leader('lf', '<Cmd>lua require("conform").format({ async = true })<CR>', 'Format selection')
|
|
nmap_leader('li', '<Cmd>lua vim.lsp.buf.implementation()<CR>', 'Implementation')
|
|
nmap_leader('lh', '<Cmd>lua vim.lsp.buf.hover()<CR>', 'Hover')
|
|
nmap_leader('ll', '<Cmd>lua vim.lsp.codelens.run()<CR>', 'Lens')
|
|
nmap_leader('lr', '<Cmd>lua vim.lsp.buf.rename()<CR>', 'Rename')
|
|
nmap_leader('lR', '<Cmd>lua vim.lsp.buf.references()<CR>', 'References')
|
|
nmap_leader('ls', '<Cmd>lua vim.lsp.buf.definition()<CR>', 'Source definition')
|
|
nmap_leader('lt', '<Cmd>lua vim.lsp.buf.type_definition()<CR>', 'Type definition')
|
|
|
|
-- Request
|
|
nmap_leader('rs', '<Cmd>lua require("kulala").run()<CR>', 'Send HTTP request')
|
|
|
|
-- Session
|
|
local session_new = 'vim.ui.input({ prompt = "Session name: " }, MiniSessions.write)'
|
|
|
|
nmap_leader('sd', '<Cmd>lua MiniSessions.select("delete")<CR>', 'Delete')
|
|
nmap_leader('sn', '<Cmd>lua ' .. session_new .. '<CR>', 'New')
|
|
nmap_leader('sr', '<Cmd>lua MiniSessions.select("read")<CR>', 'Read')
|
|
nmap_leader('sR', '<Cmd>lua MiniSessions.restart()<CR>', 'Restart')
|
|
nmap_leader('sw', '<Cmd>lua MiniSessions.write()<CR>', 'Write current')
|
|
|
|
-- Terminal
|
|
nmap_leader('tT', '<Cmd>horizontal term<CR>', 'Terminal (horizontal)')
|
|
nmap_leader('tt', '<Cmd>vertical term<CR>', 'Terminal (vertical)')
|
|
nmap_leader('tc', '<Cmd>vertical term claude<CR>', 'Claude')
|
|
nmap_leader('tf', '<Cmd>lua require("terminal").open_terminal_app(vim.o.shell)<CR>', 'Terminal (popup)')
|
|
nmap_leader('tg', '<Cmd>lua require("terminal").open_terminal_app("lazygit")<CR>', 'LazyGit')
|
|
nmap_leader('ts', '<Cmd>lua require("terminal").open_terminal_app("lazysql")<CR>', 'LazySQL')
|
|
|
|
-- Brackets
|
|
vim.keymap.set('n', ']d', function() vim.diagnostic.jump({ count = 1 }) end, { desc = 'Next diagnostic' })
|
|
vim.keymap.set('n', '[d', function() vim.diagnostic.jump({ count = -1 }) end, { desc = 'Previous diagnostic' })
|
|
|
|
-- Overwrites
|
|
vim.keymap.set('n', '<Esc>', '<Cmd>nohlsearch<CR>', { desc = 'Clear highlights', silent = true })
|
|
vim.keymap.set('t', '<C-w>', '<C-\\><C-n><C-w>', { desc = 'Terminal window navigation', silent = true })
|