From 9b0673cf05fc07a9131cd357ca75715c6ad0f11f Mon Sep 17 00:00:00 2001 From: nfnty Date: Fri, 10 Feb 2017 22:34:01 +0100 Subject: gui.ansi.char_slice: Widestring aware Fix Python 2 widestrings being cut off Fixes #164 --- ranger/gui/ansi.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ranger/gui/ansi.py b/ranger/gui/ansi.py index 5cb2ab90..ff8b2fd9 100644 --- a/ranger/gui/ansi.py +++ b/ranger/gui/ansi.py @@ -8,6 +8,7 @@ from __future__ import (absolute_import, division, print_function) import re +from ranger.ext.widestring import WideString from ranger.gui import color @@ -118,7 +119,7 @@ def char_len(ansi_text): >>> char_len("") 0 """ - return len(ansi_re.sub('', ansi_text)) + return len(WideString(ansi_re.sub('', ansi_text))) def char_slice(ansi_text, start, length): @@ -153,19 +154,20 @@ def char_slice(ansi_text, start, length): last_color = chunk continue + chunk = WideString(chunk) old_pos = pos pos += len(chunk) if pos <= start: pass # seek elif old_pos < start and pos >= start: chunks.append(last_color) - chunks.append(chunk[start - old_pos:start - old_pos + length]) + chunks.append(str(chunk[start - old_pos:start - old_pos + length])) elif pos > length + start: chunks.append(last_color) - chunks.append(chunk[:start - old_pos + length]) + chunks.append(str(chunk[:start - old_pos + length])) else: chunks.append(last_color) - chunks.append(chunk) + chunks.append(str(chunk)) if pos - start >= length: break return ''.join(chunks) -- cgit 1.4.1-2-gfad0