From b7d8495b9c8e0ee0578b9b9c62f9f86b58554c58 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 20 Jan 2013 19:24:41 +0400 Subject: [PATCH] Fix problems in mode segment - It was impossible to configure visual block and select block mode strings: JSON strings can contain neither raw control characters nor escape sequences for them - It was impossible to override only some of the strings: missing key generates KeyError exception, not IndexError --- powerline/segments/vim.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/powerline/segments/vim.py b/powerline/segments/vim.py index 09f8f068..5849a858 100644 --- a/powerline/segments/vim.py +++ b/powerline/segments/vim.py @@ -22,10 +22,10 @@ vim_modes = { 'no': u'N·OPER', 'v': u'VISUAL', 'V': u'V·LINE', - '': u'V·BLCK', + '^V': u'V·BLCK', 's': u'SELECT', 'S': u'S·LINE', - '': u'S·BLCK', + '^S': u'S·BLCK', 'i': u'INSERT', 'R': u'REPLACE', 'Rv': u'V·RPLCE', @@ -38,6 +38,11 @@ vim_modes = { '!': u'SHELL', } +mode_translations = { + chr(ord('V')-0x40): '^V', + chr(ord('S')-0x40): '^S', +} + def mode(override=None): '''Return the current vim mode. @@ -49,11 +54,12 @@ def mode(override=None): mode = mode({ 'n': 'NORM' }) ''' mode = vim_funcs['mode']() + mode = mode_translations.get(mode, mode) if not override: return vim_modes[mode] try: return override[mode] - except IndexError: + except KeyError: return vim_modes[mode]