From 78876150ae02f8e4013988c8a29403d3e7f609ff Mon Sep 17 00:00:00 2001 From: delphinus Date: Thu, 4 Jul 2019 22:30:44 +0900 Subject: [PATCH] Add logic for sign with numhl --- autoload/gitgutter/highlight.vim | 50 ++++++++++++++++++++++++++++++++ plugin/gitgutter.vim | 1 + 2 files changed, 51 insertions(+) diff --git a/autoload/gitgutter/highlight.vim b/autoload/gitgutter/highlight.vim index c1362fd..631548d 100644 --- a/autoload/gitgutter/highlight.vim +++ b/autoload/gitgutter/highlight.vim @@ -31,6 +31,39 @@ function! gitgutter#highlight#line_toggle() abort endif endfunction +function! gitgutter#highlight#linenr_disable() abort + let g:gitgutter_highlight_linenrs = 0 + call s:define_sign_linenr_highlights() + + if !g:gitgutter_signs + call gitgutter#sign#clear_signs(bufnr('')) + call gitgutter#sign#remove_dummy_sign(bufnr(''), 0) + endif + + redraw! +endfunction + +function! gitgutter#highlight#linenr_enable() abort + let old_highlight_lines = g:gitgutter_highlight_linenrs + + let g:gitgutter_highlight_linenrs = 1 + call s:define_sign_linenr_highlights() + + if !old_highlight_lines && !g:gitgutter_signs + call gitgutter#all(1) + endif + + redraw! +endfunction + +function! gitgutter#highlight#linenr_toggle() abort + if g:gitgutter_highlight_linenrs + call gitgutter#highlight#linenr_disable() + else + call gitgutter#highlight#linenr_enable() + endif +endfunction + function! gitgutter#highlight#define_sign_column_highlight() abort if g:gitgutter_override_sign_column_highlight @@ -66,6 +99,11 @@ function! gitgutter#highlight#define_highlights() abort highlight default link GitGutterChangeLine DiffChange highlight default link GitGutterDeleteLine DiffDelete highlight default link GitGutterChangeDeleteLine GitGutterChangeLine + + highlight default link GitGutterAddLineNr CursorLineNr + highlight default link GitGutterChangeLineNr CursorLineNr + highlight default link GitGutterDeleteLineNr CursorLineNr + highlight default link GitGutterChangeDeleteLineNr CursorLineNr endfunction function! gitgutter#highlight#define_signs() abort @@ -80,6 +118,7 @@ function! gitgutter#highlight#define_signs() abort call s:define_sign_text() call gitgutter#highlight#define_sign_text_highlights() call s:define_sign_line_highlights() + call s:define_sign_linenr_highlights() endfunction function! s:define_sign_text() abort @@ -131,6 +170,17 @@ function! s:define_sign_line_highlights() abort endif endfunction +function! s:define_sign_linenr_highlights() abort + if g:gitgutter_highlight_linenrs && has('nvim-0.3.2') + sign define GitGutterLineAdded numhl=GitGutterAddLineNr + sign define GitGutterLineModified numhl=GitGutterChangeLineNr + sign define GitGutterLineRemoved numhl=GitGutterDeleteLineNr + sign define GitGutterLineRemovedFirstLine numhl=GitGutterDeleteLineNr + sign define GitGutterLineRemovedAboveAndBelow numhl=GitGutterDeleteLineNr + sign define GitGutterLineModifiedRemoved numhl=GitGutterChangeDeleteLineNr + endif +endfunction + function! s:get_hl(group, what, mode) abort let r = synIDattr(synIDtrans(hlID(a:group)), a:what, a:mode) if empty(r) || r == -1 diff --git a/plugin/gitgutter.vim b/plugin/gitgutter.vim index 6efad0c..6d9070f 100644 --- a/plugin/gitgutter.vim +++ b/plugin/gitgutter.vim @@ -27,6 +27,7 @@ call s:set('g:gitgutter_enabled', 1) call s:set('g:gitgutter_max_signs', 500) call s:set('g:gitgutter_signs', 1) call s:set('g:gitgutter_highlight_lines', 0) +call s:set('g:gitgutter_highlight_linenrs', 0) call s:set('g:gitgutter_sign_column_always', 0) if g:gitgutter_sign_column_always && exists('&signcolumn') " Vim 7.4.2201.