Mercurial > hg
view tests/test-simplemerge-cmd.out @ 11297:d320e70442a5
replace Python standard textwrap by MBCS sensitive one for i18n text
Mercurial has problem around text wrapping/filling in MBCS encoding
environment, because standard 'textwrap' module of Python can not
treat it correctly. It splits byte sequence for one character into two
lines.
According to unicode specification, "east asian width" classifies
characters into:
W(ide), N(arrow), F(ull-width), H(alf-width), A(mbiguous)
W/N/F/H can be always recognized as 2/1/2/1 bytes in byte sequence,
but 'A' can not. Size of 'A' depends on language in which it is used.
Unicode specification says:
If the context(= language) cannot be established reliably they
should be treated as narrow characters by default
but many of class 'A' characters are full-width, at least, in Japanese
environment.
So, this patch treats class 'A' characters as full-width always for
safety wrapping.
This patch focuses only on MBCS safe-ness, not on writing/printing
rule strict wrapping for each languages
MBCS sensitive textwrap class is originally implemented
by ITO Nobuaki <daydream.trippers@gmail.com>.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sun, 06 Jun 2010 17:20:10 +0900 |
parents | e1f4343db740 |
children |
line wrap: on
line source
% changing local directly merge succeeded local base other % printing to stdout local base other local: local base % conflicts base <<<<<<< conflict-local not other ======= other >>>>>>> conflict-other end warning: conflicts during merge. merge failed % --no-minimal base <<<<<<< conflict-local not other end ======= other end >>>>>>> conflict-other warning: conflicts during merge. % 1 label base <<<<<<< foo not other ======= other >>>>>>> conflict-other end warning: conflicts during merge. % 2 labels base <<<<<<< foo not other ======= other >>>>>>> bar end warning: conflicts during merge. % too many labels abort: can only specify two labels. % binary file abort: binary-local looks like a binary file. % binary file --text warning: binary-local looks like a binary file. \x00local base other % help simplemerge [OPTS] LOCAL BASE OTHER Simple three-way file merge utility with a minimal feature set. Apply to LOCAL the changes necessary to go from BASE to OTHER. By default, LOCAL is overwritten with the results of this operation. options: -L --label labels to use on conflict markers -a --text treat all files as text -p --print print results instead of overwriting LOCAL --no-minimal do not try to minimize conflict regions -h --help display help and exit -q --quiet suppress output % wrong number of arguments simplemerge: wrong number of arguments simplemerge [OPTS] LOCAL BASE OTHER Simple three-way file merge utility with a minimal feature set. Apply to LOCAL the changes necessary to go from BASE to OTHER. By default, LOCAL is overwritten with the results of this operation. options: -L --label labels to use on conflict markers -a --text treat all files as text -p --print print results instead of overwriting LOCAL --no-minimal do not try to minimize conflict regions -h --help display help and exit -q --quiet suppress output % bad option simplemerge: option --foo not recognized simplemerge [OPTS] LOCAL BASE OTHER Simple three-way file merge utility with a minimal feature set. Apply to LOCAL the changes necessary to go from BASE to OTHER. By default, LOCAL is overwritten with the results of this operation. options: -L --label labels to use on conflict markers -a --text treat all files as text -p --print print results instead of overwriting LOCAL --no-minimal do not try to minimize conflict regions -h --help display help and exit -q --quiet suppress output