Dedup buffer lists to avoid unnecessary work.

This commit is contained in:
Andy Stewart
2016-10-10 12:52:05 +01:00
parent 68f6fa3453
commit 55b556f7a2
2 changed files with 8 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ let s:nomodeline = (v:version > 703 || (v:version == 703 && has('patch442'))) ?
" Primary functions {{{
function! gitgutter#all() abort
for buffer_id in tabpagebuflist()
for buffer_id in gitgutter#utility#dedup(tabpagebuflist())
let file = expand('#' . buffer_id . ':p')
if !empty(file)
call gitgutter#process_buffer(buffer_id, 0)
@@ -69,7 +69,7 @@ function! gitgutter#disable() abort
call extend(buflist, tabpagebuflist(i + 1))
endfor
for buffer_id in buflist
for buffer_id in gitgutter#utility#dedup(buflist)
let file = expand('#' . buffer_id . ':p')
if !empty(file)
call gitgutter#utility#set_buffer(buffer_id)

View File

@@ -164,6 +164,12 @@ function! gitgutter#utility#highlight_name_for_change(text) abort
endif
endfunction
" Dedups list in-place.
" Assumes list has no empty entries.
function! gitgutter#utility#dedup(list)
return filter(sort(a:list), 'index(a:list, v:val, v:key + 1) == -1')
endfunction
function! gitgutter#utility#strip_trailing_new_line(line) abort
return substitute(a:line, '\n$', '', '')
endfunction