7f57ee5af6
Defining the SignifyDelete set of signs on the fly provides the ability to specify the exact line deletion count for up to 99 lines, rather than the current limit of 9 lines. This also has the benefit of reducing the number of signs defined when there aren't many hunks of deleted lines. On the flip side, if there are other sign-placing plugins in use, then it also increases the chance of nearing the ~120 sign definition limit if there are many hunks of varying line deletions.
78 lines
4.1 KiB
VimL
78 lines
4.1 KiB
VimL
" vim: et sw=2 sts=2
|
|
|
|
scriptencoding utf-8
|
|
|
|
" Init: values {{{1
|
|
let s:sign_add = get(g:, 'signify_sign_add', '+')
|
|
let s:sign_delete_first_line = get(g:, 'signify_sign_delete_first_line', '‾')
|
|
let s:sign_change = get(g:, 'signify_sign_change', '!')
|
|
|
|
" Function: #setup {{{1
|
|
function! sy#highlight#setup() abort
|
|
highlight default link SignifyLineAdd DiffAdd
|
|
highlight default link SignifyLineChange DiffChange
|
|
highlight default link SignifyLineDelete DiffDelete
|
|
|
|
highlight default link SignifySignAdd DiffAdd
|
|
highlight default link SignifySignChange DiffChange
|
|
highlight default link SignifySignDelete DiffDelete
|
|
endfunction
|
|
|
|
" Function: #line_enable {{{1
|
|
function! sy#highlight#line_enable() abort
|
|
execute 'sign define SignifyAdd text='. s:sign_add ' texthl=SignifySignAdd linehl=SignifyLineAdd'
|
|
|
|
execute 'sign define SignifyChange text='. s:sign_change ' texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete1 text='. s:sign_change .'1 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete2 text='. s:sign_change .'2 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete3 text='. s:sign_change .'3 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete4 text='. s:sign_change .'4 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete5 text='. s:sign_change .'5 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete6 text='. s:sign_change .'6 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete7 text='. s:sign_change .'7 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete8 text='. s:sign_change .'8 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDelete9 text='. s:sign_change .'9 texthl=SignifySignChange linehl=SignifyLineChange'
|
|
execute 'sign define SignifyChangeDeleteMore text='. s:sign_change .'> texthl=SignifySignChange linehl=SignifyLineChange'
|
|
|
|
execute 'sign define SignifyDeleteFirstLine text='. s:sign_delete_first_line ' texthl=SignifySignDelete linehl=SignifyLineDelete'
|
|
|
|
let g:signify_line_highlight = 1
|
|
endfunction
|
|
|
|
" Function: #line_disable {{{1
|
|
function! sy#highlight#line_disable() abort
|
|
execute 'sign define SignifyAdd text='. s:sign_add ' texthl=SignifySignAdd linehl='
|
|
|
|
execute 'sign define SignifyChange text='. s:sign_change ' texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete1 text='. s:sign_change .'1 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete2 text='. s:sign_change .'2 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete3 text='. s:sign_change .'3 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete4 text='. s:sign_change .'4 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete5 text='. s:sign_change .'5 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete6 text='. s:sign_change .'6 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete7 text='. s:sign_change .'7 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete8 text='. s:sign_change .'8 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDelete9 text='. s:sign_change .'9 texthl=SignifySignChange linehl='
|
|
execute 'sign define SignifyChangeDeleteMore text='. s:sign_change .'> texthl=SignifySignChange linehl='
|
|
|
|
execute 'sign define SignifyDeleteFirstLine text='. s:sign_delete_first_line ' texthl=SignifySignDelete linehl='
|
|
|
|
let g:signify_line_highlight = 0
|
|
endfunction
|
|
|
|
" Function: #line_toggle {{{1
|
|
function! sy#highlight#line_toggle() abort
|
|
if !exists('b:sy')
|
|
echomsg 'signify: I cannot detect any changes!'
|
|
return
|
|
endif
|
|
|
|
if get(g:, 'signify_line_highlight')
|
|
call sy#highlight#line_disable()
|
|
else
|
|
call sy#highlight#line_enable()
|
|
endif
|
|
|
|
call sy#start(b:sy.path)
|
|
endfunction
|