diff options
author | hut <hut@lavabit.com> | 2011-10-23 19:55:42 +0200 |
---|---|---|
committer | hut <hut@lavabit.com> | 2011-10-23 19:55:42 +0200 |
commit | 97e724a3f590210a819414de3c21278d2f3c03dc (patch) | |
tree | e2a536d122c48a470fae0ae4e3bb6bcda75a4a53 /ranger | |
parent | 3c0fd67fd5581bb1aaa84c957b568abdb5dc1a54 (diff) | |
download | ranger-97e724a3f590210a819414de3c21278d2f3c03dc.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: |