[PATCH STABLE] churn: compute padding with unicode strings

Yuya Nishihara yuya at tcha.org
Sun Apr 20 08:35:32 CDT 2014


On Sun, 20 Apr 2014 01:03:25 +0200, Isaac Jurado wrote:
> # HG changeset patch
> # User Isaac Jurado <diptongo at gmail.com>
> # Date 1397913085 -7200
> #      Sat Apr 19 15:11:25 2014 +0200
> # Branch stable
> # Node ID 66336e9c96377ca6e48f54d33390c1bcd24b209d
> # Parent  d924e387604f4a1b90469de773517841eba40c80
> churn: compute padding with unicode strings
> 
> Most UTF-8 aware terminals convert multibyte sequences into a single displayed
> characters.  Because the first column is padded by counting bytes, the second
> column is not perfectly aligned in the presence of non ASCII characters.
> 
> diff --git a/hgext/churn.py b/hgext/churn.py
> --- a/hgext/churn.py
> +++ b/hgext/churn.py
> @@ -10,6 +10,7 @@
>  
>  from mercurial.i18n import _
>  from mercurial import patch, cmdutil, scmutil, util, templater, commands
> +from mercurial import encoding
>  import os
>  import time, datetime
>  
> @@ -124,7 +125,7 @@
>      Aliases will be split from the rightmost "=".
>      '''
>      def pad(s, l):
> -        return (s + " " * l)[:l]
> +        return (s.decode("UTF-8") + u" " * l)[:l].encode(encoding.encoding)

It seems "s" isn't a utf8 bytes because it is a template output.  And
encoding.colwidth() will give more accurate result.

http://mercurial.selenic.com/wiki/EncodingStrategy#Functions

Regards,


More information about the Mercurial-devel mailing list