mq: use the editor gotten by "getcommiteditor()" instead of "ui.edit()" (qnew)
This patch also replaces "editor = False" by "editor =
cmdutil.getcommiteditor()", because:
- the latter allows to hook commit message determination easily,
even in the case without "--edit"
- the latter can avoid regression (or additional care) around saving
"last-message.txt", even if MQ's "newcommit()" changes its
implementation logic from "localrepository.commit" to
"localrepository.commitctx" with "memctx" in the future
to save commit message into "last-messge.txt" with "memctx",
"editor" should be valid function.
--- a/hgext/mq.py Sun May 11 00:49:36 2014 +0900
+++ b/hgext/mq.py Sun May 11 00:49:36 2014 +0900
@@ -1081,17 +1081,18 @@
p.write("# Date %s %s\n\n" % date)
defaultmsg = "[mq]: %s" % patchfn
- editor = False
+ editor = cmdutil.getcommiteditor()
if edit:
- def desceditor(repo, ctx, subs):
- desc = self.ui.edit(ctx.description() + "\n",
- ctx.user())
+ def finishdesc(desc):
if desc.rstrip():
return desc
else:
return defaultmsg
+ # i18n: this message is shown in editor with "HG: " prefix
+ extramsg = _('Leave message empty to use default message.')
+ editor = cmdutil.getcommiteditor(finishdesc=finishdesc,
+ extramsg=extramsg)
commitmsg = msg
- editor = desceditor
else:
commitmsg = msg or defaultmsg
--- a/tests/test-mq-qnew.t Sun May 11 00:49:36 2014 +0900
+++ b/tests/test-mq-qnew.t Sun May 11 00:49:36 2014 +0900
@@ -284,9 +284,17 @@
> EOF
$ rm -f .hg/last-message.txt
+ $ hg status
$ HGEDITOR="sh $TESTTMP/editor.sh" hg qnew -e patch
==== before editing
+
+ HG: Enter commit message. Lines beginning with 'HG:' are removed.
+ HG: Leave message empty to use default message.
+ HG: --
+ HG: user: test
+ HG: branch 'default'
+ HG: no files changed
====
transaction abort!
rollback completed
@@ -295,6 +303,7 @@
[255]
$ cat .hg/last-message.txt
+
test saving last-message.txt
$ cat >> .hg/hgrc <<EOF
@@ -314,9 +323,17 @@
> EOF
$ rm -f .hg/last-message.txt
+ $ hg status
$ HGEDITOR="sh $TESTTMP/editor.sh" hg qnew -e "patch "
==== before editing
+
+ HG: Enter commit message. Lines beginning with 'HG:' are removed.
+ HG: Leave message empty to use default message.
+ HG: --
+ HG: user: test
+ HG: branch 'default'
+ HG: no files changed
====
$ cat ".hg/patches/patch "
# HG changeset patch