Mercurial > hg
changeset 26288:2239626369f5
gitweb: port code selection without line numbers from paper
This is adapted from f2e4fdb3dd27 and e92d4b8530cb.
It also fixes issue4790 in gitweb; tab characters now have meaningful width on
the modified pages (file view, file diff, changeset).
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Tue, 22 Sep 2015 02:09:10 +0800 |
parents | 5c217bcc4597 |
children | c4b667a7a51d |
files | mercurial/templates/gitweb/changeset.tmpl mercurial/templates/gitweb/filerevision.tmpl mercurial/templates/gitweb/map mercurial/templates/static/style-gitweb.css tests/test-hgweb.t |
diffstat | 5 files changed, 81 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templates/gitweb/changeset.tmpl Sun Sep 13 22:34:58 2015 +0900 +++ b/mercurial/templates/gitweb/changeset.tmpl Tue Sep 22 02:09:10 2015 +0800 @@ -52,6 +52,6 @@ {files} </table></div> -<div class="page_body">{diff}</div> +<div class="page_body diffblocks">{diff}</div> {footer}
--- a/mercurial/templates/gitweb/filerevision.tmpl Sun Sep 13 22:34:58 2015 +0900 +++ b/mercurial/templates/gitweb/filerevision.tmpl Tue Sep 22 02:09:10 2015 +0800 @@ -64,7 +64,7 @@ </div> <div class="page_body"> -{text%fileline} +<pre class="sourcelines stripes">{text%fileline}</pre> </div> {footer}
--- a/mercurial/templates/gitweb/map Sun Sep 13 22:34:58 2015 +0900 +++ b/mercurial/templates/gitweb/map Tue Sep 22 02:09:10 2015 +0800 @@ -93,9 +93,7 @@ filecomparison = filecomparison.tmpl filelog = filelog.tmpl fileline = ' - <div style="font-family:monospace" class="parity{parity}"> - <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre> - </div>' + <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' annotateline = ' <tr style="font-family:monospace" class="parity{parity}"> <td class="linenr" style="text-align: right;"> @@ -105,10 +103,14 @@ <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td> <td><pre>{line|escape}</pre></td> </tr>' -difflineplus = '<span class="difflineplus"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>' -difflineminus = '<span class="difflineminus"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>' -difflineat = '<span class="difflineat"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>' -diffline = '<a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}' +difflineplus = ' + <span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' +difflineminus = ' + <span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' +difflineat = ' + <span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' +diffline = ' + <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' comparisonblock =' <tbody class="block"> @@ -223,7 +225,7 @@ <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a> </td> </tr>' -diffblock = '<pre>{lines}</pre>' +diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>' filediffparent = ' <tr> <td>parent {rev}</td>
--- a/mercurial/templates/static/style-gitweb.css Sun Sep 13 22:34:58 2015 +0900 +++ b/mercurial/templates/static/style-gitweb.css Tue Sep 22 02:09:10 2015 +0800 @@ -29,9 +29,9 @@ a.list:hover { text-decoration:underline; color:#880000; } table { padding:8px 4px; } th { padding:2px 5px; font-size:12px; text-align:left; } -tr.light:hover, .parity0:hover { background-color:#edece6; } -tr.dark, .parity1 { background-color:#f6f6f0; } -tr.dark:hover, .parity1:hover { background-color:#edece6; } +tr.light:hover, .parity0:hover, pre.sourcelines.stripes > :nth-child(4n+1):hover { background-color:#edece6; } +tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+3) { background-color:#f6f6f0; } +tr.dark:hover, .parity1:hover, pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color:#edece6; } td { padding:2px 5px; font-size:12px; vertical-align:top; } td.closed { background-color: #99f; } td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; } @@ -87,6 +87,37 @@ span.difflineplus { color:#008800; } span.difflineminus { color:#cc0000; } span.difflineat { color:#990099; } +div.diffblocks { counter-reset: lineno; } +div.diffblock { counter-increment: lineno; } +pre.sourcelines { position: relative; counter-reset: lineno; } +pre.sourcelines > span { + display: inline-block; + box-sizing: border-box; + width: 100%; + padding: 0 0 0 5em; + counter-increment: lineno; +} +pre.sourcelines > span:before { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + display: inline-block; + margin-left: -5em; + width: 4em; + color: #999; + text-align: right; + content: counters(lineno,"."); + float: left; +} +pre.sourcelines > a { + display: inline-block; + position: absolute; + left: 0px; + width: 4em; + height: 1em; +} /* Graph */ div#wrapper {
--- a/tests/test-hgweb.t Sun Sep 13 22:34:58 2015 +0900 +++ b/tests/test-hgweb.t Tue Sep 22 02:09:10 2015 +0800 @@ -340,7 +340,7 @@ $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server 200 Script output follows - content-length: 5401 + content-length: 6242 content-type: text/css body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; } @@ -374,9 +374,9 @@ a.list:hover { text-decoration:underline; color:#880000; } table { padding:8px 4px; } th { padding:2px 5px; font-size:12px; text-align:left; } - tr.light:hover, .parity0:hover { background-color:#edece6; } - tr.dark, .parity1 { background-color:#f6f6f0; } - tr.dark:hover, .parity1:hover { background-color:#edece6; } + tr.light:hover, .parity0:hover, pre.sourcelines.stripes > :nth-child(4n+1):hover { background-color:#edece6; } + tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+3) { background-color:#f6f6f0; } + tr.dark:hover, .parity1:hover, pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color:#edece6; } td { padding:2px 5px; font-size:12px; vertical-align:top; } td.closed { background-color: #99f; } td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; } @@ -432,6 +432,37 @@ span.difflineplus { color:#008800; } span.difflineminus { color:#cc0000; } span.difflineat { color:#990099; } + div.diffblocks { counter-reset: lineno; } + div.diffblock { counter-increment: lineno; } + pre.sourcelines { position: relative; counter-reset: lineno; } + pre.sourcelines > span { + display: inline-block; + box-sizing: border-box; + width: 100%; + padding: 0 0 0 5em; + counter-increment: lineno; + } + pre.sourcelines > span:before { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + display: inline-block; + margin-left: -5em; + width: 4em; + color: #999; + text-align: right; + content: counters(lineno,"."); + float: left; + } + pre.sourcelines > a { + display: inline-block; + position: absolute; + left: 0px; + width: 4em; + height: 1em; + } /* Graph */ div#wrapper {