At the same time we trap the editor error for all editor calls, not just when called from "stg mail". We may want to define a new exception for this though. Signed-off-by: Yann Dirson <ydirson@xxxxxxxxxx> --- stgit/commands/mail.py | 17 +---------------- stgit/stack.py | 14 +------------- stgit/utils.py | 23 ++++++++++++++++++++++- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py index 762829c..151a408 100644 --- a/stgit/commands/mail.py +++ b/stgit/commands/mail.py @@ -272,22 +272,7 @@ def __edit_message(msg): f.write(msg) f.close() - # the editor - editor = config.get('stgit.editor') - if editor: - pass - elif 'EDITOR' in os.environ: - editor = os.environ['EDITOR'] - else: - editor = 'vi' - editor += ' %s' % fname - - print 'Invoking the editor: "%s"...' % editor, - sys.stdout.flush() - err = os.system(editor) - if err: - raise CmdException, 'editor failed, exit code: %d' % err - print 'done' + call_editor(fname) # read the message back f = file(fname) diff --git a/stgit/stack.py b/stgit/stack.py index 99f10e5..feb77e3 100644 --- a/stgit/stack.py +++ b/stgit/stack.py @@ -91,19 +91,7 @@ def edit_file(series, line, comment, show_patch = True): print >> f, __comment_prefix, 'vi: set textwidth=75 filetype=diff nobackup:' f.close() - # the editor - editor = config.get('stgit.editor') - if editor: - pass - elif 'EDITOR' in os.environ: - editor = os.environ['EDITOR'] - else: - editor = 'vi' - editor += ' %s' % fname - - print 'Invoking the editor: "%s"...' % editor, - sys.stdout.flush() - print 'done (exit code: %d)' % os.system(editor) + call_editor(fname) f = file(fname, 'r+') diff --git a/stgit/utils.py b/stgit/utils.py index 67431ec..d7d4777 100644 --- a/stgit/utils.py +++ b/stgit/utils.py @@ -1,7 +1,8 @@ """Common utility functions """ -import errno, os, os.path +import errno, os, os.path, sys +from stgit.config import config __copyright__ = """ Copyright (C) 2005, Catalin Marinas <catalin.marinas@xxxxxxxxx> @@ -152,3 +153,23 @@ def rename(basedir, file1, file2): create_dirs(os.path.dirname(full_file2)) os.rename(os.path.join(basedir, file1), full_file2) remove_dirs(basedir, os.path.dirname(file1)) + +def call_editor(filename): + """Run the editor on the specified filename.""" + + # the editor + editor = config.get('stgit.editor') + if editor: + pass + elif 'EDITOR' in os.environ: + editor = os.environ['EDITOR'] + else: + editor = 'vi' + editor += ' %s' % filename + + print 'Invoking the editor: "%s"...' % editor, + sys.stdout.flush() + err = os.system(editor) + if err: + raise Exception, 'editor failed, exit code: %d' % err + print 'done' - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html