43
43
class DiffWriter(object):
46
'metaline': 'darkyellow',
48
'newtext': 'darkblue',
50
'diffstuff': 'darkgreen',
51
'trailingspace': 'yellow',
52
'leadingtabs': 'magenta',
56
def __init__(self, target, check_style=False):
45
def __init__(self, target, check_style=False, color='always'):
57
46
self.target = target
58
47
self.lp = LineParser()
60
self._read_colordiffrc('/etc/colordiffrc')
61
self._read_colordiffrc(expanduser('~/.colordiffrc'))
49
from terminal import has_ansi_colors
50
if 'always' == color or ('auto' == color and has_ansi_colors()):
52
'metaline': 'darkyellow',
54
'newtext': 'darkblue',
56
'diffstuff': 'darkgreen',
57
'trailingspace': 'yellow',
58
'leadingtabs': 'magenta',
61
self._read_colordiffrc('/etc/colordiffrc')
62
self._read_colordiffrc(expanduser('~/.colordiffrc'))
70
'trailingspace': None,
62
74
self.added_leading_tabs = 0
63
75
self.added_trailing_whitespace = 0
64
76
self.spurious_whitespace = 0
179
191
self._old_lines, self._new_lines = ([], [])
182
def colordiff(check_style, *args, **kwargs):
194
def auto_diff_writer(output):
195
return DiffWriter(output, color='auto')
198
def colordiff(color, check_style, *args, **kwargs):
183
199
real_stdout = sys.stdout
184
dw = DiffWriter(real_stdout, check_style)
200
dw = DiffWriter(real_stdout, check_style, color)
187
203
get_cmd_object('diff').run(*args, **kwargs)