fix: improve git workflow

This commit is contained in:
2026-09-11 20:41:09 +02:00
parent 887ade2cd7
commit 6dadd015bf
4 changed files with 53 additions and 28 deletions
+38
View File
@@ -0,0 +1,38 @@
local ns = vim.api.nvim_create_namespace('git_status')
local hls = { M = 'DiagnosticWarn', ['?'] = 'DiagnosticInfo', A = 'DiagnosticOk', D = 'DiagnosticError', R = 'DiagnosticWarn' }
local function show(buf_id, items, query)
MiniPick.default_show(buf_id, items, query)
vim.api.nvim_buf_clear_namespace(buf_id, ns, 0, -1)
for i, item in ipairs(items) do
local hl = hls[item.text:match('%S')]
if hl then
vim.api.nvim_buf_set_extmark(buf_id, ns, i - 1, 0, { end_col = 2, hl_group = hl, priority = 202, hl_mode = 'combine' })
end
end
end
return {
status = function()
local items = {}
for _, l in ipairs(vim.fn.systemlist('git status -s -u')) do
local p = l:sub(4):gsub('.* %-> ', '')
if vim.uv.fs_stat(p) then items[#items + 1] = { text = l, path = p } end
end
if #items == 0 then return vim.notify('No changes') end
MiniPick.start({
source = { items = items, name = 'Git Status', show = show },
mappings = {
quickfix = {
char = '<C-q>',
func = function()
local m = MiniPick.get_picker_matches()
MiniPick.default_choose_marked(#m.marked > 0 and m.marked or m.all)
return true
end,
},
},
})
end,
}
+8 -15
View File
@@ -1,26 +1,19 @@
local M = {} local function open(cmd)
-- Open a command in a simple centered floating window
function M.open_terminal_app(cmd)
local buf = vim.api.nvim_create_buf(false, true)
vim.bo[buf].bufhidden = "wipe"
local lines = vim.o.lines - vim.o.cmdheight - (vim.o.laststatus > 0 and 1 or 0) local lines = vim.o.lines - vim.o.cmdheight - (vim.o.laststatus > 0 and 1 or 0)
local w = math.floor(vim.o.columns * 0.95) local w, h = math.floor(vim.o.columns * 0.95), math.floor(lines * 0.95)
local h = math.floor(lines * 0.95) local buf = vim.api.nvim_create_buf(false, true)
vim.bo[buf].bufhidden = 'wipe'
local win = vim.api.nvim_open_win(buf, true, { local win = vim.api.nvim_open_win(buf, true, {
relative = "editor", relative = 'editor',
width = w, width = w,
height = h, height = h,
row = math.floor((lines - h) / 2), row = math.floor((lines - h) / 2),
col = math.floor((vim.o.columns - w) / 2), col = math.floor((vim.o.columns - w) / 2),
border = "rounded", border = 'rounded',
}) })
vim.fn.termopen(cmd, { vim.fn.termopen(cmd, { on_exit = function() pcall(vim.api.nvim_win_close, win, true) end })
on_exit = function() pcall(vim.api.nvim_win_close, win, true) end,
})
end end
return M return { open = open }
+2 -1
View File
@@ -51,10 +51,11 @@ Config.later(function()
jump = { on_jump = vim.diagnostic.open_float }, jump = { on_jump = vim.diagnostic.open_float },
signs = { signs = {
priority = 9999, priority = 9999,
severity = { min = vim.diagnostic.severity.WARN }, severity = { min = vim.diagnostic.severity.INFO },
text = { text = {
[vim.diagnostic.severity.ERROR] = '', [vim.diagnostic.severity.ERROR] = '',
[vim.diagnostic.severity.WARN] = '', [vim.diagnostic.severity.WARN] = '',
[vim.diagnostic.severity.INFO] = '',
}, },
}, },
virtual_text = false, virtual_text = false,
+5 -12
View File
@@ -73,21 +73,14 @@ nmap_leader('fG', '<Cmd>lua MiniPick.builtin.grep({ pattern = vim.fn.expand("<cw
nmap_leader('fh', '<Cmd>lua MiniPick.builtin.help()<CR>', 'Help tags') 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 = "all" })<CR>', 'Lines (all)')
nmap_leader('fL', '<Cmd>lua MiniPick.builtin.buf_lines({ scope = "current" })<CR>', 'Lines (buf)') nmap_leader('fL', '<Cmd>lua MiniPick.builtin.buf_lines({ scope = "current" })<CR>', 'Lines (buf)')
nmap_leader('fm', '<Cmd>lua require("git").status()<CR>', 'Modified / changed files')
nmap_leader('fr', '<Cmd>lua MiniPick.builtin.resume()<CR>', 'Resume') 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 = "workspace_symbol_live" })<CR>', 'Symbols workspace')
nmap_leader('fS', '<Cmd>lua MiniExtra.pickers.lsp({ scope = "document_symbol" })<CR>', 'Symbols document') 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') nmap_leader('f:', '<Cmd>lua MiniExtra.pickers.history({ scope = ":" })<CR>', 'Command history')
-- Git -- Git
local git_log_cmd = [[Git log --pretty=format:\%h\ \%as\ │\ \%s --topo-order]] nmap_leader('ga', '<Cmd>Git add %<CR>', 'Add current file')
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('go', '<Cmd>lua MiniDiff.toggle_overlay()<CR>', 'Toggle overlay')
nmap_leader('gs', '<Cmd>lua MiniGit.show_at_cursor()<CR>', 'Show at cursor') 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') xmap_leader('gs', '<Cmd>lua MiniGit.show_at_cursor()<CR>', 'Show at selection')
@@ -112,9 +105,9 @@ nmap_leader('rs', '<Cmd>lua require("kulala").run()<CR>', 'Send HTTP request')
nmap_leader('tT', '<Cmd>horizontal term<CR>', 'Terminal (horizontal)') nmap_leader('tT', '<Cmd>horizontal term<CR>', 'Terminal (horizontal)')
nmap_leader('tt', '<Cmd>vertical term<CR>', 'Terminal (vertical)') nmap_leader('tt', '<Cmd>vertical term<CR>', 'Terminal (vertical)')
nmap_leader('tc', '<Cmd>vertical term claude<CR>', 'Claude') 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('tf', '<Cmd>lua require("terminal").open(vim.o.shell)<CR>', 'Terminal (popup)')
nmap_leader('tg', '<Cmd>lua require("terminal").open_terminal_app("lazygit")<CR>', 'LazyGit') nmap_leader('tg', '<Cmd>lua require("terminal").open("lazygit")<CR>', 'LazyGit')
nmap_leader('ts', '<Cmd>lua require("terminal").open_terminal_app("lazysql")<CR>', 'LazySQL') nmap_leader('ts', '<Cmd>lua require("terminal").open("lazysql")<CR>', 'LazySQL')
-- Tabs -- Tabs
nmap_leader('<Tab><Tab>', '<Cmd>tabnew<CR>', 'New tab') nmap_leader('<Tab><Tab>', '<Cmd>tabnew<CR>', 'New tab')