diff options
author | Erik Rose <grinch@grinchcentral.com> | 2013-07-30 15:55:56 -0700 |
---|---|---|
committer | Erik Rose <grinch@grinchcentral.com> | 2013-07-30 15:55:56 -0700 |
commit | 74e89a57be025df0afee92eb1aa105ec786b2356 (patch) | |
tree | e2c1124e9116ee8826cc5891b760593e67063385 | |
parent | 14ba650504010facf9a9f342b3ca180cd4eb2d97 (diff) | |
parent | 940f60fe5b0f7b14a6b29ca6d48179265aa85306 (diff) | |
download | blessings-74e89a57be025df0afee92eb1aa105ec786b2356.tar.gz |
Merge pull request #29 from vitek/master
contextmanagers: Put state restore code into finally block
-rw-r--r-- | blessings/__init__.py | 21 |
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): |