Skip to content

Commit a72012e

Browse files
committed
Switch to using themes. So easy!
1 parent dbf0547 commit a72012e

1 file changed

Lines changed: 10 additions & 18 deletions

File tree

Lib/difflib.py

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
'Differ','IS_CHARACTER_JUNK', 'IS_LINE_JUNK', 'context_diff',
3131
'unified_diff', 'diff_bytes', 'HtmlDiff', 'Match']
3232

33+
from _colorize import can_colorize, get_theme
3334
from heapq import nlargest as _nlargest
3435
from collections import namedtuple as _namedtuple
3536
from types import GenericAlias
@@ -1137,14 +1138,10 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
11371138
four
11381139
"""
11391140

1140-
# {tag: ANSI color escape code}
1141-
colors = {
1142-
"delete": "\033[31m", # red
1143-
"insert": "\033[32m", # green
1144-
"header": "\033[1m", # bold / increased intensity
1145-
"hunk": "\033[36m", # cyan
1146-
}
1147-
reset = "\033[m"
1141+
if color and can_colorize():
1142+
t = get_theme(force_color=True).difflib
1143+
else:
1144+
t = get_theme(force_no_color=True).difflib
11481145

11491146
_check_types(a, b, fromfile, tofile, fromfiledate, tofiledate, lineterm)
11501147
started = False
@@ -1153,16 +1150,13 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
11531150
started = True
11541151
fromdate = '\t{}'.format(fromfiledate) if fromfiledate else ''
11551152
todate = '\t{}'.format(tofiledate) if tofiledate else ''
1156-
_line = '--- {}{}{}'.format(fromfile, fromdate, lineterm)
1157-
yield colors["header"] + _line + reset if color else _line
1158-
_line = '+++ {}{}{}'.format(tofile, todate, lineterm)
1159-
yield colors["header"] + _line + reset if color else _line
1153+
yield '{}--- {}{}{}{}'.format(t.header, fromfile, fromdate, lineterm, t.reset)
1154+
yield '{}+++ {}{}{}{}'.format(t.header, tofile, todate, lineterm, t.reset)
11601155

11611156
first, last = group[0], group[-1]
11621157
file1_range = _format_range_unified(first[1], last[2])
11631158
file2_range = _format_range_unified(first[3], last[4])
1164-
_line = '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm)
1165-
yield colors["hunk"] + _line + reset if color else _line
1159+
yield '{}@@ -{} +{} @@{}{}'.format(t.hunk, file1_range, file2_range, lineterm, t.reset)
11661160

11671161
for tag, i1, i2, j1, j2 in group:
11681162
if tag == 'equal':
@@ -1171,12 +1165,10 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
11711165
continue
11721166
if tag in {'replace', 'delete'}:
11731167
for line in a[i1:i2]:
1174-
_line = '-' + line
1175-
yield colors["delete"] + _line + reset if color else _line
1168+
yield f'{t.delete}-{line}{t.reset}'
11761169
if tag in {'replace', 'insert'}:
11771170
for line in b[j1:j2]:
1178-
_line = '+' + line
1179-
yield colors["insert"] + _line + reset if color else _line
1171+
yield f'{t.insert}+{line}{t.reset}'
11801172

11811173

11821174
########################################################################

0 commit comments

Comments
 (0)