[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