Patchwork [4,of,4] gitweb: highlight data of the current revision in annotate view

login
register
mail settings
Submitter Denis Laxalde
Date June 6, 2016, 8:03 a.m.
Message ID <b2197fb3124e53902437.1465200200@sh77.tls.logilab.fr>
Download mbox | patch
Permalink /patch/15423/
State Changes Requested
Headers show

Comments

Denis Laxalde - June 6, 2016, 8:03 a.m.
# HG changeset patch
# User Denis Laxalde <denis.laxalde@logilab.fr>
# Date 1464877610 -7200
#      Thu Jun 02 16:26:50 2016 +0200
# Node ID b2197fb3124e53902437e9e81463281a85d7bbbd
# Parent  ecadc1da55f84fd77110ca23341e12949110d46c
gitweb: highlight data of the current revision in annotate view

* Distinguish the /annotate/<revision>/<file>#<linenumber> link when it would
  lead to the current page (i.e. <revision> is the current revision) (style it
  gray and undecorated). This indicates more clearly that this is a "dead-end"
  in blame navigation.

* Display lines changed in current revision in green.
Anton Shestakov - June 6, 2016, 9:12 a.m.
06.06.2016, 16:09, "Denis Laxalde" <denis.laxalde@logilab.fr>:
> # HG changeset patch
> # User Denis Laxalde <denis.laxalde@logilab.fr>
> # Date 1464877610 -7200
> # Thu Jun 02 16:26:50 2016 +0200
> # Node ID b2197fb3124e53902437e9e81463281a85d7bbbd
> # Parent ecadc1da55f84fd77110ca23341e12949110d46c
> gitweb: highlight data of the current revision in annotate view
...
> diff --git a/tests/test-hgweb.t b/tests/test-hgweb.t
> --- a/tests/test-hgweb.t
> +++ b/tests/test-hgweb.t
> @@ -340,7 +340,7 @@ static file
>
>    $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
>    200 Script output follows
> - content-length: 6624
> + content-length: 6705
>    content-type: text/css
>
>    body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; background: white; color: black; }
> @@ -399,6 +399,8 @@ static file
>    div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
>    div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
>    a.revision-ancestor { font-style: italic; text-decoration: none }
> + a.thisrev { color:#99999; text-decoration: none }

Did you mean #999999?
Yuya Nishihara - June 8, 2016, 12:38 p.m.
On Mon, 06 Jun 2016 10:03:20 +0200, Denis Laxalde wrote:
> # HG changeset patch
> # User Denis Laxalde <denis.laxalde@logilab.fr>
> # Date 1464877610 -7200
> #      Thu Jun 02 16:26:50 2016 +0200
> # Node ID b2197fb3124e53902437e9e81463281a85d7bbbd
> # Parent  ecadc1da55f84fd77110ca23341e12949110d46c
> gitweb: highlight data of the current revision in annotate view
> 
> * Distinguish the /annotate/<revision>/<file>#<linenumber> link when it would
>   lead to the current page (i.e. <revision> is the current revision) (style it
>   gray and undecorated). This indicates more clearly that this is a "dead-end"
>   in blame navigation.
> 
> * Display lines changed in current revision in green.
> 
> diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py
> --- a/mercurial/hgweb/webcommands.py
> +++ b/mercurial/hgweb/webcommands.py
> @@ -883,9 +883,11 @@ def annotate(web, req, tmpl):
>              lines = enumerate(fctx.annotate(follow=True, linenumber=True,
>                                              diffopts=diffopts))
>          for lineno, ((f, targetline), l) in lines:
> +            rev = f.rev()
>              yield {"parity": next(parity),
>                     "node": f.hex(),
> -                   "rev": f.rev(),
> +                   "rev": rev,
> +                   "thisrev": fctx.rev() == rev or None,
>                     "author": f.user(),
>                     "ancestors": ancestors(f),
>                     "desc": f.description(),
> diff --git a/mercurial/templates/gitweb/map b/mercurial/templates/gitweb/map
> --- a/mercurial/templates/gitweb/map
> +++ b/mercurial/templates/gitweb/map
> @@ -101,6 +101,7 @@ annotateline = '
>      </td>
>      <td class="linenr" style="text-align: left;">
>        <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
> +         {if(thisrev, 'class="linenr"', '')}

You can do ifeq(node, originalnode, ...) instead of introducing one-off keyword.

Patch

diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py
--- a/mercurial/hgweb/webcommands.py
+++ b/mercurial/hgweb/webcommands.py
@@ -883,9 +883,11 @@  def annotate(web, req, tmpl):
             lines = enumerate(fctx.annotate(follow=True, linenumber=True,
                                             diffopts=diffopts))
         for lineno, ((f, targetline), l) in lines:
+            rev = f.rev()
             yield {"parity": next(parity),
                    "node": f.hex(),
-                   "rev": f.rev(),
+                   "rev": rev,
+                   "thisrev": fctx.rev() == rev or None,
                    "author": f.user(),
                    "ancestors": ancestors(f),
                    "desc": f.description(),
diff --git a/mercurial/templates/gitweb/map b/mercurial/templates/gitweb/map
--- a/mercurial/templates/gitweb/map
+++ b/mercurial/templates/gitweb/map
@@ -101,6 +101,7 @@  annotateline = '
     </td>
     <td class="linenr" style="text-align: left;">
       <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
+         {if(thisrev, 'class="linenr"', '')}
          title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
     </td>
     <td>
@@ -110,7 +111,7 @@  annotateline = '
          title="rev">rev</a>
     </td>
     <td><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
-    <td><pre>{line|escape}</pre></td>
+    <td><pre{if(thisrev, ' class="thisrev"', '')}>{line|escape}</pre></td>
   </tr>'
 annotateentry = '
   <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}"
diff --git a/mercurial/templates/static/style-gitweb.css b/mercurial/templates/static/style-gitweb.css
--- a/mercurial/templates/static/style-gitweb.css
+++ b/mercurial/templates/static/style-gitweb.css
@@ -54,6 +54,8 @@  div.diff_info { font-family:monospace; c
 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
 a.revision-ancestor { font-style: italic; text-decoration: none }
+a.thisrev { color:#99999; text-decoration: none }
+pre.thisrev { color:#009900; }
 .linenr { color:#999999; text-decoration:none }
 div.rss_logo { float: right; white-space: nowrap; }
 div.rss_logo a {
diff --git a/tests/test-hgweb.t b/tests/test-hgweb.t
--- a/tests/test-hgweb.t
+++ b/tests/test-hgweb.t
@@ -340,7 +340,7 @@  static file
 
   $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
   200 Script output follows
-  content-length: 6624
+  content-length: 6705
   content-type: text/css
   
   body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; background: white; color: black; }
@@ -399,6 +399,8 @@  static file
   div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
   div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
   a.revision-ancestor { font-style: italic; text-decoration: none }
+  a.thisrev { color:#99999; text-decoration: none }
+  pre.thisrev { color:#009900; }
   .linenr { color:#999999; text-decoration:none }
   div.rss_logo { float: right; white-space: nowrap; }
   div.rss_logo a {