parent
9cab9d6fff
commit
5c4d75f952
|
@ -136,6 +136,12 @@ else:
|
|||
if hasattr(vim, 'tabpages'):
|
||||
current_tabpage = lambda: vim.current.tabpage
|
||||
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:
|
||||
class FalseObject(object):
|
||||
@staticmethod
|
||||
|
@ -205,6 +211,24 @@ else:
|
|||
def list_tabpages(): # NOQA
|
||||
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):
|
||||
@staticmethod
|
||||
|
|
|
@ -15,7 +15,8 @@ from collections import defaultdict
|
|||
from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption,
|
||||
buffer_name, vim_getwinvar,
|
||||
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.lib import add_divider_highlight_group
|
||||
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``.
|
||||
'''
|
||||
if 'tabpage' in segment_info:
|
||||
buffers = [dict(buffer=w.buffer) for w in segment_info['tabpage'].windows]
|
||||
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:
|
||||
for buf_segment_info in list_tabpage_buffers_segment_info(segment_info):
|
||||
if int(vim_getbufoption(buf_segment_info, 'modified')):
|
||||
return [{
|
||||
'contents': ret,
|
||||
'contents': text,
|
||||
'highlight_group': ['tab_modified_indicator', 'modified_indicator'],
|
||||
}]
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue