# HG changeset patch # User Anton Shestakov # Date 1468470824 -28800 # Node ID df7d8ea9069585c05b54deb0639cc2ec27ddfa16 # Parent 5f8b36d5a6ecd2e455581ba4946af6d763a7a929 hgweb: enumerate lines in loop header, not before Doing this will allow access to the lines in arbitrary order (because the result of enumerate() is an iterator), and that will help calculating rowspan for annotate blocks. diff -r 5f8b36d5a6ec -r df7d8ea90695 mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py Wed Jul 13 19:33:52 2016 -0700 +++ b/mercurial/hgweb/webcommands.py Thu Jul 14 12:33:44 2016 +0800 @@ -875,13 +875,12 @@ if util.binary(fctx.data()): mt = (mimetypes.guess_type(fctx.path())[0] or 'application/octet-stream') - lines = enumerate([((fctx.filectx(fctx.filerev()), 1), - '(binary:%s)' % mt)]) + lines = [((fctx.filectx(fctx.filerev()), 1), '(binary:%s)' % mt)] else: - lines = enumerate(fctx.annotate(follow=True, linenumber=True, - diffopts=diffopts)) + lines = fctx.annotate(follow=True, linenumber=True, + diffopts=diffopts) previousrev = None - for lineno, ((f, targetline), l) in lines: + for lineno, ((f, targetline), l) in enumerate(lines): rev = f.rev() blockhead = rev != previousrev or None previousrev = rev