1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
" Test for CJK linebreak
scriptencoding utf-8
func Run_cjk_linebreak_after(rigorous)
set textwidth=12
for punct in [
\ '!', '%', ')', ',', ':', ';', '>', '?', ']', '}', '’', '”', '†', '‡',
\ '…', '‰', '‱', '‼', '⁇', '⁈', '⁉', '℃', '℉', '、', '。', '〉', '》',
\ '」', '』', '】', '〕', '〗', '〙', '〛', '!', ')', ',', '.', ':',
\ ';', '?', ']', '}']
call setline('.', '这是一个测试' .. punct.'试试 CJK 行禁则补丁。')
normal gqq
if a:rigorous
call assert_equal('这是一个测', getline(1))
else
call assert_equal('这是一个测试' .. punct, getline(1))
endif
%d_
endfor
endfunc
func Test_cjk_linebreak_after()
set formatoptions=croqn2mB1j
call Run_cjk_linebreak_after(0)
endfunc
func Test_cjk_linebreak_after_rigorous()
set formatoptions=croqn2mB1j]
call Run_cjk_linebreak_after(1)
endfunc
func Run_cjk_linebreak_before()
set textwidth=12
for punct in [
\ '(', '<', '[', '`', '{', '‘', '“', '〈', '《', '「', '『', '【', '〔',
\ '〖', '〘', '〚', '(', '[', '{']
call setline('.', '这是个测试' .. punct.'试试 CJK 行禁则补丁。')
normal gqq
call assert_equal('这是个测试', getline(1))
%d_
endfor
endfunc
func Test_cjk_linebreak_before()
set formatoptions=croqn2mB1j
call Run_cjk_linebreak_before()
endfunc
func Test_cjk_linebreak_before_rigorous()
set formatoptions=croqn2mB1j]
call Run_cjk_linebreak_before()
endfunc
func Run_cjk_linebreak_nobetween(rigorous)
" …… must not start a line
call setline('.', '这是个测试……试试 CJK 行禁则补丁。')
set textwidth=12 ambiwidth=double
normal gqq
if a:rigorous
call assert_equal('这是个测', getline(1))
else
call assert_equal('这是个测试……', getline(1))
endif
%d_
call setline('.', '这是一个测试……试试 CJK 行禁则补丁。')
set textwidth=12 ambiwidth=double
normal gqq
call assert_equal('这是一个测', getline(1))
%d_
" but —— can
call setline('.', '这是个测试——试试 CJK 行禁则补丁。')
set textwidth=12 ambiwidth=double
normal gqq
call assert_equal('这是个测试', getline(1))
endfunc
func Test_cjk_linebreak_nobetween()
set formatoptions=croqn2mB1j
call Run_cjk_linebreak_nobetween(0)
endfunc
func Test_cjk_linebreak_nobetween_rigorous()
set formatoptions=croqn2mB1j]
call Run_cjk_linebreak_nobetween(1)
endfunc
func Test_cjk_linebreak_join_punct()
for punct in ['——', '〗', ',', '。', '……']
call setline(1, '文本文本' .. punct)
call setline(2, 'English')
set formatoptions=croqn2mB1j
normal ggJ
call assert_equal('文本文本' .. punct.'English', getline(1))
%d_
endfor
endfunc
" vim: shiftwidth=2 sts=2 expandtab
|