mercurial/context.py
changeset 34433 2f5a135b2b04
parent 34432 2e32c6a31cc7
child 34479 99c3dee3f6ce
equal deleted inserted replaced
34432:2e32c6a31cc7 34433:2f5a135b2b04
  1109 
  1109 
  1110 @attr.s(slots=True, frozen=True)
  1110 @attr.s(slots=True, frozen=True)
  1111 class annotateline(object):
  1111 class annotateline(object):
  1112     fctx = attr.ib()
  1112     fctx = attr.ib()
  1113     lineno = attr.ib(default=False)
  1113     lineno = attr.ib(default=False)
       
  1114     # Whether this annotation was the result of a skip-annotate.
       
  1115     skip = attr.ib(default=False)
  1114 
  1116 
  1115 def _annotatepair(parents, childfctx, child, skipchild, diffopts):
  1117 def _annotatepair(parents, childfctx, child, skipchild, diffopts):
  1116     r'''
  1118     r'''
  1117     Given parent and child fctxes and annotate data for parents, for all lines
  1119     Given parent and child fctxes and annotate data for parents, for all lines
  1118     in either parent that match the child, annotate the child with the parent's
  1120     in either parent that match the child, annotate the child with the parent's
  1157             for (a1, a2, b1, b2), _t in blocks:
  1159             for (a1, a2, b1, b2), _t in blocks:
  1158                 if a2 - a1 >= b2 - b1:
  1160                 if a2 - a1 >= b2 - b1:
  1159                     for bk in xrange(b1, b2):
  1161                     for bk in xrange(b1, b2):
  1160                         if child[0][bk].fctx == childfctx:
  1162                         if child[0][bk].fctx == childfctx:
  1161                             ak = min(a1 + (bk - b1), a2 - 1)
  1163                             ak = min(a1 + (bk - b1), a2 - 1)
  1162                             child[0][bk] = parent[0][ak]
  1164                             child[0][bk] = attr.evolve(parent[0][ak], skip=True)
  1163                 else:
  1165                 else:
  1164                     remaining[idx][1].append((a1, a2, b1, b2))
  1166                     remaining[idx][1].append((a1, a2, b1, b2))
  1165 
  1167 
  1166         # Then, look at anything left, which might involve repeating the last
  1168         # Then, look at anything left, which might involve repeating the last
  1167         # line.
  1169         # line.
  1168         for parent, blocks in remaining:
  1170         for parent, blocks in remaining:
  1169             for a1, a2, b1, b2 in blocks:
  1171             for a1, a2, b1, b2 in blocks:
  1170                 for bk in xrange(b1, b2):
  1172                 for bk in xrange(b1, b2):
  1171                     if child[0][bk].fctx == childfctx:
  1173                     if child[0][bk].fctx == childfctx:
  1172                         ak = min(a1 + (bk - b1), a2 - 1)
  1174                         ak = min(a1 + (bk - b1), a2 - 1)
  1173                         child[0][bk] = parent[0][ak]
  1175                         child[0][bk] = attr.evolve(parent[0][ak], skip=True)
  1174     return child
  1176     return child
  1175 
  1177 
  1176 class filectx(basefilectx):
  1178 class filectx(basefilectx):
  1177     """A filecontext object makes access to data related to a particular
  1179     """A filecontext object makes access to data related to a particular
  1178        filerevision convenient."""
  1180        filerevision convenient."""