summaryrefslogtreecommitdiffstats
path: root/pgcli
diff options
context:
space:
mode:
authorAmjith Ramanujam <amjith.r@gmail.com>2018-05-14 17:32:11 -0400
committerGitHub <noreply@github.com>2018-05-14 17:32:11 -0400
commitd971e49993ef3d0308e9f1f4466c87b0e8463bea (patch)
tree87bfdc0f3e6726acfa428ecf016a44d4fda3e851 /pgcli
parent16fb504ab9bbdeeb3fe98d94243f9f02a85de8e7 (diff)
parentdc74a0acd004126bd3d01a0fd6f1df9acae23db1 (diff)
Merge pull request #877 from catherinedevlin/keep_callables
Keep callables
Diffstat (limited to 'pgcli')
-rw-r--r--pgcli/main.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/pgcli/main.py b/pgcli/main.py
index 73c1a247..ca4d4efa 100644
--- a/pgcli/main.py
+++ b/pgcli/main.py
@@ -454,19 +454,20 @@ class PGCli(object):
# It's internal api of prompt_toolkit that may change. This was added to fix #668.
# We may find a better way to do it in the future.
saved_callables = cli.application.pre_run_callables
- while special.editor_command(document.text):
- filename = special.get_filename(document.text)
- query = (special.get_editor_query(document.text) or
- self.get_last_query())
- sql, message = special.open_external_editor(filename, sql=query)
- if message:
- # Something went wrong. Raise an exception and bail.
- raise RuntimeError(message)
- cli.current_buffer.document = Document(sql, cursor_position=len(sql))
- cli.application.pre_run_callables = []
- document = cli.run()
- continue
- cli.application.pre_run_callables = saved_callables
+ try:
+ while special.editor_command(document.text):
+ filename = special.get_filename(document.text)
+ query = (special.get_editor_query(document.text) or
+ self.get_last_query())
+ sql, message = special.open_external_editor(filename, sql=query)
+ if message:
+ # Something went wrong. Raise an exception and bail.
+ raise RuntimeError(message)
+ cli.current_buffer.document = Document(sql, cursor_position=len(sql))
+ cli.application.pre_run_callables = []
+ document = cli.run()
+ finally:
+ cli.application.pre_run_callables = saved_callables
return document
def execute_command(self, text, query):