diff --git a/powerline/bindings/vim/__init__.py b/powerline/bindings/vim/__init__.py index 46ae29a5..da2a0c46 100644 --- a/powerline/bindings/vim/__init__.py +++ b/powerline/bindings/vim/__init__.py @@ -79,3 +79,21 @@ else: if type(r) is bytes: return r.decode('utf-8') return r + + +class VimEnviron(object): + @staticmethod + def __getitem__(key): + return vim.eval('$' + key) + + @staticmethod + def get(key, default=None): + return vim.eval('$' + key) or default + + @staticmethod + def __setitem__(key, value): + return vim.command('let $' + key + '="' + + value.replace('"', '\\"').replace('\\', '\\\\').replace('\n', '\\n').replace('\0', '') + + '"') + +environ = VimEnviron() diff --git a/powerline/renderers/vim.py b/powerline/renderers/vim.py index d30529f3..8e8fb0e9 100644 --- a/powerline/renderers/vim.py +++ b/powerline/renderers/vim.py @@ -2,7 +2,7 @@ from __future__ import absolute_import -from powerline.bindings.vim import vim_get_func +from powerline.bindings.vim import vim_get_func, environ from powerline.renderer import Renderer from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE from powerline.theme import Theme @@ -80,6 +80,7 @@ class VimRenderer(Renderer): 'mode': mode, 'window_id': window_id, 'winnr': winnr, + 'environ': environ, } segment_info['buffer'] = segment_info['window'].buffer segment_info['bufnr'] = segment_info['buffer'].number