diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim index bb4886e..d29b953 100644 --- a/autoload/fugitive.vim +++ b/autoload/fugitive.vim @@ -7222,6 +7222,7 @@ endfunction function! s:BlameMaps(is_ftplugin) abort let ft = a:is_ftplugin + call s:MapGitOps(ft) call s:Map('n', '', ':help :Git_blame', '', ft) call s:Map('n', 'g?', ':help :Git_blame', '', ft) call s:Map('n', 'gq', ':exe BlameQuit()', '', ft) @@ -7557,7 +7558,7 @@ function! fugitive#BrowseCommand(line1, count, range, bang, mods, arg, ...) abor endtry endfunction -" Section: Go to file +" Section: Maps let s:ref_header = '\%(Merge\|Rebase\|Upstream\|Pull\|Push\)' @@ -7647,6 +7648,81 @@ function! s:MapMotion(lhs, rhs) abort return join(maps, '|') endfunction +function! s:MapGitOps(is_ftplugin) abort + let ft = a:is_ftplugin + if &modifiable + return '' + endif + exe s:Map('n', 'c', ':Git commit', '', ft) + exe s:Map('n', 'c', ':Git commit', '', ft) + exe s:Map('n', 'cv', ':tab Git commit -v', '', ft) + exe s:Map('n', 'cv', ':tab Git commit -v', '', ft) + exe s:Map('n', 'ca', ':Git commit --amend', '', ft) + exe s:Map('n', 'cc', ':Git commit', '', ft) + exe s:Map('n', 'ce', ':Git commit --amend --no-edit', '', ft) + exe s:Map('n', 'cw', ':Git commit --amend --only', '', ft) + exe s:Map('n', 'cva', ':tab Git commit -v --amend', '', ft) + exe s:Map('n', 'cvc', ':tab Git commit -v', '', ft) + exe s:Map('n', 'cRa', ':Git commit --reset-author --amend', '', ft) + exe s:Map('n', 'cRe', ':Git commit --reset-author --amend --no-edit', '', ft) + exe s:Map('n', 'cRw', ':Git commit --reset-author --amend --only', '', ft) + exe s:Map('n', 'cf', ':Git commit --fixup==SquashArgument()', '', ft) + exe s:Map('n', 'cF', ':Git -c sequence.editor=true rebase --interactive --autosquash=RebaseArgument()Git commit --fixup==SquashArgument()', '', ft) + exe s:Map('n', 'cs', ':Git commit --no-edit --squash==SquashArgument()', '', ft) + exe s:Map('n', 'cS', ':Git -c sequence.editor=true rebase --interactive --autosquash=RebaseArgument()Git commit --no-edit --squash==SquashArgument()', '', ft) + exe s:Map('n', 'cA', ':Git commit --edit --squash==SquashArgument()', '', ft) + exe s:Map('n', 'c?', ':help fugitive_c', '', ft) + + exe s:Map('n', 'cr', ':Git revert', '', ft) + exe s:Map('n', 'cr', ':Git revert', '', ft) + exe s:Map('n', 'crc', ':Git revert =SquashArgument()', '', ft) + exe s:Map('n', 'crn', ':Git revert --no-commit =SquashArgument()', '', ft) + exe s:Map('n', 'cr?', ':help fugitive_cr', '', ft) + + exe s:Map('n', 'cm', ':Git merge', '', ft) + exe s:Map('n', 'cm', ':Git merge', '', ft) + exe s:Map('n', 'cmt', ':Git mergetool', '', ft) + exe s:Map('n', 'cm?', ':help fugitive_cm', '', ft) + + exe s:Map('n', 'cz', ':Git stash', '', ft) + exe s:Map('n', 'cz', ':Git stash', '', ft) + exe s:Map('n', 'cza', ':Git stash apply --quiet --index stash@{=v:count}', '', ft) + exe s:Map('n', 'czA', ':Git stash apply --quiet stash@{=v:count}', '', ft) + exe s:Map('n', 'czp', ':Git stash pop --quiet --index stash@{=v:count}', '', ft) + exe s:Map('n', 'czP', ':Git stash pop --quiet stash@{=v:count}', '', ft) + exe s:Map('n', 'czs', ':Git stash push --staged', '', ft) + exe s:Map('n', 'czv', ':exe "Gedit" fugitive#RevParse("stash@{" . v:count . "}")', '', ft) + exe s:Map('n', 'czw', ':Git stash push --keep-index=v:count > 1 ? " --all" : v:count ? " --include-untracked" : ""', '', ft) + exe s:Map('n', 'czz', ':Git stash push =v:count > 1 ? " --all" : v:count ? " --include-untracked" : ""', '', ft) + exe s:Map('n', 'cz?', ':help fugitive_cz', '', ft) + + exe s:Map('n', 'co', ':Git checkout', '', ft) + exe s:Map('n', 'co', ':Git checkout', '', ft) + exe s:Map('n', 'coo', ':Git checkout =substitute(SquashArgument(),"^$",get(TempState(),"filetype","") ==# "git" ? expand("") : "","") --', '', ft) + exe s:Map('n', 'co?', ':help fugitive_co', '', ft) + + exe s:Map('n', 'cb', ':Git branch', '', ft) + exe s:Map('n', 'cb', ':Git branch', '', ft) + exe s:Map('n', 'cb?', ':help fugitive_cb', '', ft) + + exe s:Map('n', 'r', ':Git rebase', '', ft) + exe s:Map('n', 'r', ':Git rebase', '', ft) + exe s:Map('n', 'ri', ':Git rebase --interactive=RebaseArgument()', '', ft) + exe s:Map('n', 'rf', ':Git -c sequence.editor=true rebase --interactive --autosquash=RebaseArgument()', '', ft) + exe s:Map('n', 'ru', ':Git rebase --interactive @{upstream}', '', ft) + exe s:Map('n', 'rp', ':Git rebase --interactive @{push}', '', ft) + exe s:Map('n', 'rw', ':Git rebase --interactive=RebaseArgument()s/^pick/reword/e', '', ft) + exe s:Map('n', 'rm', ':Git rebase --interactive=RebaseArgument()s/^pick/edit/e', '', ft) + exe s:Map('n', 'rd', ':Git rebase --interactive=RebaseArgument()s/^pick/drop/e', '', ft) + exe s:Map('n', 'rk', ':Git rebase --interactive=RebaseArgument()s/^pick/drop/e', '', ft) + exe s:Map('n', 'rx', ':Git rebase --interactive=RebaseArgument()s/^pick/drop/e', '', ft) + exe s:Map('n', 'rr', ':Git rebase --continue', '', ft) + exe s:Map('n', 'rs', ':Git rebase --skip', '', ft) + exe s:Map('n', 're', ':Git rebase --edit-todo', '', ft) + exe s:Map('n', 'ra', ':Git rebase --abort', '', ft) + exe s:Map('n', 'r?', ':help fugitive_r', '', ft) +endfunction + function! fugitive#MapJumps(...) abort if !&modifiable if get(b:, 'fugitive_type', '') ==# 'blob' @@ -7711,75 +7787,6 @@ function! fugitive#MapJumps(...) abort call s:Map('n', 'gi', ":exe 'Gsplit' (v:count ? '.gitignore' : '.git/info/exclude')", '') call s:Map('x', 'gi', ":exe 'Gsplit' (v:count ? '.gitignore' : '.git/info/exclude')", '') - call s:Map('n', 'c', ':Git commit') - call s:Map('n', 'c', ':Git commit') - call s:Map('n', 'cv', ':tab Git commit -v') - call s:Map('n', 'cv', ':tab Git commit -v') - call s:Map('n', 'ca', ':Git commit --amend', '') - call s:Map('n', 'cc', ':Git commit', '') - call s:Map('n', 'ce', ':Git commit --amend --no-edit', '') - call s:Map('n', 'cw', ':Git commit --amend --only', '') - call s:Map('n', 'cva', ':tab Git commit -v --amend', '') - call s:Map('n', 'cvc', ':tab Git commit -v', '') - call s:Map('n', 'cRa', ':Git commit --reset-author --amend', '') - call s:Map('n', 'cRe', ':Git commit --reset-author --amend --no-edit', '') - call s:Map('n', 'cRw', ':Git commit --reset-author --amend --only', '') - call s:Map('n', 'cf', ':Git commit --fixup==SquashArgument()') - call s:Map('n', 'cF', ':Git -c sequence.editor=true rebase --interactive --autosquash=RebaseArgument()Git commit --fixup==SquashArgument()') - call s:Map('n', 'cs', ':Git commit --no-edit --squash==SquashArgument()') - call s:Map('n', 'cS', ':Git -c sequence.editor=true rebase --interactive --autosquash=RebaseArgument()Git commit --no-edit --squash==SquashArgument()') - call s:Map('n', 'cA', ':Git commit --edit --squash==SquashArgument()') - call s:Map('n', 'c?', ':help fugitive_c', '') - - call s:Map('n', 'cr', ':Git revert') - call s:Map('n', 'cr', ':Git revert') - call s:Map('n', 'crc', ':Git revert =SquashArgument()', '') - call s:Map('n', 'crn', ':Git revert --no-commit =SquashArgument()', '') - call s:Map('n', 'cr?', ':help fugitive_cr', '') - - call s:Map('n', 'cm', ':Git merge') - call s:Map('n', 'cm', ':Git merge') - call s:Map('n', 'cmt', ':Git mergetool') - call s:Map('n', 'cm?', ':help fugitive_cm', '') - - call s:Map('n', 'cz', ':Git stash') - call s:Map('n', 'cz', ':Git stash') - call s:Map('n', 'cza', ':Git stash apply --quiet --index stash@{=v:count}') - call s:Map('n', 'czA', ':Git stash apply --quiet stash@{=v:count}') - call s:Map('n', 'czp', ':Git stash pop --quiet --index stash@{=v:count}') - call s:Map('n', 'czP', ':Git stash pop --quiet stash@{=v:count}') - call s:Map('n', 'czs', ':Git stash push --staged') - call s:Map('n', 'czv', ':exe "Gedit" fugitive#RevParse("stash@{" . v:count . "}")', '') - call s:Map('n', 'czw', ':Git stash push --keep-index=v:count > 1 ? " --all" : v:count ? " --include-untracked" : ""') - call s:Map('n', 'czz', ':Git stash push =v:count > 1 ? " --all" : v:count ? " --include-untracked" : ""') - call s:Map('n', 'cz?', ':help fugitive_cz', '') - - call s:Map('n', 'co', ':Git checkout') - call s:Map('n', 'co', ':Git checkout') - call s:Map('n', 'coo', ':Git checkout =substitute(SquashArgument(),"^$",get(TempState(),"filetype","") ==# "git" ? expand("") : "","") --') - call s:Map('n', 'co?', ':help fugitive_co', '') - - call s:Map('n', 'cb', ':Git branch') - call s:Map('n', 'cb', ':Git branch') - call s:Map('n', 'cb?', ':help fugitive_cb', '') - - call s:Map('n', 'r', ':Git rebase') - call s:Map('n', 'r', ':Git rebase') - call s:Map('n', 'ri', ':Git rebase --interactive=RebaseArgument()', '') - call s:Map('n', 'rf', ':Git -c sequence.editor=true rebase --interactive --autosquash=RebaseArgument()', '') - call s:Map('n', 'ru', ':Git rebase --interactive @{upstream}', '') - call s:Map('n', 'rp', ':Git rebase --interactive @{push}', '') - call s:Map('n', 'rw', ':Git rebase --interactive=RebaseArgument()s/^pick/reword/e', '') - call s:Map('n', 'rm', ':Git rebase --interactive=RebaseArgument()s/^pick/edit/e', '') - call s:Map('n', 'rd', ':Git rebase --interactive=RebaseArgument()s/^pick/drop/e', '') - call s:Map('n', 'rk', ':Git rebase --interactive=RebaseArgument()s/^pick/drop/e', '') - call s:Map('n', 'rx', ':Git rebase --interactive=RebaseArgument()s/^pick/drop/e', '') - call s:Map('n', 'rr', ':Git rebase --continue', '') - call s:Map('n', 'rs', ':Git rebase --skip', '') - call s:Map('n', 're', ':Git rebase --edit-todo', '') - call s:Map('n', 'ra', ':Git rebase --abort', '') - call s:Map('n', 'r?', ':help fugitive_r', '') - call s:Map('n', '.', ": =fnameescape(fugitive#Real(@%))") call s:Map('x', '.', ": =fnameescape(fugitive#Real(@%))") call s:Map('n', 'g?', ":help fugitive-map", '') @@ -7792,6 +7799,7 @@ function! fugitive#MapJumps(...) abort if new_browsex !=# old_browsex exe 'nnoremap NetrwBrowseX' new_browsex endif + call s:MapGitOps(0) endfunction function! fugitive#GX() abort