Use matchaddpos() instead of text properties

matchaddpos() has better backward compatibility than text properties.  I
only used text properties inside Vim popups because I did not think
there was a way to use matchaddpos(), but then I found a way.
This commit is contained in:
Andy Stewart
2019-09-26 15:08:56 +01:00
parent ba049e707a
commit b94fab3070

View File

@@ -1,10 +1,5 @@
let s:winid = 0
if exists('*prop_type_add')
call prop_type_add('gitgutter_add_intra_line', {'highlight': 'GitGutterAddIntraLine', 'combine': 1})
call prop_type_add('gitgutter_delete_intra_line', {'highlight': 'GitGutterDeleteIntraLine', 'combine': 1})
endif
function! gitgutter#hunk#set_hunks(bufnr, hunks) abort
call gitgutter#utility#setbufvar(a:bufnr, 'hunks', a:hunks)
call s:reset_summary(a:bufnr)
@@ -476,12 +471,10 @@ function! s:populate_hunk_preview_window(header, body)
if exists('*popup_create')
call popup_settext(s:winid, a:body)
if has('patch-8.1.2071')
for region in gitgutter#diff_highlight#process(a:body)
let type = region[1] == '+' ? 'gitgutter_add_intra_line' : 'gitgutter_delete_intra_line'
call prop_add(region[0], region[2], {'bufnr': winbufnr(s:winid), 'type': type, 'end_col': region[3]+1})
endfor
endif
for region in gitgutter#diff_highlight#process(a:body)
let group = region[1] == '+' ? 'GitGutterAddIntraLine' : 'GitGutterDeleteIntraLine'
call win_execute(s:winid, "call matchaddpos('".group."', [[".region[0].", ".region[2].", ".(region[3]-region[2]+1)."]])")
endfor
endif
else