2013-08-20 00:13:29 +00:00
|
|
|
" MIT License. Copyright (c) 2013 Bailey Ling.
|
|
|
|
" vim: et ts=2 sts=2 sw=2
|
2013-08-02 17:56:12 +00:00
|
|
|
|
2013-08-06 02:44:34 +00: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-08-22 04:19:56 +00:00
|
|
|
let s:script_path = expand('<sfile>:p:h')
|
|
|
|
|
2013-08-06 03:56:20 +00:00
|
|
|
let s:filetype_overrides = {
|
|
|
|
\ 'netrw': [ 'netrw', '%f' ],
|
|
|
|
\ 'unite': [ 'Unite', '%{unite#get_status_string()}' ],
|
|
|
|
\ 'nerdtree': [ 'NERD', '' ],
|
|
|
|
\ 'gundo': [ 'Gundo', '' ],
|
|
|
|
\ 'diff': [ 'diff', '' ],
|
|
|
|
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
|
|
|
|
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
|
|
|
|
\ 'startify': [ 'startify', '' ],
|
|
|
|
\ }
|
|
|
|
|
2013-08-12 01:13:18 +00:00
|
|
|
let s:filetype_regex_overrides = {}
|
|
|
|
|
2013-07-25 21:54:49 +00:00
|
|
|
function! airline#extensions#apply_left_override(section1, section2)
|
2013-07-09 02:52:07 +00:00
|
|
|
let w:airline_section_a = a:section1
|
|
|
|
let w:airline_section_b = a:section2
|
|
|
|
let w:airline_section_c = ''
|
2013-08-10 16:05:49 +00:00
|
|
|
let w:airline_render_left = 1
|
|
|
|
let w:airline_render_right = 0
|
2013-07-09 02:52:07 +00:00
|
|
|
endfunction
|
|
|
|
|
2013-08-06 03:34:45 +00:00
|
|
|
let s:active_winnr = -1
|
2013-08-21 15:14:12 +00:00
|
|
|
function! airline#extensions#update_statusline(...)
|
2013-08-06 03:34:45 +00:00
|
|
|
let s:active_winnr = winnr()
|
2013-08-03 14:59:34 +00:00
|
|
|
|
2013-07-25 12:00:17 +00: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-25 17:49:03 +00:00
|
|
|
elseif &buftype == 'help'
|
2013-08-10 16:05:49 +00:00
|
|
|
call airline#extensions#apply_left_override('Help', '%f')
|
2013-07-26 12:12:39 +00:00
|
|
|
let w:airline_section_x = ''
|
|
|
|
let w:airline_section_y = ''
|
2013-08-10 16:05:49 +00:00
|
|
|
let w:airline_render_right = 1
|
2013-07-25 12:00:17 +00: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-08-06 03:56:20 +00:00
|
|
|
if has_key(s:filetype_overrides, &ft)
|
|
|
|
let args = s:filetype_overrides[&ft]
|
|
|
|
call airline#extensions#apply_left_override(args[0], args[1])
|
2013-07-09 00:51:33 +00:00
|
|
|
endif
|
2013-08-12 01:13:18 +00:00
|
|
|
|
|
|
|
for item in items(s:filetype_regex_overrides)
|
|
|
|
if match(&ft, item[0]) >= 0
|
|
|
|
call airline#extensions#apply_left_override(item[1][0], item[1][1])
|
|
|
|
endif
|
|
|
|
endfor
|
2013-07-25 22:29:18 +00:00
|
|
|
endfunction
|
|
|
|
|
2013-08-21 15:14:12 +00:00
|
|
|
function! airline#extensions#is_excluded_window(...)
|
2013-07-25 22:29:18 +00:00
|
|
|
for matchft in g:airline_exclude_filetypes
|
|
|
|
if matchft ==# &ft
|
|
|
|
return 1
|
|
|
|
endif
|
|
|
|
endfor
|
2013-07-25 12:00:17 +00:00
|
|
|
|
2013-07-25 22:29:18 +00:00
|
|
|
for matchw in g:airline_exclude_filenames
|
|
|
|
if matchstr(expand('%'), matchw) ==# matchw
|
|
|
|
return 1
|
|
|
|
endif
|
2013-07-25 12:00:17 +00:00
|
|
|
endfor
|
2013-07-25 22:29:18 +00:00
|
|
|
|
|
|
|
if g:airline_exclude_preview && &previewwindow
|
|
|
|
return 1
|
|
|
|
endif
|
|
|
|
|
|
|
|
return 0
|
2013-07-09 00:51:33 +00:00
|
|
|
endfunction
|
2013-07-09 13:48:57 +00:00
|
|
|
|
2013-07-27 14:02:43 +00:00
|
|
|
function! airline#extensions#load_theme()
|
|
|
|
if get(g:, 'loaded_ctrlp', 0)
|
|
|
|
call airline#extensions#ctrlp#load_theme()
|
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
2013-08-06 03:34:45 +00:00
|
|
|
function! s:sync_active_winnr()
|
2013-08-15 20:05:12 +00:00
|
|
|
if exists('#airline') && winnr() != s:active_winnr
|
2013-08-16 01:47:54 +00:00
|
|
|
if airline#util#exec_funcrefs(s:ext._cursormove_funcrefs, 1)
|
2013-08-06 03:34:45 +00:00
|
|
|
return
|
|
|
|
endif
|
|
|
|
call airline#update_statusline()
|
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
2013-07-09 13:48:57 +00:00
|
|
|
function! airline#extensions#load()
|
2013-08-06 03:34:45 +00: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 14:02:43 +00:00
|
|
|
if get(g:, 'loaded_unite', 0)
|
|
|
|
let g:unite_force_overwrite_statusline = 0
|
|
|
|
endif
|
2013-08-06 03:34:45 +00:00
|
|
|
|
2013-07-27 14:02:43 +00:00
|
|
|
if get(g:, 'loaded_vimfiler', 0)
|
|
|
|
let g:vimfiler_force_overwrite_statusline = 0
|
|
|
|
endif
|
2013-07-09 13:48:57 +00:00
|
|
|
|
2013-07-22 01:29:31 +00:00
|
|
|
if get(g:, 'loaded_ctrlp', 0)
|
2013-08-06 03:34:45 +00:00
|
|
|
call airline#extensions#ctrlp#init(s:ext)
|
2013-07-09 13:48:57 +00:00
|
|
|
endif
|
|
|
|
|
2013-07-25 21:54:49 +00:00
|
|
|
if get(g:, 'command_t_loaded', 0)
|
2013-08-06 02:56:30 +00:00
|
|
|
call airline#extensions#commandt#init(s:ext)
|
2013-07-25 21:54:49 +00:00
|
|
|
endif
|
|
|
|
|
2013-08-18 18:50:22 +00:00
|
|
|
if exists(':UndotreeToggle')
|
|
|
|
call airline#extensions#undotree#init(s:ext)
|
|
|
|
endif
|
|
|
|
|
2013-08-20 00:13:29 +00:00
|
|
|
if (get(g:, 'airline#extensions#hunks#enabled', 1) && get(g:, 'airline_enable_hunks', 1))
|
2013-08-20 15:43:26 +00:00
|
|
|
\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter'))
|
2013-08-18 21:02:33 +00:00
|
|
|
call airline#extensions#hunks#init(s:ext)
|
|
|
|
endif
|
|
|
|
|
2013-08-20 00:13:29 +00:00
|
|
|
if (get(g:, 'airline#extensions#tagbar#enabled', 1) && get(g:, 'airline_enable_tagbar', 1))
|
|
|
|
\ && exists(':TagbarToggle')
|
2013-08-06 03:16:49 +00:00
|
|
|
call airline#extensions#tagbar#init(s:ext)
|
2013-07-21 02:31:05 +00:00
|
|
|
endif
|
2013-07-25 22:29:18 +00:00
|
|
|
|
2013-08-20 00:13:29 +00:00
|
|
|
if (get(g:, 'airline#extensions#csv#enabled', 1) && get(g:, 'airline_enable_csv', 1))
|
|
|
|
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
|
2013-08-14 01:47:08 +00:00
|
|
|
call airline#extensions#csv#init(s:ext)
|
2013-08-13 21:27:21 +00:00
|
|
|
endif
|
|
|
|
|
2013-08-12 01:13:18 +00:00
|
|
|
if exists(':VimShell')
|
|
|
|
let s:filetype_overrides['vimshell'] = ['vimshell','%{vimshell#get_status_string()}']
|
|
|
|
let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, "int-", "", "")}']
|
|
|
|
endif
|
|
|
|
|
2013-08-20 00:13:29 +00:00
|
|
|
if (get(g:, 'airline#extensions#branch#enabled', 1) && get(g:, 'airline_enable_branch', 1))
|
|
|
|
\ && (get(g:, 'loaded_fugitive', 0) || get(g:, 'loaded_lawrencium', 0))
|
2013-08-06 03:07:01 +00:00
|
|
|
call airline#extensions#branch#init(s:ext)
|
|
|
|
endif
|
|
|
|
|
2013-08-20 00:13:29 +00:00
|
|
|
if (get(g:, 'airline#extensions#bufferline#enabled', 1) && get(g:, 'airline_enable_bufferline', 1))
|
|
|
|
\ && exists('*bufferline#get_status_string')
|
2013-08-06 02:44:34 +00:00
|
|
|
call airline#extensions#bufferline#init(s:ext)
|
2013-07-21 02:31:05 +00:00
|
|
|
endif
|
2013-08-03 14:59:34 +00:00
|
|
|
|
2013-08-20 15:02:17 +00:00
|
|
|
if g:airline_section_warning == '__'
|
|
|
|
if (get(g:, 'airline#extensions#syntastic#enabled', 1) && get(g:, 'airline_enable_syntastic', 1))
|
|
|
|
\ && exists(':SyntasticCheck')
|
|
|
|
call airline#extensions#syntastic#init(s:ext)
|
|
|
|
endif
|
|
|
|
|
|
|
|
if (get(g:, 'airline#extensions#whitespace#enabled', 1) && get(g:, 'airline_detect_whitespace', 1))
|
2013-08-21 15:14:12 +00:00
|
|
|
call airline#extensions#whitespace#init(s:ext)
|
2013-08-20 15:02:17 +00:00
|
|
|
endif
|
2013-08-07 00:17:33 +00:00
|
|
|
endif
|
|
|
|
|
2013-08-20 11:58:29 +00:00
|
|
|
if get(g:, 'airline#extensions#readonly#enabled', 1)
|
2013-08-20 08:18:01 +00:00
|
|
|
call airline#extensions#readonly#init()
|
|
|
|
endif
|
|
|
|
|
2013-08-20 20:29:08 +00:00
|
|
|
if (get(g:, 'airline#extensions#paste#enabled', 1) && get(g:, 'airline_detect_paste', 1))
|
|
|
|
call airline#extensions#paste#init()
|
|
|
|
endif
|
|
|
|
|
2013-08-10 21:02:48 +00:00
|
|
|
if g:airline_detect_iminsert
|
|
|
|
call airline#extensions#iminsert#init()
|
|
|
|
endif
|
|
|
|
|
2013-08-22 02:49:19 +00:00
|
|
|
" load all other extensions not part of the default distribution
|
|
|
|
for file in split(globpath(&rtp, "autoload/airline/extensions/*.vim"), '\n')
|
2013-08-22 12:27:44 +00:00
|
|
|
if stridx(resolve(fnamemodify(file, ':p')), s:script_path) < 0
|
2013-08-22 02:49:19 +00:00
|
|
|
let name = fnamemodify(file, ':t:r')
|
|
|
|
if !get(g:, 'airline#extensions#'.name.'#enabled', 1)
|
|
|
|
continue
|
|
|
|
endif
|
|
|
|
call airline#extensions#{name}#init(s:ext)
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
|
2013-08-16 01:47:54 +00:00
|
|
|
call airline#util#exec_funcrefs(g:airline_statusline_funcrefs, 0)
|
2013-07-09 13:48:57 +00:00
|
|
|
endfunction
|
|
|
|
|