diff options
author | hut <hut@lavabit.com> | 2011-10-23 19:55:42 +0200 |
---|---|---|
committer | hut <hut@lavabit.com> | 2011-10-23 23:01:20 +0200 |
commit | fcc74912086a9b2edfc501e7f9d5749fc5a2914b (patch) | |
tree | 29cdb229cb14e48e43f5f84e317099423f19fdf5 /ranger | |
parent | 812447408be9b67850b253fe9d53a88ad31856ae (diff) | |
download | ranger-fcc74912086a9b2edfc501e7f9d5749fc5a2914b.tar.gz |
gui.curses_shortcuts: Fix unicode bug with surrogates
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/gui/curses_shortcuts.py | 14 |
1 files 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: |