[PATCH 3 of 5] hgweb: highlight the line which is linked at
Alexander Plavin
me at aplavin.ru
Fri May 31 05:35:10 CDT 2013
# HG changeset patch
# User Alexander Plavin <me at aplavin.ru>
# Date 1369991128 -14400
# Fri May 31 13:05:28 2013 +0400
# Node ID 235602ad98c5ee757544110a639b5da88163d320
# Parent b05d1e3d588bc747083ced741c29829c55c73cd8
hgweb: highlight the line which is linked at
Line corresponding to the URL hash (#l<n>) is highlighted in the views which
show file(s) content.
diff -r b05d1e3d588b -r 235602ad98c5 mercurial/templates/paper/footer.tmpl
--- a/mercurial/templates/paper/footer.tmpl Thu May 30 20:23:50 2013 +0400
+++ b/mercurial/templates/paper/footer.tmpl Fri May 31 13:05:28 2013 +0400
@@ -1,4 +1,8 @@
-<script type="text/javascript">process_dates()</script>
+<script type="text/javascript">
+process_dates();
+highlightLines();
+addOnclickSource();
+</script>
{motd}
</body>
diff -r b05d1e3d588b -r 235602ad98c5 mercurial/templates/static/mercurial.js
--- a/mercurial/templates/static/mercurial.js Thu May 30 20:23:50 2013 +0400
+++ b/mercurial/templates/static/mercurial.js Fri May 31 13:05:28 2013 +0400
@@ -3,6 +3,7 @@
// Rendering of branch DAGs on the client side
// Display of elapsed time
// Show or hide diffstat
+// Highlight source lines
//
// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
@@ -274,3 +275,38 @@
document.getElementById('diffstatdetails').style.display = 'none';
document.getElementById('diffstatexpand').style.display = 'inline';
}
+
+
+function highlightLines() {
+ nodes = document.getElementsByClassName('linkedline');
+ for (i = 0; i < nodes.length; i++) {
+ nodes[i].className = nodes[i].className.replace(/(?:^|\s)linkedline(?!\S)/g, '');
+ }
+
+ hash = window.location.hash;
+ if (hash.substring(0, 2) === '#l') {
+ id = hash.substring(1);
+ elem = document.getElementById(id);
+ switch (elem.tagName) {
+ case 'A':
+ elem.parentNode.parentNode.className += ' linkedline';
+ break;
+ case 'LI':
+ elem.className += ' linkedline';
+ break;
+ }
+ }
+}
+
+window.addEventListener("hashchange", highlightLines, false);
+
+function addOnclickSource() {
+ nodes = document.querySelectorAll('li.source');
+ for (i = 0; i < nodes.length; i++) {
+ nodes[i].onclick = function (event) {
+ if (event.offsetX < 0 || event.target.tagName == 'LI') {
+ window.location.hash = '#' + this.id;
+ }
+ };
+ }
+}
diff -r b05d1e3d588b -r 235602ad98c5 mercurial/templates/static/style-paper.css
--- a/mercurial/templates/static/style-paper.css Thu May 30 20:23:50 2013 +0400
+++ b/mercurial/templates/static/style-paper.css Fri May 31 13:05:28 2013 +0400
@@ -96,6 +96,7 @@
.indexlinks { white-space:nowrap; }
.parity0 { background-color: #f0f0f0; }
.parity1 { background-color: white; }
+.linkedline > * { background-color: #ffff99 !important; }
.plusline { color: green !important; }
.minusline { color: #dc143c !important; } /* crimson */
.atline { color: purple !important; }
More information about the Mercurial-devel
mailing list