Patchwork D6562: filemerge: make last line of prompts <40 english chars (issue6158)

login
register
mail settings
Submitter phabricator
Date June 20, 2019, 10:10 p.m.
Message ID <differential-rev-PHID-DREV-dsb62bv2il4yya2qfzxv-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/40635/
State Superseded
Headers show

Comments

phabricator - June 20, 2019, 10:10 p.m.
spectral created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  I've chosen <40 as the target so that other languages that may have a 2x blowup
  in character count can still have a chance to fit into an 80 column screen.
  
  Previously, we would show a prompt like:
  
    keep (l)ocal [dest], take (o)ther [source], or leave (u)nresolved for some/potentially/really/long/path?
  
  On at least some systems, if readline was in use then the last line of the
  prompt would be wrapped strangely if it couldn't fit entirely on one line. This
  strange wrapping may be just a carriage return without a line feed, overwriting
  the beginning of the line; example (100 columns wide, 65 character filename, and
  yes there's 10 spaces on the end, I assume this is to handle the user inputting
  longest word we provide as an option, "unresolved"):
  
    ng/dir/name/that/does/not/work/well/with/readline/file.txt? ave (u)nresolved for some/lon
  
  In some cases it may partially wrap onto the next line, but still be missing
  earlier parts in the line, such as below (60 columns wide, 65 character
  filename):
  
     rev], or leave (u)nresolved for some/long/dir/name/that/do
    s/not/work/well/with/readline/file.txt?
  
  With this fix, this looks like this on a 60 column screen:
  
    tool vim_with_markers (for pattern some/long/dir/name/that/d
    oes/not/work/well/with/readline/file.txt) can't handle binar
    y
    tool meld can't handle binary
    tool vim_with_markers can't handle binary
    tool internal:merge3 can't handle binary
    tool merge can't handle binary
    no tool found to merge some/long/dir/name/that/does/not/work
    /well/with/readline/file.txt
    file 'some/long/dir/name/that/does/not/work/well/with/readli
    ne/file.txt' needs to be resolved.
    You can keep (l)ocal [working copy], take (o)ther [merge rev
    ], or leave (u)nresolved.
    What do you want to do?

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6562

AFFECTED FILES
  mercurial/filemerge.py
  tests/test-commit-amend.t
  tests/test-copy-move-merge.t
  tests/test-copytrace-heuristics.t
  tests/test-largefiles-update.t
  tests/test-lfconvert.t
  tests/test-merge-changedelete.t
  tests/test-merge-force.t
  tests/test-merge-remove.t
  tests/test-merge-subrepos.t
  tests/test-merge-tools.t
  tests/test-merge-types.t
  tests/test-rebase-newancestor.t
  tests/test-rename-merge2.t
  tests/test-resolve.t
  tests/test-sparse-merges.t

CHANGE DETAILS




To: spectral, #hg-reviewers
Cc: mercurial-devel
phabricator - June 24, 2019, 6:54 p.m.
durin42 added a comment.


  I like this, but could I get you to add a patch 3 that introduces a develwarn for this?

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6562/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6562

To: spectral, #hg-reviewers
Cc: durin42, mercurial-devel
phabricator - June 24, 2019, 11:30 p.m.
spectral added a comment.


  In D6562#95775 <https://phab.mercurial-scm.org/D6562#95775>, @durin42 wrote:
  
  > I like this, but could I get you to add a patch 3 that introduces a develwarn for this?
  
  Done, and it found a couple other cases, but I'm not sure I like it (D6573 <https://phab.mercurial-scm.org/D6573>) - non-English users might not be able to enable the devel warnings without getting a bunch of spam. I believe by the time we get to `ui.prompt()` we've already done the `_()` translation and it's in the target language?  Do we have any idea if anyone enables developer warnings outside of tests (which would typically be written in English, at least for core).
  
  Unfortunately, I don't think it's something we could put in check-style.py either... we won't know that these are going to a prompt. Anyway, we can continue discussion on this on D6573 <https://phab.mercurial-scm.org/D6573>.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6562/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6562

