# HG changeset patch # User FUJIWARA Katsunori # Date 1385913030 -32400 # Node ID 27d3f1fe42ac9e7d929c02fabef97c9335eccc75 # Parent 5a7aeb1e68b3982ccf5009662ad1666c6169c8d5 transplant: use "ui.promptchoice()" for interactive transplant Before this patch, transplant extension uses "ui.prompt()" for interactive transplant, and has to check whether user response returned by "ui.prompt()" is valid or not in own code. In addition to it, transplant extension uses response characters (e.g. "y", "n", and so on) directly in own code, and this disallows to use another response characters by translation, even though the help shown by '?' typing is translatable. This patch uses "ui.promptchoice()" instead of "ui.prompt()" to resolve problems above. diff -r 5a7aeb1e68b3 -r 27d3f1fe42ac hgext/transplant.py --- a/hgext/transplant.py Mon Dec 02 00:50:30 2013 +0900 +++ b/hgext/transplant.py Mon Dec 02 00:50:30 2013 +0900 @@ -463,11 +463,19 @@ displayer = cmdutil.show_changeset(ui, repo, opts) transplants = [] merges = [] + prompt = _('apply changeset? [ynmpcq?]:' + '$$ &yes, transplant this changeset' + '$$ &no, skip this changeset' + '$$ &merge at this changeset' + '$$ show &patch' + '$$ &commit selected changesets' + '$$ &quit and cancel transplant' + '$$ &? (show this help)') for node in nodes: displayer.show(repo[node]) action = None while not action: - action = ui.prompt(_('apply changeset? [ynmpcq?]:')) + action = 'ynmpcq?'[ui.promptchoice(prompt)] if action == '?': browsehelp(ui) action = None @@ -476,9 +484,6 @@ for chunk in patch.diff(repo, parent, node): ui.write(chunk) action = None - elif action not in ('y', 'n', 'm', 'c', 'q'): - ui.write(_('no such option\n')) - action = None if action == 'y': transplants.append(node) elif action == 'm': diff -r 5a7aeb1e68b3 -r 27d3f1fe42ac tests/test-transplant.t --- a/tests/test-transplant.t Mon Dec 02 00:50:30 2013 +0900 +++ b/tests/test-transplant.t Mon Dec 02 00:50:30 2013 +0900 @@ -492,7 +492,7 @@ > q > EOF 1:d11e3596cc1a - apply changeset? [ynmpcq?]: no such option + apply changeset? [ynmpcq?]: unrecognized response apply changeset? [ynmpcq?]: y: transplant this changeset n: skip this changeset m: merge at this changeset