Added error handling for editor.

This commit is contained in:
Michael Lazar
2015-03-29 18:06:47 -07:00
parent ce47bafe28
commit ca43eac3fc
3 changed files with 15 additions and 2 deletions

View File

@@ -10,7 +10,7 @@ import praw.errors
from six.moves import configparser
from . import config
from .exceptions import SubmissionError, SubredditError
from .exceptions import SubmissionError, SubredditError, ProgramError
from .curses_helpers import curses_session
from .submission import SubmissionPage
from .subreddit import SubredditPage
@@ -99,6 +99,9 @@ def main():
print('Could not reach submission URL: {}'.format(e.url))
except SubredditError as e:
print('Could not reach subreddit: {}'.format(e.name))
except ProgramError as e:
print('Error: could not open file with program "{}", '
'try setting RTV_EDITOR'.format(e.name))
except KeyboardInterrupt:
return

View File

@@ -8,5 +8,10 @@ class SubredditError(Exception):
def __init__(self, name):
self.name = name
class ProgramError(Exception):
"Problem executing an external program"
def __init__(self, name):
self.name = name
class EscapeInterrupt(Exception):
"Signal that the ESC key has been pressed"

View File

@@ -6,6 +6,7 @@ from datetime import datetime
from tempfile import NamedTemporaryFile
from . import config
from .exceptions import ProgramError
__all__ = ['open_browser', 'clean', 'wrap_text', 'strip_textpad',
'strip_subreddit_url', 'humanize_timestamp', 'open_editor']
@@ -23,7 +24,11 @@ def open_editor(data=''):
fp.write(data)
fp.flush()
editor = os.getenv('RTV_EDITOR') or os.getenv('EDITOR') or 'nano'
try:
subprocess.Popen([editor, fp.name]).wait()
except OSError as e:
raise ProgramError(editor)
# Open a second file object to read. This appears to be necessary in
# order to read the changes made by some editors (gedit). w+ mode does