annotate src/testdir/test_cjk_linebreak.vim @ 20695:cea8ae407452 v8.2.0901

patch 8.2.0901: formatting CJK text isn't optimal Commit: https://github.com/vim/vim/commit/e52702f00322c8a8861efd0bd6a3775e685e5685 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jun 4 18:22:13 2020 +0200 patch 8.2.0901: formatting CJK text isn't optimal Problem: Formatting CJK text isn't optimal. Solution: Properly break CJK lines. (closes https://github.com/vim/vim/issues/3875)
author Bram Moolenaar <Bram@vim.org>
date Thu, 04 Jun 2020 18:30:04 +0200
parents
children ef2a4a650c67
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20695
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 scriptencoding utf-8
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 func Run_cjk_linebreak_after()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 set textwidth=12
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5 for punct in [
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 \ '!', '%', ')', ',', ':', ';', '>', '?', ']', '}', '’', '”', '†', '‡',
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7 \ '…', '‰', '‱', '‼', '⁇', '⁈', '⁉', '℃', '℉', '、', '。', '〉', '》',
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 \ '」', '』', '】', '〕', '〗', '〙', '〛', '!', ')', ',', '.', ':',
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
9 \ ';', '?', ']', '}']
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 call setline('.', '这是一个测试'.punct.'试试 CJK 行禁则补丁。')
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 normal gqq
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 call assert_equal('这是一个测试'.punct, getline(1))
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 %d_
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14 endfor
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 func Test_cjk_linebreak_after()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18 set formatoptions=croqn2mB1j
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 call Run_cjk_linebreak_after()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22 " TODO: this test fails
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 "func Test_cjk_linebreak_after_rigorous()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 " set formatoptions=croqn2mB1j]
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 " call Run_cjk_linebreak_after()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 "endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 func Run_cjk_linebreak_before()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 set textwidth=12
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 for punct in [
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 \ '(', '<', '[', '`', '{', '‘', '“', '〈', '《', '「', '『', '【', '〔',
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 \ '〖', '〘', '〚', '(', '[', '{']
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 call setline('.', '这是个测试'.punct.'试试 CJK 行禁则补丁。')
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 normal gqq
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 call assert_equal('这是个测试', getline(1))
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 %d_
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 endfor
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40 func Test_cjk_linebreak_before()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 set formatoptions=croqn2mB1j
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 call Run_cjk_linebreak_before()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 func Test_cjk_linebreak_before_rigorous()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46 set formatoptions=croqn2mB1j]
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 call Run_cjk_linebreak_before()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 func Run_cjk_linebreak_nobetween()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 " …… must not start a line
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52 call setline('.', '这是个测试……试试 CJK 行禁则补丁。')
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53 set textwidth=12 ambiwidth=double
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 normal gqq
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
55 " TODO: this fails
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56 " call assert_equal('这是个测试……', getline(1))
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57 %d_
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 call setline('.', '这是一个测试……试试 CJK 行禁则补丁。')
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 set textwidth=12 ambiwidth=double
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61 normal gqq
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62 call assert_equal('这是一个测', getline(1))
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
63 %d_
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
64
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
65 " but —— can
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
66 call setline('.', '这是个测试——试试 CJK 行禁则补丁。')
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
67 set textwidth=12 ambiwidth=double
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
68 normal gqq
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
69 call assert_equal('这是个测试', getline(1))
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
70 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
71
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
72 func Test_cjk_linebreak_nobetween()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
73 set formatoptions=croqn2mB1j
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
74 call Run_cjk_linebreak_nobetween()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
75 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
76
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
77 func Test_cjk_linebreak_nobetween_rigorous()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
78 set formatoptions=croqn2mB1j]
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
79 call Run_cjk_linebreak_nobetween()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
80 endfunc
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
81
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
82 func Test_cjk_linebreak_join_punct()
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
83 for punct in ['——', '〗', ',', '。', '……']
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
84 call setline(1, '文本文本'.punct)
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
85 call setline(2, 'English')
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
86 set formatoptions=croqn2mB1j
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
87 normal ggJ
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
88 call assert_equal('文本文本'.punct.'English', getline(1))
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
89 %d_
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
90 endfor
cea8ae407452 patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
91 endfunc