Fix splitting on a string not a pattern

This commit is contained in:
Andy Stewart
2019-09-26 16:56:19 +01:00
parent b94fab3070
commit 09bc754efc

View File

@@ -104,8 +104,8 @@ function! s:diff(rline, aline, rlinenr, alinenr, rprefix, aprefix, regions, whol
let lcs = s:lcs(rtext, atext) let lcs = s:lcs(rtext, atext)
" TODO do we need to ensure we don't get more than 2 elements when splitting? " TODO do we need to ensure we don't get more than 2 elements when splitting?
if len(lcs) > s:gap_between_regions if len(lcs) > s:gap_between_regions
let redits = split(rtext, lcs, 1) let redits = s:split(rtext, lcs)
let aedits = split(atext, lcs, 1) let aedits = s:split(atext, lcs)
call s:diff(redits[0], aedits[0], a:rlinenr, a:alinenr, prefix+1, prefix+1, a:regions, 0) call s:diff(redits[0], aedits[0], a:rlinenr, a:alinenr, prefix+1, prefix+1, a:regions, 0)
call s:diff(redits[1], aedits[1], a:rlinenr, a:alinenr, prefix+1+len(redits[0])+len(lcs), prefix+1+len(aedits[0])+len(lcs), a:regions, 0) call s:diff(redits[1], aedits[1], a:rlinenr, a:alinenr, prefix+1+len(redits[0])+len(lcs), prefix+1+len(aedits[0])+len(lcs), a:regions, 0)
return return
@@ -204,3 +204,22 @@ if $VIM_GITGUTTER_TEST
return s:common_suffix(a:a, a:b, a:start) return s:common_suffix(a:a, a:b, a:start)
endfunction endfunction
endif endif
" Split a string on another string.
" Assumes 1 occurrence of the delimiter.
function! s:split(str, delimiter)
let i = stridx(a:str, a:delimiter)
if i == 0
return ['', a:str[len(a:delimiter):]]
endif
return [a:str[:i-1], a:str[i+len(a:delimiter):]]
endfunction
if $VIM_GITGUTTER_TEST
function! gitgutter#diff_highlight#split(str, delimiter)
return s:split(a:str, a:delimiter)
endfunction
endif