[PATCH] color: allow multiple args to ui.write()

TK Soh teekaysoh at gmail.com
Wed Sep 30 01:22:18 CDT 2009


On Wed, Sep 30, 2009 at 4:59 AM, Kevin Bullock
<kbullock+mercurial at ringworld.org> wrote:
> Hello all--
>
> The latest rev of the shelve extension throws an exception for me when
> I try to get help from the interactive shelve prompt ('?'). It only
> occurs when the color extension is enabled. The exception is:
>
> TypeError: colorwrap() takes exactly 2 arguments (3 given)
>
> The problem stems from this line in hgshelve.py:
>
> 320:                     if l: ui.write(_(l.strip()), '\n')
>
> hgshelve calls ui.write() with multiple arguments, which is fine for
> the non-wrapped implementation. The color extension, however, wraps
> ui.write() with a function with the following signature:
>
> def colorwrap(orig, s):
>
> No *args paramater to this function makes hgshelve explode as described.
>
> So here's a patch to make colorwrap() accept multiple arguments. As
> implemented, it only colorizes the first argument; I'm not sure that's
> the right way to do it and would welcome feedback.

Meanwhile, I've push the fix to hgshelve for others can continue to
use hgshelve with color support.

> Pacem in terris / Mir / Shanti / Salaam / Heiwa
> Kevin R. Bullock
>
>
> # HG changeset patch
> # User Kevin Bullock <kbullock at ringworld.org>
> # Date 1254286182 18000
> # Node ID 2f3b58a20333d575acebdf28201d6a72624ba41b
> # Parent  7f691058d62965f55051f2a2b253d094a721f1ac
> color: allow multiple args to ui.write()
>
> diff --git a/hgext/color.py b/hgext/color.py
> --- a/hgext/color.py
> +++ b/hgext/color.py
> @@ -163,7 +163,7 @@
>                     'missing': ['red', 'bold'],
>                     'unapplied': ['black', 'bold'], }
>
> -def colorwrap(orig, s):
> +def colorwrap(orig, s, *args):
>      '''wrap ui.write for colored diff output'''
>      lines = s.split('\n')
>      for i, line in enumerate(lines):
> @@ -178,7 +178,7 @@
>          if line != stripline:
>              lines[i] += render_effects(
>                  line[len(stripline):], _diff_effects
> ['trailingwhitespace'])
> -    orig('\n'.join(lines))
> +    orig('\n'.join(lines), *args)
>
>  def colorshowpatch(orig, self, node):
>      '''wrap cmdutil.changeset_printer.showpatch with colored output'''
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>



More information about the Mercurial-devel mailing list