tests/test-diff-color.t
author Jun Wu <quark@fb.com>
Mon, 09 Apr 2018 15:58:30 -0700
changeset 37732 35632d392279
parent 37731 5471348921c1
child 38591 be441eb65f09
permissions -rw-r--r--
patch: implement a new worddiff algorithm The previous worddiff algorithm has many problems. The major problem is it does a "similarity check" that selects a subset of matched lines to do inline diffs. It is a bad idea because: - The "similarity check" is non-obvious to users. For example, a simple change from "long long x" to "int64_t x" will fail the similarity check and won't be diff-ed as expected. - Selecting "lines" to diff won't work as people expect if there are line wrapping changes. - It has a sad time complexity if lines do not match, could be O(N^2)-ish. There are other problems in implementation details. - Lines can match across distant hunks (if the next hunk does not have "-" lines). - "difflib" is slow. The solution would be removing the "similarity check", and just diff all words in a same hunk. So no content will be missed and everything will be diff-ed as expected. This is similar to what code review tool like Phabricator does. This diff implements the word diff algorithm as described above. It also avoids difflib to be faster. Note about colors: To be consistent, "changed inserted" parts and "purely insertion blocks" should have a same color, since they do not exist in the previous version. Instead of highlighting differences, this patch chooses to dim common parts. This is also more consistent with Phabricator or GitHub webpage. That said, the labels are defined in a way that people can still highlight changed parts and leave purely inserted/deleted hunks use the "non-highlighted" color. As one example, running: hg log -pr df50b87d8f736aff8dc281f816bddcd6f306930c mercurial/commands.py \ --config experimental.worddiff=1 --color=debug --config diff.unified=0 The previous algorithm outputs: [diff.file_a|--- a/mercurial/commands.py Fri Mar 09 15:53:41 2018 +0100] [diff.file_b|+++ b/mercurial/commands.py Sat Mar 10 12:33:19 2018 +0530] [diff.hunk|@@ -2039,1 +2039,4 @@] [diff.deleted|-][diff.deleted.highlight|@command('^forget',][diff.deleted| ][diff.deleted.highlight|walkopts,][diff.deleted| _('[OPTION]... FILE...'), inferrepo=True)] [diff.inserted|+@command(] [diff.inserted|+ '^forget',] [diff.inserted|+ walkopts + dryrunopts,] [diff.inserted|+ ][diff.inserted.highlight| ][diff.inserted| _('[OPTION]... FILE...'), inferrepo=True)] [diff.hunk|@@ -2074,1 +2077,3 @@] [diff.deleted|- rejected = cmdutil.forget(ui, repo, m, prefix="",][diff.deleted.highlight| explicitonly=False)[0]] [diff.inserted|+ dryrun = opts.get(r'dry_run')] [diff.inserted|+ rejected = cmdutil.forget(ui, repo, m, prefix="",] [diff.inserted|+ explicitonly=False, dryrun=dryrun)[0]] The new algorithm outputs: [diff.file_a|--- a/mercurial/commands.py Fri Mar 09 15:53:41 2018 +0100] [diff.file_b|+++ b/mercurial/commands.py Sat Mar 10 12:33:19 2018 +0530] [diff.hunk|@@ -2039,1 +2039,4 @@] [diff.deleted|-][diff.deleted.unchanged|@command(][diff.deleted.unchanged|'^forget',][diff.deleted.unchanged| ][diff.deleted.changed|walkopts][diff.deleted.unchanged|,][diff.deleted.changed| ][diff.deleted.unchanged|_('[OPTION]... FILE...'), inferrepo=True)] [diff.inserted|+][diff.inserted.unchanged|@command(] [diff.inserted|+][diff.inserted.changed| ][diff.inserted.unchanged|'^forget',] [diff.inserted|+][diff.inserted.changed| walkopts][diff.inserted.unchanged| ][diff.inserted.changed|+ dryrunopts][diff.inserted.unchanged|,] [diff.inserted|+][diff.inserted.changed| ][diff.inserted.unchanged|_('[OPTION]... FILE...'), inferrepo=True)] [diff.hunk|@@ -2074,1 +2077,3 @@] [diff.deleted|-][diff.deleted.unchanged| rejected = cmdutil.forget(ui, repo, m, prefix="",][diff.deleted.changed| ][diff.deleted.unchanged|explicitonly=False][diff.deleted.unchanged|)[0]] [diff.inserted|+][diff.inserted.changed| dryrun = opts.get(r'dry_run')] [diff.inserted|+][diff.inserted.unchanged| rejected = cmdutil.forget(ui, repo, m, prefix="",] [diff.inserted|+][diff.inserted.changed| ][diff.inserted.unchanged|explicitonly=False][diff.inserted.changed|, dryrun=dryrun][diff.inserted.unchanged|)[0]] Practically, when diffing a 8k line change, the time spent on worddiff reduces from 4 seconds to 0.14 seconds. Differential Revision: https://phab.mercurial-scm.org/D3212
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
     1
