mirror of
https://github.com/vim-airline/vim-airline.git
synced 2026-08-17 13:17:59 +08:00
Merge branch 'ext'
Conflicts: autoload/airline/extensions.vim
This commit is contained in:
@@ -1,6 +1,28 @@
|
||||
" MIT license. Copyright (c) 2013 Bailey Ling.
|
||||
" vim: ts=2 sts=2 sw=2 fdm=indent
|
||||
|
||||
let s:ext = {}
|
||||
let s:ext._cursormove_funcrefs = []
|
||||
function! s:ext.add_statusline_funcref(funcref) dict
|
||||
call add(g:airline_statusline_funcrefs, a:funcref)
|
||||
endfunction
|
||||
function! s:ext.add_cursormove_funcref(funcref) dict
|
||||
call add(self._cursormove_funcrefs, a:funcref)
|
||||
endfunction
|
||||
|
||||
let s:filetype_overrides = {
|
||||
\ 'netrw': [ 'netrw', '%f' ],
|
||||
\ 'unite': [ 'Unite', '%{unite#get_status_string()}' ],
|
||||
\ 'nerdtree': [ 'NERD', '' ],
|
||||
\ 'undotree': [ 'undotree', '' ],
|
||||
\ 'gundo': [ 'Gundo', '' ],
|
||||
\ 'diff': [ 'diff', '' ],
|
||||
\ 'vimshell': [ 'vimshell', '%{vimshell#get_status_string()}' ],
|
||||
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
|
||||
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
|
||||
\ 'startify': [ 'startify', '' ],
|
||||
\ }
|
||||
|
||||
function! airline#extensions#apply_left_override(section1, section2)
|
||||
let w:airline_section_a = a:section1
|
||||
let w:airline_section_b = a:section2
|
||||
@@ -9,23 +31,10 @@ function! airline#extensions#apply_left_override(section1, section2)
|
||||
let w:airline_left_only = 1
|
||||
endfunction
|
||||
|
||||
function! airline#extensions#update_external_values()
|
||||
let g:airline_externals_bufferline = g:airline_enable_bufferline && exists('*bufferline#get_status_string')
|
||||
\ ? '%{bufferline#refresh_status()}'.bufferline#get_status_string() : "%f%m"
|
||||
let g:airline_externals_syntastic = g:airline_enable_syntastic && exists('*SyntasticStatuslineFlag')
|
||||
\ ? '%#warningmsg#%{SyntasticStatuslineFlag()}' : ''
|
||||
let g:airline_externals_branch = g:airline_enable_branch
|
||||
\ ? (exists('*fugitive#head') && strlen(fugitive#head()) > 0
|
||||
\ ? g:airline_branch_prefix.fugitive#head()
|
||||
\ : exists('*lawrencium#statusline') && strlen(lawrencium#statusline()) > 0
|
||||
\ ? g:airline_branch_prefix.lawrencium#statusline()
|
||||
\ : '')
|
||||
\ : ''
|
||||
let g:airline_externals_tagbar = g:airline_enable_tagbar && exists(':Tagbar')
|
||||
\ ? '%(%{tagbar#currenttag("%s","")} '.g:airline_right_alt_sep.' %)' : ''
|
||||
endfunction
|
||||
let s:active_winnr = -1
|
||||
function! airline#extensions#update_statusline()
|
||||
let s:active_winnr = winnr()
|
||||
|
||||
function! airline#extensions#apply_window_overrides()
|
||||
if &buftype == 'quickfix'
|
||||
let w:airline_section_a = 'Quickfix'
|
||||
let w:airline_section_b = ''
|
||||
@@ -46,28 +55,9 @@ function! airline#extensions#apply_window_overrides()
|
||||
let w:airline_section_c = bufname(winbufnr(winnr()))
|
||||
endif
|
||||
|
||||
if &ft == 'netrw'
|
||||
call airline#extensions#apply_left_override('netrw', '%f')
|
||||
elseif &ft == 'unite'
|
||||
call airline#extensions#apply_left_override('Unite', '%{unite#get_status_string()}')
|
||||
elseif &ft == 'nerdtree'
|
||||
call airline#extensions#apply_left_override('NERD', '')
|
||||
elseif &ft == 'undotree'
|
||||
call airline#extensions#apply_left_override('undotree', '')
|
||||
elseif &ft == 'gundo'
|
||||
call airline#extensions#apply_left_override('Gundo', '')
|
||||
elseif &ft == 'diff'
|
||||
call airline#extensions#apply_left_override('diff', '')
|
||||
elseif &ft == 'tagbar'
|
||||
call airline#extensions#apply_left_override('Tagbar', '%{TagbarGenerateStatusline()}')
|
||||
elseif &ft == 'vimshell'
|
||||
call airline#extensions#apply_left_override('vimshell', '%{vimshell#get_status_string()}')
|
||||
elseif &ft == 'vimfiler'
|
||||
call airline#extensions#apply_left_override('vimfiler', '%{vimfiler#get_status_string()}')
|
||||
elseif &ft == 'minibufexpl'
|
||||
call airline#extensions#apply_left_override('MiniBufExplorer', '')
|
||||
elseif &ft == 'startify'
|
||||
call airline#extensions#apply_left_override('startify', '')
|
||||
if has_key(s:filetype_overrides, &ft)
|
||||
let args = s:filetype_overrides[&ft]
|
||||
call airline#extensions#apply_left_override(args[0], args[1])
|
||||
endif
|
||||
endfunction
|
||||
|
||||
@@ -97,39 +87,55 @@ function! airline#extensions#load_theme()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:sync_active_winnr()
|
||||
if winnr() != s:active_winnr
|
||||
if airline#exec_funcrefs(s:ext._cursormove_funcrefs, 1)
|
||||
return
|
||||
endif
|
||||
call airline#update_statusline()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! airline#extensions#load()
|
||||
" non-trivial number of external plugins use eventignore=all, so we need to account for that
|
||||
autocmd CursorMoved * call <sid>sync_active_winnr()
|
||||
|
||||
" load core funcrefs
|
||||
call add(g:airline_exclude_funcrefs, function('airline#extensions#is_excluded_window'))
|
||||
call add(g:airline_statusline_funcrefs, function('airline#extensions#update_statusline'))
|
||||
|
||||
if get(g:, 'loaded_unite', 0)
|
||||
let g:unite_force_overwrite_statusline = 0
|
||||
endif
|
||||
|
||||
if get(g:, 'loaded_vimfiler', 0)
|
||||
let g:vimfiler_force_overwrite_statusline = 0
|
||||
endif
|
||||
|
||||
if get(g:, 'loaded_ctrlp', 0)
|
||||
let g:ctrlp_status_func = {
|
||||
\ 'main': 'airline#extensions#ctrlp#ctrlp_airline',
|
||||
\ 'prog': 'airline#extensions#ctrlp#ctrlp_airline_status',
|
||||
\ }
|
||||
call airline#extensions#ctrlp#init(s:ext)
|
||||
endif
|
||||
|
||||
if get(g:, 'command_t_loaded', 0)
|
||||
call add(g:airline_statusline_funcrefs, function('airline#extensions#commandt#apply_window_override'))
|
||||
call airline#extensions#commandt#init(s:ext)
|
||||
endif
|
||||
|
||||
if g:airline_enable_bufferline && get(g:, 'loaded_bufferline', 0)
|
||||
highlight AlBl_active gui=bold cterm=bold term=bold
|
||||
highlight link AlBl_inactive Al6
|
||||
let g:bufferline_inactive_highlight = 'AlBl_inactive'
|
||||
let g:bufferline_active_highlight = 'AlBl_active'
|
||||
let g:bufferline_active_buffer_left = ''
|
||||
let g:bufferline_active_buffer_right = ''
|
||||
let g:bufferline_separator = ' '
|
||||
if exists(':TagbarToggle')
|
||||
call airline#extensions#tagbar#init(s:ext)
|
||||
endif
|
||||
|
||||
call add(g:airline_statusline_funcrefs, function('airline#extensions#update_external_values'))
|
||||
call add(g:airline_statusline_funcrefs, function('airline#extensions#apply_window_overrides'))
|
||||
call add(g:airline_exclude_funcrefs, function('airline#extensions#is_excluded_window'))
|
||||
if g:airline_enable_branch && (get(g:, 'loaded_fugitive', 0) || get(g:, 'loaded_lawrencium', 0))
|
||||
call airline#extensions#branch#init(s:ext)
|
||||
endif
|
||||
|
||||
call airline#extensions#update_external_values()
|
||||
if g:airline_enable_syntastic && get(g:, 'loaded_syntastic_plugin')
|
||||
call airline#extensions#syntastic#init(s:ext)
|
||||
endif
|
||||
|
||||
if g:airline_enable_bufferline && exists('*bufferline#get_status_string')
|
||||
call airline#extensions#bufferline#init(s:ext)
|
||||
endif
|
||||
|
||||
call airline#exec_funcrefs(g:airline_statusline_funcrefs, 0)
|
||||
endfunction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user