mirror of
https://github.com/powerline/powerline.git
synced 2025-07-26 23:35:04 +02:00
parent
8e0bed9677
commit
19659189da
@ -87,18 +87,27 @@ def window_cached(func):
|
|||||||
def mode(pl, segment_info, override=None):
|
def mode(pl, segment_info, override=None):
|
||||||
'''Return the current vim mode.
|
'''Return the current vim mode.
|
||||||
|
|
||||||
|
If mode (returned by ``mode()`` VimL function, see ``:h mode()`` in Vim)
|
||||||
|
consists of multiple characters and necessary mode is not known to powerline
|
||||||
|
then it will fall back to mode with last character(s) ignored.
|
||||||
|
|
||||||
:param dict override:
|
:param dict override:
|
||||||
dict for overriding default mode strings, e.g. ``{ 'n': 'NORM' }``
|
dict for overriding default mode strings, e.g. ``{ 'n': 'NORM' }``
|
||||||
'''
|
'''
|
||||||
mode = segment_info['mode']
|
mode = segment_info['mode']
|
||||||
if mode == 'nc':
|
if mode == 'nc':
|
||||||
return None
|
return None
|
||||||
if not override:
|
while mode:
|
||||||
return vim_modes[mode]
|
try:
|
||||||
try:
|
if not override:
|
||||||
return override[mode]
|
return vim_modes[mode]
|
||||||
except KeyError:
|
try:
|
||||||
return vim_modes[mode]
|
return override[mode]
|
||||||
|
except KeyError:
|
||||||
|
return vim_modes[mode]
|
||||||
|
except KeyError:
|
||||||
|
mode = mode[:-1]
|
||||||
|
return 'BUG'
|
||||||
|
|
||||||
|
|
||||||
@window_cached
|
@window_cached
|
||||||
|
@ -1159,6 +1159,8 @@ class TestVim(TestCase):
|
|||||||
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info, override={'n': 'NORM'}), 'NORM')
|
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info, override={'n': 'NORM'}), 'NORM')
|
||||||
with vim_module._with('mode', 'i') as segment_info:
|
with vim_module._with('mode', 'i') as segment_info:
|
||||||
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info), 'INSERT')
|
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info), 'INSERT')
|
||||||
|
with vim_module._with('mode', 'i\0') as segment_info:
|
||||||
|
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info), 'INSERT')
|
||||||
with vim_module._with('mode', chr(ord('V') - 0x40)) as segment_info:
|
with vim_module._with('mode', chr(ord('V') - 0x40)) as segment_info:
|
||||||
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info), 'V-BLCK')
|
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info), 'V-BLCK')
|
||||||
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info, override={'^V': 'VBLK'}), 'VBLK')
|
self.assertEqual(self.vim.mode(pl=pl, segment_info=segment_info, override={'^V': 'VBLK'}), 'VBLK')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user