From fcc74912086a9b2edfc501e7f9d5749fc5a2914b Mon Sep 17 00:00:00 2001 From: hut Date: Sun, 23 Oct 2011 19:55:42 +0200 Subject: gui.curses_shortcuts: Fix unicode bug with surrogates --- ranger/gui/curses_shortcuts.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ranger/gui/curses_shortcuts.py b/ranger/gui/curses_shortcuts.py index a977beda..4a3bb4b9 100644 --- a/ranger/gui/curses_shortcuts.py +++ b/ranger/gui/curses_shortcuts.py @@ -21,6 +21,10 @@ from ranger.ext.iter_tools import flatten from ranger.gui.color import get_color from ranger.core.shared import SettingsAware +def _fix_surrogates(args): + return [isinstance(arg, str) and arg.encode('utf-8', 'surrogateescape') + .decode('utf-8', 'replace') or arg for arg in args] + class CursesShortcuts(SettingsAware): """ This class defines shortcuts to faciliate operations with curses. @@ -35,13 +39,19 @@ class CursesShortcuts(SettingsAware): try: self.win.addstr(*args) except: - pass + try: + self.win.addstr(*_fix_surrogates(args)) + except: + pass def addnstr(self, *args): try: self.win.addnstr(*args) except: - pass + try: + self.win.addnstr(*_fix_surrogates(args)) + except: + pass def addch(self, *args): try: -- cgit 1.4.1-2-gfad0