52 lines
2.0 KiB
VimL
Executable File
52 lines
2.0 KiB
VimL
Executable File
function! s:openBasedOnMergeMode() abort
|
|
if merginal#isRebaseMode()
|
|
call merginal#openRebaseConflictsBuffer()
|
|
elseif merginal#isRebaseAmendMode()
|
|
call merginal#openRebaseAmendBuffer()
|
|
elseif merginal#isMergeMode()
|
|
call merginal#openMergeConflictsBuffer()
|
|
else
|
|
call merginal#openBranchListBuffer()
|
|
endif
|
|
endfunction
|
|
|
|
function! s:toggleBasedOnMergeMode() abort
|
|
let l:repo=fugitive#repo()
|
|
let l:merginalWindowNumber=bufwinnr('Merginal:')
|
|
if 0<=l:merginalWindowNumber
|
|
let l:merginalBufferNumber=winbufnr(l:merginalWindowNumber)
|
|
let l:merginalBufferName=bufname(l:merginalBufferNumber)
|
|
|
|
"If we are not on the same dir we need to reload the merginal buffer
|
|
"anyways:
|
|
if getbufvar(l:merginalBufferNumber,'merginal_repo').dir()==l:repo.dir()
|
|
if merginal#isRebaseMode()
|
|
if 'Merginal:Rebase'==l:merginalBufferName
|
|
call merginal#closeMerginalBuffer()
|
|
return
|
|
endif
|
|
elseif merginal#isRebaseAmendMode()
|
|
if 'Merginal:RebaseAmend'==l:merginalBufferName
|
|
call merginal#closeMerginalBuffer()
|
|
return
|
|
endif
|
|
elseif merginal#isMergeMode()
|
|
if 'Merginal:Conflicts'==l:merginalBufferName
|
|
call merginal#closeMerginalBuffer()
|
|
return
|
|
endif
|
|
else
|
|
if 'Merginal:Branches'==l:merginalBufferName
|
|
call merginal#closeMerginalBuffer()
|
|
return
|
|
endif
|
|
end
|
|
endif
|
|
endif
|
|
call s:openBasedOnMergeMode()
|
|
endfunction
|
|
|
|
autocmd User Fugitive command! -buffer -nargs=0 Merginal call s:openBasedOnMergeMode()
|
|
autocmd User Fugitive command! -buffer -nargs=0 MerginalToggle call s:toggleBasedOnMergeMode()
|
|
autocmd User Fugitive command! -buffer -nargs=0 MerginalClose call merginal#closeMerginalBuffer()
|