Mercurial > public > mercurial-scm > hg-stable
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 |