diff --git a/editor.py b/editor.py index 7400ba1a..cf0a5ee5 100644 --- a/editor.py +++ b/editor.py @@ -76,8 +76,15 @@ least one of these before using this command.""" os.close(fd) fd = None - if subprocess.Popen(editor + [path]).wait() != 0: - raise EditorError() + try: + rc = subprocess.Popen(editor + [path]).wait() + except OSError, e: + raise EditorError('editor failed, %s: %s %s' + % (str(e), cls._GetEditor(), path)) + if rc != 0: + raise EditorError('editor failed with exit status %d: %s %s' + % (rc, cls._GetEditor(), path)) + fd2 = open(path) try: return fd2.read() diff --git a/error.py b/error.py index 6b9dff44..cb3b7258 100644 --- a/error.py +++ b/error.py @@ -24,6 +24,11 @@ class ManifestInvalidRevisionError(Exception): class EditorError(Exception): """Unspecified error from the user's text editor. """ + def __init__(self, reason): + self.reason = reason + + def __str__(self): + return self.reason class GitError(Exception): """Unspecified internal error from git.