mirror of
https://github.com/powerline/powerline.git
synced 2025-07-25 06:46:33 +02:00
Merge pull request #896 from ZyX-I/fix-vim-environment
Fix typo in VimRenderer.render Ref jmcantrell/vim-virtualenv#26.
This commit is contained in:
commit
1dd5f42b9d
@ -30,6 +30,9 @@ class VimRenderer(Renderer):
|
|||||||
character_translations = Renderer.character_translations.copy()
|
character_translations = Renderer.character_translations.copy()
|
||||||
character_translations[ord('%')] = '%%'
|
character_translations[ord('%')] = '%%'
|
||||||
|
|
||||||
|
segment_info = Renderer.segment_info.copy()
|
||||||
|
segment_info.update(environ=environ)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
if not hasattr(vim, 'strwidth'):
|
if not hasattr(vim, 'strwidth'):
|
||||||
# Hope nobody want to change this at runtime
|
# Hope nobody want to change this at runtime
|
||||||
@ -84,16 +87,15 @@ class VimRenderer(Renderer):
|
|||||||
mode = mode_translations.get(mode, mode)
|
mode = mode_translations.get(mode, mode)
|
||||||
else:
|
else:
|
||||||
mode = 'nc'
|
mode = 'nc'
|
||||||
segment_info = {
|
segment_info = self.segment_info.copy()
|
||||||
|
segment_info.update({
|
||||||
'window': window,
|
'window': window,
|
||||||
'mode': mode,
|
'mode': mode,
|
||||||
'window_id': window_id,
|
'window_id': window_id,
|
||||||
'winnr': winnr,
|
'winnr': winnr,
|
||||||
'environ': environ,
|
})
|
||||||
}
|
|
||||||
segment_info['buffer'] = segment_info['window'].buffer
|
segment_info['buffer'] = segment_info['window'].buffer
|
||||||
segment_info['bufnr'] = segment_info['buffer'].number
|
segment_info['bufnr'] = segment_info['buffer'].number
|
||||||
segment_info.update(self.segment_info)
|
|
||||||
winwidth = segment_info['window'].width
|
winwidth = segment_info['window'].width
|
||||||
statusline = super(VimRenderer, self).render(
|
statusline = super(VimRenderer, self).render(
|
||||||
mode=mode,
|
mode=mode,
|
||||||
|
@ -23,8 +23,8 @@ def _override_from(config, override_varname):
|
|||||||
|
|
||||||
|
|
||||||
class VimPowerline(Powerline):
|
class VimPowerline(Powerline):
|
||||||
def __init__(self, pyeval='PowerlinePyeval'):
|
def __init__(self, pyeval='PowerlinePyeval', **kwargs):
|
||||||
super(VimPowerline, self).__init__('vim')
|
super(VimPowerline, self).__init__('vim', **kwargs)
|
||||||
self.last_window_id = 1
|
self.last_window_id = 1
|
||||||
self.window_statusline = '%!' + pyeval + '(\'powerline.statusline({0})\')'
|
self.window_statusline = '%!' + pyeval + '(\'powerline.statusline({0})\')'
|
||||||
|
|
||||||
|
@ -121,16 +121,23 @@ renderer = SimpleRenderer
|
|||||||
|
|
||||||
|
|
||||||
def get_powerline(**kwargs):
|
def get_powerline(**kwargs):
|
||||||
|
return get_powerline_raw(
|
||||||
|
TestPowerline,
|
||||||
|
ext='test',
|
||||||
|
renderer_module='tests.lib.config_mock',
|
||||||
|
logger=Logger(),
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_powerline_raw(PowerlineClass, **kwargs):
|
||||||
global renderer
|
global renderer
|
||||||
watcher = Watcher()
|
watcher = Watcher()
|
||||||
if kwargs.pop('simpler_renderer', False):
|
if kwargs.pop('simpler_renderer', False):
|
||||||
renderer = EvenSimplerRenderer
|
renderer = EvenSimplerRenderer
|
||||||
else:
|
else:
|
||||||
renderer = SimpleRenderer
|
renderer = SimpleRenderer
|
||||||
pl = TestPowerline(
|
pl = PowerlineClass(
|
||||||
ext='test',
|
|
||||||
renderer_module='tests.lib.config_mock',
|
|
||||||
logger=Logger(),
|
|
||||||
config_loader=ConfigLoader(load=load_json_config, watcher=watcher, run_once=kwargs.get('run_once')),
|
config_loader=ConfigLoader(load=load_json_config, watcher=watcher, run_once=kwargs.get('run_once')),
|
||||||
**kwargs
|
**kwargs
|
||||||
)
|
)
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
from __future__ import unicode_literals, absolute_import, division
|
from __future__ import unicode_literals, absolute_import, division
|
||||||
|
import tests.vim as vim_module
|
||||||
import powerline as powerline_module
|
import powerline as powerline_module
|
||||||
from tests import TestCase
|
from tests import TestCase
|
||||||
from tests.lib import replace_item
|
from tests.lib import replace_item
|
||||||
from tests.lib.config_mock import swap_attributes, get_powerline, pop_events
|
from tests.lib.config_mock import swap_attributes, get_powerline, pop_events
|
||||||
|
from tests.lib.config_mock import get_powerline_raw
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
@ -29,6 +33,10 @@ config = {
|
|||||||
'theme': 'default',
|
'theme': 'default',
|
||||||
'colorscheme': 'default',
|
'colorscheme': 'default',
|
||||||
},
|
},
|
||||||
|
'vim': {
|
||||||
|
'theme': 'default',
|
||||||
|
'colorscheme': 'default',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'colors': {
|
'colors': {
|
||||||
@ -47,6 +55,11 @@ config = {
|
|||||||
'str2': {'fg': 'col3', 'bg': 'col4', 'attr': ['underline']},
|
'str2': {'fg': 'col3', 'bg': 'col4', 'attr': ['underline']},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'colorschemes/vim/default': {
|
||||||
|
'groups': {
|
||||||
|
'environment': {'fg': 'col3', 'bg': 'col4', 'attr': ['underline']},
|
||||||
|
},
|
||||||
|
},
|
||||||
'themes/test/default': {
|
'themes/test/default': {
|
||||||
'segments': {
|
'segments': {
|
||||||
'left': [
|
'left': [
|
||||||
@ -73,6 +86,19 @@ config = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'themes/vim/default': {
|
||||||
|
'default_module': 'powerline.segments.common',
|
||||||
|
'segments': {
|
||||||
|
'left': [
|
||||||
|
{
|
||||||
|
'name': 'environment',
|
||||||
|
'args': {
|
||||||
|
'variable': 'TEST',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -122,15 +148,34 @@ class TestSingleLine(TestCase):
|
|||||||
], width=10)
|
], width=10)
|
||||||
|
|
||||||
|
|
||||||
|
class TestVim(TestCase):
|
||||||
|
def test_environ_update(self):
|
||||||
|
# Regression test: test that segment obtains environment from vim, not
|
||||||
|
# from os.environ.
|
||||||
|
from powerline.vim import VimPowerline
|
||||||
|
with vim_module._with('environ', TEST='abc'):
|
||||||
|
with get_powerline_raw(VimPowerline) as powerline:
|
||||||
|
window = vim_module.current.window
|
||||||
|
window_id = 1
|
||||||
|
winnr = window.number
|
||||||
|
self.assertEqual(powerline.render(window, window_id, winnr), '%#Pl_3_8404992_4_192_underline#\xa0abc%#Pl_4_192_NONE_None_NONE#>>')
|
||||||
|
vim_module._environ['TEST'] = 'def'
|
||||||
|
self.assertEqual(powerline.render(window, window_id, winnr), '%#Pl_3_8404992_4_192_underline#\xa0def%#Pl_4_192_NONE_None_NONE#>>')
|
||||||
|
|
||||||
|
|
||||||
replaces = {}
|
replaces = {}
|
||||||
|
|
||||||
|
|
||||||
def setUpModule():
|
def setUpModule():
|
||||||
global replaces
|
global replaces
|
||||||
replaces = swap_attributes(globals(), powerline_module, replaces)
|
replaces = swap_attributes(globals(), powerline_module, replaces)
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'path')))
|
||||||
|
|
||||||
|
|
||||||
tearDownModule = setUpModule
|
def tearDownModule():
|
||||||
|
global replaces
|
||||||
|
replaces = swap_attributes(globals(), powerline_module, replaces)
|
||||||
|
sys.path.pop(0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -11,6 +11,9 @@ options = {
|
|||||||
}
|
}
|
||||||
_last_bufnr = 0
|
_last_bufnr = 0
|
||||||
_highlights = {}
|
_highlights = {}
|
||||||
|
from collections import defaultdict as _defaultdict
|
||||||
|
_environ = _defaultdict(lambda: '')
|
||||||
|
del _defaultdict
|
||||||
|
|
||||||
|
|
||||||
_thread_id = None
|
_thread_id = None
|
||||||
@ -169,6 +172,8 @@ def eval(expr):
|
|||||||
return vars[expr[2:]]
|
return vars[expr[2:]]
|
||||||
elif expr.startswith('&'):
|
elif expr.startswith('&'):
|
||||||
return options[expr[1:]]
|
return options[expr[1:]]
|
||||||
|
elif expr.startswith('$'):
|
||||||
|
return _environ[expr[1:]]
|
||||||
elif expr.startswith('PowerlineRegisterCachePurgerEvent'):
|
elif expr.startswith('PowerlineRegisterCachePurgerEvent'):
|
||||||
_buf_purge_events.add(expr[expr.find('"') + 1:expr.rfind('"') - 1])
|
_buf_purge_events.add(expr[expr.find('"') + 1:expr.rfind('"') - 1])
|
||||||
return '0'
|
return '0'
|
||||||
@ -708,6 +713,8 @@ def _with(key, *args, **kwargs):
|
|||||||
return _WithDict(options, **kwargs)
|
return _WithDict(options, **kwargs)
|
||||||
elif key == 'globals':
|
elif key == 'globals':
|
||||||
return _WithDict(vars, **kwargs)
|
return _WithDict(vars, **kwargs)
|
||||||
|
elif key == 'environ':
|
||||||
|
return _WithDict(_environ, **kwargs)
|
||||||
elif key == 'split':
|
elif key == 'split':
|
||||||
return _WithSplit()
|
return _WithSplit()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user