provide some git workflows run in nvim
- git cli is good
- focus on my personal git workflows
- utilize nvim's infrastructures for more convenient UX
- tabpage/floatwin, terminal, syntax/{git,gitcommit}
- a complete port of vim-fugitive
- a complete port of GV
- fugitive
0Git
- git commit -v
- git diff HEAD -- file
- git log
- git blame {line}
- git blame {file}
- git diff {file}
- git diff hunks -> loclist
- git log {file}
- git {cmd} ...
- fugitive
Gedit
* [x] git show {object} -
libgit2 instead of git bini quite satisfied with git bin - git push when upstream is set for current branch
- git commit --fixup {hash}
- git commit --amend
- git fetch upstream & rebase upstream
- floating or not, that is the question
- just works
- yet not supposed to be used publicly
- linux
- git 2.*
- nvim 0.10.*
- haolian9/infra.nvim
- haolian9/puff.nvim
:lua require'digits.status'.floatwin()
# equals to fugitive0Git
:lua require'digits.commit'.tab()
- the COMMIT_EDITMSG is a buffer with ft=gitcommit
here is my personal config
do --requires haolian9/cmds.nvim
local handlers = {
status = function() require("digits.cmds.status").floatwin() end,
push = function() require("digits.cmds.push")() end,
hunks = function() require("digits.cmds.diffhunks").setloclist() end,
diff = function() require("digits.cmds.diff")() end,
diff_file = function() require("digits.cmds.diff")(nil, api.nvim_get_current_buf()) end,
diff_cached = function() require("digits.cmds.diff")(nil, nil, true) end,
log = function() require("digits.cmds.log")(nil, 100) end,
commit = function() require("digits.cmds.commit").tab() end,
blame = function() require("digits.cmds.blame").file() end,
blame_line = function() require("digits.cmds.blame").line() end,
fixup = function() require("digits.cmds.fixup")() end,
}
local comp = cmds.ArgComp.constant(dictlib.keys(handlers))
local spell = cmds.Spell("Git", function(args) assert(handlers[args.subcmd])() end)
spell:add_arg("subcmd", "string", false, "status", comp)
cmds.cast(spell)
end