1" Tests for smartindent 2 3" Tests for not doing smart indenting when it isn't set. 4func Test_nosmartindent() 5 new 6 call append(0, [" some test text", 7 \ " test text", 8 \ "test text", 9 \ " test text"]) 10 set nocindent nosmartindent autoindent 11 exe "normal! gg/some\<CR>" 12 exe "normal! 2cc#test\<Esc>" 13 call assert_equal(" #test", getline(1)) 14 enew! | close 15endfunc 16 17func MyIndent() 18endfunc 19 20" When 'indentexpr' is set, setting 'si' has no effect. 21func Test_smartindent_has_no_effect() 22 new 23 exe "normal! i\<Tab>one\<Esc>" 24 set noautoindent 25 set smartindent 26 set indentexpr= 27 exe "normal! Gotwo\<Esc>" 28 call assert_equal("\ttwo", getline("$")) 29 30 set indentexpr=MyIndent 31 exe "normal! Gothree\<Esc>" 32 call assert_equal("three", getline("$")) 33 34 delfunction! MyIndent 35 set autoindent& 36 set smartindent& 37 set indentexpr& 38 bwipe! 39endfunc 40 41" Test for inserting '{' and '} with smartindent 42func Test_smartindent_braces() 43 new 44 set smartindent shiftwidth=4 45 call setline(1, [' if (a)', "\tif (b)", "\t return 1"]) 46 normal 2ggO{ 47 normal 3ggA { 48 normal 4ggo} 49 normal o} 50 normal 4ggO#define FOO 1 51 call assert_equal([ 52 \ ' if (a)', 53 \ ' {', 54 \ "\tif (b) {", 55 \ '#define FOO 1', 56 \ "\t return 1", 57 \ "\t}", 58 \ ' }' 59 \ ], getline(1, '$')) 60 set si& sw& ai& 61 close! 62endfunc 63 64" vim: shiftwidth=2 sts=2 expandtab 65