changelog shortlog tags files raw zip gz

changeset: Add line anchors to annotate, changeset, diff, file views for hgweb

changeset 6122: 800e2756c9ab
parent 5472:23889160905a
child 6123:f7f25f58693a
author: Edward Lee <edward.lee@engineering.uiuc.edu>
date: Tue Sep 04 22:25:37 2007 -0500 (22 months ago)
files: mercurial/hgweb/common.py mercurial/hgweb/hgweb_mod.py templates/gitweb/map templates/map
description: Add line anchors to annotate, changeset, diff, file views for hgweb
       1--- a/mercurial/hgweb/common.py	Fri Sep 07 16:48:42 2007 +0200
       2+++ b/mercurial/hgweb/common.py	Tue Sep 04 22:25:37 2007 -0500
       3@@ -76,3 +76,9 @@
       4             parity = 1 - parity
       5             count = 0
       6 
       7+def countgen(start=0, step=1):
       8+    """count forever -- useful for line numbers"""
       9+    while True:
      10+        yield start
      11+        start += step
      12+
     1.1--- a/mercurial/hgweb/hgweb_mod.py	Fri Sep 07 16:48:42 2007 +0200
     1.2+++ b/mercurial/hgweb/hgweb_mod.py	Tue Sep 04 22:25:37 2007 -0500
     1.3@@ -12,7 +12,7 @@
     1.4 from mercurial.i18n import gettext as _
     1.5 from mercurial import mdiff, ui, hg, util, archival, streamclone, patch
     1.6 from mercurial import revlog, templater
     1.7-from common import get_mtime, staticfile, style_map, paritygen
     1.8+from common import get_mtime, staticfile, style_map, paritygen, countgen
     1.9 
    1.10 def _up(p):
    1.11     if p[0] != "/":
    1.12@@ -170,16 +170,25 @@
    1.13                          file=f,
    1.14                          filenode=hex(fn or nullid))
    1.15 
    1.16+        blockcount = countgen()
    1.17         def prettyprintlines(diff):
    1.18-            for l in diff.splitlines(1):
    1.19+            blockno = blockcount.next()
    1.20+            for lineno, l in enumerate(diff.splitlines(1)):
    1.21+                if blockno == 0:
    1.22+                    lineno = lineno + 1
    1.23+                else:
    1.24+                    lineno = "%d.%d" % (blockno, lineno + 1)
    1.25+                type = "diffline"
    1.26                 if l.startswith('+'):
    1.27-                    yield self.t("difflineplus", line=l)
    1.28+                    type = "difflineplus"
    1.29                 elif l.startswith('-'):
    1.30-                    yield self.t("difflineminus", line=l)
    1.31+                    type = "difflineminus"
    1.32                 elif l.startswith('@'):
    1.33-                    yield self.t("difflineat", line=l)
    1.34-                else:
    1.35-                    yield self.t("diffline", line=l)
    1.36+                    type = "difflineat"
    1.37+                yield self.t(type,
    1.38+                             line=l,
    1.39+                             lineid="l%s" % lineno,
    1.40+                             linenumber="% 8s" % lineno)
    1.41 
    1.42         r = self.repo
    1.43         c1 = r.changectx(node1)
    1.44@@ -398,9 +407,10 @@
    1.45         mt = mt or 'text/plain'
    1.46 
    1.47         def lines():
    1.48-            for l, t in enumerate(text.splitlines(1)):
    1.49+            for lineno, t in enumerate(text.splitlines(1)):
    1.50                 yield {"line": t,
    1.51-                       "linenumber": "% 6d" % (l + 1),
    1.52+                       "lineid": "l%d" % (lineno + 1),
    1.53+                       "linenumber": "% 6d" % (lineno + 1),
    1.54                        "parity": parity.next()}
    1.55 
    1.56         yield self.t("filerevision",
    1.57@@ -427,7 +437,7 @@
    1.58 
    1.59         def annotate(**map):
    1.60             last = None
    1.61-            for f, l in fctx.annotate(follow=True):
    1.62+            for lineno, (f, l) in enumerate(fctx.annotate(follow=True)):
    1.63                 fnode = f.filenode()
    1.64                 name = self.repo.ui.shortuser(f.user())
    1.65 
    1.66@@ -439,7 +449,9 @@
    1.67                        "rev": f.rev(),
    1.68                        "author": name,
    1.69                        "file": f.path(),
    1.70-                       "line": l}
    1.71+                       "line": l,
    1.72+                       "lineid": "l%d" % (lineno + 1),
    1.73+                       "linenumber": "% 6d" % (lineno + 1)}
    1.74 
    1.75         yield self.t("fileannotate",
    1.76                      file=f,
     2.1--- a/templates/gitweb/map	Fri Sep 07 16:48:42 2007 +0200
     2.2+++ b/templates/gitweb/map	Tue Sep 04 22:25:37 2007 -0500
     2.3@@ -22,12 +22,12 @@
     2.4 fileannotate = fileannotate.tmpl
     2.5 filediff = filediff.tmpl
     2.6 filelog = filelog.tmpl
     2.7-fileline = '<div style="font-family:monospace" class="parity#parity#"><pre><span class="linenr">   #linenumber#</span> #line|escape#</pre></div>'
     2.8-annotateline = '<tr style="font-family:monospace" class="parity#parity#"><td class="linenr" style="text-align: right;"><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#author|obfuscate#@#rev#</a></td><td><pre>#line|escape#</pre></td></tr>'
     2.9-difflineplus = '<div style="color:#008800;">#line|escape#</div>'
    2.10-difflineminus = '<div style="color:#cc0000;">#line|escape#</div>'
    2.11-difflineat = '<div style="color:#990099;">#line|escape#</div>'
    2.12-diffline = '<div>#line|escape#</div>'
    2.13+fileline = '<div style="font-family:monospace" class="parity#parity#"><pre><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</pre></div>'
    2.14+annotateline = '<tr style="font-family:monospace" class="parity#parity#"><td class="linenr" style="text-align: right;"><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#author|obfuscate#@#rev#</a></td><td><pre><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a></pre></td><td><pre>#line|escape#</pre></td></tr>'
    2.15+difflineplus = '<div style="color:#008800;"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    2.16+difflineminus = '<div style="color:#cc0000;"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    2.17+difflineat = '<div style="color:#990099;"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    2.18+diffline = '<div><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    2.19 changelogparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
    2.20 changesetparent = '<tr><td>parent {rev}</td><td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>'
    2.21 filerevparent = '<tr><td>parent {rev}</td><td style="font-family:monospace"><a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a></td></tr>'
     3.1--- a/templates/map	Fri Sep 07 16:48:42 2007 +0200
     3.2+++ b/templates/map	Tue Sep 04 22:25:37 2007 -0500
     3.3@@ -21,13 +21,13 @@
     3.4 fileannotate = fileannotate.tmpl
     3.5 filediff = filediff.tmpl
     3.6 filelog = filelog.tmpl
     3.7-fileline = '<div class="parity#parity#"><span class="lineno">#linenumber#</span>#line|escape#</div>'
     3.8+fileline = '<div class="parity#parity#"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</div>'
     3.9 filelogentry = filelogentry.tmpl
    3.10-annotateline = '<tr class="parity#parity#"><td class="annotate"><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#author|obfuscate#@#rev#</a></td><td><pre>#line|escape#</pre></td></tr>'
    3.11-difflineplus = '<span class="plusline">#line|escape#</span>'
    3.12-difflineminus = '<span class="minusline">#line|escape#</span>'
    3.13-difflineat = '<span class="atline">#line|escape#</span>'
    3.14-diffline = '#line|escape#'
    3.15+annotateline = '<tr class="parity#parity#"><td class="annotate"><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#author|obfuscate#@#rev#</a></td><td><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a></td><td><pre>#line|escape#</pre></td></tr>'
    3.16+difflineplus = '<span class="plusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
    3.17+difflineminus = '<span class="minusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
    3.18+difflineat = '<span class="atline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
    3.19+diffline = '<a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#'
    3.20 changelogparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
    3.21 changesetparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
    3.22 filerevparent = '<tr><td class="metatag">parent:</td><td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a></td></tr>'
back to repositories index - hg@intevation.org - Intevation GmbH