##// END OF EJS Templates
patch: enable diff.tab markup for the color extension...
Jordi Gutiérrez Hermoso -
r22460:c343557a default
parent child Browse files
Show More
@@ -18,6 +18,7 b' from node import hex, short'
18 import base85, mdiff, scmutil, util, diffhelpers, copies, encoding, error
18 import base85, mdiff, scmutil, util, diffhelpers, copies, encoding, error
19
19
20 gitre = re.compile('diff --git a/(.*) b/(.*)')
20 gitre = re.compile('diff --git a/(.*) b/(.*)')
21 tabsplitter = re.compile(r'(\t+|[^\t]+)')
21
22
22 class PatchError(Exception):
23 class PatchError(Exception):
23 pass
24 pass
@@ -1673,15 +1674,26 b' def difflabel(func, *args, **kw):'
1673 if line and line[0] not in ' +-@\\':
1674 if line and line[0] not in ' +-@\\':
1674 head = True
1675 head = True
1675 stripline = line
1676 stripline = line
1677 diffline = False
1676 if not head and line and line[0] in '+-':
1678 if not head and line and line[0] in '+-':
1677 # highlight trailing whitespace, but only in changed lines
1679 # highlight tabs and trailing whitespace, but only in
1680 # changed lines
1678 stripline = line.rstrip()
1681 stripline = line.rstrip()
1682 diffline = True
1683
1679 prefixes = textprefixes
1684 prefixes = textprefixes
1680 if head:
1685 if head:
1681 prefixes = headprefixes
1686 prefixes = headprefixes
1682 for prefix, label in prefixes:
1687 for prefix, label in prefixes:
1683 if stripline.startswith(prefix):
1688 if stripline.startswith(prefix):
1684 yield (stripline, label)
1689 if diffline:
1690 for token in tabsplitter.findall(stripline):
1691 if '\t' == token[0]:
1692 yield (token, 'diff.tab')
1693 else:
1694 yield (token, label)
1695 else:
1696 yield (stripline, label)
1685 break
1697 break
1686 else:
1698 else:
1687 yield (line, '')
1699 yield (line, '')
@@ -159,4 +159,44 b' issue3712: test colorization of subrepo '
159 b
159 b
160 \x1b[0;32m+bb\x1b[0m (esc)
160 \x1b[0;32m+bb\x1b[0m (esc)
161
161
162 test tabs
163
164 $ cat >> a <<EOF
165 > one tab
166 > two tabs
167 > end tab
168 > mid tab
169 > all tabs
170 > EOF
171 $ hg diff --nodates --color=always
172 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
173 \x1b[0;31;1m--- a/a\x1b[0m (esc)
174 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
175 \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
176 a
177 c
178 c
179 \x1b[0;32m+aa\x1b[0m (esc)
180 \x1b[0;32m+\x1b[0m \x1b[0;32mone tab\x1b[0m (esc)
181 \x1b[0;32m+\x1b[0m \x1b[0;32mtwo tabs\x1b[0m (esc)
182 \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
183 \x1b[0;32m+mid\x1b[0m \x1b[0;32mtab\x1b[0m (esc)
184 \x1b[0;32m+\x1b[0m \x1b[0;32mall\x1b[0m \x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
185 $ echo "[color]" >> $HGRCPATH
186 $ echo "diff.tab = bold magenta" >> $HGRCPATH
187 $ hg diff --nodates --color=always
188 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
189 \x1b[0;31;1m--- a/a\x1b[0m (esc)
190 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
191 \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
192 a
193 c
194 c
195 \x1b[0;32m+aa\x1b[0m (esc)
196 \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mone tab\x1b[0m (esc)
197 \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc)
198 \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
199 \x1b[0;32m+mid\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtab\x1b[0m (esc)
200 \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)
201
162 $ cd ..
202 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now