comparison mercurial/ui.py @ 1984:df7436f439a0

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.
author Thomas Arendsen Hein <thomas@intevation.de>
date Tue, 21 Mar 2006 12:54:32 +0100
parents ae12a81549a7
children c577689006fa
comparison
equal deleted inserted replaced
1983:ae12a81549a7 1984:df7436f439a0
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 import ConfigParser 8 import ConfigParser
9 from i18n import gettext as _ 9 from i18n import gettext as _
10 from demandload import * 10 from demandload import *
11 demandload(globals(), "os re socket sys util") 11 demandload(globals(), "os re socket sys util tempfile")
12 12
13 class ui(object): 13 class ui(object):
14 def __init__(self, verbose=False, debug=False, quiet=False, 14 def __init__(self, verbose=False, debug=False, quiet=False,
15 interactive=True, parentui=None): 15 interactive=True, parentui=None):
16 self.overlay = {} 16 self.overlay = {}
193 def note(self, *msg): 193 def note(self, *msg):
194 if self.verbose: self.write(*msg) 194 if self.verbose: self.write(*msg)
195 def debug(self, *msg): 195 def debug(self, *msg):
196 if self.debugflag: self.write(*msg) 196 if self.debugflag: self.write(*msg)
197 def edit(self, text, user): 197 def edit(self, text, user):
198 import tempfile 198 (fd, name) = tempfile.mkstemp(prefix="hg-editor-", suffix=".txt")
199 (fd, name) = tempfile.mkstemp("hg") 199 try:
200 f = os.fdopen(fd, "w") 200 f = os.fdopen(fd, "w")
201 f.write(text) 201 f.write(text)
202 f.close() 202 f.close()
203 203
204 editor = (os.environ.get("HGEDITOR") or 204 editor = (os.environ.get("HGEDITOR") or
205 self.config("ui", "editor") or 205 self.config("ui", "editor") or
206 os.environ.get("EDITOR", "vi")) 206 os.environ.get("EDITOR", "vi"))
207 207
208 util.system("%s \"%s\"" % (editor, name), 208 util.system("%s \"%s\"" % (editor, name),
209 environ={'HGUSER': user}, 209 environ={'HGUSER': user},
210 onerr=util.Abort, errprefix=_("edit failed")) 210 onerr=util.Abort, errprefix=_("edit failed"))
211 211
212 t = open(name).read() 212 f = open(name)
213 t = re.sub("(?m)^HG:.*\n", "", t) 213 t = f.read()
214 214 f.close()
215 os.unlink(name) 215 t = re.sub("(?m)^HG:.*\n", "", t)
216 finally:
217 os.unlink(name)
216 218
217 return t 219 return t