2013-08-03 01:56:12 +08:00
|
|
|
" MIT license. Copyright (c) 2013 Bailey Ling.
|
|
|
|
" vim: ts=2 sts=2 sw=2 fdm=indent
|
|
|
|
|
2013-08-06 10:44:34 +08:00
|
|
|
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
|
|
|
|
|
2013-07-26 05:54:49 +08:00
|
|
|
function! airline#extensions#apply_left_override(section1, section2)
|
2013-07-09 10:52:07 +08:00
|
|
|
let w:airline_section_a = a:section1
|
|
|
|
let w:airline_section_b = a:section2
|
|
|
|
let w:airline_section_c = ''
|
2013-07-29 07:24:06 +08:00
|
|
|
let w:airline_section_gutter = ' '
|
2013-07-09 10:52:07 +08:00
|
|
|
let w:airline_left_only = 1
|
|
|
|
endfunction
|
|
|
|
|
2013-08-06 11:34:45 +08:00
|
|
|
let s:active_winnr = -1
|
|
|
|
function! airline#extensions#update_statusline()
|
|
|
|
let s:active_winnr = winnr()
|
|
|
|
|
2013-07-25 20:00:17 +08:00
|
|
|
if &buftype == 'quickfix'
|
|
|
|
let w:airline_section_a = 'Quickfix'
|
|
|
|
let w:airline_section_b = ''
|
|
|
|
let w:airline_section_c = ''
|
|
|
|
let w:airline_section_x = ''
|
2013-07-26 01:49:03 +08:00
|
|
|
elseif &buftype == 'help'
|
2013-07-26 20:12:39 +08:00
|
|
|
let w:airline_section_a = 'Help'
|
|
|
|
let w:airline_section_b = '%f'
|
|
|
|
let w:airline_section_c = ''
|
2013-07-26 01:49:03 +08:00
|
|
|
let w:airline_section_gutter = ' '
|
2013-07-26 20:12:39 +08:00
|
|
|
let w:airline_section_x = ''
|
|
|
|
let w:airline_section_y = ''
|
2013-07-25 20:00:17 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
if &previewwindow
|
|
|
|
let w:airline_section_a = 'Preview'
|
|
|
|
let w:airline_section_b = ''
|
|
|
|
let w:airline_section_c = bufname(winbufnr(winnr()))
|
|
|
|
endif
|
|
|
|
|
2013-07-09 08:51:33 +08:00
|
|
|
if &ft == 'netrw'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('netrw', '%f')
|
2013-07-09 08:51:33 +08:00
|
|
|
elseif &ft == 'unite'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('Unite', '%{unite#get_status_string()}')
|
2013-07-09 10:52:07 +08:00
|
|
|
elseif &ft == 'nerdtree'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('NERD', '')
|
2013-07-09 10:52:07 +08:00
|
|
|
elseif &ft == 'undotree'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('undotree', '')
|
2013-07-09 10:52:07 +08:00
|
|
|
elseif &ft == 'gundo'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('Gundo', '')
|
2013-07-09 10:52:07 +08:00
|
|
|
elseif &ft == 'diff'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('diff', '')
|
2013-07-09 10:52:07 +08:00
|
|
|
elseif &ft == 'tagbar'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('Tagbar', '')
|
2013-07-18 10:28:21 +08:00
|
|
|
elseif &ft == 'vimshell'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('vimshell', '%{vimshell#get_status_string()}')
|
2013-07-24 00:22:43 +08:00
|
|
|
elseif &ft == 'vimfiler'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('vimfiler', '%{vimfiler#get_status_string()}')
|
2013-07-10 06:32:35 +08:00
|
|
|
elseif &ft == 'minibufexpl'
|
2013-07-26 05:54:49 +08:00
|
|
|
call airline#extensions#apply_left_override('MiniBufExplorer', '')
|
2013-08-03 23:46:25 +08:00
|
|
|
elseif &ft == 'startify'
|
|
|
|
call airline#extensions#apply_left_override('startify', '')
|
2013-07-09 08:51:33 +08:00
|
|
|
endif
|
2013-07-26 06:29:18 +08:00
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! airline#extensions#is_excluded_window()
|
|
|
|
for matchft in g:airline_exclude_filetypes
|
|
|
|
if matchft ==# &ft
|
|
|
|
return 1
|
|
|
|
endif
|
|
|
|
endfor
|
2013-07-25 20:00:17 +08:00
|
|
|
|
2013-07-26 06:29:18 +08:00
|
|
|
for matchw in g:airline_exclude_filenames
|
|
|
|
if matchstr(expand('%'), matchw) ==# matchw
|
|
|
|
return 1
|
|
|
|
endif
|
2013-07-25 20:00:17 +08:00
|
|
|
endfor
|
2013-07-26 06:29:18 +08:00
|
|
|
|
|
|
|
if g:airline_exclude_preview && &previewwindow
|
|
|
|
return 1
|
|
|
|
endif
|
|
|
|
|
|
|
|
return 0
|
2013-07-09 08:51:33 +08:00
|
|
|
endfunction
|
2013-07-09 21:48:57 +08:00
|
|
|
|
2013-07-27 22:02:43 +08:00
|
|
|
function! airline#extensions#load_theme()
|
|
|
|
if get(g:, 'loaded_ctrlp', 0)
|
|
|
|
call airline#extensions#ctrlp#load_theme()
|
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
2013-08-06 11:34:45 +08:00
|
|
|
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
|
|
|
|
|
2013-07-09 21:48:57 +08:00
|
|
|
function! airline#extensions#load()
|
2013-08-06 11:34:45 +08:00
|
|
|
" 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'))
|
|
|
|
|
2013-07-27 22:02:43 +08:00
|
|
|
if get(g:, 'loaded_unite', 0)
|
|
|
|
let g:unite_force_overwrite_statusline = 0
|
|
|
|
endif
|
2013-08-06 11:34:45 +08:00
|
|
|
|
2013-07-27 22:02:43 +08:00
|
|
|
if get(g:, 'loaded_vimfiler', 0)
|
|
|
|
let g:vimfiler_force_overwrite_statusline = 0
|
|
|
|
endif
|
2013-07-09 21:48:57 +08:00
|
|
|
|
2013-07-22 09:29:31 +08:00
|
|
|
if get(g:, 'loaded_ctrlp', 0)
|
2013-08-06 11:34:45 +08:00
|
|
|
call airline#extensions#ctrlp#init(s:ext)
|
2013-07-09 21:48:57 +08:00
|
|
|
endif
|
|
|
|
|
2013-07-26 05:54:49 +08:00
|
|
|
if get(g:, 'command_t_loaded', 0)
|
2013-08-06 10:56:30 +08:00
|
|
|
call airline#extensions#commandt#init(s:ext)
|
2013-07-26 05:54:49 +08:00
|
|
|
endif
|
|
|
|
|
2013-08-06 11:16:49 +08:00
|
|
|
if get(g:, 'loaded_tagbar', 0)
|
|
|
|
call airline#extensions#tagbar#init(s:ext)
|
|
|
|
endif
|
|
|
|
|
2013-08-06 11:07:01 +08:00
|
|
|
if g:airline_enable_branch && (get(g:, 'loaded_fugitive', 0) || get(g:, 'loaded_lawrencium', 0))
|
|
|
|
call airline#extensions#branch#init(s:ext)
|
|
|
|
endif
|
|
|
|
|
2013-08-06 10:56:30 +08:00
|
|
|
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')
|
2013-08-06 10:44:34 +08:00
|
|
|
call airline#extensions#bufferline#init(s:ext)
|
2013-07-21 10:31:05 +08:00
|
|
|
endif
|
2013-07-26 06:29:18 +08:00
|
|
|
|
2013-08-06 11:34:45 +08:00
|
|
|
call airline#exec_funcrefs(g:airline_statusline_funcrefs, 0)
|
2013-07-09 21:48:57 +08:00
|
|
|
endfunction
|
|
|
|
|