diff --git a/powerline/config_files/colorschemes/vim/__main__.json b/powerline/config_files/colorschemes/vim/__main__.json index 03f51ca2..0294a5bb 100644 --- a/powerline/config_files/colorschemes/vim/__main__.json +++ b/powerline/config_files/colorschemes/vim/__main__.json @@ -14,6 +14,8 @@ "position": "information:additional", "single_tab": "line_current", "many_tabs": "line_current", + "bufnr": "information:unimportant", + "winnr": "information:unimportant", "tabnr": "file_directory" } } diff --git a/powerline/segments/vim.py b/powerline/segments/vim.py index 964f78f1..ee69b782 100644 --- a/powerline/segments/vim.py +++ b/powerline/segments/vim.py @@ -504,6 +504,30 @@ def tabnr(pl, segment_info, show_current=False): return str(tabnr) +@requires_segment_info +def bufnr(pl, segment_info, show_current=False): + '''Show buffer number + + :param bool show_current: + If False do not show current window number. + ''' + bufnr = segment_info['bufnr'] + if show_current or bufnr != vim.current.buffer.number: + return str(bufnr) + + +@requires_segment_info +def winnr(pl, segment_info, show_current=False): + '''Show window number + + :param bool show_current: + If False do not show current window number. + ''' + winnr = segment_info['winnr'] + if show_current or winnr != vim.current.window.number: + return str(winnr) + + def single_tab(pl, single_text='Bufs', multiple_text='Tabs'): '''Show one text if there is only one tab and another if there are many diff --git a/tests/test_segments.py b/tests/test_segments.py index eb86bf09..58b2a52e 100644 --- a/tests/test_segments.py +++ b/tests/test_segments.py @@ -793,6 +793,18 @@ class TestVim(TestCase): self.assertEqual(vim.tabnr(pl=pl, segment_info=segment_info, show_current=True), '1') self.assertEqual(vim.tabnr(pl=pl, segment_info=segment_info, show_current=False), None) + def test_bufnr(self): + pl = Pl() + segment_info = vim_module._get_segment_info() + self.assertEqual(vim.bufnr(pl=pl, segment_info=segment_info, show_current=True), str(segment_info['bufnr'])) + self.assertEqual(vim.bufnr(pl=pl, segment_info=segment_info, show_current=False), None) + + def test_winnr(self): + pl = Pl() + segment_info = vim_module._get_segment_info() + self.assertEqual(vim.winnr(pl=pl, segment_info=segment_info, show_current=True), str(segment_info['winnr'])) + self.assertEqual(vim.winnr(pl=pl, segment_info=segment_info, show_current=False), None) + def test_single_tab(self): pl = Pl() single_tab = partial(vim.single_tab, pl=pl)