Always specify all keys in segment_info

This commit is contained in:
ZyX 2014-08-22 20:39:31 +04:00
parent da48e9d84e
commit 6481f1b65e
3 changed files with 25 additions and 29 deletions

View File

@ -84,15 +84,16 @@ class VimRenderer(Renderer):
def get_segment_info(self, segment_info, mode): def get_segment_info(self, segment_info, mode):
return segment_info or self.segment_info return segment_info or self.segment_info
def render(self, window=None, window_id=None, winnr=None): def render(self, window=None, window_id=None, winnr=None, is_tabline=False):
'''Render all segments.''' '''Render all segments.'''
segment_info = self.segment_info.copy() segment_info = self.segment_info.copy()
if window is not None:
if window is vim.current.window: if window is vim.current.window:
mode = vim_mode(1) mode = vim_mode(1)
mode = mode_translations.get(mode, mode) mode = mode_translations.get(mode, mode)
else: else:
mode = 'nc' mode = 'nc'
segment_info.update( segment_info.update(
window=window, window=window,
mode=mode, mode=mode,
@ -104,16 +105,12 @@ class VimRenderer(Renderer):
segment_info['tabnr'] = segment_info['tabpage'].number segment_info['tabnr'] = segment_info['tabpage'].number
segment_info['bufnr'] = segment_info['buffer'].number segment_info['bufnr'] = segment_info['buffer'].number
winwidth = segment_info['window'].width winwidth = segment_info['window'].width
matcher_info = segment_info
else:
mode = None
winwidth = int(vim.eval('&columns'))
matcher_info = None
statusline = super(VimRenderer, self).render( statusline = super(VimRenderer, self).render(
mode=mode, mode=mode,
width=winwidth, width=winwidth,
segment_info=segment_info, segment_info=segment_info,
matcher_info=matcher_info, matcher_info=(None if is_tabline else segment_info),
) )
return statusline return statusline

View File

@ -4,7 +4,7 @@ from __future__ import absolute_import
import sys import sys
from powerline.bindings.vim import vim_get_func, vim_getvar from powerline.bindings.vim import vim_get_func, vim_getvar
from powerline import Powerline from powerline import Powerline, FailedUnicode
from powerline.lib import mergedicts from powerline.lib import mergedicts
import vim import vim
from itertools import count from itertools import count
@ -228,15 +228,14 @@ class VimPowerline(Powerline):
def statusline(self, window_id): def statusline(self, window_id):
window, window_id, winnr = self.win_idx(window_id) or (None, None, None) window, window_id, winnr = self.win_idx(window_id) or (None, None, None)
if not window: if not window:
return 'No window {0}'.format(window_id) return FailedUnicode('No window {0}'.format(window_id))
return self.render(window, window_id, winnr) return self.render(window, window_id, winnr)
def tabline(self): def tabline(self):
return self.render() return self.render(*self.win_idx(None), is_tabline=True)
def new_window(self): def new_window(self):
window, window_id, winnr = self.win_idx(None) return self.render(*self.win_idx(None))
return self.render(window, window_id, winnr)
if not hasattr(vim, 'bindeval'): if not hasattr(vim, 'bindeval'):
# Method for PowerlinePyeval function. Is here to reduce the number of # Method for PowerlinePyeval function. Is here to reduce the number of

View File

@ -53,7 +53,7 @@ class TestConfig(TestCase):
outputs[out] = (i, (args, kwargs), mode) outputs[out] = (i, (args, kwargs), mode)
with vim_module._with('bufname', '/tmp/foo.txt'): with vim_module._with('bufname', '/tmp/foo.txt'):
out = powerline.render() out = powerline.render(vim_module.current.window, 1, vim_module.current.window.number, is_tabline=True)
outputs[out] = (-1, (None, None), 'tab') outputs[out] = (-1, (None, None), 'tab')
with vim_module._with('globals', powerline_config_path=cfg_path): with vim_module._with('globals', powerline_config_path=cfg_path):
exclude = set(('no', 'v', 'V', VBLOCK, 's', 'S', SBLOCK, 'R', 'Rv', 'c', 'cv', 'ce', 'r', 'rm', 'r?', '!')) exclude = set(('no', 'v', 'V', VBLOCK, 's', 'S', SBLOCK, 'R', 'Rv', 'c', 'cv', 'ce', 'r', 'rm', 'r?', '!'))