Skip to content

Commit e098252

Browse files
committed
Add support for highlighting the number column
`g:signify_number_higlight` can be used to enable highlighting the number column for the placed signs. This requires Vim 8.2.3874/Neovim 0.3.2 or newer. Closes #387
1 parent 22f0560 commit e098252

File tree

4 files changed

+40
-10
lines changed

4 files changed

+40
-10
lines changed

autoload/sy/highlight.vim

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ endfunction
3131

3232
" #line_enable {{{1
3333
function! sy#highlight#line_enable() abort
34-
execute 'sign define SignifyAdd text='. s:sign_add 'texthl=SignifySignAdd linehl=SignifyLineAdd'
35-
execute 'sign define SignifyChange text='. s:sign_change 'texthl=SignifySignChange linehl=SignifyLineChange'
36-
execute 'sign define SignifyChangeDelete text='. s:sign_change_delete 'texthl=SignifySignChangeDelete linehl=SignifyLineChangeDelete'
37-
execute 'sign define SignifyRemoveFirstLine text='. s:sign_delete_first_line 'texthl=SignifySignDeleteFirstLine linehl=SignifyLineDeleteFirstLine'
34+
execute 'sign define SignifyAdd text='. s:sign_add ' texthl=SignifySignAdd linehl=SignifyLineAdd '. sy#util#numhl('SignifySignAdd')
35+
execute 'sign define SignifyChange text='. s:sign_change ' texthl=SignifySignChange linehl=SignifyLineChange '. sy#util#numhl('SignifySignChange')
36+
execute 'sign define SignifyChangeDelete text='. s:sign_change_delete ' texthl=SignifySignChangeDelete linehl=SignifyLineChangeDelete '. sy#util#numhl('SignifySignChangeDelete')
37+
execute 'sign define SignifyRemoveFirstLine text='. s:sign_delete_first_line ' texthl=SignifySignDeleteFirstLine linehl=SignifyLineDeleteFirstLine '. sy#util#numhl('SignifySignDeleteFirstLine')
3838
let g:signify_line_highlight = 1
3939
endfunction
4040

4141
" #line_disable {{{1
4242
function! sy#highlight#line_disable() abort
43-
execute 'sign define SignifyAdd text='. s:sign_add 'texthl=SignifySignAdd linehl='
44-
execute 'sign define SignifyChange text='. s:sign_change 'texthl=SignifySignChange linehl='
45-
execute 'sign define SignifyChangeDelete text='. s:sign_change_delete 'texthl=SignifySignChangeDelete linehl='
46-
execute 'sign define SignifyRemoveFirstLine text='. s:sign_delete_first_line 'texthl=SignifySignDeleteFirstLine linehl='
43+
execute 'sign define SignifyAdd text='. s:sign_add ' texthl=SignifySignAdd linehl= '. sy#util#numhl('SignifySignAdd')
44+
execute 'sign define SignifyChange text='. s:sign_change ' texthl=SignifySignChange linehl= '. sy#util#numhl('SignifySignChange')
45+
execute 'sign define SignifyChangeDelete text='. s:sign_change_delete ' texthl=SignifySignChangeDelete linehl= '. sy#util#numhl('SignifySignChangeDelete')
46+
execute 'sign define SignifyRemoveFirstLine text='. s:sign_delete_first_line ' texthl=SignifySignDeleteFirstLine linehl= '. sy#util#numhl('SignifySignDeleteFirstLine')
4747
let g:signify_line_highlight = 0
4848
endfunction
4949

autoload/sy/sign.vim

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,10 +280,11 @@ function! s:add_sign(sy, line, type, ...) abort
280280
endif
281281

282282
if a:type =~# 'SignifyDelete'
283-
execute printf('sign define %s text=%s texthl=SignifySignDelete linehl=%s',
283+
execute printf('sign define %s text=%s texthl=SignifySignDelete linehl=%s %s',
284284
\ a:type,
285285
\ a:1,
286-
\ s:delete_highlight[g:signify_line_highlight])
286+
\ s:delete_highlight[g:signify_line_highlight],
287+
\ sy#util#numhl('SignifySignDelete'))
287288
endif
288289
execute printf('sign place %d line=%d name=%s %s buffer=%s',
289290
\ id,

autoload/sy/util.vim

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,27 @@ function! sy#util#popup_create(hunkdiff) abort
195195
return 1
196196
endfunction
197197

198+
" #numhl {{{1
199+
try
200+
sign define SyTest numhl=Number
201+
let s:use_numhl = 1
202+
sign undefine SyTest
203+
catch
204+
let s:use_numhl = 0
205+
endtry
206+
207+
function! sy#util#numhl(hlgroup) abort
208+
if !s:use_numhl
209+
return ''
210+
endif
211+
212+
if get(g:, 'signify_number_highlight')
213+
return printf('numhl=%s', a:hlgroup)
214+
else
215+
return 'numhl='
216+
endif
217+
endfunction
218+
198219
" s:offset {{{1
199220
function! s:offset() abort
200221
let offset = &foldcolumn

doc/signify.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,14 @@ Default: <none>
262262
<
263263
Enable line highlighting in addition to using signs by default.
264264

265+
------------------------------------------------------------------------------
266+
*g:signify_number_highlight* >
267+
let g:signify_number_highlight = 0
268+
<
269+
Enable number column highlighting in addition to using signs by default.
270+
271+
This requires Vim 8.2.3874+ or Neovim 0.3.2+.
272+
265273
------------------------------------------------------------------------------
266274
*g:signify_sign_add*
267275
*g:signify_sign_delete*

0 commit comments

Comments
 (0)