annotate src/testdir/test_fold.vim @ 30986:360f286b5869 v9.0.0828

patch 9.0.0828: various typos Commit: https://github.com/vim/vim/commit/c57b5bcd22826e0852c2bc9c7d4382e1cac7cb74 Author: dundargoc <gocdundar@gmail.com> Date: Wed Nov 2 13:30:51 2022 +0000 patch 9.0.0828: various typos Problem: Various typos. Solution: Correct typos. (closes https://github.com/vim/vim/issues/11432)
author Bram Moolenaar <Bram@vim.org>
date Wed, 02 Nov 2022 14:45:11 +0100
parents 586b5b3aacf9
children ac1f548223a5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10484
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Test for folding
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 16965
diff changeset
3 source check.vim
14317
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
4 source view_util.vim
14875
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
5 source screendump.vim
14317
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
6
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
7 func PrepIndent(arg)
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
8 return [a:arg] + repeat(["\t".a:arg], 5)
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
9 endfu
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
10
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
11 func Test_address_fold()
10484
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 new
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 call setline(1, ['int FuncName() {/*{{{*/', 1, 2, 3, 4, 5, '}/*}}}*/',
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 \ 'after fold 1', 'after fold 2', 'after fold 3'])
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 setl fen fdm=marker
11219
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
16 " The next commands should all copy the same part of the buffer,
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
17 " regardless of the addressing type, since the part to be copied
10484
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 " is folded away
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 :1y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 :.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 :.+y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 :.,.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 :sil .1,.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 " use silent to make E493 go away
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 :sil .+,.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 :,y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 :,+y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/','after fold 1'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 " using .+3 as second address should copy the whole folded line + the next 3
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 " lines
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 :.,+3y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/',
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 \ 'after fold 1', 'after fold 2', 'after fold 3'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 :sil .,-2y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 " now test again with folding disabled
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 set nofoldenable
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 :1y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47 call assert_equal(['int FuncName() {/*{{{*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48 :.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
49 call assert_equal(['int FuncName() {/*{{{*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 :.+y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 call assert_equal(['1'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 :.,.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 call assert_equal(['int FuncName() {/*{{{*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 " use silent to make E493 go away
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 :sil .1,.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 call assert_equal(['int FuncName() {/*{{{*/', '1'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57 " use silent to make E493 go away
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58 :sil .+,.y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
59 call assert_equal(['int FuncName() {/*{{{*/', '1'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
60 :,y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
61 call assert_equal(['int FuncName() {/*{{{*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
62 :,+y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
63 call assert_equal(['int FuncName() {/*{{{*/', '1'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
64 " using .+3 as second address should copy the whole folded line + the next 3
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
65 " lines
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
66 :.,+3y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
67 call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
68 :7
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
69 :sil .,-2y
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
70 call assert_equal(['4', '5', '}/*}}}*/'], getreg(0,1,1))
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
71
c7de1536780a commit https://github.com/vim/vim/commit/ded2782783f352201ac0b05c6dbe4831adb4a58b
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
72 quit!
10998
2645a98217fa patch 8.0.0388: filtering lines changes folds
Christian Brabandt <cb@256bit.org>
parents: 10486
diff changeset
73 endfunc
10486
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
74
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
75 func Test_indent_fold()
10486
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
76 new
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
77 call setline(1, ['', 'a', ' b', ' c'])
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
78 setl fen fdm=indent
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
79 2
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
80 norm! >>
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
81 let a=map(range(1,4), 'foldclosed(v:val)')
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
82 call assert_equal([-1,-1,-1,-1], a)
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
83 bw!
10998
2645a98217fa patch 8.0.0388: filtering lines changes folds
Christian Brabandt <cb@256bit.org>
parents: 10486
diff changeset
84 endfunc
10486
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
85
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
86 func Test_indent_fold2()
10486
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
87 new
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
88 call setline(1, ['', '{{{', '}}}', '{{{', '}}}'])
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
89 setl fen fdm=marker
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
90 2
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
91 norm! >>
17849
73ddc462979d patch 8.1.1921: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17787
diff changeset
92 let a=map(range(1,5), 'v:val->foldclosed()')
10486
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
93 call assert_equal([-1,-1,-1,4,4], a)
99896ee0cac5 commit https://github.com/vim/vim/commit/54b2bfa399017ebae76ed62f21578261d1b55c1f
Christian Brabandt <cb@256bit.org>
parents: 10484
diff changeset
94 bw!
10998
2645a98217fa patch 8.0.0388: filtering lines changes folds
Christian Brabandt <cb@256bit.org>
parents: 10486
diff changeset
95 endfunc
2645a98217fa patch 8.0.0388: filtering lines changes folds
Christian Brabandt <cb@256bit.org>
parents: 10486
diff changeset
96
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
97 " Test for fold indent with indents greater than 'foldnestmax'
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
98 func Test_indent_fold_max()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
99 new
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
100 setlocal foldmethod=indent
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
101 setlocal shiftwidth=2
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
102 " 'foldnestmax' default value is 20
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
103 call setline(1, "\t\t\t\t\t\ta")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
104 call assert_equal(20, foldlevel(1))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
105 setlocal foldnestmax=10
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
106 call assert_equal(10, foldlevel(1))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
107 setlocal foldnestmax=-1
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
108 call assert_equal(0, foldlevel(1))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
109 bw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
110 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
111
10998
2645a98217fa patch 8.0.0388: filtering lines changes folds
Christian Brabandt <cb@256bit.org>
parents: 10486
diff changeset
112 func Test_manual_fold_with_filter()
23027
f74978697fb6 patch 8.2.2060: check for features implemented with "if"
Bram Moolenaar <Bram@vim.org>
parents: 22850
diff changeset
113 CheckExecutable cat
11036
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
114 for type in ['manual', 'marker']
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
115 exe 'set foldmethod=' . type
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
116 new
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
117 call setline(1, range(1, 20))
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
118 4,$fold
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
119 %foldopen
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
120 10,$fold
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
121 %foldopen
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
122 " This filter command should not have an effect
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
123 1,8! cat
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
124 call feedkeys('5ggzdzMGdd', 'xt')
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
125 call assert_equal(['1', '2', '3', '4', '5', '6', '7', '8', '9'], getline(1, '$'))
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
126
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
127 bwipe!
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
128 set foldmethod&
9861e4196c43 patch 8.0.0407: filtering folds with marker method not tested
Christian Brabandt <cb@256bit.org>
parents: 10998
diff changeset
129 endfor
10998
2645a98217fa patch 8.0.0388: filtering lines changes folds
Christian Brabandt <cb@256bit.org>
parents: 10486
diff changeset
130 endfunc
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
131
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
132 func Test_indent_fold_with_read()
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
133 new
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
134 set foldmethod=indent
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
135 call setline(1, repeat(["\<Tab>a"], 4))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
136 for n in range(1, 4)
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
137 call assert_equal(1, foldlevel(n))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
138 endfor
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
139
30552
a7a9e8b9af89 patch 9.0.0611: tests delete files with a separate delete() call
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
140 call writefile(["a", "", "\<Tab>a"], 'Xinfofile', 'D')
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
141 foldopen
30051
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 29320
diff changeset
142 2read Xinfofile
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
143 %foldclose
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
144 call assert_equal(1, foldlevel(1))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
145 call assert_equal(2, foldclosedend(1))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
146 call assert_equal(0, foldlevel(3))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
147 call assert_equal(0, foldlevel(4))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
148 call assert_equal(1, foldlevel(5))
17849
73ddc462979d patch 8.1.1921: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17787
diff changeset
149 call assert_equal(7, 5->foldclosedend())
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
150
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
151 bwipe!
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
152 set foldmethod&
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
153 endfunc
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
154
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
155 func Test_combining_folds_indent()
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
156 new
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
157 let one = "\<Tab>a"
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
158 let zero = 'a'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
159 call setline(1, [one, one, zero, zero, zero, one, one, one])
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
160 set foldmethod=indent
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
161 3,5d
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
162 %foldclose
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
163 call assert_equal(5, foldclosedend(1))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
164
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
165 set foldmethod&
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
166 bwipe!
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
167 endfunc
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
168
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
169 func Test_combining_folds_marker()
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
170 new
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
171 call setline(1, ['{{{', '}}}', '', '', '', '{{{', '', '}}}'])
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
172 set foldmethod=marker
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
173 3,5d
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
174 %foldclose
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
175 call assert_equal(2, foldclosedend(1))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
176
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
177 set foldmethod&
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
178 bwipe!
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
179 endfunc
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
180
11131
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
181 func Test_folds_marker_in_comment()
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
182 new
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
183 call setline(1, ['" foo', 'bar', 'baz'])
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
184 setl fen fdm=marker
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
185 setl com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\" cms=\"%s
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
186 norm! zf2j
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
187 setl nofen
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
188 :1y
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
189 call assert_equal(['" foo{{{'], getreg(0,1,1))
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
190 :+2y
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
191 call assert_equal(['baz"}}}'], getreg(0,1,1))
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
192
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
193 set foldmethod&
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
194 bwipe!
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
195 endfunc
8d9ecf09183a patch 8.0.0453: adding fold marker creates new comment
Christian Brabandt <cb@256bit.org>
parents: 11038
diff changeset
196
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
197 func s:TestFoldExpr(lnum)
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
198 let thisline = getline(a:lnum)
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
199 if thisline == 'a'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
200 return 1
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
201 elseif thisline == 'b'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
202 return 0
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
203 elseif thisline == 'c'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
204 return '<1'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
205 elseif thisline == 'd'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
206 return '>1'
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
207 endif
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
208 return 0
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
209 endfunction
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
210
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
211 func Test_update_folds_expr_read()
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
212 new
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
213 call setline(1, ['a', 'a', 'a', 'a', 'a', 'a'])
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
214 set foldmethod=expr
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
215 set foldexpr=s:TestFoldExpr(v:lnum)
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
216 2
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
217 foldopen
30552
a7a9e8b9af89 patch 9.0.0611: tests delete files with a separate delete() call
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
218 call writefile(['b', 'b', 'a', 'a', 'd', 'a', 'a', 'c'], 'Xupfofile', 'D')
30051
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 29320
diff changeset
219 read Xupfofile
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
220 %foldclose
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
221 call assert_equal(2, foldclosedend(1))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
222 call assert_equal(0, foldlevel(3))
17849
73ddc462979d patch 8.1.1921: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17787
diff changeset
223 call assert_equal(0, 4->foldlevel())
11038
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
224 call assert_equal(6, foldclosedend(5))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
225 call assert_equal(10, foldclosedend(7))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
226 call assert_equal(14, foldclosedend(11))
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
227
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
228 bwipe!
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
229 set foldmethod& foldexpr&
c8b49300c6b7 patch 8.0.0408: updating folds does not always work properly
Christian Brabandt <cb@256bit.org>
parents: 11036
diff changeset
230 endfunc
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
231
28938
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
232 " Test for what patch 8.1.0535 fixes.
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
233 func Test_foldexpr_no_interrupt_addsub()
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
234 new
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
235 func! FoldFunc()
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
236 call setpos('.', getcurpos())
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
237 return '='
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
238 endfunc
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
239
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
240 set foldmethod=expr
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
241 set foldexpr=FoldFunc()
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
242 call setline(1, '1.2')
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
243
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
244 exe "norm! $\<C-A>"
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
245 call assert_equal('1.3', getline(1))
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
246
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
247 bwipe!
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
248 delfunc FoldFunc
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
249 set foldmethod& foldexpr&
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
250 endfunc
ddbb36c1830b patch 8.2.4991: no test for hwat patch 8.1.0535 fixes
Bram Moolenaar <Bram@vim.org>
parents: 28929
diff changeset
251
30594
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
252 " Fold function defined in another script
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
253 func Test_foldexpr_compiled()
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
254 new
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
255 let lines =<< trim END
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
256 vim9script
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
257 def FoldFunc(): number
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
258 return v:lnum
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
259 enddef
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
260
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
261 set foldmethod=expr
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
262 set foldexpr=s:FoldFunc()
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
263 END
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
264 call writefile(lines, 'XfoldExpr', 'D')
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
265 source XfoldExpr
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
266
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
267 call setline(1, ['one', 'two', 'three'])
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
268 redraw
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
269 call assert_equal(1, foldlevel(1))
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
270 call assert_equal(2, foldlevel(2))
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
271 call assert_equal(3, foldlevel(3))
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
272
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
273 bwipe!
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
274 set foldmethod& foldexpr&
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
275 endfunc
586b5b3aacf9 patch 9.0.0632: calling a function from an "expr" option has overhead
Bram Moolenaar <Bram@vim.org>
parents: 30552
diff changeset
276
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
277 func Check_foldlevels(expected)
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
278 call assert_equal(a:expected, map(range(1, line('$')), 'foldlevel(v:val)'))
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
279 endfunc
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
280
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
281 func Test_move_folds_around_manual()
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
282 new
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
283 let input = PrepIndent("a") + PrepIndent("b") + PrepIndent("c")
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
284 call setline(1, PrepIndent("a") + PrepIndent("b") + PrepIndent("c"))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
285 let folds=[-1, 2, 2, 2, 2, 2, -1, 8, 8, 8, 8, 8, -1, 14, 14, 14, 14, 14]
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
286 " all folds closed
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
287 set foldenable foldlevel=0 fdm=indent
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
288 " needs a forced redraw
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
289 redraw!
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
290 set fdm=manual
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
291 call assert_equal(folds, map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
292 call assert_equal(input, getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
293 7,12m0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
294 call assert_equal(PrepIndent("b") + PrepIndent("a") + PrepIndent("c"), getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
295 call assert_equal(folds, map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
296 10,12m0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
297 call assert_equal(PrepIndent("a")[1:] + PrepIndent("b") + ["a"] + PrepIndent("c"), getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
298 call assert_equal([1, 1, 1, 1, 1, -1, 7, 7, 7, 7, 7, -1, -1, 14, 14, 14, 14, 14], map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
299 " moving should not close the folds
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
300 %d
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
301 call setline(1, PrepIndent("a") + PrepIndent("b") + PrepIndent("c"))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
302 set fdm=indent
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
303 redraw!
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
304 set fdm=manual
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
305 call cursor(2, 1)
11156
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
306 %foldopen
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
307 7,12m0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
308 let folds=repeat([-1], 18)
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
309 call assert_equal(PrepIndent("b") + PrepIndent("a") + PrepIndent("c"), getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
310 call assert_equal(folds, map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
311 norm! zM
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
312 " folds are not corrupted and all have been closed
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
313 call assert_equal([-1, 2, 2, 2, 2, 2, -1, 8, 8, 8, 8, 8, -1, 14, 14, 14, 14, 14], map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
314 %d
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
315 call setline(1, ["a", "\tb", "\tc", "\td", "\te"])
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
316 set fdm=indent
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
317 redraw!
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
318 set fdm=manual
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
319 %foldopen
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
320 3m4
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
321 %foldclose
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
322 call assert_equal(["a", "\tb", "\td", "\tc", "\te"], getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
323 call assert_equal([-1, 5, 5, 5, 5], map(range(1, line('$')), 'foldclosedend(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
324 %d
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
325 call setline(1, ["a", "\tb", "\tc", "\td", "\te", "z", "\ty", "\tx", "\tw", "\tv"])
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
326 set fdm=indent foldlevel=0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
327 set fdm=manual
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
328 %foldopen
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
329 3m1
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
330 %foldclose
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
331 call assert_equal(["a", "\tc", "\tb", "\td", "\te", "z", "\ty", "\tx", "\tw", "\tv"], getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
332 call assert_equal(0, foldlevel(2))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
333 call assert_equal(5, foldclosedend(3))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
334 call assert_equal([-1, -1, 3, 3, 3, -1, 7, 7, 7, 7], map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
335 2,6m$
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
336 %foldclose
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
337 call assert_equal(5, foldclosedend(2))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
338 call assert_equal(0, foldlevel(6))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
339 call assert_equal(9, foldclosedend(7))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
340 call assert_equal([-1, 2, 2, 2, 2, -1, 7, 7, 7, -1], map(range(1, line('$')), 'foldclosed(v:val)'))
12471
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
341
11156
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
342 %d
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
343 " Ensure moving around the edges still works.
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
344 call setline(1, PrepIndent("a") + repeat(["a"], 3) + ["\ta"])
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
345 set fdm=indent foldlevel=0
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
346 set fdm=manual
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
347 %foldopen
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
348 6m$
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
349 " The first fold has been truncated to the 5'th line.
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
350 " Second fold has been moved up because the moved line is now below it.
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
351 call Check_foldlevels([0, 1, 1, 1, 1, 0, 0, 0, 1, 0])
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
352
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
353 %delete
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
354 set fdm=indent foldlevel=0
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
355 call setline(1, [
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
356 \ "a",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
357 \ "\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
358 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
359 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
360 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
361 \ "a",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
362 \ "a"])
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
363 set fdm=manual
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
364 %foldopen!
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
365 4,5m6
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
366 call Check_foldlevels([0, 1, 2, 0, 0, 0, 0])
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
367
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
368 %delete
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
369 set fdm=indent
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
370 call setline(1, [
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
371 \ "\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
372 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
373 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
374 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
375 \ "\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
376 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
377 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
378 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
379 \ "\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
380 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
381 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
382 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
383 \ "\t\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
384 \ "\ta",
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
385 \ "a"])
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
386 set fdm=manual
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
387 %foldopen!
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
388 13m7
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
389 call Check_foldlevels([1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 2, 1, 0])
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
390
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
391 bw!
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
392 endfunc
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
393
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
394 func Test_move_folds_around_indent()
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
395 new
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
396 let input = PrepIndent("a") + PrepIndent("b") + PrepIndent("c")
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
397 call setline(1, PrepIndent("a") + PrepIndent("b") + PrepIndent("c"))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
398 let folds=[-1, 2, 2, 2, 2, 2, -1, 8, 8, 8, 8, 8, -1, 14, 14, 14, 14, 14]
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
399 " all folds closed
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
400 set fdm=indent
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
401 call assert_equal(folds, map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
402 call assert_equal(input, getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
403 7,12m0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
404 call assert_equal(PrepIndent("b") + PrepIndent("a") + PrepIndent("c"), getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
405 call assert_equal(folds, map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
406 10,12m0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
407 call assert_equal(PrepIndent("a")[1:] + PrepIndent("b") + ["a"] + PrepIndent("c"), getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
408 call assert_equal([1, 1, 1, 1, 1, -1, 7, 7, 7, 7, 7, -1, -1, 14, 14, 14, 14, 14], map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
409 " moving should not close the folds
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
410 %d
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
411 call setline(1, PrepIndent("a") + PrepIndent("b") + PrepIndent("c"))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
412 set fdm=indent
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
413 call cursor(2, 1)
11156
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
414 %foldopen
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
415 7,12m0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
416 let folds=repeat([-1], 18)
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
417 call assert_equal(PrepIndent("b") + PrepIndent("a") + PrepIndent("c"), getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
418 call assert_equal(folds, map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
419 norm! zM
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
420 " folds are not corrupted and all have been closed
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
421 call assert_equal([-1, 2, 2, 2, 2, 2, -1, 8, 8, 8, 8, 8, -1, 14, 14, 14, 14, 14], map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
422 %d
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
423 call setline(1, ["a", "\tb", "\tc", "\td", "\te"])
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
424 set fdm=indent
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
425 %foldopen
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
426 3m4
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
427 %foldclose
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
428 call assert_equal(["a", "\tb", "\td", "\tc", "\te"], getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
429 call assert_equal([-1, 5, 5, 5, 5], map(range(1, line('$')), 'foldclosedend(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
430 %d
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
431 call setline(1, ["a", "\tb", "\tc", "\td", "\te", "z", "\ty", "\tx", "\tw", "\tv"])
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
432 set fdm=indent foldlevel=0
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
433 %foldopen
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
434 3m1
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
435 %foldclose
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
436 call assert_equal(["a", "\tc", "\tb", "\td", "\te", "z", "\ty", "\tx", "\tw", "\tv"], getline(1, '$'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
437 call assert_equal(1, foldlevel(2))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
438 call assert_equal(5, foldclosedend(3))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
439 call assert_equal([-1, 2, 2, 2, 2, -1, 7, 7, 7, 7], map(range(1, line('$')), 'foldclosed(v:val)'))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
440 2,6m$
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
441 %foldclose
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
442 call assert_equal(9, foldclosedend(2))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
443 call assert_equal(1, foldlevel(6))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
444 call assert_equal(9, foldclosedend(7))
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
445 call assert_equal([-1, 2, 2, 2, 2, 2, 2, 2, 2, -1], map(range(1, line('$')), 'foldclosed(v:val)'))
11156
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
446 " Ensure moving around the edges still works.
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
447 %d
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
448 call setline(1, PrepIndent("a") + repeat(["a"], 3) + ["\ta"])
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
449 set fdm=indent foldlevel=0
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
450 %foldopen
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
451 6m$
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
452 " The first fold has been truncated to the 5'th line.
80241603dd50 patch 8.0.0465: off-by-one error in using :move with folding
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
453 " Second fold has been moved up because the moved line is now below it.
11392
dc2800c3572b patch 8.0.0581: moving folded text is sometimes not correct
Christian Brabandt <cb@256bit.org>
parents: 11219
diff changeset
454 call Check_foldlevels([0, 1, 1, 1, 1, 0, 0, 0, 1, 1])
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
455 bw!
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11131
diff changeset
456 endfunc
11219
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
457
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
458 func Test_folddoopen_folddoclosed()
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
459 new
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
460 call setline(1, range(1, 9))
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
461 set foldmethod=manual
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
462 1,3 fold
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
463 6,8 fold
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
464
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
465 " Test without range.
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
466 folddoopen s/$/o/
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
467 folddoclosed s/$/c/
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
468 call assert_equal(['1c', '2c', '3c',
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
469 \ '4o', '5o',
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
470 \ '6c', '7c', '8c',
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
471 \ '9o'], getline(1, '$'))
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
472
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
473 " Test with range.
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
474 call setline(1, range(1, 9))
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
475 1,8 folddoopen s/$/o/
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
476 4,$ folddoclosed s/$/c/
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
477 call assert_equal(['1', '2', '3',
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
478 \ '4o', '5o',
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
479 \ '6c', '7c', '8c',
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
480 \ '9'], getline(1, '$'))
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
481
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
482 set foldmethod&
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
483 bw!
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
484 endfunc
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
485
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
486 func Test_fold_error()
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
487 new
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
488 call setline(1, [1, 2])
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
489
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
490 for fm in ['indent', 'expr', 'syntax', 'diff']
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
491 exe 'set foldmethod=' . fm
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
492 call assert_fails('norm zf', 'E350:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
493 call assert_fails('norm zd', 'E351:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
494 call assert_fails('norm zE', 'E352:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
495 endfor
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
496
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
497 set foldmethod=manual
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
498 call assert_fails('norm zd', 'E490:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
499 call assert_fails('norm zo', 'E490:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
500 call assert_fails('3fold', 'E16:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
501
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
502 set foldmethod=marker
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
503 set nomodifiable
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
504 call assert_fails('1,2fold', 'E21:')
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
505
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
506 set modifiable&
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
507 set foldmethod&
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
508 bw!
e53609585b76 patch 8.0.0496: insufficient testing for folding
Christian Brabandt <cb@256bit.org>
parents: 11156
diff changeset
509 endfunc
12471
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
510
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
511 func Test_foldtext_recursive()
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
512 new
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
513 call setline(1, ['{{{', 'some text', '}}}'])
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
514 setlocal foldenable foldmethod=marker foldtext=foldtextresult(v\:foldstart)
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
515 " This was crashing because of endless recursion.
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
516 2foldclose
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
517 redraw
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
518 call assert_equal(1, foldlevel(2))
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
519 call assert_equal(1, foldclosed(2))
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
520 call assert_equal(3, foldclosedend(2))
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
521 bwipe!
f6534b99b76f patch 8.0.1115: crash when using foldtextresult() recursively
Christian Brabandt <cb@256bit.org>
parents: 11392
diff changeset
522 endfunc
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
523
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
524 " Various fold related tests
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
525
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
526 " Basic test if a fold can be created, opened, moving to the end and closed
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
527 func Test_fold_manual()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
528 new
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
529 set fdm=manual
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
530
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
531 let content = ['1 aa', '2 bb', '3 cc']
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
532 call append(0, content)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
533 call cursor(1, 1)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
534 normal zf2j
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
535 call assert_equal('1 aa', getline(foldclosed('.')))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
536 normal zo
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
537 call assert_equal(-1, foldclosed('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
538 normal ]z
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
539 call assert_equal('3 cc', getline('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
540 normal zc
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
541 call assert_equal('1 aa', getline(foldclosed('.')))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
542
24345
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
543 " Create a fold inside a closed fold after setting 'foldlevel'
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
544 %d _
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
545 call setline(1, range(1, 5))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
546 1,5fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
547 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
548 2,4fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
549 set foldlevel=1
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
550 3fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
551 call assert_equal([1, 3, 3, 3, 1], map(range(1, 5), {->foldlevel(v:val)}))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
552 set foldlevel&
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
553
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
554 " Create overlapping folds (at the start and at the end)
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
555 normal zE
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
556 2,3fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
557 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
558 3,4fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
559 call assert_equal([0, 2, 2, 1, 0], map(range(1, 5), {->foldlevel(v:val)}))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
560 normal zE
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
561 3,4fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
562 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
563 2,3fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
564 call assert_equal([0, 1, 2, 2, 0], map(range(1, 5), {->foldlevel(v:val)}))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
565
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
566 " Create a nested fold across two non-adjoining folds
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
567 %d _
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
568 call setline(1, range(1, 7))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
569 1,2fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
570 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
571 4,5fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
572 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
573 6,7fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
574 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
575 1,5fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
576 call assert_equal([2, 2, 1, 2, 2, 1, 1],
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
577 \ map(range(1, 7), {->foldlevel(v:val)}))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
578
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
579 " A newly created nested fold should be closed
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
580 %d _
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
581 call setline(1, range(1, 6))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
582 1,6fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
583 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
584 3,4fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
585 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
586 2,5fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
587 call assert_equal([1, 2, 3, 3, 2, 1], map(range(1, 6), {->foldlevel(v:val)}))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
588 call assert_equal(2, foldclosed(4))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
589 call assert_equal(5, foldclosedend(4))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
590
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
591 " Test zO, zC and zA on a line with no folds.
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
592 normal zE
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
593 call assert_fails('normal zO', 'E490:')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
594 call assert_fails('normal zC', 'E490:')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
595 call assert_fails('normal zA', 'E490:')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
596
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
597 set fdm&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
598 bw!
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
599 endfunc
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
600
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
601 " test folding with markers.
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
602 func Test_fold_marker()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
603 new
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
604 set fdm=marker fdl=1 fdc=3
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
605
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
606 let content = ['4 dd {{{', '5 ee {{{ }}}', '6 ff }}}']
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
607 call append(0, content)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
608 call cursor(2, 1)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
609 call assert_equal(2, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
610 normal [z
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
611 call assert_equal(1, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
612 exe "normal jo{{ \<Esc>r{jj"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
613 call assert_equal(1, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
614 normal kYpj
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
615 call assert_equal(0, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
616
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
617 " Use only closing fold marker (without and with a count)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
618 set fdl&
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
619 %d _
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
620 call setline(1, ['one }}}', 'two'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
621 call assert_equal([0, 0], [foldlevel(1), foldlevel(2)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
622 %d _
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
623 call setline(1, ['one }}}4', 'two'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
624 call assert_equal([4, 3], [foldlevel(1), foldlevel(2)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
625
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
626 set fdm& fdl& fdc&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
627 bw!
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
628 endfunc
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
629
15127
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
630 " test create fold markers with C filetype
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
631 func Test_fold_create_marker_in_C()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
632 bw!
15127
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
633 set fdm=marker fdl=9
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
634 set filetype=c
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
635
16720
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
636 let content =<< trim [CODE]
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
637 /*
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
638 * comment
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
639 *
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
640 *
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
641 */
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
642 int f(int* p) {
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
643 *p = 3;
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
644 return 0;
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
645 }
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
646 [CODE]
9c90cf08cfa8 patch 8.1.1362: code and data in tests can be hard to read
Bram Moolenaar <Bram@vim.org>
parents: 15127
diff changeset
647
15127
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
648 for c in range(len(content) - 1)
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
649 bw!
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
650 call append(0, content)
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
651 call cursor(c + 1, 1)
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
652 norm! zfG
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
653 call assert_equal(content[c] . (c < 4 ? '{{{' : '/*{{{*/'), getline(c + 1))
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
654 endfor
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
655
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
656 set fdm& fdl&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
657 bw!
15127
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
658 endfunc
31a0127813cb patch 8.1.0574: 'commentstring' not used when adding fold marker in C
Bram Moolenaar <Bram@vim.org>
parents: 15119
diff changeset
659
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
660 " test folding with indent
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
661 func Test_fold_indent()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
662 new
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
663 set fdm=indent sw=2
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
664
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
665 let content = ['1 aa', '2 bb', '3 cc']
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
666 call append(0, content)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
667 call cursor(2, 1)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
668 exe "normal i \<Esc>jI "
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
669 call assert_equal(2, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
670 normal k
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
671 call assert_equal(1, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
672
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
673 set fdm& sw&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
674 bw!
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
675 endfunc
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
676
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
677 " test syntax folding
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
678 func Test_fold_syntax()
21765
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 20156
diff changeset
679 CheckFeature syntax
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
680
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
681 new
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
682 set fdm=syntax fdl=0
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
683
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
684 syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
685 syn region Fd1 start="ee" end="ff" fold contained
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
686 syn region Fd2 start="gg" end="hh" fold contained
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
687 syn region Fd3 start="commentstart" end="commentend" fold contained
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
688 let content = ['3 cc', '4 dd {{{', '5 ee {{{ }}}', '{{{{', '6 ff }}}',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
689 \ '6 ff }}}', '7 gg', '8 hh', '9 ii']
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
690 call append(0, content)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
691 normal Gzk
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
692 call assert_equal('9 ii', getline('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
693 normal k
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
694 call assert_equal('3 cc', getline('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
695 exe "normal jAcommentstart \<Esc>Acommentend"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
696 set fdl=1
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
697 normal 3j
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
698 call assert_equal('7 gg', getline('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
699 set fdl=0
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
700 exe "normal zO\<C-L>j"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
701 call assert_equal('8 hh', getline('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
702 syn clear Fd1 Fd2 Fd3 Hup
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
703
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
704 set fdm& fdl&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
705 bw!
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
706 endfunc
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
707
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
708 func Flvl()
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
709 let l = getline(v:lnum)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
710 if l =~ "bb$"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
711 return 2
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
712 elseif l =~ "gg$"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
713 return "s1"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
714 elseif l =~ "ii$"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
715 return ">2"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
716 elseif l =~ "kk$"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
717 return "0"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
718 endif
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
719 return "="
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
720 endfun
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
721
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
722 " test expression folding
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
723 func Test_fold_expr()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
724 new
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
725 set fdm=expr fde=Flvl()
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
726
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
727 let content = ['1 aa',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
728 \ '2 bb',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
729 \ '3 cc',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
730 \ '4 dd {{{commentstart commentend',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
731 \ '5 ee {{{ }}}',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
732 \ '{{{',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
733 \ '6 ff }}}',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
734 \ '6 ff }}}',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
735 \ ' 7 gg',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
736 \ ' 8 hh',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
737 \ '9 ii',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
738 \ 'a jj',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
739 \ 'b kk']
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
740 call append(0, content)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
741 call cursor(1, 1)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
742 exe "normal /bb$\<CR>"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
743 call assert_equal(2, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
744 exe "normal /hh$\<CR>"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
745 call assert_equal(1, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
746 exe "normal /ii$\<CR>"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
747 call assert_equal(2, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
748 exe "normal /kk$\<CR>"
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
749 call assert_equal(0, foldlevel('.'))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
751 set fdm& fde&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
752 bw!
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
753 endfunc
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
754
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
755 " Bug with fdm=indent and moving folds
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
756 " Moving a fold a few times, messes up the folds below the moved fold.
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
757 " Fixed by 7.4.700
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
758 func Test_fold_move()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
759 new
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
760 set fdm=indent sw=2 fdl=0
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
761
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
762 let content = ['', '', 'Line1', ' Line2', ' Line3',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
763 \ 'Line4', ' Line5', ' Line6',
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
764 \ 'Line7', ' Line8', ' Line9']
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
765 call append(0, content)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
766 normal zM
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
767 call cursor(4, 1)
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
768 move 2
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
769 move 1
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
770 call assert_equal(7, foldclosed(7))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
771 call assert_equal(8, foldclosedend(7))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
772 call assert_equal(0, foldlevel(9))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
773 call assert_equal(10, foldclosed(10))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
774 call assert_equal(11, foldclosedend(10))
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
775 call assert_equal('+-- 2 lines: Line2', foldtextresult(2))
17849
73ddc462979d patch 8.1.1921: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17787
diff changeset
776 call assert_equal('+-- 2 lines: Line8', 10->foldtextresult())
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
777
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
778 set fdm& sw& fdl&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
779 bw!
12750
0b6c09957b43 patch 8.0.1253: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12471
diff changeset
780 endfunc
12788
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
781
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
782 " test for patch 7.3.637
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
783 " Cannot catch the error caused by a foldopen when there is no fold.
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
784 func Test_foldopen_exception()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
785 new
12788
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
786 let a = 'No error caught'
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
787 try
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
788 foldopen
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
789 catch
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
790 let a = matchstr(v:exception,'^[^ ]*')
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
791 endtry
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
792 call assert_equal('Vim(foldopen):E490:', a)
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
793
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
794 let a = 'No error caught'
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
795 try
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
796 foobar
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
797 catch
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
798 let a = matchstr(v:exception,'^[^ ]*')
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
799 endtry
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
800 call assert_match('E492:', a)
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
801 bw!
12788
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12750
diff changeset
802 endfunc
14317
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
803
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
804 func Test_fold_last_line_with_pagedown()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
805 new
14317
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
806 set fdm=manual
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
807
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
808 let expect = '+-- 11 lines: 9---'
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
809 let content = range(1,19)
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
810 call append(0, content)
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
811 normal dd9G
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
812 normal zfG
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
813 normal zt
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
814 call assert_equal('9', getline(foldclosed('.')))
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
815 call assert_equal('19', getline(foldclosedend('.')))
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
816 call assert_equal(expect, ScreenLines(1, len(expect))[0])
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
817 call feedkeys("\<C-F>", 'xt')
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
818 call assert_equal(expect, ScreenLines(1, len(expect))[0])
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
819 call feedkeys("\<C-F>", 'xt')
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
820 call assert_equal(expect, ScreenLines(1, len(expect))[0])
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
821 call feedkeys("\<C-B>\<C-F>\<C-F>", 'xt')
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
822 call assert_equal(expect, ScreenLines(1, len(expect))[0])
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
823
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
824 set fdm&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
825 bw!
14317
1bc96dbb5498 patch 8.1.0174: after paging up and down fold line is wrong
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
826 endfunc
14875
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
827
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
828 func Test_folds_with_rnu()
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 16965
diff changeset
829 CheckScreendump
14875
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
830
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
831 call writefile([
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
832 \ 'set fdm=marker rnu foldcolumn=2',
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
833 \ 'call setline(1, ["{{{1", "nline 1", "{{{1", "line 2"])',
30552
a7a9e8b9af89 patch 9.0.0611: tests delete files with a separate delete() call
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
834 \ ], 'Xtest_folds_with_rnu', 'D')
14875
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
835 let buf = RunVimInTerminal('-S Xtest_folds_with_rnu', {})
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
836
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
837 call VerifyScreenDump(buf, 'Test_folds_with_rnu_01', {})
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
838 call term_sendkeys(buf, "j")
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
839 call VerifyScreenDump(buf, 'Test_folds_with_rnu_02', {})
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
840
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
841 " clean up
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
842 call StopVimInTerminal(buf)
081f30c50300 patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Christian Brabandt <cb@256bit.org>
parents: 14317
diff changeset
843 endfunc
15119
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
844
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
845 func Test_folds_marker_in_comment2()
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
846 new
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
847 call setline(1, ['Lorem ipsum dolor sit', 'Lorem ipsum dolor sit', 'Lorem ipsum dolor sit'])
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
848 setl fen fdm=marker
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
849 setl commentstring=<!--%s-->
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
850 setl comments=s:<!--,m:\ \ \ \ ,e:-->
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
851 norm! zf2j
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
852 setl nofen
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
853 :1y
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
854 call assert_equal(['Lorem ipsum dolor sit<!--{{{-->'], getreg(0,1,1))
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
855 :+2y
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
856 call assert_equal(['Lorem ipsum dolor sit<!--}}}-->'], getreg(0,1,1))
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
857
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
858 set foldmethod&
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
859 bwipe!
6e9f37bf987b patch 8.1.0570: 'commentstring' not used when adding fold marker
Bram Moolenaar <Bram@vim.org>
parents: 14875
diff changeset
860 endfunc
17787
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
861
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
862 func Test_fold_delete_with_marker()
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
863 new
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
864 call setline(1, ['func Func() {{{1', 'endfunc'])
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
865 1,2yank
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
866 new
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
867 set fdm=marker
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
868 call setline(1, 'x')
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
869 normal! Vp
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
870 normal! zd
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
871 call assert_equal(['func Func() ', 'endfunc'], getline(1, '$'))
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
872
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
873 set fdm&
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
874 bwipe!
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
875 bwipe!
92e0996e1cb8 patch 8.1.1890: ml_get error when deleting fold marker
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
876 endfunc
18114
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
877
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
878 func Test_fold_delete_with_marker_and_whichwrap()
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
879 new
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
880 let content1 = ['']
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
881 let content2 = ['folded line 1 "{{{1', ' test', ' test2', ' test3', '', 'folded line 2 "{{{1', ' test', ' test2', ' test3']
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
882 call setline(1, content1 + content2)
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
883 set fdm=marker ww+=l
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
884 normal! x
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
885 call assert_equal(content2, getline(1, '$'))
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
886 set fdm& ww&
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
887 bwipe!
90b0af9ba4ff patch 8.1.2052: using "x" before a closed fold may delete that fold
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
888 endfunc
18882
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
889
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
890 func Test_fold_delete_first_line()
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
891 new
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
892 call setline(1, [
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
893 \ '" x {{{1',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
894 \ '" a',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
895 \ '" aa',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
896 \ '" x {{{1',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
897 \ '" b',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
898 \ '" bb',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
899 \ '" x {{{1',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
900 \ '" c',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
901 \ '" cc',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
902 \ ])
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
903 set foldmethod=marker
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
904 1
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
905 normal dj
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
906 call assert_equal([
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
907 \ '" x {{{1',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
908 \ '" c',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
909 \ '" cc',
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
910 \ ], getline(1,'$'))
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
911 bwipe!
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
912 set foldmethod&
f9e41ffd3539 patch 8.2.0002: "dj" only deletes first line of closed fold
Bram Moolenaar <Bram@vim.org>
parents: 18114
diff changeset
913 endfunc
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
914
24345
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
915 " Add a test for deleting the outer fold of a nested fold and promoting the
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
916 " inner folds to one level up with already a fold at that level following the
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
917 " nested fold.
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
918 func Test_fold_delete_recursive_fold()
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
919 new
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
920 call setline(1, range(1, 7))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
921 2,3fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
922 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
923 4,5fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
924 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
925 1,5fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
926 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
927 6,7fold
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
928 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
929 normal 1Gzd
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
930 normal 1Gzj
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
931 call assert_equal(2, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
932 normal zj
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
933 call assert_equal(4, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
934 normal zj
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
935 call assert_equal(6, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
936 bw!
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
937 endfunc
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
938
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
939 " Test for errors in 'foldexpr'
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
940 func Test_fold_expr_error()
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
941 new
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
942 call setline(1, ['one', 'two', 'three'])
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
943 " In a window with no folds, foldlevel() should return 0
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
944 call assert_equal(0, foldlevel(1))
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
945
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
946 " Return a list from the expression
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
947 set foldexpr=[]
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
948 set foldmethod=expr
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
949 for i in range(3)
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
950 call assert_equal(0, foldlevel(i))
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
951 endfor
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
952
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
953 " expression error
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
954 set foldexpr=[{]
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
955 set foldmethod=expr
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
956 for i in range(3)
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
957 call assert_equal(0, foldlevel(i))
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
958 endfor
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
959
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
960 set foldmethod& foldexpr&
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
961 close!
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
962 endfunc
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
963
22306
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
964 func Test_undo_fold_deletion()
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
965 new
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
966 set fdm=marker
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
967 let lines =<< trim END
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
968 " {{{
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
969 " }}}1
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
970 " {{{
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
971 END
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
972 call setline(1, lines)
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
973 3d
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
974 g/"/d
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
975 undo
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
976 redo
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
977 eval getline(1, '$')->assert_equal([''])
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
978
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
979 set fdm&vim
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
980 bwipe!
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
981 endfunc
86696c617f70 patch 8.2.1702: crash when using undo after deleting folded lines
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
982
22798
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
983 " this was crashing
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
984 func Test_move_no_folds()
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
985 new
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
986 fold
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
987 setlocal fdm=expr
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
988 normal zj
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
989 bwipe!
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
990 endfunc
3c72820f88b2 patch 8.2.1947: crash when using "zj" without folds
Bram Moolenaar <Bram@vim.org>
parents: 22306
diff changeset
991
22850
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
992 " this was crashing
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
993 func Test_fold_create_delete_create()
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
994 new
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
995 fold
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
996 fold
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
997 normal zd
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
998 fold
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
999 bwipe!
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
1000 endfunc
b05cfda397dc patch 8.2.1972: crash when recreating nested fold
Bram Moolenaar <Bram@vim.org>
parents: 22798
diff changeset
1001
23260
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1002 " this was crashing
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1003 func Test_fold_create_delete()
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1004 new
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1005 norm zFzFzdzj
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1006 bwipe!
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1007 endfunc
ef4f890f02f6 patch 8.2.2176: crash with a sequence of fold commands
Bram Moolenaar <Bram@vim.org>
parents: 23027
diff changeset
1008
23687
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1009 func Test_fold_relative_move()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1010 new
23687
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1011 set fdm=indent sw=2 wrap tw=80
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1012
24341
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1013 let longtext = repeat('x', &columns + 1)
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1014 let content = [ ' foo', ' ' .. longtext, ' baz',
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1015 \ longtext,
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1016 \ ' foo', ' ' .. longtext, ' baz'
23687
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1017 \ ]
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1018 call append(0, content)
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1019
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1020 normal zM
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1021
24341
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1022 for lnum in range(1, 3)
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1023 call cursor(lnum, 1)
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1024 call assert_true(foldclosed(line('.')))
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1025 normal gj
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1026 call assert_equal(2, winline())
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1027 endfor
23687
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1028
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1029 call cursor(2, 1)
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1030 call assert_true(foldclosed(line('.')))
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1031 normal 2gj
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1032 call assert_equal(3, winline())
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1033
24341
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1034 for lnum in range(5, 7)
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1035 call cursor(lnum, 1)
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1036 call assert_true(foldclosed(line('.')))
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1037 normal gk
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1038 call assert_equal(3, winline())
0e1b8b98f9f4 patch 8.2.2711: "gj" in a closed fold does not move out of the fold
Bram Moolenaar <Bram@vim.org>
parents: 24287
diff changeset
1039 endfor
23687
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1040
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1041 call cursor(6, 1)
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1042 call assert_true(foldclosed(line('.')))
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1043 normal 2gk
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1044 call assert_equal(2, winline())
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1045
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1046 set fdm& sw& wrap& tw&
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1047 bw!
23687
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1048 endfunc
09ad3f1b9714 patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold
Bram Moolenaar <Bram@vim.org>
parents: 23260
diff changeset
1049
24043
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1050 " Test for using multibyte characters as 'foldopen', 'foldclose' and
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1051 " 'foldsetp' items in 'fillchars'
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1052 func s:mbyte_fillchar_tests(fo, fc, fs)
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1053 setlocal foldcolumn=3
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1054
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1055 normal zE
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1056 1,2fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1057 call assert_equal([a:fc .. ' +-- 2 ', ' three '],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1058 \ ScreenLines([1, 2], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1059 1,2foldopen
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1060 call assert_equal([a:fo .. ' one ', a:fs .. ' two '],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1061 \ ScreenLines([1, 2], 7))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1062 1,2foldclose
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1063 redraw!
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1064 call assert_equal([a:fc .. ' +-- 2 ', ' three '],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1065 \ ScreenLines([1, 2], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1066
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1067 " Two level fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1068 normal zE
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1069 2,3fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1070 1,4fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1071 call assert_equal([a:fc .. ' +-- 4 ', ' five '],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1072 \ ScreenLines([1, 2], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1073 1,4foldopen
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1074 call assert_equal([a:fo .. ' one ', a:fs .. a:fc .. ' +--- 2'],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1075 \ ScreenLines([1, 2], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1076 1,4foldopen
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1077 call assert_equal([a:fo .. ' one ', a:fs .. a:fo .. ' two ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1078 \ a:fs .. a:fs .. ' three '], ScreenLines([1, 3], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1079 2,3foldclose
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1080 call assert_equal([a:fo .. ' one ', a:fs .. a:fc .. ' +--- 2'],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1081 \ ScreenLines([1, 2], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1082 1,4foldclose
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1083 call assert_equal([a:fc .. ' +-- 4 ', ' five '],
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1084 \ ScreenLines([1, 2], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1085
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1086 " Three level fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1087 normal zE
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1088 3,4fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1089 2,5fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1090 1,6fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1091 call assert_equal([a:fc .. ' +-- 6 '], ScreenLines(1, 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1092 " open all the folds
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1093 normal zR
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1094 call assert_equal([
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1095 \ a:fo .. ' one ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1096 \ a:fs .. a:fo .. ' two ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1097 \ '2' .. a:fo .. ' three ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1098 \ '23 four ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1099 \ a:fs .. a:fs .. ' five ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1100 \ a:fs .. ' six ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1101 \ ], ScreenLines([1, 6], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1102 " close the innermost fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1103 3,4foldclose
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1104 call assert_equal([
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1105 \ a:fo .. ' one ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1106 \ a:fs .. a:fo .. ' two ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1107 \ a:fs .. a:fs .. a:fc .. '+---- ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1108 \ a:fs .. a:fs .. ' five ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1109 \ a:fs .. ' six ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1110 \ ], ScreenLines([1, 5], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1111 " close the next fold
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1112 2,5foldclose
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1113 call assert_equal([
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1114 \ a:fo .. ' one ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1115 \ a:fs .. a:fc .. ' +--- 4',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1116 \ a:fs .. ' six ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1117 \ ], ScreenLines([1, 3], 10))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1118
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1119 " set the fold column size to 2
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1120 setlocal fdc=2
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1121 normal zR
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1122 call assert_equal([
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1123 \ a:fo .. ' one ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1124 \ a:fo .. ' two ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1125 \ a:fo .. ' three',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1126 \ '3 four ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1127 \ '2 five ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1128 \ a:fs .. ' six ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1129 \ ], ScreenLines([1, 6], 7))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1130
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1131 " set the fold column size to 1
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1132 setlocal fdc=1
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1133 normal zR
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1134 call assert_equal([
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1135 \ a:fo .. 'one ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1136 \ a:fo .. 'two ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1137 \ a:fo .. 'three ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1138 \ '3four ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1139 \ '2five ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1140 \ a:fs .. 'six ',
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1141 \ ], ScreenLines([1, 6], 7))
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1142
24055
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1143 " Enable number and sign columns and place some signs
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1144 setlocal fdc=3
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1145 setlocal number
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1146 setlocal signcolumn=auto
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1147 sign define S1 text=->
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1148 sign place 10 line=3 name=S1
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1149 call assert_equal([
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1150 \ a:fo .. ' 1 one ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1151 \ a:fs .. a:fo .. ' 2 two ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1152 \ '2' .. a:fo .. ' -> 3 three',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1153 \ '23 4 four ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1154 \ a:fs .. a:fs .. ' 5 five ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1155 \ a:fs .. ' 6 six '
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1156 \ ], ScreenLines([1, 6], 14))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1157
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1158 " Test with 'rightleft'
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1159 if has('rightleft')
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1160 setlocal rightleft
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1161 let lines = ScreenLines([1, 6], winwidth(0))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1162 call assert_equal('o 1 ' .. a:fo,
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1163 \ strcharpart(lines[0], strchars(lines[0]) - 10, 10))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1164 call assert_equal('t 2 ' .. a:fo .. a:fs,
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1165 \ strcharpart(lines[1], strchars(lines[1]) - 10, 10))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1166 call assert_equal('t 3 >- ' .. a:fo .. '2',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1167 \ strcharpart(lines[2], strchars(lines[2]) - 10, 10))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1168 call assert_equal('f 4 32',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1169 \ strcharpart(lines[3], strchars(lines[3]) - 10, 10))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1170 call assert_equal('f 5 ' .. a:fs .. a:fs,
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1171 \ strcharpart(lines[4], strchars(lines[4]) - 10, 10))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1172 call assert_equal('s 6 ' .. a:fs,
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1173 \ strcharpart(lines[5], strchars(lines[5]) - 10, 10))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1174 setlocal norightleft
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1175 endif
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1176
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1177 sign unplace *
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1178 sign undefine S1
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1179 setlocal number& signcolumn&
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1180
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1181 " Add a test with more than 9 folds (and then delete some folds)
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1182 normal zE
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1183 for i in range(1, 10)
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1184 normal zfGzo
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1185 endfor
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1186 normal zR
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1187 call assert_equal([
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1188 \ a:fo .. a:fo .. ' one ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1189 \ '9> two '
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1190 \ ], ScreenLines([1, 2], 7))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1191 normal 1Gzd
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1192 call assert_equal([
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1193 \ a:fo .. a:fo .. ' one ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1194 \ '89 two '
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1195 \ ], ScreenLines([1, 2], 7))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1196 normal 1Gzdzdzdzdzdzdzd
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1197 call assert_equal([
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1198 \ a:fo .. a:fo .. ' one ',
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1199 \ a:fs .. a:fs .. ' two '
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1200 \ ], ScreenLines([1, 2], 7))
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1201
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 24043
diff changeset
1202 setlocal foldcolumn& number& signcolumn&
24043
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1203 endfunc
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1204
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1205 func Test_foldcolumn_multibyte_char()
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1206 new
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1207 call setline(1, ['one', 'two', 'three', 'four', 'five', 'six'])
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1208 setlocal foldenable foldmethod=manual
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1209
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1210 " First test with the default setting
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1211 call s:mbyte_fillchar_tests('-', '+', '|')
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1212
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1213 " Use multi-byte characters
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1214 set fillchars+=foldopen:▾,foldsep:│,foldclose:▸
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1215 call s:mbyte_fillchar_tests('▾', '▸', '│')
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1216
24184
8ebf8b3dfc08 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
1217 " Use a mix of multi-byte and single-byte characters
8ebf8b3dfc08 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
1218 set fillchars+=foldopen:¬,foldsep:\|,foldclose:+
8ebf8b3dfc08 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
1219 call s:mbyte_fillchar_tests('¬', '+', '|')
8ebf8b3dfc08 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
1220 set fillchars+=foldopen:+,foldsep:\|,foldclose:¬
8ebf8b3dfc08 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
1221 call s:mbyte_fillchar_tests('+', '¬', '|')
8ebf8b3dfc08 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
1222
24043
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1223 bw!
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1224 set foldenable& fdc& fdm& fillchars&
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1225 endfunc
15408ab5fed7 patch 8.2.2563: cannot use multibyte characters for folding in 'fillchars'
Bram Moolenaar <Bram@vim.org>
parents: 23715
diff changeset
1226
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1227 " Test for calling foldlevel() from a fold expression
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1228 let g:FoldLevels = []
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1229 func FoldExpr1(lnum)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1230 let f = [a:lnum]
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1231 for i in range(1, line('$'))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1232 call add(f, foldlevel(i))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1233 endfor
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1234 call add(g:FoldLevels, f)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1235 return getline(a:lnum)[0] == "\t"
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1236 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1237
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1238 func Test_foldexpr_foldlevel()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1239 new
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1240 call setline(1, ['one', "\ttwo", "\tthree"])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1241 setlocal foldmethod=expr
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1242 setlocal foldexpr=FoldExpr1(v:lnum)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1243 setlocal foldenable
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1244 setlocal foldcolumn=3
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1245 redraw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1246 call assert_equal([[1, -1, -1, -1], [2, -1, -1, -1], [3, 0, 1, -1]],
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1247 \ g:FoldLevels)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1248 set foldmethod& foldexpr& foldenable& foldcolumn&
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1249 bw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1250 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1251
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1252 " Test for returning different values from a fold expression
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1253 func FoldExpr2(lnum)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1254 if a:lnum == 1 || a:lnum == 4
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1255 return -2
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1256 elseif a:lnum == 2
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1257 return 'a1'
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1258 elseif a:lnum == 3
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1259 return 's4'
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1260 endif
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1261 return '='
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1262 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1263
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1264 func Test_foldexpr_2()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1265 new
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1266 call setline(1, ['one', 'two', 'three', 'four'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1267 setlocal foldexpr=FoldExpr2(v:lnum)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1268 setlocal foldmethod=expr
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1269 call assert_equal([0, 1, 1, 0], [foldlevel(1), foldlevel(2), foldlevel(3),
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1270 \ foldlevel(4)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1271 bw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1272 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1273
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1274 " Test for the 'foldclose' option
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1275 func Test_foldclose_opt()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1276 CheckScreendump
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1277
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1278 let lines =<< trim END
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1279 set foldmethod=manual foldclose=all foldopen=all
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1280 call setline(1, ['one', 'two', 'three', 'four'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1281 2,3fold
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1282 func XsaveFoldLevels()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1283 redraw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1284 call writefile([json_encode([foldclosed(1), foldclosed(2), foldclosed(3),
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1285 \ foldclosed(4)])], 'Xoutput', 'a')
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1286 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1287 END
30552
a7a9e8b9af89 patch 9.0.0611: tests delete files with a separate delete() call
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
1288 call writefile(lines, 'Xscript', 'D')
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1289 let rows = 10
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1290 let buf = RunVimInTerminal('-S Xscript', {'rows': rows})
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1291 call term_wait(buf)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1292 call term_sendkeys(buf, ":set noruler\n")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1293 call term_wait(buf)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1294 call term_sendkeys(buf, ":call XsaveFoldLevels()\n")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1295 call term_sendkeys(buf, "2G")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1296 call WaitForAssert({-> assert_equal('two', term_getline(buf, 2))})
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1297 call term_sendkeys(buf, ":call XsaveFoldLevels()\n")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1298 call term_sendkeys(buf, "4G")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1299 call WaitForAssert({-> assert_equal('four', term_getline(buf, 3))})
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1300 call term_sendkeys(buf, ":call XsaveFoldLevels()\n")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1301 call term_sendkeys(buf, "3G")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1302 call WaitForAssert({-> assert_equal('three', term_getline(buf, 3))})
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1303 call term_sendkeys(buf, ":call XsaveFoldLevels()\n")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1304 call term_sendkeys(buf, "1G")
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1305 call WaitForAssert({-> assert_equal('four', term_getline(buf, 3))})
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1306 call term_sendkeys(buf, ":call XsaveFoldLevels()\n")
24345
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1307 call term_sendkeys(buf, "2G")
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1308 call WaitForAssert({-> assert_equal('two', term_getline(buf, 2))})
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1309 call term_sendkeys(buf, "k")
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1310 call WaitForAssert({-> assert_equal('four', term_getline(buf, 3))})
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1311
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1312 " clean up
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1313 call StopVimInTerminal(buf)
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1314
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1315 call assert_equal(['[-1,2,2,-1]', '[-1,-1,-1,-1]', '[-1,2,2,-1]',
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1316 \ '[-1,-1,-1,-1]', '[-1,2,2,-1]'], readfile('Xoutput'))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1317 call delete('Xoutput')
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1318 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1319
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1320 " Test for foldtextresult()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1321 func Test_foldtextresult()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1322 new
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1323 call assert_equal('', foldtextresult(-1))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1324 call assert_equal('', foldtextresult(0))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1325 call assert_equal('', foldtextresult(1))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1326 call setline(1, ['one', 'two', 'three', 'four'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1327 2,3fold
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1328 call assert_equal('', foldtextresult(1))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1329 call assert_equal('+-- 2 lines: two', foldtextresult(2))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1330 setlocal foldtext=
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1331 call assert_equal('+-- 2 lines folded ', foldtextresult(2))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1332
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1333 " Fold text for a C comment fold
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1334 %d _
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1335 setlocal foldtext&
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1336 call setline(1, ['', '/*', ' * Comment', ' */', ''])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1337 2,4fold
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1338 call assert_equal('+-- 3 lines: Comment', foldtextresult(2))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1339
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1340 bw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1341 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1342
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1343 " Test for merging two recursive folds when an intermediate line with no fold
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1344 " is removed
30986
360f286b5869 patch 9.0.0828: various typos
Bram Moolenaar <Bram@vim.org>
parents: 30594
diff changeset
1345 func Test_fold_merge_recursive()
24287
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1346 new
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1347 call setline(1, [' one', ' two', 'xxxx', ' three',
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1348 \ ' four', "\tfive"])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1349 setlocal foldmethod=indent shiftwidth=2
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1350 3d_
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1351 %foldclose
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1352 call assert_equal([1, 5], [foldclosed(5), foldclosedend(1)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1353 bw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1354 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1355
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1356 " Test for moving a line which is the start of a fold from a recursive fold to
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1357 " outside. The fold length should reduce.
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1358 func Test_fold_move_foldlevel()
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1359 new
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1360 call setline(1, ['a{{{', 'b{{{', 'c{{{', 'd}}}', 'e}}}', 'f}}}', 'g'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1361 setlocal foldmethod=marker
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1362 normal zR
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1363 call assert_equal([3, 2, 1], [foldlevel(4), foldlevel(5), foldlevel(6)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1364 3move 7
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1365 call assert_equal([2, 1, 0], [foldlevel(3), foldlevel(4), foldlevel(5)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1366 call assert_equal(1, foldlevel(7))
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1367
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1368 " Move a line from outside a fold to inside the fold.
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1369 %d _
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1370 call setline(1, ['a', 'b{{{', 'c}}}'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1371 normal zR
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1372 1move 2
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1373 call assert_equal([1, 1, 1], [foldlevel(1), foldlevel(2), foldlevel(3)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1374
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1375 " Move the start of one fold to inside another fold
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1376 %d _
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1377 call setline(1, ['a', 'b{{{', 'c}}}', 'd{{{', 'e}}}'])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1378 normal zR
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1379 call assert_equal([0, 1, 1, 1, 1], [foldlevel(1), foldlevel(2),
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1380 \ foldlevel(3), foldlevel(4), foldlevel(5)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1381 1,2move 4
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1382 call assert_equal([0, 1, 1, 2, 2], [foldlevel(1), foldlevel(2),
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1383 \ foldlevel(3), foldlevel(4), foldlevel(5)])
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1384
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1385 bw!
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1386 endfunc
c2a234e8c896 patch 8.2.2684: not enough folding code is tested
Bram Moolenaar <Bram@vim.org>
parents: 24184
diff changeset
1387
24345
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1388 " Test for using zj and zk to move downwards and upwards to the start and end
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1389 " of the next fold.
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1390 " Test for using [z and ]z in a closed fold to jump to the beginning and end
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1391 " of the fold.
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1392 func Test_fold_jump()
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1393 new
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1394 call setline(1, ["\t1", "\t2", "\t\t3", "\t\t4", "\t\t\t5", "\t\t\t6", "\t\t7", "\t\t8", "\t9", "\t10"])
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1395 setlocal foldmethod=indent
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1396 normal zR
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1397 normal zj
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1398 call assert_equal(3, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1399 normal zj
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1400 call assert_equal(5, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1401 call assert_beeps('normal zj')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1402 call assert_equal(5, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1403 call assert_beeps('normal 9Gzj')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1404 call assert_equal(9, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1405 normal Gzk
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1406 call assert_equal(8, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1407 normal zk
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1408 call assert_equal(6, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1409 call assert_beeps('normal zk')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1410 call assert_equal(6, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1411 call assert_beeps('normal 2Gzk')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1412 call assert_equal(2, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1413
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1414 " Using [z or ]z in a closed fold should not move the cursor
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1415 %d _
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1416 call setline(1, ["1", "\t2", "\t3", "\t4", "\t5", "\t6", "7"])
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1417 normal zR4Gzc
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1418 call assert_equal(4, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1419 call assert_beeps('normal [z')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1420 call assert_equal(4, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1421 call assert_beeps('normal ]z')
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1422 call assert_equal(4, line('.'))
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1423 bw!
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1424 endfunc
eab30779c97c patch 8.2.2713: folding code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24341
diff changeset
1425
26743
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1426 " Test for using a script-local function for 'foldexpr'
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1427 func Test_foldexpr_scriptlocal_func()
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1428 func! s:FoldFunc()
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1429 let g:FoldLnum = v:lnum
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1430 endfunc
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1431 new | only
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1432 call setline(1, 'abc')
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1433 let g:FoldLnum = 0
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1434 set foldmethod=expr foldexpr=s:FoldFunc()
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1435 redraw!
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1436 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr)
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1437 call assert_equal(1, g:FoldLnum)
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1438 set foldmethod& foldexpr=
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1439 bw!
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1440 new | only
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1441 call setline(1, 'abc')
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1442 let g:FoldLnum = 0
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1443 set foldmethod=expr foldexpr=<SID>FoldFunc()
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1444 redraw!
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1445 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr)
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1446 call assert_equal(1, g:FoldLnum)
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1447 set foldmethod& foldexpr=
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1448 delfunc s:FoldFunc
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1449 bw!
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1450 endfunc
c2c40cefc17b patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents: 24345
diff changeset
1451
26759
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1452 " Test for using a script-local function for 'foldtext'
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1453 func Test_foldtext_scriptlocal_func()
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1454 func! s:FoldText()
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1455 let g:FoldTextArgs = [v:foldstart, v:foldend]
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1456 return foldtext()
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1457 endfunc
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1458 new | only
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1459 call setline(1, range(50))
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1460 let g:FoldTextArgs = []
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1461 set foldmethod=manual
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1462 set foldtext=s:FoldText()
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1463 norm! 4Gzf4j
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1464 redraw!
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1465 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext)
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1466 call assert_equal([4, 8], g:FoldTextArgs)
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1467 set foldtext&
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1468 bw!
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1469 new | only
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1470 call setline(1, range(50))
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1471 let g:FoldTextArgs = []
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1472 set foldmethod=manual
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1473 set foldtext=<SID>FoldText()
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1474 norm! 8Gzf4j
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1475 redraw!
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1476 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext)
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1477 call assert_equal([8, 12], g:FoldTextArgs)
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1478 set foldtext&
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1479 bw!
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1480 delfunc s:FoldText
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1481 endfunc
31c23760d590 patch 8.2.3908: cannot use a script-local function for 'foldtext'
Bram Moolenaar <Bram@vim.org>
parents: 26743
diff changeset
1482
28578
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1483 " Make sure a fold containing a nested fold is split correctly when using
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1484 " foldmethod=indent
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1485 func Test_fold_split()
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1486 new
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1487 let lines =<< trim END
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1488 line 1
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1489 line 2
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1490 line 3
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1491 line 4
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1492 line 5
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1493 END
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1494 call setline(1, lines)
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1495 setlocal sw=2
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1496 setlocal foldmethod=indent foldenable
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1497 call assert_equal([0, 1, 1, 2, 2], range(1, 5)->map('foldlevel(v:val)'))
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1498 call append(2, 'line 2.5')
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1499 call assert_equal([0, 1, 0, 1, 2, 2], range(1, 6)->map('foldlevel(v:val)'))
29320
a74398c432a4 patch 9.0.0003: functions are global while they could be local
Bram Moolenaar <Bram@vim.org>
parents: 28974
diff changeset
1500 3d
a74398c432a4 patch 9.0.0003: functions are global while they could be local
Bram Moolenaar <Bram@vim.org>
parents: 28974
diff changeset
1501 call assert_equal([0, 1, 1, 2, 2], range(1, 5)->map('foldlevel(v:val)'))
28578
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1502 bw!
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1503 endfunc
8cba27db759a patch 8.2.4813: pasting text while indent folding may mess up folds
Bram Moolenaar <Bram@vim.org>
parents: 26759
diff changeset
1504
28823
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1505 " Make sure that when you append under a blank line that is under a fold with
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1506 " the same indent level as your appended line, the fold expands across the
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1507 " blank line
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1508 func Test_indent_append_under_blank_line()
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1509 new
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1510 let lines =<< trim END
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1511 line 1
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1512 line 2
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1513 line 3
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1514 END
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1515 call setline(1, lines)
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1516 setlocal sw=2
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1517 setlocal foldmethod=indent foldenable
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1518 call assert_equal([0, 1, 1], range(1, 3)->map('foldlevel(v:val)'))
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1519 call append(3, '')
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1520 call append(4, ' line 5')
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1521 call assert_equal([0, 1, 1, 1, 1], range(1, 5)->map('foldlevel(v:val)'))
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1522 bw!
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1523 endfunc
980eaa09f940 patch 8.2.4935: with 'foldmethod' "indent" some lines not included in fold
Bram Moolenaar <Bram@vim.org>
parents: 28578
diff changeset
1524
28929
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1525 " Make sure that when you delete 1 line of a fold whose length is 2 lines, the
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1526 " fold can't be closed since its length (1) is now less than foldminlines.
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1527 func Test_indent_one_line_fold_close()
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1528 let lines =<< trim END
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1529 line 1
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1530 line 2
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1531 line 3
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1532 END
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1533
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1534 new
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1535 setlocal sw=2 foldmethod=indent
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1536 call setline(1, lines)
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1537 " open all folds, delete line, then close all folds
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1538 normal zR
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1539 3delete
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1540 normal zM
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1541 call assert_equal(-1, foldclosed(2)) " the fold should not be closed
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1542
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1543 " Now do the same, but delete line 2 this time; this covers different code.
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1544 " (Combining this code with the above code doesn't expose both bugs.)
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1545 1,$delete
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1546 call setline(1, lines)
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1547 normal zR
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1548 2delete
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1549 normal zM
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1550 call assert_equal(-1, foldclosed(2))
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1551 bw!
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1552 endfunc
2ac9beab876c patch 8.2.4987: after deletion a small fold may be closable
Bram Moolenaar <Bram@vim.org>
parents: 28823
diff changeset
1553
28974
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1554 " Make sure that when appending [an indented line then a blank line] right
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1555 " before a single indented line, the resulting extended fold can be closed
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1556 func Test_indent_append_blank_small_fold_close()
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1557 new
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1558 setlocal sw=2 foldmethod=indent
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1559 " at first, the fold at the second line can't be closed since it's smaller
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1560 " than foldminlines
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1561 let lines =<< trim END
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1562 line 1
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1563 line 4
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1564 END
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1565 call setline(1, lines)
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1566 call append(1, [' line 2', ''])
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1567 " close all folds
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1568 normal zM
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1569 call assert_notequal(-1, foldclosed(2)) " the fold should be closed now
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1570 bw!
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1571 endfunc
65946c949965 patch 8.2.5009: fold may not be closeable after appending
Bram Moolenaar <Bram@vim.org>
parents: 28938
diff changeset
1572
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 18882
diff changeset
1573 " vim: shiftwidth=2 sts=2 expandtab