Setup
7458
03dd55115985 color: Add tests for colorized diff and status output.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
     2
23172
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
     3
  $ cat <<EOF >> $HGRCPATH
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
     4
  > [ui]
32103
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
     5
  > color = yes
32102
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
     6
  > formatted = always
32122
1add41fc3c62 test-diff-color: disable pager for expected output on Windows (issue5555)
Matt Harbison <matt_harbison@yahoo.com>
parents: 32103
diff changeset
     7
  > paginate = never
23172
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
     8
  > [color]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
     9
  > mode = ansi
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
    10
  > EOF
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    11
  $ hg init repo
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    12
  $ cd repo
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    13
  $ cat > a <<EOF
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    14
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    15
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    16
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    17
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    18
  > b
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    19
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    20
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    21
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    22
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    23
  > EOF
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    24
  $ hg ci -Am adda
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    25
  adding a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    26
  $ cat > a <<EOF
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    27
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    28
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    29
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    30
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    31
  > dd
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    32
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    33
  > a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    34
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    35
  > c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    36
  > EOF
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    37
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    38
default context
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    39
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
    40
  $ hg diff --nodates
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
    41
  \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
    42
  \x1b[0;31;1m--- a/a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
    43
  \x1b[0;32;1m+++ b/a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
    44
  \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    45
   c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    46
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    47
   a
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
    48
  \x1b[0;31m-b\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
    49
  \x1b[0;32m+dd\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    50
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    51
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    52
   c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
    53
32102
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    54
(check that 'ui.color=yes' match '--color=auto')
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    55
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    56
  $ hg diff --nodates --config ui.formatted=no
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    57
  diff -r cf9f4ba66af2 a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    58
  --- a/a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    59
  +++ b/a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    60
  @@ -2,7 +2,7 @@
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    61
   c
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    62
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    63
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    64
  -b
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    65
  +dd
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    66
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    67
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    68
   c
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    69
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    70
(check that 'ui.color=no' disable color)
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    71
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    72
  $ hg diff --nodates --config ui.formatted=yes --config ui.color=no
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    73
  diff -r cf9f4ba66af2 a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    74
  --- a/a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    75
  +++ b/a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    76
  @@ -2,7 +2,7 @@
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    77
   c
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    78
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    79
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    80
  -b
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    81
  +dd
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    82
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    83
   a
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    84
   c
9a85ea1daf49 color: turn 'ui.color' into a boolean (auto or off)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31110
diff changeset
    85
32103
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    86
(check that 'ui.color=always' force color)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    87
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    88
  $ hg diff --nodates --config ui.formatted=no --config ui.color=always
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    89
  \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    90
  \x1b[0;31;1m--- a/a\x1b[0m (esc)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    91
  \x1b[0;32;1m+++ b/a\x1b[0m (esc)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    92
  \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    93
   c
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    94
   a
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    95
   a
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    96
  \x1b[0;31m-b\x1b[0m (esc)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    97
  \x1b[0;32m+dd\x1b[0m (esc)
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    98
   a
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
    99
   a
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
   100
   c
9a98023ac8db color: special case 'always' in 'ui.color'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 32102
diff changeset
   101
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   102
--unified=2
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   103
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   104
  $ hg diff --nodates -U 2
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   105
  \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   106
  \x1b[0;31;1m--- a/a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   107
  \x1b[0;32;1m+++ b/a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   108
  \x1b[0;35m@@ -3,5 +3,5 @@\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   109
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   110
   a
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   111
  \x1b[0;31m-b\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   112
  \x1b[0;32m+dd\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   113
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   114
   a
7458
03dd55115985 color: Add tests for colorized diff and status output.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
   115
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   116
diffstat
9579
c06e7581bbaa color: add test for record support
Brodie Rao <me+hg@dackz.net>
parents: 7458
diff changeset
   117
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   118
  $ hg diff --stat
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   119
   a |  2 \x1b[0;32m+\x1b[0m\x1b[0;31m-\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   120
   1 files changed, 1 insertions(+), 1 deletions(-)
23172
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   121
  $ cat <<EOF >> $HGRCPATH
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   122
  > [extensions]
23172
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   123
  > record =
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   124
  > [ui]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   125
  > interactive = true
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   126
  > [diff]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   127
  > git = True
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22589
diff changeset
   128
  > EOF
9641
9b99f158348a color: colorize diff --stat
Brodie Rao <me+hg@dackz.net>
parents: 9579
diff changeset
   129
16899
8149ff405c78 tests: convert some 'hghave execbit' to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16324
diff changeset
   130
#if execbit
8149ff405c78 tests: convert some 'hghave execbit' to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16324
diff changeset
   131
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   132
record
9579
c06e7581bbaa color: add test for record support
Brodie Rao <me+hg@dackz.net>
parents: 7458
diff changeset
   133
15442
db0340f4b507 tests: use 'hghave execbit' for tests that manipulate x bit in file system
Mads Kiilerich <mads@kiilerich.com>
parents: 15243
diff changeset
   134
  $ chmod +x a
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   135
  $ hg record -m moda a <<EOF
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   136
  > y
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   137
  > y
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   138
  > EOF
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   139
  \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   140
  \x1b[0;36;1mold mode 100644\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   141
  \x1b[0;36;1mnew mode 100755\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   142
  1 hunks, 1 lines changed
22589
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   143
  \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   144
  
27411
c84a07530040 record: turn on showfunc
timeless <timeless@mozdev.org>
parents: 23172
diff changeset
   145
  \x1b[0;35m@@ -2,7 +2,7 @@ c\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   146
   c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   147
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   148
   a
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   149
  \x1b[0;31m-b\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   150
  \x1b[0;32m+dd\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   151
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   152
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   153
   c
22589
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   154
  \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   155
  
15243
1e9451476bf8 tests: cleanup of echo statements left over from test conversion
Mads Kiilerich <mads@kiilerich.com>
parents: 13987
diff changeset
   156
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   157
  $ echo "[extensions]" >> $HGRCPATH
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   158
  $ echo "mq=" >> $HGRCPATH
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   159
  $ hg rollback
13446
1e497df514e2 rollback: clarifies the message about the reverted state (issue2628)
Gilles Moris <gilles.moris@free.fr>
parents: 12942
diff changeset
   160
  repository tip rolled back to revision 0 (undo commit)
1e497df514e2 rollback: clarifies the message about the reverted state (issue2628)
Gilles Moris <gilles.moris@free.fr>
parents: 12942
diff changeset
   161
  working directory now based on revision 0
9711
d29bd00bbc50 color: wrap qrecord
Martin Geisler <mg@lazybytes.net>
parents: 9641
diff changeset
   162
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   163
qrecord
9711
d29bd00bbc50 color: wrap qrecord
Martin Geisler <mg@lazybytes.net>
parents: 9641
diff changeset
   164
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   165
  $ hg qrecord -m moda patch <<EOF
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   166
  > y
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   167
  > y
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   168
  > EOF
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   169
  \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   170
  \x1b[0;36;1mold mode 100644\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   171
  \x1b[0;36;1mnew mode 100755\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   172
  1 hunks, 1 lines changed
22589
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   173
  \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   174
  
27411
c84a07530040 record: turn on showfunc
timeless <timeless@mozdev.org>
parents: 23172
diff changeset
   175
  \x1b[0;35m@@ -2,7 +2,7 @@ c\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   176
   c
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   177
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   178
   a
12942
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   179
  \x1b[0;31m-b\x1b[0m (esc)
05fffd665170 tests: use (esc) for all non-ASCII test output
Mads Kiilerich <mads@kiilerich.com>
parents: 12415
diff changeset
   180
  \x1b[0;32m+dd\x1b[0m (esc)
12415
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   181
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   182
   a
1ff3fc4b6a66 tests: unify test-diff-color
Matt Mackall <mpm@selenic.com>
parents: 9711
diff changeset
   183
   c
22589
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   184
  \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
9ab18a912c44 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com>
parents: 22460
diff changeset
   185
  
16899
8149ff405c78 tests: convert some 'hghave execbit' to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16324
diff changeset
   186
18006
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   187
  $ hg qpop -a
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   188
  popping patch
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   189
  patch queue now empty
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   190
16899
8149ff405c78 tests: convert some 'hghave execbit' to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16324
diff changeset
   191
#endif
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16899
diff changeset
   192
18006
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   193
issue3712: test colorization of subrepo diff
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   194
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   195
  $ hg init sub
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   196
  $ echo b > sub/b
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   197
  $ hg -R sub commit -Am 'create sub'
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   198
  adding b
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   199
  $ echo 'sub = sub' > .hgsub
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   200
  $ hg add .hgsub
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   201
  $ hg commit -m 'add subrepo sub'
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   202
  $ echo aa >> a
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   203
  $ echo bb >> sub/b
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   204
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   205
  $ hg diff -S
18006
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   206
  \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   207
  \x1b[0;31;1m--- a/a\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   208
  \x1b[0;32;1m+++ b/a\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   209
  \x1b[0;35m@@ -7,3 +7,4 @@\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   210
   a
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   211
   c
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   212
   c
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   213
  \x1b[0;32m+aa\x1b[0m (esc)
18720
0ade08dcb3c3 tests: remove glob lines which unnecessary match / for \ on windows
Simon Heimberg <simohe@besonet.ch>
parents: 18157
diff changeset
   214
  \x1b[0;1mdiff --git a/sub/b b/sub/b\x1b[0m (esc)
18006
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   215
  \x1b[0;31;1m--- a/sub/b\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   216
  \x1b[0;32;1m+++ b/sub/b\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   217
  \x1b[0;35m@@ -1,1 +1,2 @@\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   218
   b
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   219
  \x1b[0;32m+bb\x1b[0m (esc)
0c10cf819146 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16913
diff changeset
   220
22460
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   221
test tabs
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   222
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   223
  $ cat >> a <<EOF
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   224
  > 	one tab
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   225
  > 		two tabs
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   226
  > end tab	
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   227
  > mid	tab
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   228
  > 	all		tabs	
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   229
  > EOF
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   230
  $ hg diff --nodates
22460
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   231
  \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   232
  \x1b[0;31;1m--- a/a\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   233
  \x1b[0;32;1m+++ b/a\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   234
  \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   235
   a
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   236
   c
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   237
   c
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   238
  \x1b[0;32m+aa\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   239
  \x1b[0;32m+\x1b[0m	\x1b[0;32mone tab\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   240
  \x1b[0;32m+\x1b[0m		\x1b[0;32mtwo tabs\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   241
  \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m	\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   242
  \x1b[0;32m+mid\x1b[0m	\x1b[0;32mtab\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   243
  \x1b[0;32m+\x1b[0m	\x1b[0;32mall\x1b[0m		\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m	\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   244
  $ echo "[color]" >> $HGRCPATH
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   245
  $ echo "diff.tab = bold magenta" >> $HGRCPATH
31110
7fec37746417 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27411
diff changeset
   246
  $ hg diff --nodates
22460
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   247
  \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   248
  \x1b[0;31;1m--- a/a\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   249
  \x1b[0;32;1m+++ b/a\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   250
  \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   251
   a
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   252
   c
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   253
   c
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   254
  \x1b[0;32m+aa\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   255
  \x1b[0;32m+\x1b[0m\x1b[0;1;35m	\x1b[0m\x1b[0;32mone tab\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   256
  \x1b[0;32m+\x1b[0m\x1b[0;1;35m		\x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   257
  \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m	\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   258
  \x1b[0;32m+mid\x1b[0m\x1b[0;1;35m	\x1b[0m\x1b[0;32mtab\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   259
  \x1b[0;32m+\x1b[0m\x1b[0;1;35m	\x1b[0m\x1b[0;32mall\x1b[0m\x1b[0;1;35m		\x1b[0m\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m	\x1b[0m (esc)
c343557a8442 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 18720
diff changeset
   260
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16899
diff changeset
   261
  $ cd ..
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   262
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   263
test inline color diff
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   264
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   265
  $ hg init inline
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   266
  $ cd inline
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   267
  $ cat > file1 << EOF
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   268
  > this is the first line
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   269
  > this is the second line
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   270
  >     third line starts with space
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   271
  > + starts with a plus sign
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   272
  > 	this one with one tab
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   273
  > 		now with full two tabs
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   274
  > 	now tabs		everywhere, much fun
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   275
  > 
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   276
  > this line won't change
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   277
  > 
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   278
  > two lines are going to
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   279
  > be changed into three!
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   280
  > 
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   281
  > three of those lines will
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   282
  > collapse onto one
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   283
  > (to see if it works)
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   284
  > EOF
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   285
  $ hg add file1
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   286
  $ hg ci -m 'commit'
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   287
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   288
  $ cat > file1 << EOF
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   289
  > that is the first paragraph
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   290
  >     this is the second line
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   291
  > third line starts with space
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   292
  > - starts with a minus sign
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   293
  > 	this one with two tab
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   294
  > 			now with full three tabs
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   295
  > 	now there are tabs		everywhere, much fun
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   296
  > 
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   297
  > this line won't change
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   298
  > 
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   299
  > two lines are going to
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   300
  > (entirely magically,
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   301
  >  assuming this works)
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   302
  > be changed into four!
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   303
  > 
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   304
  > three of those lines have
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   305
  > collapsed onto one
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   306
  > EOF
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   307
  $ hg diff --config experimental.worddiff=False --color=debug
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   308
  [diff.diffline|diff --git a/file1 b/file1]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   309
  [diff.file_a|--- a/file1]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   310
  [diff.file_b|+++ b/file1]
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   311
  [diff.hunk|@@ -1,16 +1,17 @@]
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   312
  [diff.deleted|-this is the first line]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   313
  [diff.deleted|-this is the second line]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   314
  [diff.deleted|-    third line starts with space]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   315
  [diff.deleted|-+ starts with a plus sign]
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   316
  [diff.deleted|-][diff.tab|	][diff.deleted|this one with one tab]
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   317
  [diff.deleted|-][diff.tab|		][diff.deleted|now with full two tabs]
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   318
  [diff.deleted|-][diff.tab|	][diff.deleted|now tabs][diff.tab|		][diff.deleted|everywhere, much fun]
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   319
  [diff.inserted|+that is the first paragraph]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   320
  [diff.inserted|+    this is the second line]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   321
  [diff.inserted|+third line starts with space]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   322
  [diff.inserted|+- starts with a minus sign]
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   323
  [diff.inserted|+][diff.tab|	][diff.inserted|this one with two tab]
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   324
  [diff.inserted|+][diff.tab|			][diff.inserted|now with full three tabs]
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   325
  [diff.inserted|+][diff.tab|	][diff.inserted|now there are tabs][diff.tab|		][diff.inserted|everywhere, much fun]
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   326
   
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   327
   this line won't change
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   328
   
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   329
   two lines are going to
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   330
  [diff.deleted|-be changed into three!]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   331
  [diff.inserted|+(entirely magically,]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   332
  [diff.inserted|+ assuming this works)]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   333
  [diff.inserted|+be changed into four!]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   334
   
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   335
  [diff.deleted|-three of those lines will]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   336
  [diff.deleted|-collapse onto one]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   337
  [diff.deleted|-(to see if it works)]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   338
  [diff.inserted|+three of those lines have]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   339
  [diff.inserted|+collapsed onto one]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   340
  $ hg diff --config experimental.worddiff=True --color=debug
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   341
  [diff.diffline|diff --git a/file1 b/file1]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   342
  [diff.file_a|--- a/file1]
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   343
  [diff.file_b|+++ b/file1]
35328
4937db58b663 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 35277
diff changeset
   344
  [diff.hunk|@@ -1,16 +1,17 @@]
37732
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   345
  [diff.deleted|-][diff.deleted.changed|this][diff.deleted.unchanged| is the first ][diff.deleted.changed|line]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   346
  [diff.deleted|-][diff.deleted.unchanged|this is the second line]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   347
  [diff.deleted|-][diff.deleted.changed|    ][diff.deleted.unchanged|third line starts with space]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   348
  [diff.deleted|-][diff.deleted.changed|+][diff.deleted.unchanged| starts with a ][diff.deleted.changed|plus][diff.deleted.unchanged| sign]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   349
  [diff.deleted|-][diff.tab|	][diff.deleted.unchanged|this one with ][diff.deleted.changed|one][diff.deleted.unchanged| tab]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   350
  [diff.deleted|-][diff.tab|		][diff.deleted.unchanged|now with full ][diff.deleted.changed|two][diff.deleted.unchanged| tabs]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   351
  [diff.deleted|-][diff.tab|	][diff.deleted.unchanged|now ][diff.deleted.unchanged|tabs][diff.tab|		][diff.deleted.unchanged|everywhere, much fun]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   352
  [diff.inserted|+][diff.inserted.changed|that][diff.inserted.unchanged| is the first ][diff.inserted.changed|paragraph]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   353
  [diff.inserted|+][diff.inserted.changed|    ][diff.inserted.unchanged|this is the second line]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   354
  [diff.inserted|+][diff.inserted.unchanged|third line starts with space]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   355
  [diff.inserted|+][diff.inserted.changed|-][diff.inserted.unchanged| starts with a ][diff.inserted.changed|minus][diff.inserted.unchanged| sign]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   356
  [diff.inserted|+][diff.tab|	][diff.inserted.unchanged|this one with ][diff.inserted.changed|two][diff.inserted.unchanged| tab]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   357
  [diff.inserted|+][diff.tab|			][diff.inserted.unchanged|now with full ][diff.inserted.changed|three][diff.inserted.unchanged| tabs]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   358
  [diff.inserted|+][diff.tab|	][diff.inserted.unchanged|now ][diff.inserted.changed|there are ][diff.inserted.unchanged|tabs][diff.tab|		][diff.inserted.unchanged|everywhere, much fun]
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   359
   
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   360
   this line won't change
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   361
   
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   362
   two lines are going to
37732
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   363
  [diff.deleted|-][diff.deleted.unchanged|be changed into ][diff.deleted.changed|three][diff.deleted.unchanged|!]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   364
  [diff.inserted|+][diff.inserted.changed|(entirely magically,]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   365
  [diff.inserted|+][diff.inserted.changed| assuming this works)]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   366
  [diff.inserted|+][diff.inserted.unchanged|be changed into ][diff.inserted.changed|four][diff.inserted.unchanged|!]
35277
6ba79cf34f5e patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net>
parents: 32122
diff changeset
   367
   
37732
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   368
  [diff.deleted|-][diff.deleted.unchanged|three of those lines ][diff.deleted.changed|will]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   369
  [diff.deleted|-][diff.deleted.changed|collapse][diff.deleted.unchanged| onto one]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   370
  [diff.deleted|-][diff.deleted.changed|(to see if it works)]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   371
  [diff.inserted|+][diff.inserted.unchanged|three of those lines ][diff.inserted.changed|have]
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   372
  [diff.inserted|+][diff.inserted.changed|collapsed][diff.inserted.unchanged| onto one]
35383
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   373
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   374
multibyte character shouldn't be broken up in word diff:
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   375
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   376
  $ $PYTHON <<'EOF'
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   377
  > with open("utf8", "wb") as f:
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   378
  >     f.write(b"blah \xe3\x82\xa2 blah\n")
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   379
  > EOF
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   380
  $ hg ci -Am 'add utf8 char' utf8
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   381
  $ $PYTHON <<'EOF'
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   382
  > with open("utf8", "wb") as f:
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   383
  >     f.write(b"blah \xe3\x82\xa4 blah\n")
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   384
  > EOF
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   385
  $ hg ci -m 'slightly change utf8 char' utf8
37731
5471348921c1 patch: buffer lines for a same hunk
Jun Wu <quark@fb.com>
parents: 35383
diff changeset
   386
35383
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   387
  $ hg diff --config experimental.worddiff=True --color=debug -c.
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   388
  [diff.diffline|diff --git a/utf8 b/utf8]
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   389
  [diff.file_a|--- a/utf8]
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   390
  [diff.file_b|+++ b/utf8]
82c3762349ac patch: do not break up multibyte character when highlighting word
Yuya Nishihara <yuya@tcha.org>
parents: 35328
diff changeset
   391
  [diff.hunk|@@ -1,1 +1,1 @@]
37732
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   392
  [diff.deleted|-][diff.deleted.unchanged|blah ][diff.deleted.changed|\xe3\x82\xa2][diff.deleted.unchanged| blah] (esc)
35632d392279 patch: implement a new worddiff algorithm
Jun Wu <quark@fb.com>
parents: 37731
diff changeset
   393
  [diff.inserted|+][diff.inserted.unchanged|blah ][diff.inserted.changed|\xe3\x82\xa4][diff.inserted.unchanged| blah] (esc)