diff --git a/autoload/airline.vim b/autoload/airline.vim index a2417923..83b7dfa2 100644 --- a/autoload/airline.vim +++ b/autoload/airline.vim @@ -71,14 +71,20 @@ endfunction function! airline#switch_matching_theme() if exists('g:colors_name') + let existing = g:airline_theme try let palette = g:airline#themes#{g:colors_name}#palette - silent call airline#switch_theme(g:colors_name) + call airline#switch_theme(g:colors_name) return 1 catch for map in items(g:airline_theme_map) if match(g:colors_name, map[0]) > -1 - silent call airline#switch_theme(map[1]) + try + let palette = g:airline#themes#{map[1]}#palette + call airline#switch_theme(map[1]) + catch + call airline#switch_theme(existing) + endtry return 1 endif endfor diff --git a/plugin/airline.vim b/plugin/airline.vim index de28d647..d4385c44 100644 --- a/plugin/airline.vim +++ b/plugin/airline.vim @@ -8,7 +8,6 @@ let g:loaded_airline = 1 let s:airline_initialized = 0 function! s:init() - let s:airline_theme_defined = exists('g:airline_theme') if s:airline_initialized return endif @@ -17,18 +16,18 @@ function! s:init() call airline#extensions#load() call airline#init#sections() - if !s:airline_theme_defined - let g:airline_theme = 'dark' - let s:airline_theme_defined = 1 - endif - if s:airline_theme_defined || !airline#switch_matching_theme() + let s:theme_in_vimrc = exists('g:airline_theme') + if s:theme_in_vimrc try let palette = g:airline#themes#{g:airline_theme}#palette catch echom 'Could not resolve airline theme "' . g:airline_theme . '". Themes have been migrated to github.com/vim-airline/vim-airline-themes.' let g:airline_theme = 'dark' endtry - call airline#switch_theme(g:airline_theme) + silent call airline#switch_theme(g:airline_theme) + else + let g:airline_theme = 'dark' + silent call s:on_colorscheme_changed() endif silent doautocmd User AirlineAfterInit @@ -44,10 +43,8 @@ endfunction function! s:on_colorscheme_changed() call s:init() - if !s:airline_theme_defined - if airline#switch_matching_theme() - return - endif + if !s:theme_in_vimrc + call airline#switch_matching_theme() endif " couldn't find a match, or theme was defined, just refresh