diff --git a/autoload/airline/extensions/hunks.vim b/autoload/airline/extensions/hunks.vim index 805ed13c..13a441e6 100644 --- a/autoload/airline/extensions/hunks.vim +++ b/autoload/airline/extensions/hunks.vim @@ -2,30 +2,34 @@ " vim: et ts=2 sts=2 sw=2 function! airline#extensions#hunks#get_hunks() - try - " throws an error when first entering a buffer, so we gotta swallow it - silent! let hunks = GitGutterGetHunks() + if get(g:, 'gitgutter_initialised', 0) && get(g:, 'gitgutter_enabled', 0) let added = 0 let removed = 0 let changed = 0 + let hunks = GitGutterGetHunks() for hunk in hunks - let diff = hunk[3] - hunk[1] - if diff > 0 - let added += diff - elseif diff < 0 - let removed -= diff - else - let changed += 1 + if hunk[1] == 0 && hunk[3] > 0 + let added += hunk[3] + elseif hunk[1] > 0 && hunk[3] == 0 + let removed += hunk[1] + elseif hunk[1] > 0 && hunk[3] > 0 + if hunk[1] == hunk[3] + let changed += hunk[3] + elseif hunk[1] < hunk[3] + let changed += hunk[1] + let added += (hunk[3] - hunk[1]) + elseif hunk[1] > hunk[3] + let changed += hunk[3] + let removed += (hunk[1] - hunk[3]) + endif endif endfor - return printf('+%s ~%s -%s', added, changed, removed) - catch - return '' - endtry + return printf('+%s ~%s -%s ', added, changed, removed) + endif return '' endfunction function! airline#extensions#hunks#init(ext) - let g:airline_section_b .= '%{airline#extensions#hunks#get_hunks()} ' + let g:airline_section_b .= '%{airline#extensions#hunks#get_hunks()}' endfunction diff --git a/plugin/airline.vim b/plugin/airline.vim index 34a19b38..36345d10 100644 --- a/plugin/airline.vim +++ b/plugin/airline.vim @@ -21,7 +21,7 @@ call s:check_defined('g:airline_enable_branch', 1) call s:check_defined('g:airline_enable_syntastic', 1) call s:check_defined('g:airline_enable_tagbar', 1) call s:check_defined('g:airline_enable_csv', 1) -call s:check_defined('g:airline_enable_hunks', 0) +call s:check_defined('g:airline_enable_hunks', 1) call s:check_defined('g:airline_detect_iminsert', 0) call s:check_defined('g:airline_detect_modified', 1) call s:check_defined('g:airline_detect_paste', 1)