Blacklist startify for [noperm]

Startify unfortunately does not set the buftype option, so the
`[noperm]` would be shown, since the buffer is not really a file.
(see mhinz/vim-startify#324)

So allow to blacklist startify from this setting. To do so, the logic
from the tabline extension was refactored out into a separate function
that returns true, if the buffer matches
`g:airline#extensions#tabline#ignore_bufadd_pat` and that function is
then reused for the readonly() function as well.
This commit is contained in:
Christian Brabandt 2018-05-11 22:22:46 +02:00
parent c7e05efb76
commit b84e13f1d7
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
4 changed files with 16 additions and 4 deletions

View File

@ -49,14 +49,13 @@ function! s:update_tabline()
endif endif
let match = expand('<afile>') let match = expand('<afile>')
let ignore_bufadd_pat = get(g:, 'airline#extensions#tabline#ignore_bufadd_pat', let ignore_bufadd_pat = get(g:, 'airline#extensions#tabline#ignore_bufadd_pat',
\ '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree') \ '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree|startify')
if pumvisible() if pumvisible()
return return
elseif !get(g:, 'airline#extensions#tabline#enabled', 0) elseif !get(g:, 'airline#extensions#tabline#enabled', 0)
return return
" return, if buffer matches ignore pattern or is directory (netrw) " return, if buffer matches ignore pattern or is directory (netrw)
elseif empty(match) elseif empty(match) || airline#util#ignore_buf(match)
\ || match(match, ignore_bufadd_pat) > -1
\ || isdirectory(expand("<afile>")) \ || isdirectory(expand("<afile>"))
return return
endif endif

View File

@ -88,7 +88,7 @@ endfunction
function! airline#parts#readonly() function! airline#parts#readonly()
" only consider regular buffers (e.g. ones that represent actual files, " only consider regular buffers (e.g. ones that represent actual files,
" but not special ones like e.g. NERDTree) " but not special ones like e.g. NERDTree)
if !empty(&buftype) if !empty(&buftype) || airline#util#ignore_buf(bufname('%'))
return '' return ''
endif endif
if &readonly && !filereadable(bufname('%')) if &readonly && !filereadable(bufname('%'))

View File

@ -96,3 +96,10 @@ function! airline#util#strchars(str)
return strlen(substitute(a:str, '.', 'a', 'g')) return strlen(substitute(a:str, '.', 'a', 'g'))
endif endif
endfunction endfunction
function! airline#util#ignore_buf(name)
let pat = '\c\v'. get(g:, 'airline#ignore_bufadd_pat', '').
\ get(g:, 'airline#extensions#tabline#ignore_bufadd_pat',
\ 'gundo|undotree|vimfiler|tagbar|nerd_tree|startify')
return match(a:name, pat) > -1
endfunction

View File

@ -324,6 +324,12 @@ section.
let g:airline_section_b = '%-0.10{getcwd()}' let g:airline_section_b = '%-0.10{getcwd()}'
let g:airline_section_c = '%t' let g:airline_section_c = '%t'
< <
|airline#ignore_bufadd_pat|
Determines a pattern to ignore a buffer name for various things (e.g. the
tabline extension) or the read-only check. Default is
`g:airline#extensions#tabline#ignore_bufadd_pat` (see below) or
`'gundo|undotree|vimfiler|tagbar|nerd_tree|startify'` if it is unset.
============================================================================== ==============================================================================
EXTENSIONS *airline-extensions* EXTENSIONS *airline-extensions*