comparison mercurial/mdiff.py @ 38783:e7aa113b14f7

global: use pycompat.xrange() On Python 3, our module importer automatically rewrites xrange() to pycompat.xrange(). We want to move away from the custom importer on Python 3. This commit converts all instances of xrange() to use pycompat.xrange(). Differential Revision: https://phab.mercurial-scm.org/D4032
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 01 Aug 2018 13:00:45 -0700
parents d3286dd2ca2f
children 2372284d9457
comparison
equal deleted inserted replaced
38782:7eba8f83129b 38783:e7aa113b14f7
355 if opts.showfunc: 355 if opts.showfunc:
356 lastpos, func = lastfunc 356 lastpos, func = lastfunc
357 # walk backwards from the start of the context up to the start of 357 # walk backwards from the start of the context up to the start of
358 # the previous hunk context until we find a line starting with an 358 # the previous hunk context until we find a line starting with an
359 # alphanumeric char. 359 # alphanumeric char.
360 for i in xrange(astart - 1, lastpos - 1, -1): 360 for i in pycompat.xrange(astart - 1, lastpos - 1, -1):
361 if l1[i][0:1].isalnum(): 361 if l1[i][0:1].isalnum():
362 func = b' ' + l1[i].rstrip() 362 func = b' ' + l1[i].rstrip()
363 # split long function name if ASCII. otherwise we have no 363 # split long function name if ASCII. otherwise we have no
364 # idea where the multi-byte boundary is, so just leave it. 364 # idea where the multi-byte boundary is, so just leave it.
365 if encoding.isasciistr(func): 365 if encoding.isasciistr(func):
379 379
380 hunkrange = astart, alen, bstart, blen 380 hunkrange = astart, alen, bstart, blen
381 hunklines = ( 381 hunklines = (
382 ["@@ -%d,%d +%d,%d @@%s\n" % (hunkrange + (func,))] 382 ["@@ -%d,%d +%d,%d @@%s\n" % (hunkrange + (func,))]
383 + delta 383 + delta
384 + [' ' + l1[x] for x in xrange(a2, aend)] 384 + [' ' + l1[x] for x in pycompat.xrange(a2, aend)]
385 ) 385 )
386 # If either file ends without a newline and the last line of 386 # If either file ends without a newline and the last line of
387 # that file is part of a hunk, a marker is printed. If the 387 # that file is part of a hunk, a marker is printed. If the
388 # last line of both files is identical and neither ends in 388 # last line of both files is identical and neither ends in
389 # a newline, print only one marker. That's the only case in 389 # a newline, print only one marker. That's the only case in
390 # which the hunk can end in a shared line without a newline. 390 # which the hunk can end in a shared line without a newline.
391 skip = False 391 skip = False
392 if not t1.endswith('\n') and astart + alen == len(l1) + 1: 392 if not t1.endswith('\n') and astart + alen == len(l1) + 1:
393 for i in xrange(len(hunklines) - 1, -1, -1): 393 for i in pycompat.xrange(len(hunklines) - 1, -1, -1):
394 if hunklines[i].startswith(('-', ' ')): 394 if hunklines[i].startswith(('-', ' ')):
395 if hunklines[i].startswith(' '): 395 if hunklines[i].startswith(' '):
396 skip = True 396 skip = True
397 hunklines[i] += '\n' 397 hunklines[i] += '\n'
398 hunklines.insert(i + 1, _missing_newline_marker) 398 hunklines.insert(i + 1, _missing_newline_marker)
399 break 399 break
400 if not skip and not t2.endswith('\n') and bstart + blen == len(l2) + 1: 400 if not skip and not t2.endswith('\n') and bstart + blen == len(l2) + 1:
401 for i in xrange(len(hunklines) - 1, -1, -1): 401 for i in pycompat.xrange(len(hunklines) - 1, -1, -1):
402 if hunklines[i].startswith('+'): 402 if hunklines[i].startswith('+'):
403 hunklines[i] += '\n' 403 hunklines[i] += '\n'
404 hunklines.insert(i + 1, _missing_newline_marker) 404 hunklines.insert(i + 1, _missing_newline_marker)
405 break 405 break
406 yield hunkrange, hunklines 406 yield hunkrange, hunklines