[PATCH] color: enable branches support

Jeremy Whitlock jcscoobyrs at gmail.com
Mon Aug 2 12:31:25 CDT 2010


# HG changeset patch
# User Jeremy Whitlock <jcscoobyrs at gmail.com>
# Date 1280379903 21600
# Node ID be71293070b9de8b3b88df54ae344c4b673fb06b
# Parent  b43cfaf571d600a3b0699c4a077b3cf9d8c3975e
color: enable branches support

This commit updates the branches command to use ui.label for the branch names
and the changeset.  This implementation allows assigning colors to the four
states of a branch: active, closed, current and inactive.  While you can
configure color for the four states, only current and closed have default colors
of green and black bold respectively.

diff -r b43cfaf571d6 -r be71293070b9 hgext/color.py
--- a/hgext/color.py	Mon Aug 02 10:55:51 2010 -0500
+++ b/hgext/color.py	Wed Jul 28 23:05:03 2010 -0600
@@ -62,6 +62,11 @@
 
   bookmarks.current = green
 
+  branches.active = none
+  branches.closed = black bold
+  branches.current = green
+  branches.inactive = none
+
 The color extension will try to detect whether to use ANSI codes or
 Win32 console APIs, unless it is made explicit::
 
@@ -87,6 +92,10 @@
             'cyan_background': 46, 'white_background': 47}
 
 _styles = {'grep.match': 'red bold',
+           'branches.active': 'none',
+           'branches.closed': 'black bold',
+           'branches.current': 'green',
+           'branches.inactive': 'none',
            'diff.changed': 'white',
            'diff.deleted': 'red',
            'diff.diffline': 'bold',
diff -r b43cfaf571d6 -r be71293070b9 mercurial/commands.py
--- a/mercurial/commands.py	Mon Aug 02 10:55:51 2010 -0500
+++ b/mercurial/commands.py	Wed Jul 28 23:05:03 2010 -0600
@@ -512,16 +512,22 @@
             else:
                 hn = repo.lookup(node)
                 if isactive:
+                    label = 'branches.active'
                     notice = ''
                 elif hn not in repo.branchheads(tag, closed=False):
                     if not closed:
                         continue
+                    label = 'branches.closed'
                     notice = _(' (closed)')
                 else:
+                    label = 'branches.inactive'
                     notice = _(' (inactive)')
+                if tag == repo.dirstate.branch():
+                    label = 'branches.current'
                 rev = str(node).rjust(31 - encoding.colwidth(encodedtag))
-                data = encodedtag, rev, hexfunc(hn), notice
-                ui.write("%s %s:%s%s\n" % data)
+                rev = ui.label('%s:%s' % (rev, hexfunc(hn)), 'log.changeset')
+                encodedtag = ui.label(encodedtag, label)
+                ui.write("%s %s%s\n" % (encodedtag, rev, notice))
 
 def bundle(ui, repo, fname, dest=None, **opts):
     """create a changegroup file
diff -r b43cfaf571d6 -r be71293070b9 tests/test-branches
--- a/tests/test-branches	Mon Aug 02 10:55:51 2010 -0500
+++ b/tests/test-branches	Wed Jul 28 23:05:03 2010 -0600
@@ -92,3 +92,28 @@
 echo '% branch b'
 hg heads b
 hg heads --closed b
+
+echo "[extensions]" >> $HGRCPATH
+echo "color =" >> $HGRCPATH
+
+hg up -C c
+hg commit -d '9 0' --close-branch -m 'reclosing this branch'
+hg up -C b
+echo '--- test default branch colors'
+hg branches --color=always
+echo '--- test default closed branch color'
+hg branches --color=always --closed
+
+echo "[extensions]" >> $HGRCPATH
+echo "color =" >> $HGRCPATH
+echo "[color]" >> $HGRCPATH
+echo "branches.active = green" >> $HGRCPATH
+echo "branches.closed = blue" >> $HGRCPATH
+echo "branches.current = red" >> $HGRCPATH
+echo "branches.inactive = magenta" >> $HGRCPATH
+echo "log.changeset = cyan" >> $HGRCPATH
+
+echo '--- test custom branch colors'
+hg branches --color=always
+echo '--- test custom closed branch color'
+hg branches --color=always --closed
diff -r b43cfaf571d6 -r be71293070b9 tests/test-branches.out
--- a/tests/test-branches.out	Mon Aug 02 10:55:51 2010 -0500
+++ b/tests/test-branches.out	Wed Jul 28 23:05:03 2010 -0600
@@ -242,3 +242,27 @@
 date:        Thu Jan 01 00:00:09 1970 +0000
 summary:     prune bad branch
 
+3 files updated, 0 files merged, 2 files removed, 0 files unresolved
+2 files updated, 0 files merged, 3 files removed, 0 files unresolved
+--- test default branch colors
+b                             13:6ac12926b8c3
+a branch name much longer than the default justification used by branches 7:10ff5895aa57
+a                              5:d8cbc61dbaa6 (inactive)
+default                        0:19709c5a4e75 (inactive)
+--- test default closed branch color
+b                             13:6ac12926b8c3
+a branch name much longer than the default justification used by branches 7:10ff5895aa57
+c                             14:717d2e6fabe1 (closed)
+a                              5:d8cbc61dbaa6 (inactive)
+default                        0:19709c5a4e75 (inactive)
+--- test custom branch colors
+b                             13:6ac12926b8c3
+a branch name much longer than the default justification used by branches 7:10ff5895aa57
+a                              5:d8cbc61dbaa6 (inactive)
+default                        0:19709c5a4e75 (inactive)
+--- test custom closed branch color
+b                             13:6ac12926b8c3
+a branch name much longer than the default justification used by branches 7:10ff5895aa57
+c                             14:717d2e6fabe1 (closed)
+a                              5:d8cbc61dbaa6 (inactive)
+default                        0:19709c5a4e75 (inactive)


More information about the Mercurial-devel mailing list