From 7ace10651f8f9c9eab89b3a254aff523d6936c49 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Wed, 20 Jan 2016 20:02:21 +0100 Subject: [PATCH] Make the virtualenv extension work better This fixes #511 It allows the virtualenv plugin to call back and tell the airline plugin to update the statusline. Therefore, the new function airline#extensions#virtualenv#update() is provided. However, to properly fix this issue, the virtualenv plugin needs to call this function. Second, depending on $VIRTUAL_ENV is not safe, since the virtualenv plugin might define it itsself when calling :VirtualEnvActivate Therefore skip this test and just test for existance of he :VirtualEnvList command. --- autoload/airline/extensions.vim | 2 +- autoload/airline/extensions/virtualenv.vim | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/autoload/airline/extensions.vim b/autoload/airline/extensions.vim index 39571d2..be922a1 100644 --- a/autoload/airline/extensions.vim +++ b/autoload/airline/extensions.vim @@ -189,7 +189,7 @@ function! airline#extensions#load() call airline#extensions#bufferline#init(s:ext) endif - if isdirectory($VIRTUAL_ENV) && get(g:, 'airline#extensions#virtualenv#enabled', 1) + if (get(g:, 'airline#extensions#virtualenv#enabled', 1) && exists(':VirtualEnvList')) call airline#extensions#virtualenv#init(s:ext) endif diff --git a/autoload/airline/extensions/virtualenv.vim b/autoload/airline/extensions/virtualenv.vim index 4646424..00a0c02 100644 --- a/autoload/airline/extensions/virtualenv.vim +++ b/autoload/airline/extensions/virtualenv.vim @@ -1,10 +1,6 @@ " MIT License. Copyright (c) 2013-2016 Bailey Ling. " vim: et ts=2 sts=2 sw=2 -if !isdirectory($VIRTUAL_ENV) - finish -endif - let s:spc = g:airline_symbols.space function! airline#extensions#virtualenv#init(ext) @@ -12,14 +8,22 @@ function! airline#extensions#virtualenv#init(ext) endfunction function! airline#extensions#virtualenv#apply(...) - if &filetype =~ "python" + if &filetype =~# "python" if get(g:, 'virtualenv_loaded', 0) let statusline = virtualenv#statusline() else let statusline = fnamemodify($VIRTUAL_ENV, ':t') endif - call airline#extensions#append_to_section('x', - \ s:spc.g:airline_right_alt_sep.s:spc.statusline) + if !empty(statusline) + call airline#extensions#append_to_section('x', + \ s:spc.g:airline_right_alt_sep.s:spc.statusline) + endif endif endfunction +function! airline#extensions#virtualenv#update() + if &filetype =~# "python" + call airline#extensions#virtualenv#apply() + call airline#update_statusline() + endif +endfunction