Mercurial > hg
changeset 21163:9846b40d01e7 stable
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.
author | Isaac Jurado <diptongo@gmail.com> |
---|---|
date | Sat, 19 Apr 2014 15:11:25 +0200 |
parents | d924e387604f |
children | 2efcef493aa2 |
files | hgext/churn.py tests/test-churn.t |
diffstat | 2 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/churn.py Thu Apr 17 19:39:04 2014 -0400 +++ b/hgext/churn.py Sat Apr 19 15:11:25 2014 +0200 @@ -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 + " " * (l - encoding.colwidth(s)) amap = {} aliases = opts.get('aliases')
--- a/tests/test-churn.t Thu Apr 17 19:39:04 2014 -0400 +++ b/tests/test-churn.t Sat Apr 19 15:11:25 2014 +0200 @@ -159,4 +159,16 @@ user4@x.com 2 ***************************** with space 1 ************** +Test multibyte sequences in names + + $ echo bar >> bar + $ hg --encoding utf-8 ci -m'changed bar' -u 'El NiƱo <nino@x.com>' + $ hg --encoding utf-8 churn -ct '{author|person}' + user1 4 ********************************************************** + user3 3 ******************************************** + user2 2 ***************************** + user4 2 ***************************** + El Ni\xc3\xb1o 1 *************** (esc) + with space 1 *************** + $ cd ..