summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Rose <grinch@grinchcentral.com>2013-07-30 15:55:56 -0700
committerErik Rose <grinch@grinchcentral.com>2013-07-30 15:55:56 -0700
commit74e89a57be025df0afee92eb1aa105ec786b2356 (patch)
treee2c1124e9116ee8826cc5891b760593e67063385
parent14ba650504010facf9a9f342b3ca180cd4eb2d97 (diff)
parent940f60fe5b0f7b14a6b29ca6d48179265aa85306 (diff)
downloadblessings-74e89a57be025df0afee92eb1aa105ec786b2356.tar.gz
Merge pull request #29 from vitek/master
contextmanagers: Put state restore code into finally block
-rw-r--r--blessings/__init__.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/blessings/__init__.py b/blessings/__init__.py
index 68212c2..276565b 100644
--- a/blessings/__init__.py
+++ b/blessings/__init__.py
@@ -235,24 +235,29 @@ class Terminal(object):
self.stream.write(self.move_x(x))
elif y is not None:
self.stream.write(self.move_y(y))
- yield
-
- # Restore original cursor position:
- self.stream.write(self.restore)
+ try:
+ yield
+ finally:
+ # Restore original cursor position:
+ self.stream.write(self.restore)
@contextmanager
def fullscreen(self):
"""Return a context manager that enters fullscreen mode while inside it and restores normal mode on leaving."""
self.stream.write(self.enter_fullscreen)
- yield
- self.stream.write(self.exit_fullscreen)
+ try:
+ yield
+ finally:
+ self.stream.write(self.exit_fullscreen)
@contextmanager
def hidden_cursor(self):
"""Return a context manager that hides the cursor while inside it and makes it visible on leaving."""
self.stream.write(self.hide_cursor)
- yield
- self.stream.write(self.normal_cursor)
+ try:
+ yield
+ finally:
+ self.stream.write(self.normal_cursor)
@property
def color(self):