diff options
author | ZyX <kp-pav@yandex.ru> | 2017-12-23 15:27:42 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-12-23 15:27:42 +0300 |
commit | c9ab209f9e70b2ebd91ef4cf3857c30822a6af57 (patch) | |
tree | eb39e7370cf72c89b589cac204194ad68b9dfc15 /src/nvim/testdir/test_makeencoding.py | |
parent | edccf18df56d982dea350770ea42ffa25759b43f (diff) | |
parent | aa951b14893d8a30ec3bad6fb4b7064ccda16d5c (diff) | |
download | rneovim-c9ab209f9e70b2ebd91ef4cf3857c30822a6af57.tar.gz rneovim-c9ab209f9e70b2ebd91ef4cf3857c30822a6af57.tar.bz2 rneovim-c9ab209f9e70b2ebd91ef4cf3857c30822a6af57.zip |
Merge branch 'master' into hide-container-impl
Diffstat (limited to 'src/nvim/testdir/test_makeencoding.py')
-rw-r--r-- | src/nvim/testdir/test_makeencoding.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_makeencoding.py b/src/nvim/testdir/test_makeencoding.py new file mode 100644 index 0000000000..041edadc0a --- /dev/null +++ b/src/nvim/testdir/test_makeencoding.py @@ -0,0 +1,67 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Test program for :make, :grep and :cgetfile. + +from __future__ import print_function, unicode_literals +import locale +import io +import sys + +def set_output_encoding(enc=None): + """Set the encoding of stdout and stderr + + arguments: + enc -- Encoding name. + If omitted, locale.getpreferredencoding() is used. + """ + if enc is None: + enc = locale.getpreferredencoding() + + def get_text_writer(fo, **kwargs): + kw = dict(kwargs) + kw.setdefault('errors', 'backslashreplace') # use \uXXXX style + kw.setdefault('closefd', False) + + if sys.version_info[0] < 3: + # Work around for Python 2.x + # New line conversion isn't needed here. Done in somewhere else. + writer = io.open(fo.fileno(), mode='w', newline='', **kw) + write = writer.write # save the original write() function + enc = locale.getpreferredencoding() + def convwrite(s): + if isinstance(s, bytes): + write(s.decode(enc)) # convert to unistr + else: + write(s) + try: + writer.flush() # needed on Windows + except IOError: + pass + writer.write = convwrite + else: + writer = io.open(fo.fileno(), mode='w', **kw) + return writer + + sys.stdout = get_text_writer(sys.stdout, encoding=enc) + sys.stderr = get_text_writer(sys.stderr, encoding=enc) + + +def main(): + enc = 'utf-8' + if len(sys.argv) > 1: + enc = sys.argv[1] + set_output_encoding(enc) + + message_tbl = { + 'utf-8': 'ÀÈÌÒÙ こんにちは 你好', + 'latin1': 'ÀÈÌÒÙ', + 'cp932': 'こんにちは', + 'cp936': '你好', + } + + print('Xfoobar.c(10) : %s (%s)' % (message_tbl[enc], enc)) + + +if __name__ == "__main__": + main() |