To: spectral, #hg-reviewers
Cc: durin42, mercurial-devel
phabricator - June 24, 2019, 11:31 p.m.
spectral added a comment.


  Ah, a question: should this be lowercasing the first character of things? I think I copied this from somewhere where it did have an uppercase letter, but I wasn't consistent in my application of the leading uppercase letter.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6562/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6562

To: spectral, #hg-reviewers
Cc: durin42, mercurial-devel
phabricator - June 28, 2019, 8:08 p.m.
durin42 added a comment.


  In D6562#95823 <https://phab.mercurial-scm.org/D6562#95823>, @spectral wrote:
  
  > In D6562#95775 <https://phab.mercurial-scm.org/D6562#95775>, @durin42 wrote:
  >
  >> I like this, but could I get you to add a patch 3 that introduces a develwarn for this?
  >
  > Done, and it found a couple other cases, but I'm not sure I like it (D6573 <https://phab.mercurial-scm.org/D6573>) - non-English users might not be able to enable the devel warnings without getting a bunch of spam. I believe by the time we get to `ui.prompt()` we've already done the `_()` translation and it's in the target language?  Do we have any idea if anyone enables developer warnings outside of tests (which would typically be written in English, at least for core).
  > Unfortunately, I don't think it's something we could put in check-style.py either... we won't know that these are going to a prompt. Anyway, we can continue discussion on this on D6573 <https://phab.mercurial-scm.org/D6573>.
  
  Oh. Yeah, good point.
  
  Welp. I guess the best bet is to not land that last patch then. :(

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6562/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6562

To: spectral, #hg-reviewers
Cc: durin42, mercurial-devel

Patch

diff --git a/tests/test-sparse-merges.t b/tests/test-sparse-merges.t
--- a/tests/test-sparse-merges.t
+++ b/tests/test-sparse-merges.t
@@ -114,8 +114,8 @@ 
   $ hg merge
   temporarily included 1 file(s) in the sparse checkout for merging
   file 'd' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
diff --git a/tests/test-resolve.t b/tests/test-resolve.t
--- a/tests/test-resolve.t
+++ b/tests/test-resolve.t
@@ -649,8 +649,8 @@ 
 
   $ hg merge -r 1
   file 'file1' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -678,8 +678,8 @@ 
   $ hg resolve --unmark file1
   $ echo 'd' | hg resolve file1 --config ui.interactive=1
   file 'file1' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? d
   (no more unresolved files)
   $ hg resolve --list
   R file1
@@ -694,8 +694,8 @@ 
   $ hg resolve --unmark file1
   $ hg resolve file1
   file 'file1' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   [1]
   $ [ -f file1 ] || echo "File does not exist?"
   $ hg resolve --list
@@ -708,8 +708,8 @@ 
   $ hg resolve --unmark file1
   $ hg resolve file1
   file 'file1' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   [1]
   $ [ -f file1 ] || echo "File does not exist?"
   $ hg resolve --list
@@ -726,8 +726,8 @@ 
   $ hg update -qCr 1
   $ hg merge -r 2
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -755,8 +755,8 @@ 
   $ hg resolve --unmark file1
   $ echo 'd' | hg resolve file1 --config ui.interactive=1
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? d
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? d
   (no more unresolved files)
   $ hg resolve --list
   R file1
@@ -771,8 +771,8 @@ 
   $ hg resolve --unmark file1
   $ hg resolve file1
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   [1]
   $ [ -f file1 ] || echo "File does not exist?"
   $ hg resolve --list
@@ -785,8 +785,8 @@ 
   $ hg resolve --unmark file1
   $ hg resolve file1
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   [1]
   $ [ -f file1 ] || echo "File does not exist?"
   $ hg resolve --list
diff --git a/tests/test-rename-merge2.t b/tests/test-rename-merge2.t
--- a/tests/test-rename-merge2.t
+++ b/tests/test-rename-merge2.t
@@ -683,8 +683,8 @@ 
    a: prompt deleted/changed -> m (premerge)
   picked tool ':prompt' for a (binary False symlink False changedelete True)
   file 'a' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
    b: both created -> m (premerge)
   picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
   merging b
@@ -729,8 +729,8 @@ 
    a: prompt changed/deleted -> m (premerge)
   picked tool ':prompt' for a (binary False symlink False changedelete True)
   file 'a' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
    b: both created -> m (premerge)
   picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
   merging b
diff --git a/tests/test-rebase-newancestor.t b/tests/test-rebase-newancestor.t
--- a/tests/test-rebase-newancestor.t
+++ b/tests/test-rebase-newancestor.t
@@ -134,8 +134,8 @@ 
   rebasing 2:ec2c14fb2984 "dev: f-dev stuff"
   rebasing 4:4b019212aaf6 "dev: merge default"
   file 'f-default' was deleted in local [dest] but was modified in other [source].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? c
   rebasing 6:9455ee510502 "dev: merge default"
   saved backup bundle to $TESTTMP/ancestor-merge/.hg/strip-backup/1d1a643d390e-43e9e04b-rebase.hg
   $ hg tglog
@@ -164,8 +164,8 @@ 
   rebasing 2:ec2c14fb2984 "dev: f-dev stuff"
   rebasing 4:4b019212aaf6 "dev: merge default"
   file 'f-default' was deleted in local [dest] but was modified in other [source].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? c
   rebasing 6:9455ee510502 "dev: merge default"
   saved backup bundle to $TESTTMP/ancestor-merge-2/.hg/strip-backup/ec2c14fb2984-62d0b222-rebase.hg
   $ hg tglog
diff --git a/tests/test-merge-types.t b/tests/test-merge-types.t
--- a/tests/test-merge-types.t
+++ b/tests/test-merge-types.t
@@ -39,7 +39,9 @@ 
   couldn't find merge tool hgmerge
   no tool found to merge a
   picked tool ':prompt' for a (binary False symlink True changedelete False)
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for a? u
+  file 'a' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -168,7 +170,9 @@ 
   (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re)
   no tool found to merge a
   picked tool ':prompt' for a (binary False symlink True changedelete False)
-  keep (l)ocal [working copy], take (o)ther [destination], or leave (u)nresolved for a? u
+  file 'a' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [destination], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   updated to "521a1e40188f: symlink"
@@ -203,7 +207,9 @@ 
   $ hg merge
   tool internal:merge (for pattern f) can't handle symlinks
   no tool found to merge f
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -215,7 +221,9 @@ 
   $ hg merge
   tool internal:merge (for pattern f) can't handle symlinks
   no tool found to merge f
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -242,7 +250,9 @@ 
   $ hg merge
   tool internal:merge (for pattern f) can't handle symlinks
   no tool found to merge f
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -254,7 +264,9 @@ 
   $ hg merge
   tool internal:merge (for pattern f) can't handle symlinks
   no tool found to merge f
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -337,13 +349,19 @@ 
   warning: cannot merge flags for c without common ancestor - keeping local flags
   tool internal:merge (for pattern d) can't handle symlinks
   no tool found to merge d
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for d? u
+  file 'd' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   tool internal:merge (for pattern f) can't handle symlinks
   no tool found to merge f
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   tool internal:merge (for pattern h) can't handle symlinks
   no tool found to merge h
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for h? u
+  file 'h' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
   warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
   warning: conflicts while merging bx! (edit, then use 'hg resolve --mark')
@@ -399,13 +417,19 @@ 
   warning: cannot merge flags for c without common ancestor - keeping local flags
   tool internal:merge (for pattern d) can't handle symlinks
   no tool found to merge d
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for d? u
+  file 'd' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   tool internal:merge (for pattern f) can't handle symlinks
   no tool found to merge f
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   tool internal:merge (for pattern h) can't handle symlinks
   no tool found to merge h
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for h? u
+  file 'h' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
   warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
   warning: conflicts while merging bx! (edit, then use 'hg resolve --mark')
diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t
--- a/tests/test-merge-tools.t
+++ b/tests/test-merge-tools.t
@@ -713,7 +713,9 @@ 
   true.executable=cat
   # hg update -C 1
   $ hg merge -r 2 --config ui.merge=internal:prompt
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -737,7 +739,9 @@ 
   $ hg merge -r 2 --config ui.merge=:prompt --config ui.interactive=True << EOF
   > u
   > EOF
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -759,7 +763,9 @@ 
   true.executable=cat
   # hg update -C 1
   $ hg merge -r 2 --config ui.merge=internal:prompt --config ui.interactive=true
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? 
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -772,7 +778,9 @@ 
   # hg resolve --list
   U f
   $ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? 
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   [1]
   $ aftermerge
   # cat f
@@ -785,7 +793,9 @@ 
   U f
   $ rm f
   $ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? 
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   [1]
   $ aftermerge
   # cat f
@@ -796,7 +806,9 @@ 
   # hg resolve --list
   U f
   $ hg resolve --all --config ui.merge=internal:prompt
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
+  file 'f' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   [1]
   $ aftermerge
   # cat f
@@ -1908,7 +1920,9 @@ 
   tool :other can't handle binary
   tool false can't handle binary
   no tool found to merge b
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for b? u
+  file 'b' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
diff --git a/tests/test-merge-subrepos.t b/tests/test-merge-subrepos.t
--- a/tests/test-merge-subrepos.t
+++ b/tests/test-merge-subrepos.t
@@ -112,8 +112,8 @@ 
   > d
   > EOF
   file 'b' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? d
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 XXX: There's a difference between wdir() and '.', so there should be a status.
diff --git a/tests/test-merge-remove.t b/tests/test-merge-remove.t
--- a/tests/test-merge-remove.t
+++ b/tests/test-merge-remove.t
@@ -103,8 +103,8 @@ 
 
   $ hg merge -f
   file 'bar' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging foo1 and foo to foo1
   0 files updated, 1 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
diff --git a/tests/test-merge-force.t b/tests/test-merge-force.t
--- a/tests/test-merge-force.t
+++ b/tests/test-merge-force.t
@@ -143,80 +143,80 @@ 
 
   $ hg merge -f --tool internal:merge3 'desc("remote")' 2>&1 | tee $TESTTMP/merge-output-1
   file 'content1_missing_content1_content4-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_content3_content3-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_content3_content4-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_missing_content4-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_content3-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content1_content4-tracked
   merging content1_content2_content2_content1-tracked
   merging content1_content2_content2_content4-tracked
@@ -729,88 +729,88 @@ 
   $ hg resolve --unmark --all
   $ hg resolve --all --tool internal:merge3
   file 'content1_content2_content1_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content1_content4-tracked
   file 'content1_content2_content1_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content1_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content2_content1-tracked
   file 'content1_content2_content2_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content2_content4-tracked
   file 'content1_content2_content2_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content2_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content3_content1-tracked
   file 'content1_content2_content3_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content3_content3-tracked
   file 'content1_content2_content3_content3-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_content3_content4-tracked
   file 'content1_content2_content3_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_content3_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_missing_content1-tracked
   file 'content1_content2_missing_content1-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_content2-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging content1_content2_missing_content4-tracked
   file 'content1_content2_missing_content4-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_missing-tracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_content2_missing_missing-untracked' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_content1_content4-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_content3_content3-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_content3_content4-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'content1_missing_missing_content4-tracked' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   merging missing_content2_content2_content4-tracked
   merging missing_content2_content3_content3-tracked
   merging missing_content2_content3_content4-tracked
diff --git a/tests/test-merge-changedelete.t b/tests/test-merge-changedelete.t
--- a/tests/test-merge-changedelete.t
+++ b/tests/test-merge-changedelete.t
@@ -55,11 +55,11 @@ 
 
   $ hg merge -y
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 3 files unresolved
@@ -124,11 +124,11 @@ 
   > d
   > EOF
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? c
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? d
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 2 files merged, 0 files removed, 1 files unresolved
@@ -194,23 +194,23 @@ 
   > c
   > EOF
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? foo
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? foo
   unrecognized response
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? bar
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? bar
   unrecognized response
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? d
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? d
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? baz
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? baz
   unrecognized response
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? c
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 1 files merged, 1 files removed, 1 files unresolved
@@ -272,11 +272,11 @@ 
   > d
   > EOF
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? d
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? d
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 1 files removed, 2 files unresolved
@@ -485,12 +485,14 @@ 
 
   $ hg merge --config ui.interactive=True --tool :prompt
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
+  file 'file3' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   0 files updated, 0 files merged, 0 files removed, 3 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -546,12 +548,14 @@ 
 
   $ hg merge --tool :prompt
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
+  file 'file3' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   0 files updated, 0 files merged, 0 files removed, 3 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
@@ -605,11 +609,11 @@ 
 
   $ hg merge --tool :merge3
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   merging file3
   warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 3 files unresolved
@@ -697,12 +701,14 @@ 
   
   === :other -> :prompt ===
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
+  file 'file3' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   --- diff of status ---
   (status identical)
   
@@ -727,12 +733,14 @@ 
   
   === :local -> :prompt ===
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
+  file 'file3' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   --- diff of status ---
   (status identical)
   
@@ -747,12 +755,14 @@ 
   
   === :fail -> :prompt ===
   file 'file1' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [merge rev].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
+  file 'file3' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? 
   --- diff of status ---
   (status identical)
   
@@ -775,11 +785,11 @@ 
   $ hg rm file2
   $ hg update 1 -y
   file 'file1' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'file2' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   1 files updated, 0 files merged, 0 files removed, 2 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -953,11 +963,11 @@ 
   $ hg rm file2
   $ hg update 1 --config ui.interactive=True --tool :prompt
   file 'file1' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
   1 files updated, 0 files merged, 0 files removed, 2 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -1005,11 +1015,11 @@ 
   $ hg rm file2
   $ hg update 1 --tool :merge3
   file 'file1' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   file 'file2' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   1 files updated, 0 files merged, 0 files removed, 2 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -1063,11 +1073,11 @@ 
   
   === :other -> :prompt ===
   file 'file1' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
   --- diff of status ---
   (status identical)
   
@@ -1092,11 +1102,11 @@ 
   
   === :local -> :prompt ===
   file 'file1' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
   --- diff of status ---
   (status identical)
   
@@ -1111,11 +1121,11 @@ 
   
   === :fail -> :prompt ===
   file 'file1' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? 
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? 
   file 'file2' was deleted in local [working copy] but was modified in other [destination].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? 
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? 
   --- diff of status ---
   (status identical)
   
diff --git a/tests/test-lfconvert.t b/tests/test-lfconvert.t
--- a/tests/test-lfconvert.t
+++ b/tests/test-lfconvert.t
@@ -128,7 +128,9 @@ 
   $ hg merge
   tool internal:merge (for pattern stuff/maybelarge.dat) can't handle binary
   no tool found to merge stuff/maybelarge.dat
-  keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for stuff/maybelarge.dat? u
+  file 'stuff/maybelarge.dat' needs to be resolved.
+  You can keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved.
+  What do you want to do? u
   merging sub/normal2 and stuff/normal2 to stuff/normal2
   0 files updated, 1 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
diff --git a/tests/test-largefiles-update.t b/tests/test-largefiles-update.t
--- a/tests/test-largefiles-update.t
+++ b/tests/test-largefiles-update.t
@@ -612,8 +612,8 @@ 
   rebasing 1:72518492caa6 "#1"
   rebasing 4:07d6153b5c04 "#4"
   file '.hglf/large1' was deleted in other [source] but was modified in local [dest].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? c
 
   $ hg diff -c "tip~1" --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
   -e5bb990443d6a92aaf7223813720f7566c9dd05b
diff --git a/tests/test-copytrace-heuristics.t b/tests/test-copytrace-heuristics.t
--- a/tests/test-copytrace-heuristics.t
+++ b/tests/test-copytrace-heuristics.t
@@ -90,8 +90,8 @@ 
   $ hg rebase -s . -d 1
   rebasing 2:d526312210b9 "mode a" (tip)
   file 'a' was deleted in local [dest] but was modified in other [source].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   unresolved conflicts (see hg resolve, then hg rebase --continue)
   [1]
 
@@ -247,8 +247,8 @@ 
   rebasing 2:ef716627c70b "mod a" (tip)
   skipping copytracing for 'a', more candidates than the limit: 7
   file 'a' was deleted in local [dest] but was modified in other [source].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   unresolved conflicts (see hg resolve, then hg rebase --continue)
   [1]
 
@@ -703,8 +703,8 @@ 
   $ hg rebase -s 1 -d .
   rebasing 1:8b6e13696c38 "added more things to a"
   file 'a' was deleted in local [dest] but was modified in other [source].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? u
   unresolved conflicts (see hg resolve, then hg rebase --continue)
   [1]
 
diff --git a/tests/test-copy-move-merge.t b/tests/test-copy-move-merge.t
--- a/tests/test-copy-move-merge.t
+++ b/tests/test-copy-move-merge.t
@@ -88,8 +88,8 @@ 
   > EOF
   rebasing 2:add3f11052fa "other" (tip)
   file 'a' was deleted in local [dest] but was modified in other [source].
-  What do you want to do?
-  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
+  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
+  What do you want to do? c
 
   $ cat b
   1
diff --git a/tests/test-commit-amend.t b/tests/test-commit-amend.t
--- a/tests/test-commit-amend.t
+++ b/tests/test-commit-amend.t
@@ -789,8 +789,8 @@ 
   $ echo modified >> aaa
   $ hg co -m '.^' -t :merge3
   file 'aaa' was deleted in other [destination] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? u
   1 files updated, 0 files merged, 1 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -839,8 +839,8 @@ 
   > c
   > EOF
   file 'aa' was deleted in other [merge rev] but was modified in local [working copy].
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? c
+  You can use (c)hanged version, (d)elete, or leave (u)nresolved.
+  What do you want to do? c
   $ hg ci -m 'merge bar (with conflicts)'
   $ hg log --config diff.git=1 -pr .
   changeset:   28:b4c3035e2544
diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -60,17 +60,20 @@ 
 mergeonly = internaltool.mergeonly # just the full merge, no premerge
 fullmerge = internaltool.fullmerge # both premerge and merge
 
+# IMPORTANT: keep the last line of this prompt very short ("What do you want to
+# do?") because of issue6158, ideally to <40 English characters (to allow other
+# languages that may take more columns to still have a chance to fit in an
+# 80-column screen).
 _localchangedotherdeletedmsg = _(
     "file '%(fd)s' was deleted in other%(o)s but was modified in local%(l)s.\n"
-    "What do you want to do?\n"
-    "use (c)hanged version, (d)elete, or leave (u)nresolved?"
+    "You can use (c)hanged version, (d)elete, or leave (u)nresolved.\n"
+    "What do you want to do?"
     "$$ &Changed $$ &Delete $$ &Unresolved")
 
 _otherchangedlocaldeletedmsg = _(
     "file '%(fd)s' was deleted in local%(l)s but was modified in other%(o)s.\n"
-    "What do you want to do?\n"
-    "use (c)hanged version, leave (d)eleted, or "
-    "leave (u)nresolved?"
+    "You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.\n"
+    "What do you want to do?"
     "$$ &Changed $$ &Deleted $$ &Unresolved")
 
 class absentfilectx(object):
@@ -299,9 +302,14 @@ 
                 _otherchangedlocaldeletedmsg % prompts, 2)
             choice = ['other', 'local', 'unresolved'][index]
         else:
+            # IMPORTANT: keep the last line of this prompt ("What do you want to
+            # do?") very short, see comment next to _localchangedotherdeletedmsg
+            # at the top of the file for details.
             index = ui.promptchoice(
-                _("keep (l)ocal%(l)s, take (o)ther%(o)s, or leave (u)nresolved"
-                  " for %(fd)s?"
+                _("file '%(fd)s' needs to be resolved.\n"
+                  "You can keep (l)ocal%(l)s, take (o)ther%(o)s, or leave "
+                  "(u)nresolved.\n"
+                  "What do you want to do?"
                   "$$ &Local $$ &Other $$ &Unresolved") % prompts, 2)
             choice = ['local', 'other', 'unresolved'][index]