[PATCH STABLE] churn: compute padding with unicode strings
Isaac Jurado
diptongo at gmail.com
Sat Apr 19 18:03:25 CDT 2014
# 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)
amap = {}
aliases = opts.get('aliases')
diff --git a/tests/test-churn.t b/tests/test-churn.t
--- a/tests/test-churn.t
+++ b/tests/test-churn.t
@@ -159,4 +159,16 @@
user4 at 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 at 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 ..
More information about the Mercurial-devel
mailing list