about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2011-10-23 19:55:42 +0200
committerhut <hut@lavabit.com>2011-10-23 19:55:42 +0200
commit97e724a3f590210a819414de3c21278d2f3c03dc (patch)
treee2a536d122c48a470fae0ae4e3bb6bcda75a4a53
parent3c0fd67fd5581bb1aaa84c957b568abdb5dc1a54 (diff)
downloadranger-97e724a3f590210a819414de3c21278d2f3c03dc.tar.gz
gui.curses_shortcuts: Fix unicode bug with surrogates
-rw-r--r--ranger/gui/curses_shortcuts.py14
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: