commit
8fd6be4f21
@ -31,21 +31,62 @@ function! SignifyFoldText()
|
|||||||
return left . fill . right
|
return left . fill . right
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Function: #do {{{1
|
" Function: #dispatch {{{1
|
||||||
function! sy#fold#do() abort
|
function! sy#fold#dispatch(do_tab) abort
|
||||||
|
if a:do_tab
|
||||||
|
call sy#fold#enable(1)
|
||||||
|
else
|
||||||
|
call sy#fold#toggle()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Function: #enable {{{1
|
||||||
|
function! sy#fold#enable(do_tab) abort
|
||||||
if !exists('b:sy')
|
if !exists('b:sy')
|
||||||
echomsg 'signify: I cannot detect any changes!'
|
echomsg 'signify: I cannot detect any changes!'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
tabedit %
|
if a:do_tab
|
||||||
|
tabedit %
|
||||||
|
endif
|
||||||
|
|
||||||
let [s:context0, s:context1] = get(g:, 'signify_fold_context', [3, 8])
|
let [s:context0, s:context1] = get(g:, 'signify_fold_context', [3, 8])
|
||||||
let s:levels = s:get_levels(s:get_lines())
|
let s:levels = s:get_levels(s:get_lines())
|
||||||
|
|
||||||
set foldexpr=SignifyFoldExpr(v:lnum)
|
setlocal foldexpr=SignifyFoldExpr(v:lnum)
|
||||||
set foldtext=SignifyFoldText()
|
setlocal foldtext=SignifyFoldText()
|
||||||
set foldmethod=expr
|
setlocal foldmethod=expr
|
||||||
set foldlevel=0
|
setlocal foldlevel=0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Function: #disable {{{1
|
||||||
|
function! sy#fold#disable() abort
|
||||||
|
let &l:foldmethod = w:sy_folded.method
|
||||||
|
let &l:foldtext = w:sy_folded.text
|
||||||
|
normal! zv
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Function: #toggle {{{1
|
||||||
|
function! sy#fold#toggle() abort
|
||||||
|
if exists('w:sy_folded')
|
||||||
|
call sy#fold#disable()
|
||||||
|
if w:sy_folded.method == 'manual'
|
||||||
|
loadview
|
||||||
|
endif
|
||||||
|
unlet w:sy_folded
|
||||||
|
else
|
||||||
|
let w:sy_folded = { 'method': &foldmethod, 'text': &foldtext }
|
||||||
|
if &foldmethod == 'manual'
|
||||||
|
let old_vop = &viewoptions
|
||||||
|
mkview
|
||||||
|
let &viewoptions = old_vop
|
||||||
|
endif
|
||||||
|
call sy#fold#enable(0)
|
||||||
|
endif
|
||||||
|
|
||||||
|
redraw!
|
||||||
|
call sy#start()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Function: s:get_lines {{{1
|
" Function: s:get_lines {{{1
|
||||||
@ -64,6 +105,7 @@ function! s:get_lines() abort
|
|||||||
|
|
||||||
return reverse(lines)
|
return reverse(lines)
|
||||||
endfunction
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
" Function: s:get_levels {{{1
|
" Function: s:get_levels {{{1
|
||||||
function! s:get_levels(lines) abort
|
function! s:get_levels(lines) abort
|
||||||
|
@ -323,6 +323,14 @@ Toggle the plugin for the current buffer only.
|
|||||||
<
|
<
|
||||||
Toggle line highlighting for lines containing changes.
|
Toggle line highlighting for lines containing changes.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
*signify-:SignifyToggleFold*
|
||||||
|
>
|
||||||
|
:SignifyToggleFold
|
||||||
|
<
|
||||||
|
Toggle folding for lines without changes. Using <bang> does on current buffer,
|
||||||
|
without it on new tab.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*signify-:SignifyRefresh*
|
*signify-:SignifyRefresh*
|
||||||
>
|
>
|
||||||
@ -333,7 +341,7 @@ Refresh signs in all windows.
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*signify-:SignifyFold*
|
*signify-:SignifyFold*
|
||||||
>
|
>
|
||||||
:SignifyFold
|
:SignifyFold[!]
|
||||||
<
|
<
|
||||||
Open the current buffer in a new tabpage and set |'foldexpr'| so that only
|
Open the current buffer in a new tabpage and set |'foldexpr'| so that only
|
||||||
changed lines with their surrounding context are unfolded.
|
changed lines with their surrounding context are unfolded.
|
||||||
@ -344,6 +352,9 @@ The |foldtext| will be set so that the left side shows the first line in the
|
|||||||
fold and the right side shows something like "50 [1]" which whereas "50"
|
fold and the right side shows something like "50 [1]" which whereas "50"
|
||||||
stands for the number of folded lines and the "1" is the foldlevel.
|
stands for the number of folded lines and the "1" is the foldlevel.
|
||||||
|
|
||||||
|
If [!] is given, Sy will do the same without opening an extra tabpage. Another
|
||||||
|
":SignifyFold!" will toggle back to the previous settings.
|
||||||
|
|
||||||
See |folds| to learn more about folding.
|
See |folds| to learn more about folding.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
@ -38,13 +38,13 @@ augroup END
|
|||||||
|
|
||||||
" Init: commands {{{1
|
" Init: commands {{{1
|
||||||
|
|
||||||
command! -nargs=0 -bar SignifyDebug call sy#debug#list_active_buffers()
|
command! -nargs=0 -bar SignifyDebug call sy#debug#list_active_buffers()
|
||||||
command! -nargs=0 -bar SignifyDebugDiff call sy#debug#verbose_diff_cmd()
|
command! -nargs=0 -bar SignifyDebugDiff call sy#debug#verbose_diff_cmd()
|
||||||
command! -nargs=0 -bar SignifyDebugUnknown call sy#repo#debug_detection()
|
command! -nargs=0 -bar SignifyDebugUnknown call sy#repo#debug_detection()
|
||||||
command! -nargs=0 -bar SignifyFold call sy#fold#do()
|
command! -nargs=0 -bar -bang SignifyFold call sy#fold#dispatch(<bang>1)
|
||||||
command! -nargs=0 -bar SignifyRefresh call sy#util#refresh_windows()
|
command! -nargs=0 -bar SignifyRefresh call sy#util#refresh_windows()
|
||||||
command! -nargs=0 -bar SignifyToggle call sy#toggle()
|
command! -nargs=0 -bar SignifyToggle call sy#toggle()
|
||||||
command! -nargs=0 -bar SignifyToggleHighlight call sy#highlight#line_toggle()
|
command! -nargs=0 -bar SignifyToggleHighlight call sy#highlight#line_toggle()
|
||||||
|
|
||||||
" Init: mappings {{{1
|
" Init: mappings {{{1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user