blob: 91e801a64a1b45ef170ed5e609cd4f0a2a840a66 [file] [log] [blame]
Bram Moolenaarbd7206e2020-03-06 20:36:04 +01001" Test for various indent options
2
3func Test_preserveindent()
4 new
5 " Test for autoindent copying indent from the previous line
6 setlocal autoindent
7 call setline(1, [repeat(' ', 16) .. 'line1'])
8 call feedkeys("A\nline2", 'xt')
9 call assert_equal("\t\tline2", getline(2))
10 setlocal autoindent&
11
12 " Test for using CTRL-T with and without 'preserveindent'
13 set shiftwidth=4
14 call cursor(1, 1)
15 call setline(1, " \t ")
16 call feedkeys("Al\<C-T>", 'xt')
17 call assert_equal("\t\tl", getline(1))
18 set preserveindent
19 call setline(1, " \t ")
20 call feedkeys("Al\<C-T>", 'xt')
21 call assert_equal(" \t \tl", getline(1))
22 set pi& sw&
23
24 " Test for using CTRL-T with 'expandtab' and 'preserveindent'
25 call cursor(1, 1)
26 call setline(1, "\t \t")
27 set shiftwidth=4 expandtab preserveindent
28 call feedkeys("Al\<C-T>", 'xt')
29 call assert_equal("\t \t l", getline(1))
30 set sw& et& pi&
31
32 close!
33endfunc
34
35" Test for indent()
36func Test_indent_func()
37 call assert_equal(-1, indent(-1))
38 new
39 call setline(1, "\tabc")
40 call assert_equal(8, indent(1))
41 call setline(1, " abc")
42 call assert_equal(4, indent(1))
43 call setline(1, " \t abc")
44 call assert_equal(12, indent(1))
45 close!
46endfunc
47
48" Test for reindenting a line using the '=' operator
49func Test_reindent()
50 new
51 call setline(1, 'abc')
52 set nomodifiable
53 call assert_fails('normal ==', 'E21:')
54 set modifiable
55
56 call setline(1, ['foo', 'bar'])
57 call feedkeys('ggVG=', 'xt')
58 call assert_equal(['foo', 'bar'], getline(1, 2))
59 close!
60endfunc
61
62" Test for shifting a line with a preprocessor directive ('#')
63func Test_preproc_indent()
64 new
65 set sw=4
66 call setline(1, '#define FOO 1')
67 normal >>
68 call assert_equal(' #define FOO 1', getline(1))
69
70 " with 'smartindent'
71 call setline(1, '#define FOO 1')
72 set smartindent
73 normal >>
74 call assert_equal('#define FOO 1', getline(1))
75 set smartindent&
76
77 " with 'cindent'
78 set cindent
79 normal >>
80 call assert_equal('#define FOO 1', getline(1))
81 set cindent&
82
83 close!
84endfunc
85
86" Test for 'copyindent'
87func Test_copyindent()
88 new
89 set shiftwidth=4 autoindent expandtab copyindent
90 call setline(1, " \t abc")
91 call feedkeys("ol", 'xt')
92 call assert_equal(" \t l", getline(2))
93 set noexpandtab
94 call setline(1, " \t abc")
95 call feedkeys("ol", 'xt')
96 call assert_equal(" \t l", getline(2))
97 set sw& ai& et& ci&
98 close!
99endfunc
100
101" vim: shiftwidth=2 sts=2 expandtab