# HG changeset patch # User Thomas Arendsen Hein # Date 1142942072 -3600 # Node ID df7436f439a0599354b037fda2542f41df0b3b49 # Parent ae12a81549a77c1cb1af783648c107d0121efcff Improved ui.edit(): - Use descriptive name for temporary file: hg-editor-*.txt - Don't import tempfile in the method, but use demandload() - Remove tempfile file even if editor aborts. diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -8,7 +8,7 @@ import ConfigParser from i18n import gettext as _ from demandload import * -demandload(globals(), "os re socket sys util") +demandload(globals(), "os re socket sys util tempfile") class ui(object): def __init__(self, verbose=False, debug=False, quiet=False, @@ -195,23 +195,25 @@ class ui(object): def debug(self, *msg): if self.debugflag: self.write(*msg) def edit(self, text, user): - import tempfile - (fd, name) = tempfile.mkstemp("hg") - f = os.fdopen(fd, "w") - f.write(text) - f.close() + (fd, name) = tempfile.mkstemp(prefix="hg-editor-", suffix=".txt") + try: + f = os.fdopen(fd, "w") + f.write(text) + f.close() + + editor = (os.environ.get("HGEDITOR") or + self.config("ui", "editor") or + os.environ.get("EDITOR", "vi")) - editor = (os.environ.get("HGEDITOR") or - self.config("ui", "editor") or - os.environ.get("EDITOR", "vi")) + util.system("%s \"%s\"" % (editor, name), + environ={'HGUSER': user}, + onerr=util.Abort, errprefix=_("edit failed")) - util.system("%s \"%s\"" % (editor, name), - environ={'HGUSER': user}, - onerr=util.Abort, errprefix=_("edit failed")) - - t = open(name).read() - t = re.sub("(?m)^HG:.*\n", "", t) - - os.unlink(name) + f = open(name) + t = f.read() + f.close() + t = re.sub("(?m)^HG:.*\n", "", t) + finally: + os.unlink(name) return t