From 96e297cc6efd65f9b7a02d2b3b27d73ef9f44ce5 Mon Sep 17 00:00:00 2001 From: Jan Losinski Date: Mon, 18 Aug 2014 17:33:16 +0200 Subject: [PATCH] Add tab_modified_indicator to the vim segments This indicates in the tabline that any of the open buffers in a tab page has unsaved modifications (like the default tabline do). Signed-off-by: Jan Losinski --- .../config_files/themes/vim/tabline.json | 5 +++++ powerline/segments/vim/__init__.py | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/powerline/config_files/themes/vim/tabline.json b/powerline/config_files/themes/vim/tabline.json index 42aed081..79b145fa 100644 --- a/powerline/config_files/themes/vim/tabline.json +++ b/powerline/config_files/themes/vim/tabline.json @@ -30,6 +30,11 @@ }, "priority": 10 }, + { + "name": "tab_modified_indicator", + "exclude_modes": ["buf", "buf_nc"], + "priority": 5 + }, { "name": "modified_indicator", "exclude_modes": ["tab", "tab_nc"], diff --git a/powerline/segments/vim/__init__.py b/powerline/segments/vim/__init__.py index 3e991e4f..529a4328 100644 --- a/powerline/segments/vim/__init__.py +++ b/powerline/segments/vim/__init__.py @@ -167,6 +167,25 @@ def modified_indicator(pl, segment_info, text='+'): return text if int(vim_getbufoption(segment_info, 'modified')) else None +@requires_segment_info +def tab_modified_indicator(pl, segment_info, text='+'): + '''Return a file modified indicator for tabpages. + + :param string text: + text to display if any buffer in the current tab is modified + ''' + 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: + return [{ + 'contents': ret, + 'highlight_group': ['modified_indicator'], + }] + return None + + @requires_segment_info def paste_indicator(pl, segment_info, text='PASTE'): '''Return a paste mode indicator.