vim:gitcommit: Fold unstaged and untracked files
This commit is contained in:
@@ -20,3 +20,27 @@ let g:gutentags_enabled = 0
|
|||||||
" When aborting a commit I usually use :cq which I can't when committing through
|
" When aborting a commit I usually use :cq which I can't when committing through
|
||||||
" fugitive. Abbreviate it to something that works.
|
" fugitive. Abbreviate it to something that works.
|
||||||
cabbrev <buffer> cq %d <Bar> x
|
cabbrev <buffer> cq %d <Bar> x
|
||||||
|
|
||||||
|
" Fold file listings (staged, unstaged, untracked, ...) and diff
|
||||||
|
setlocal foldmethod=syntax
|
||||||
|
|
||||||
|
" Unfold staged files and diff. inspired by:
|
||||||
|
" https://vi.stackexchange.com/questions/4050/how-to-search-for-pattern-in-certain-syntax-regions/27008#27008
|
||||||
|
if has("patch-8.2.0915") || has("nvim-0.7.0")
|
||||||
|
|
||||||
|
function s:open_fold(group, content)
|
||||||
|
" Find line containing `content` that is highlighted with `group`
|
||||||
|
let l:line_nr = search(a:content, "n", 0, 0, { ->
|
||||||
|
\ synstack('.', col('.'))
|
||||||
|
\ ->map('synIDattr(v:val, "name")')
|
||||||
|
\ ->match(a:group) < 0 })
|
||||||
|
if l:line_nr <= 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
execute l:line_nr->string() .. "foldopen"
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call s:open_fold("gitcommitSelected", "Changes to be committed:")
|
||||||
|
call s:open_fold("gitcommitDiff", "diff --")
|
||||||
|
|
||||||
|
endif " has("patch-8.2.0915") || has("nvim-0.7.0")
|
||||||
|
|||||||
Reference in New Issue
Block a user