2016-01-15 02:38:38 +00:00
|
|
|
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
|
2013-08-17 17:35:06 +00:00
|
|
|
" vim: et ts=2 sts=2 sw=2
|
2013-08-02 17:56:12 +00:00
|
|
|
|
2013-07-02 04:04:59 +00:00
|
|
|
if &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)
|
|
|
|
finish
|
|
|
|
endif
|
|
|
|
let g:loaded_airline = 1
|
2013-08-15 19:54:14 +00:00
|
|
|
|
2015-03-04 03:07:23 +00:00
|
|
|
let s:airline_initialized = 0
|
2013-08-18 04:44:13 +00:00
|
|
|
let s:airline_theme_defined = 0
|
2013-08-18 18:13:34 +00:00
|
|
|
function! s:init()
|
2015-03-04 03:07:23 +00:00
|
|
|
if s:airline_initialized
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
let s:airline_initialized = 1
|
|
|
|
|
2015-02-20 02:08:21 +00:00
|
|
|
call airline#extensions#load()
|
|
|
|
call airline#init#sections()
|
|
|
|
|
|
|
|
let s:airline_theme_defined = exists('g:airline_theme')
|
|
|
|
if s:airline_theme_defined || !airline#switch_matching_theme()
|
|
|
|
let g:airline_theme = get(g:, 'airline_theme', 'dark')
|
|
|
|
call airline#switch_theme(g:airline_theme)
|
2013-07-06 17:50:57 +00:00
|
|
|
endif
|
2015-02-20 02:08:21 +00:00
|
|
|
|
|
|
|
silent doautocmd User AirlineAfterInit
|
2013-08-18 18:13:34 +00:00
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! s:on_window_changed()
|
Also draw a nice statusline in the preview window
This fixes issue #858
previously, the the on_window_changed() function returned early when the
popupmenu was visible, which also means, that a new preview window
created by the popup menu would not be rendered correctly until one
moves into this window.
Therefore, I made it not return early, even if the popup menu was opened
to make sure, it will be rendered. However, since the popup menu is
open, this might have unwanted consequences, if some plugin or other
function from airline calls some normal mode command (e.g. wordcount
which should not be enabled for preview windows). So this might break
subtile in other areas later.
An alternative might be to just document the fact, that airline won't
color preview windows at all. But I don't like that either.
2016-01-19 19:48:56 +00:00
|
|
|
if pumvisible() && (!&previewwindow ||
|
|
|
|
\ (g:airline_exclude_preview && &previewwindow))
|
2013-08-25 01:17:16 +00:00
|
|
|
return
|
|
|
|
endif
|
2015-03-04 03:07:23 +00:00
|
|
|
call s:init()
|
2013-07-31 17:37:00 +00:00
|
|
|
call airline#update_statusline()
|
|
|
|
endfunction
|
|
|
|
|
2013-08-18 04:44:13 +00:00
|
|
|
function! s:on_colorscheme_changed()
|
2015-03-04 03:07:23 +00:00
|
|
|
call s:init()
|
2013-08-18 04:44:13 +00:00
|
|
|
if !s:airline_theme_defined
|
|
|
|
if airline#switch_matching_theme()
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
" couldn't find a match, or theme was defined, just refresh
|
|
|
|
call airline#load_theme()
|
|
|
|
endfunction
|
|
|
|
|
2013-08-22 03:25:22 +00:00
|
|
|
function airline#cmdwinenter(...)
|
2013-08-15 19:54:14 +00:00
|
|
|
call airline#extensions#apply_left_override('Command Line', '')
|
|
|
|
endfunction
|
|
|
|
|
2013-08-14 21:56:55 +00:00
|
|
|
function! s:airline_toggle()
|
|
|
|
if exists("#airline")
|
|
|
|
augroup airline
|
|
|
|
au!
|
|
|
|
augroup END
|
|
|
|
augroup! airline
|
2013-08-30 21:58:29 +00:00
|
|
|
|
|
|
|
if exists("s:stl")
|
2013-10-13 22:01:38 +00:00
|
|
|
let &stl = s:stl
|
2013-08-14 21:56:55 +00:00
|
|
|
endif
|
2013-10-13 22:01:38 +00:00
|
|
|
|
|
|
|
silent doautocmd User AirlineToggledOff
|
2013-08-30 21:58:29 +00:00
|
|
|
else
|
2013-10-13 22:01:38 +00:00
|
|
|
let s:stl = &statusline
|
2013-08-30 21:58:29 +00:00
|
|
|
augroup airline
|
|
|
|
autocmd!
|
|
|
|
|
|
|
|
autocmd CmdwinEnter *
|
|
|
|
\ call airline#add_statusline_func('airline#cmdwinenter')
|
|
|
|
\ | call <sid>on_window_changed()
|
|
|
|
autocmd CmdwinLeave * call airline#remove_statusline_func('airline#cmdwinenter')
|
|
|
|
|
|
|
|
autocmd ColorScheme * call <sid>on_colorscheme_changed()
|
2013-08-31 21:42:09 +00:00
|
|
|
autocmd VimEnter,WinEnter,BufWinEnter,FileType,BufUnload,VimResized *
|
2013-08-30 21:58:29 +00:00
|
|
|
\ call <sid>on_window_changed()
|
|
|
|
|
|
|
|
autocmd BufWritePost */autoload/airline/themes/*.vim
|
|
|
|
\ exec 'source '.split(globpath(&rtp, 'autoload/airline/themes/'.g:airline_theme.'.vim', 1), "\n")[0]
|
|
|
|
\ | call airline#load_theme()
|
|
|
|
augroup END
|
2013-10-13 22:01:38 +00:00
|
|
|
|
2015-03-04 03:07:23 +00:00
|
|
|
if s:airline_initialized
|
|
|
|
call s:on_window_changed()
|
|
|
|
endif
|
|
|
|
|
2013-10-13 22:01:38 +00:00
|
|
|
silent doautocmd User AirlineToggledOn
|
2013-08-30 21:58:29 +00:00
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! s:get_airline_themes(a, l, p)
|
|
|
|
let files = split(globpath(&rtp, 'autoload/airline/themes/'.a:a.'*'), "\n")
|
|
|
|
return map(files, 'fnamemodify(v:val, ":t:r")')
|
|
|
|
endfunction
|
2015-02-20 02:08:21 +00:00
|
|
|
|
2013-08-30 21:58:29 +00:00
|
|
|
function! s:airline_theme(...)
|
|
|
|
if a:0
|
|
|
|
call airline#switch_theme(a:1)
|
|
|
|
else
|
|
|
|
echo g:airline_theme
|
|
|
|
endif
|
|
|
|
endfunction
|
2015-02-20 02:08:21 +00:00
|
|
|
|
2015-04-24 18:26:44 +00:00
|
|
|
command! -bar -nargs=? -complete=customlist,<sid>get_airline_themes AirlineTheme call <sid>airline_theme(<f-args>)
|
|
|
|
command! -bar AirlineToggleWhitespace call airline#extensions#whitespace#toggle()
|
|
|
|
command! -bar AirlineToggle call s:airline_toggle()
|
|
|
|
command! -bar AirlineRefresh call airline#load_theme() | call airline#update_statusline()
|
2013-07-10 19:55:55 +00:00
|
|
|
|
2015-02-26 21:15:39 +00:00
|
|
|
call airline#init#bootstrap()
|
2015-03-04 03:07:23 +00:00
|
|
|
call s:airline_toggle()
|
2015-02-26 21:15:39 +00:00
|
|
|
|
2015-02-20 02:08:21 +00:00
|
|
|
autocmd VimEnter * call airline#deprecation#check()
|
2015-03-04 03:07:23 +00:00
|
|
|
|