|
|
Test alignment of multibyte characters
|
|
|
|
|
|
$ HGENCODING=utf-8
|
|
|
$ export HGENCODING
|
|
|
$ hg init t
|
|
|
$ cd t
|
|
|
$ "$PYTHON" << EOF
|
|
|
> from mercurial import pycompat
|
|
|
> # (byte, width) = (6, 4)
|
|
|
> s = b"\xe7\x9f\xad\xe5\x90\x8d"
|
|
|
> # (byte, width) = (7, 7): odd width is good for alignment test
|
|
|
> m = b"MIDDLE_"
|
|
|
> # (byte, width) = (18, 12)
|
|
|
> l = b"\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d"
|
|
|
> f = open('s', 'wb'); f.write(s); f.close()
|
|
|
> f = open('m', 'wb'); f.write(m); f.close()
|
|
|
> f = open('l', 'wb'); f.write(l); f.close()
|
|
|
> # instant extension to show list of options
|
|
|
> f = open('showoptlist.py', 'wb'); f.write(b"""# encoding: utf-8
|
|
|
> from mercurial import registrar
|
|
|
> cmdtable = {}
|
|
|
> command = registrar.command(cmdtable)
|
|
|
>
|
|
|
> @command(b'showoptlist',
|
|
|
> [(b's', b'opt1', b'', b'short width' + (b' ' +%(s)s) * 8, %(s)s),
|
|
|
> (b'm', b'opt2', b'', b'middle width' + (b' ' + %(m)s) * 8, %(m)s),
|
|
|
> (b'l', b'opt3', b'', b'long width' + (b' ' + %(l)s) * 8, %(l)s)],
|
|
|
> b'')
|
|
|
> def showoptlist(ui, repo, *pats, **opts):
|
|
|
> '''dummy command to show option descriptions'''
|
|
|
> return 0
|
|
|
> """ % {b's': pycompat.byterepr(s),
|
|
|
> b'm': pycompat.byterepr(m),
|
|
|
> b'l': pycompat.byterepr(l),
|
|
|
> })
|
|
|
> f.close()
|
|
|
> EOF
|
|
|
$ S=`cat s`
|
|
|
$ M=`cat m`
|
|
|
$ L=`cat l`
|
|
|
|
|
|
alignment of option descriptions in help
|
|
|
|
|
|
$ cat <<EOF > .hg/hgrc
|
|
|
> [extensions]
|
|
|
> ja_ext = `pwd`/showoptlist.py
|
|
|
> EOF
|
|
|
|
|
|
check alignment of option descriptions in help
|
|
|
|
|
|
$ hg help showoptlist
|
|
|
hg showoptlist
|
|
|
|
|
|
dummy command to show option descriptions
|
|
|
|
|
|
options:
|
|
|
|
|
|
-s --opt1 \xe7\x9f\xad\xe5\x90\x8d short width \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d \xe7\x9f\xad\xe5\x90\x8d (esc)
|
|
|
-m --opt2 MIDDLE_ middle width MIDDLE_ MIDDLE_ MIDDLE_ MIDDLE_ MIDDLE_
|
|
|
MIDDLE_ MIDDLE_ MIDDLE_
|
|
|
-l --opt3 \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d long width \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d (esc)
|
|
|
\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d (esc)
|
|
|
\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d (esc)
|
|
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
|
|
|
|
|
$ rm -f s; touch s
|
|
|
$ rm -f m; touch m
|
|
|
$ rm -f l; touch l
|
|
|
|
|
|
add files
|
|
|
|
|
|
$ cp s $S
|
|
|
$ hg add $S
|
|
|
$ cp m $M
|
|
|
$ hg add $M
|
|
|
$ cp l $L
|
|
|
$ hg add $L
|
|
|
|
|
|
commit(1)
|
|
|
|
|
|
$ echo 'first line(1)' >> s; cp s $S
|
|
|
$ echo 'first line(2)' >> m; cp m $M
|
|
|
$ echo 'first line(3)' >> l; cp l $L
|
|
|
$ hg commit -m 'first commit' -u $S
|
|
|
|
|
|
commit(2)
|
|
|
|
|
|
$ echo 'second line(1)' >> s; cp s $S
|
|
|
$ echo 'second line(2)' >> m; cp m $M
|
|
|
$ echo 'second line(3)' >> l; cp l $L
|
|
|
$ hg commit -m 'second commit' -u $M
|
|
|
|
|
|
commit(3)
|
|
|
|
|
|
$ echo 'third line(1)' >> s; cp s $S
|
|
|
$ echo 'third line(2)' >> m; cp m $M
|
|
|
$ echo 'third line(3)' >> l; cp l $L
|
|
|
$ hg commit -m 'third commit' -u $L
|
|
|
|
|
|
check alignment of user names in annotate
|
|
|
|
|
|
$ hg annotate -u $M
|
|
|
\xe7\x9f\xad\xe5\x90\x8d: first line(2) (esc)
|
|
|
MIDDLE_: second line(2)
|
|
|
\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d: third line(2) (esc)
|
|
|
|
|
|
check alignment of filenames in diffstat
|
|
|
|
|
|
$ hg diff -c tip --stat
|
|
|
MIDDLE_ | 1 +
|
|
|
\xe7\x9f\xad\xe5\x90\x8d | 1 + (esc)
|
|
|
\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d | 1 + (esc)
|
|
|
3 files changed, 3 insertions(+), 0 deletions(-)
|
|
|
|
|
|
add branches/tags
|
|
|
|
|
|
$ hg branch $S
|
|
|
marked working directory as branch \xe7\x9f\xad\xe5\x90\x8d (esc)
|
|
|
(branches are permanent and global, did you want a bookmark?)
|
|
|
$ hg tag $S
|
|
|
$ hg book -f $S
|
|
|
$ hg branch $M
|
|
|
marked working directory as branch MIDDLE_
|
|
|
$ hg tag $M
|
|
|
$ hg book -f $M
|
|
|
$ hg branch $L
|
|
|
marked working directory as branch \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d (esc)
|
|
|
$ hg tag $L
|
|
|
$ hg book -f $L
|
|
|
|
|
|
check alignment of branches
|
|
|
|
|
|
$ hg branches
|
|
|
\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d 5:d745ff46155b (esc)
|
|
|
MIDDLE_ 4:9259be597f19 (inactive)
|
|
|
\xe7\x9f\xad\xe5\x90\x8d 3:b06c5b6def9e (inactive) (esc)
|
|
|
default 2:64a70663cee8 (inactive)
|
|
|
|
|
|
check alignment of tags
|
|
|
|
|
|
$ hg tags
|
|
|
tip 5:d745ff46155b
|
|
|
\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d 4:9259be597f19 (esc)
|
|
|
MIDDLE_ 3:b06c5b6def9e
|
|
|
\xe7\x9f\xad\xe5\x90\x8d 2:64a70663cee8 (esc)
|
|
|
|
|
|
check alignment of bookmarks
|
|
|
|
|
|
$ hg book
|
|
|
MIDDLE_ 5:d745ff46155b
|
|
|
\xe7\x9f\xad\xe5\x90\x8d 4:9259be597f19 (esc)
|
|
|
* \xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d 5:d745ff46155b (esc)
|
|
|
|