mercurial

changeset 6122:800e2756c9ab

Add line anchors to annotate, changeset, diff, file views for hgweb
author Edward Lee <edward.lee@engineering.uiuc.edu>
date Tue Sep 04 22:25:37 2007 -0500 (2007-09-04)
parents 23889160905a
children f7f25f58693a
files mercurial/hgweb/common.py mercurial/hgweb/hgweb_mod.py templates/gitweb/map templates/map
line diff
     1.1 --- a/mercurial/hgweb/common.py
     1.2 +++ b/mercurial/hgweb/common.py
     1.3 @@ -76,3 +76,9 @@
     1.4              parity = 1 - parity
     1.5              count = 0
     1.6  
     1.7 +def countgen(start=0, step=1):
     1.8 +    """count forever -- useful for line numbers"""
     1.9 +    while True:
    1.10 +        yield start
    1.11 +        start += step
    1.12 +
     2.1 --- a/mercurial/hgweb/hgweb_mod.py
     2.2 +++ b/mercurial/hgweb/hgweb_mod.py
     2.3 @@ -12,7 +12,7 @@
     2.4  from mercurial.i18n import gettext as _
     2.5  from mercurial import mdiff, ui, hg, util, archival, streamclone, patch
     2.6  from mercurial import revlog, templater
     2.7 -from common import get_mtime, staticfile, style_map, paritygen
     2.8 +from common import get_mtime, staticfile, style_map, paritygen, countgen
     2.9  
    2.10  def _up(p):
    2.11      if p[0] != "/":
    2.12 @@ -170,16 +170,25 @@
    2.13                           file=f,
    2.14                           filenode=hex(fn or nullid))
    2.15  
    2.16 +        blockcount = countgen()
    2.17          def prettyprintlines(diff):
    2.18 -            for l in diff.splitlines(1):
    2.19 +            blockno = blockcount.next()
    2.20 +            for lineno, l in enumerate(diff.splitlines(1)):
    2.21 +                if blockno == 0:
    2.22 +                    lineno = lineno + 1
    2.23 +                else:
    2.24 +                    lineno = "%d.%d" % (blockno, lineno + 1)
    2.25 +                type = "diffline"
    2.26                  if l.startswith('+'):
    2.27 -                    yield self.t("difflineplus", line=l)
    2.28 +                    type = "difflineplus"
    2.29                  elif l.startswith('-'):
    2.30 -                    yield self.t("difflineminus", line=l)
    2.31 +                    type = "difflineminus"
    2.32                  elif l.startswith('@'):
    2.33 -                    yield self.t("difflineat", line=l)
    2.34 -                else:
    2.35 -                    yield self.t("diffline", line=l)
    2.36 +                    type = "difflineat"
    2.37 +                yield self.t(type,
    2.38 +                             line=l,
    2.39 +                             lineid="l%s" % lineno,
    2.40 +                             linenumber="% 8s" % lineno)
    2.41  
    2.42          r = self.repo
    2.43          c1 = r.changectx(node1)
    2.44 @@ -398,9 +407,10 @@
    2.45          mt = mt or 'text/plain'
    2.46  
    2.47          def lines():
    2.48 -            for l, t in enumerate(text.splitlines(1)):
    2.49 +            for lineno, t in enumerate(text.splitlines(1)):
    2.50                  yield {"line": t,
    2.51 -                       "linenumber": "% 6d" % (l + 1),
    2.52 +                       "lineid": "l%d" % (lineno + 1),
    2.53 +                       "linenumber": "% 6d" % (lineno + 1),
    2.54                         "parity": parity.next()}
    2.55  
    2.56          yield self.t("filerevision",
    2.57 @@ -427,7 +437,7 @@
    2.58  
    2.59          def annotate(**map):
    2.60              last = None
    2.61 -            for f, l in fctx.annotate(follow=True):
    2.62 +            for lineno, (f, l) in enumerate(fctx.annotate(follow=True)):
    2.63                  fnode = f.filenode()
    2.64                  name = self.repo.ui.shortuser(f.user())
    2.65  
    2.66 @@ -439,7 +449,9 @@
    2.67                         "rev": f.rev(),
    2.68                         "author": name,
    2.69                         "file": f.path(),
    2.70 -                       "line": l}
    2.71 +                       "line": l,
    2.72 +                       "lineid": "l%d" % (lineno + 1),
    2.73 +                       "linenumber": "% 6d" % (lineno + 1)}
    2.74  
    2.75          yield self.t("fileannotate",
    2.76                       file=f,
     3.1 --- a/templates/gitweb/map
     3.2 +++ b/templates/gitweb/map
     3.3 @@ -22,12 +22,12 @@
     3.4  fileannotate = fileannotate.tmpl
     3.5  filediff = filediff.tmpl
     3.6  filelog = filelog.tmpl
     3.7 -fileline = '<div style="font-family:monospace" class="parity#parity#"><pre><span class="linenr">   #linenumber#</span> #line|escape#</pre></div>'
     3.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>'
     3.9 -difflineplus = '<div style="color:#008800;">#line|escape#</div>'
    3.10 -difflineminus = '<div style="color:#cc0000;">#line|escape#</div>'
    3.11 -difflineat = '<div style="color:#990099;">#line|escape#</div>'
    3.12 -diffline = '<div>#line|escape#</div>'
    3.13 +fileline = '<div style="font-family:monospace" class="parity#parity#"><pre><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</pre></div>'
    3.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>'
    3.15 +difflineplus = '<div style="color:#008800;"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    3.16 +difflineminus = '<div style="color:#cc0000;"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    3.17 +difflineat = '<div style="color:#990099;"><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    3.18 +diffline = '<div><a class="linenr" href="##lineid#" id="#lineid#">#linenumber#</a> #line|escape#</div>'
    3.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>'
    3.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>'
    3.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>'
     4.1 --- a/templates/map
     4.2 +++ b/templates/map
     4.3 @@ -21,13 +21,13 @@
     4.4  fileannotate = fileannotate.tmpl
     4.5  filediff = filediff.tmpl
     4.6  filelog = filelog.tmpl
     4.7 -fileline = '<div class="parity#parity#"><span class="lineno">#linenumber#</span>#line|escape#</div>'
     4.8 +fileline = '<div class="parity#parity#"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</div>'
     4.9  filelogentry = filelogentry.tmpl
    4.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>'
    4.11 -difflineplus = '<span class="plusline">#line|escape#</span>'
    4.12 -difflineminus = '<span class="minusline">#line|escape#</span>'
    4.13 -difflineat = '<span class="atline">#line|escape#</span>'
    4.14 -diffline = '#line|escape#'
    4.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>'
    4.16 +difflineplus = '<span class="plusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
    4.17 +difflineminus = '<span class="minusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
    4.18 +difflineat = '<span class="atline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
    4.19 +diffline = '<a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#'
    4.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>'
    4.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>'
    4.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>'
[repositories index] [mirrors index]
Contact: Thomas Arendsen Hein <hg@intevation.org> - Intevation GmbH