[PATCH 1 of 2 v3] ui: refactor and introduce ui.editfile()

Brodie Rao brodie at bitheap.org
Wed Sep 22 20:31:33 CDT 2010


# HG changeset patch
# User Mads Kiilerich <mads at kiilerich.com>
# Date 1282752611 -7200
# Node ID 0bf68f8654746f151617e6179e3b273b08f5f211
# Parent  f1e8d6f6e682a74a135ba6509b2de26cc8172046
ui: refactor and introduce ui.editfile()

Contrary to ui.edit(), this will show the right filename when file
content is edited.

The user parameter that ui.edit() requires is optional for
ui.editfile(). This allows it be used even when a username isn't set.

diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -520,6 +520,7 @@ class ui(object):
             opts['label'] = opts.get('label', '') + ' ui.debug'
             self.write(*msg, **opts)
     def edit(self, text, user):
+        '''let the user edit text in a temp file using configured editor'''
         (fd, name) = tempfile.mkstemp(prefix="hg-editor-", suffix=".txt",
                                       text=True)
         try:
@@ -527,12 +528,7 @@ class ui(object):
             f.write(text)
             f.close()
 
-            editor = self.geteditor()
-
-            util.system("%s \"%s\"" % (editor, name),
-                        environ={'HGUSER': user},
-                        onerr=util.Abort, errprefix=_("edit failed"))
-
+            self.editfile(name, user)
             f = open(name)
             t = f.read()
             f.close()
@@ -541,6 +537,18 @@ class ui(object):
 
         return t
 
+    def editfile(self, filename, user=None):
+        '''let the user edit a file using configured editor'''
+        editor = self.geteditor()
+        if user:
+            environ = {'HGUSER': user}
+        else:
+            environ = {}
+
+        util.system('%s "%s"' % (editor, filename),
+                    environ=environ,
+                    onerr=util.Abort, errprefix=_("edit failed"))
+
     def traceback(self, exc=None):
         '''print exception traceback if traceback printing enabled.
         only to call in exception handler. returns true if traceback


More information about the Mercurial-devel mailing list