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>'
