2013-08-02 17:56:12 +00:00
" MIT license. Copyright (c) 2013 Bailey Ling.
2013-07-04 15:39:49 +00:00
" vim: ts=2 sts=2 sw=2 fdm=indent
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-07-02 11:14:55 +00:00
function ! s :check_defined ( variable , default )
if ! exists ( a :variable )
let {a :variable } = a :default
endif
endfunction
2013-07-27 22:15:00 +00:00
if exists ( 'g:airline_enable_fugitive' ) | | exists ( 'g:airline_fugitive_prefix' )
echom 'The g:airline_enable_fugitive and g:airline_fugitive_prefix variables have been deprecated and renamed to g:airline_enable_branch and g:airline_branch_prefix respectively. Please update your vimrc.'
endif
2013-08-03 15:14:02 +00:00
if exists ( 'g:airline_window_override_funcrefs' )
echom 'The g:airline_window_override_funcrefs variable has been deprecated. Please use g:airline_statusline_funcrefs instead.'
endif
2013-07-02 11:14:55 +00:00
call s :check_defined ( 'g:airline_left_sep' , exists ( 'g:airline_powerline_fonts' ) ?"" :">" )
2013-07-07 22:37:50 +00:00
call s :check_defined ( 'g:airline_left_alt_sep' , exists ( 'g:airline_powerline_fonts' ) ?"" :">" )
2013-07-02 11:14:55 +00:00
call s :check_defined ( 'g:airline_right_sep' , exists ( 'g:airline_powerline_fonts' ) ?"" :"<" )
2013-07-07 22:37:50 +00:00
call s :check_defined ( 'g:airline_right_alt_sep' , exists ( 'g:airline_powerline_fonts' ) ?"" :"<" )
2013-07-03 21:20:49 +00:00
call s :check_defined ( 'g:airline_enable_bufferline' , 1 )
2013-07-27 22:15:00 +00:00
call s :check_defined ( 'g:airline_enable_branch' , 1 )
2013-07-02 11:14:55 +00:00
call s :check_defined ( 'g:airline_enable_syntastic' , 1 )
2013-07-31 20:07:14 +00:00
call s :check_defined ( 'g:airline_enable_tagbar' , 1 )
2013-07-25 01:48:23 +00:00
call s :check_defined ( 'g:airline_detect_iminsert' , 0 )
2013-07-22 21:23:41 +00:00
call s :check_defined ( 'g:airline_detect_modified' , 1 )
call s :check_defined ( 'g:airline_detect_paste' , 1 )
2013-07-27 22:15:00 +00:00
call s :check_defined ( 'g:airline_branch_prefix' , exists ( 'g:airline_powerline_fonts' ) ?' ' :'' )
2013-07-02 11:14:55 +00:00
call s :check_defined ( 'g:airline_readonly_symbol' , exists ( 'g:airline_powerline_fonts' ) ?'' :'RO' )
call s :check_defined ( 'g:airline_linecolumn_prefix' , exists ( 'g:airline_powerline_fonts' ) ?' ' :':' )
2013-07-07 15:48:44 +00:00
call s :check_defined ( 'g:airline_paste_symbol' , ( exists ( 'g:airline_powerline_fonts' ) ? ' ' : '' ) .'PASTE' )
2013-07-04 16:56:03 +00:00
call s :check_defined ( 'g:airline_theme' , 'dark' )
2013-07-02 11:14:55 +00:00
call s :check_defined ( 'g:airline_exclude_filenames' , ['DebuggerWatch' , 'DebuggerStack' , 'DebuggerStatus' ])
2013-07-09 02:52:07 +00:00
call s :check_defined ( 'g:airline_exclude_filetypes' , [])
2013-07-14 19:44:16 +00:00
call s :check_defined ( 'g:airline_exclude_preview' , 0 )
2013-08-03 15:14:02 +00:00
call s :check_defined ( 'g:airline_statusline_funcrefs' , [])
2013-07-25 22:29:18 +00:00
call s :check_defined ( 'g:airline_exclude_funcrefs' , [])
2013-06-30 19:29:35 +00:00
2013-07-04 15:39:49 +00:00
call s :check_defined ( 'g:airline_mode_map' , {
\ 'n' : 'NORMAL' ,
\ 'i' : 'INSERT' ,
2013-07-26 17:21:43 +00:00
\ 'R' : 'REPLACE' ,
2013-07-04 15:39:49 +00:00
\ 'v' : 'VISUAL' ,
\ 'V' : 'V-LINE' ,
\ 'c' : 'CMD ' ,
2013-07-26 17:21:43 +00:00
\ ' ' : 'V-BLOCK' ,
2013-07-04 15:39:49 +00:00
\ })
2013-07-07 12:58:39 +00:00
let s :airline_initialized = 0
2013-07-31 17:37:00 +00:00
let s :active_winnr = -1
function ! s :on_window_changed ( )
let s :active_winnr = winnr ( )
2013-07-07 12:58:39 +00:00
if ! s :airline_initialized
2013-07-07 12:41:36 +00:00
call airline #extensions #load ( )
2013-07-10 22:17:39 +00:00
call airline #load_theme ( g :airline_theme )
2013-07-25 22:09:17 +00:00
call s :check_defined ( 'g:airline_section_a' , '%{g:airline_current_mode_text}' )
2013-07-27 22:15:00 +00:00
call s :check_defined ( 'g:airline_section_b' , '%{g:airline_externals_branch}' )
2013-07-06 17:50:57 +00:00
call s :check_defined ( 'g:airline_section_c' , g :airline_externals_bufferline )
2013-08-03 15:23:45 +00:00
call s :check_defined ( 'g:airline_section_gutter' , g :airline_externals_syntastic )
2013-08-03 00:50:06 +00:00
call s :check_defined ( 'g:airline_section_x' , g :airline_externals_tagbar ."%{strlen(&filetype)>0?&filetype:''}" )
2013-07-06 17:50:57 +00:00
call s :check_defined ( 'g:airline_section_y' , "%{strlen(&fenc)>0?&fenc:''}%{strlen(&ff)>0?'['.&ff.']':''}" )
call s :check_defined ( 'g:airline_section_z' , '%3p%% ' .g :airline_linecolumn_prefix .'%3l:%3c' )
2013-07-07 12:58:39 +00:00
let s :airline_initialized = 1
2013-07-06 17:50:57 +00:00
endif
2013-07-31 17:37:00 +00:00
call airline #update_statusline ( )
endfunction
" non-trivial number of external plugins use eventignore=all, so we need to account for that
function ! s :sync_active_winnr ( )
if winnr ( ) ! = s :active_winnr
2013-08-03 23:44:50 +00:00
" prevent ctrlp statusline from getting overwritten
2013-08-04 15:34:57 +00:00
if get ( g :, 'loaded_ctrlp' , 0 ) && match ( &statusline , 'CtrlPlight' ) > = 0
2013-08-03 23:44:50 +00:00
return
endif
2013-07-31 19:37:35 +00:00
call s :on_window_changed ( )
2013-07-31 17:37:00 +00:00
endif
2013-07-06 17:50:57 +00:00
endfunction
2013-07-03 21:05:35 +00:00
2013-07-10 19:55:55 +00:00
function ! s :get_airline_themes ( a , l , p )
2013-07-10 22:17:39 +00:00
let files = split ( globpath ( &rtp , 'autoload/airline/themes/' .a :a .'*' ) , "\n" )
2013-07-10 19:55:55 +00:00
return map ( files , 'fnamemodify(v:val, ":t:r")' )
endfunction
2013-07-11 01:40:38 +00:00
function ! s :airline_theme ( ...)
if a :0
call airline #load_theme ( a :1 )
2013-07-11 03:03:27 +00:00
else
echo g :airline_theme
2013-07-11 01:40:38 +00:00
endif
endfunction
command ! - nargs = ? - complete = customlist , < sid > get_airline_themes AirlineTheme call < sid > airline_theme ( < f - args > )
2013-07-10 19:55:55 +00:00
2013-06-30 19:29:35 +00:00
augroup airline
2013-08-03 14:59:34 +00:00
autocmd !
2013-07-07 12:58:39 +00:00
autocmd ColorScheme * call airline #highlight ( ['normal' ])
2013-08-03 14:59:34 +00:00
autocmd WinEnter , BufWinEnter , FileType , BufUnload , ShellCmdPost *
\ call < sid > on_window_changed ( )
2013-07-31 17:37:00 +00:00
autocmd CursorMoved * call < sid > sync_active_winnr ( )
2013-06-30 19:29:35 +00:00
augroup END