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