Изменить цветовую схему vim-airline через плагин vim-sunset

Недавно я обнаружил два очень полезных плагина VIM, а именно vim-sunset (http://vimawesome.com/plugin/sunset) и vim-airline (http://vimawesome.com/plugin/vim-airline-sad-beautiful-tragic). Изменить цветовую схему с помощью vim-sunset было легко, но я бы хотел, чтобы он также менял цвета в моей авиакомпании. Я пытался добиться этого с помощью

function! Sunset_daytime_callback()
  
  " Version 1
  let g:airline_theme = 'airline_theme_light'

  " Version 2
  colorscheme vim_colorscheme_light
  autocmd ColorScheme * :AirlineTheme airline_theme_light
  
  " Version 3
  autocmd ColorScheme * :AirlineTheme airline_theme_light
  colorscheme vim_colorscheme_light
  
endfunction

(то же самое для Sunset_nighttime_callback())

Проблемы следующие:

  • Версия 1: я предполагаю, что переменная airline_theme установлена ​​правильно, но не обновляется. Кроме того, я не смог найти в документации авиакомпании ни одной функции, в которой упоминалось бы, как «перерисовывать» с новыми параметрами.
  • Версия 2: Этот вид работает, но я должен дважды вызвать функцию Sunset_daytime_callback(), чтобы также обновить Powerline.
  • Версия 3: ломается, потому что команда плагина :AirlineTheme еще не готова, когда .vimrc выполняется впервые

Есть ли (возможно, элегантное) решение, как заставить это работать? Возможно, я просто пропустил функцию в плагине авиакомпании, которая просто перерисовывает линию?

Спасибо за вашу помощь!


person mattu    schedule 01.06.2015    source источник


Ответы (1)


Итак, я сам нашел решение: ключ в том, чтобы проверить, загружен ли уже плагин авиакомпании при попытке установить цветовую схему авиакомпании. Теперь это выглядит примерно так:

function! Sunset_daytime_callback()

  " This Works :)
  colorscheme vim_colorscheme_light
  if exists(':AirlineTheme') " check if the plugin is loaded
      :AirlineTheme light
  else
      let g:airline_theme = 'light'
  endif

endfunction

person mattu    schedule 17.06.2015