parent
9cab9d6fff
commit
5c4d75f952
|
@ -136,6 +136,12 @@ else:
|
||||||
if hasattr(vim, 'tabpages'):
|
if hasattr(vim, 'tabpages'):
|
||||||
current_tabpage = lambda: vim.current.tabpage
|
current_tabpage = lambda: vim.current.tabpage
|
||||||
list_tabpages = lambda: vim.tabpages
|
list_tabpages = lambda: vim.tabpages
|
||||||
|
|
||||||
|
def list_tabpage_buffers_segment_info(segment_info):
|
||||||
|
return (
|
||||||
|
{'buffer': window.buffer, 'bufnr': window.buffer.number}
|
||||||
|
for window in segment_info['tabpage'].windows
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
class FalseObject(object):
|
class FalseObject(object):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -205,6 +211,24 @@ else:
|
||||||
def list_tabpages(): # NOQA
|
def list_tabpages(): # NOQA
|
||||||
return [Tabpage(nr) for nr in range(1, _last_tab_nr() + 1)]
|
return [Tabpage(nr) for nr in range(1, _last_tab_nr() + 1)]
|
||||||
|
|
||||||
|
class TabBufSegmentInfo(dict):
|
||||||
|
def __getitem__(self, key):
|
||||||
|
try:
|
||||||
|
return super(TabBufSegmentInfo, self).__getitem__(key)
|
||||||
|
except KeyError:
|
||||||
|
if key != 'buffer':
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
buffer = get_buffer(super(TabBufSegmentInfo, self).__getitem__('bufnr'))
|
||||||
|
self['buffer'] = buffer
|
||||||
|
return buffer
|
||||||
|
|
||||||
|
def list_tabpage_buffers_segment_info(segment_info):
|
||||||
|
return (
|
||||||
|
TabBufSegmentInfo(bufnr=int(bufnrstr))
|
||||||
|
for bufnrstr in vim.eval('tabpagebuflist({0})'.format(segment_info['tabnr']))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VimEnviron(object):
|
class VimEnviron(object):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -15,7 +15,8 @@ from collections import defaultdict
|
||||||
from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption,
|
from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption,
|
||||||
buffer_name, vim_getwinvar,
|
buffer_name, vim_getwinvar,
|
||||||
register_buffer_cache, current_tabpage,
|
register_buffer_cache, current_tabpage,
|
||||||
list_tabpages)
|
list_tabpages,
|
||||||
|
list_tabpage_buffers_segment_info)
|
||||||
from powerline.theme import requires_segment_info, requires_filesystem_watcher
|
from powerline.theme import requires_segment_info, requires_filesystem_watcher
|
||||||
from powerline.lib import add_divider_highlight_group
|
from powerline.lib import add_divider_highlight_group
|
||||||
from powerline.lib.vcs import guess, tree_status
|
from powerline.lib.vcs import guess, tree_status
|
||||||
|
@ -176,13 +177,10 @@ def tab_modified_indicator(pl, segment_info, text='+'):
|
||||||
|
|
||||||
Highlight groups used: ``tab_modified_indicator`` or ``modified_indicator``.
|
Highlight groups used: ``tab_modified_indicator`` or ``modified_indicator``.
|
||||||
'''
|
'''
|
||||||
if 'tabpage' in segment_info:
|
for buf_segment_info in list_tabpage_buffers_segment_info(segment_info):
|
||||||
buffers = [dict(buffer=w.buffer) for w in segment_info['tabpage'].windows]
|
if int(vim_getbufoption(buf_segment_info, 'modified')):
|
||||||
modified = [int(vim_getbufoption(buf, 'modified')) != 0 for buf in buffers]
|
|
||||||
ret = text if reduce(lambda x, y: x or y, modified) else None
|
|
||||||
if ret:
|
|
||||||
return [{
|
return [{
|
||||||
'contents': ret,
|
'contents': text,
|
||||||
'highlight_group': ['tab_modified_indicator', 'modified_indicator'],
|
'highlight_group': ['tab_modified_indicator', 'modified_indicator'],
|
||||||
}]
|
}]
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue