1" Tests for 'backspace' settings 2 3func Test_backspace_option() 4 set backspace= 5 call assert_equal('', &backspace) 6 set backspace=indent 7 call assert_equal('indent', &backspace) 8 set backspace=eol 9 call assert_equal('eol', &backspace) 10 set backspace=start 11 call assert_equal('start', &backspace) 12 set backspace=nostop 13 call assert_equal('nostop', &backspace) 14 " Add the value 15 set backspace= 16 set backspace=indent 17 call assert_equal('indent', &backspace) 18 set backspace+=eol 19 call assert_equal('indent,eol', &backspace) 20 set backspace+=start 21 call assert_equal('indent,eol,start', &backspace) 22 set backspace+=nostop 23 call assert_equal('indent,eol,start,nostop', &backspace) 24 " Delete the value 25 set backspace-=nostop 26 call assert_equal('indent,eol,start', &backspace) 27 set backspace-=indent 28 call assert_equal('eol,start', &backspace) 29 set backspace-=start 30 call assert_equal('eol', &backspace) 31 set backspace-=eol 32 call assert_equal('', &backspace) 33 " Check the error 34 call assert_fails('set backspace=ABC', 'E474:') 35 call assert_fails('set backspace+=def', 'E474:') 36 " NOTE: Vim doesn't check following error... 37 "call assert_fails('set backspace-=ghi', 'E474:') 38 39 " Check backwards compatibility with version 5.4 and earlier 40 set backspace=0 41 call assert_equal('0', &backspace) 42 set backspace=1 43 call assert_equal('1', &backspace) 44 set backspace=2 45 call assert_equal('2', &backspace) 46 set backspace=3 47 call assert_equal('3', &backspace) 48 call assert_fails('set backspace=4', 'E474:') 49 call assert_fails('set backspace=10', 'E474:') 50 51 " Cleared when 'compatible' is set 52 set compatible 53 call assert_equal('', &backspace) 54 set nocompatible viminfo+=nviminfo 55endfunc 56 57" Test with backspace set to the non-compatible setting 58func Test_backspace_ctrl_u() 59 new 60 call append(0, [ 61 \ "1 this shouldn't be deleted", 62 \ "2 this shouldn't be deleted", 63 \ "3 this shouldn't be deleted", 64 \ "4 this should be deleted", 65 \ "5 this shouldn't be deleted", 66 \ "6 this shouldn't be deleted", 67 \ "7 this shouldn't be deleted", 68 \ "8 this shouldn't be deleted (not touched yet)"]) 69 call cursor(2, 1) 70 71 set compatible 72 set backspace=2 73 74 exe "normal Avim1\<C-U>\<Esc>\<CR>" 75 exe "normal Avim2\<C-G>u\<C-U>\<Esc>\<CR>" 76 77 set cpo-=< 78 inoremap <c-u> <left><c-u> 79 exe "normal Avim3\<*C-U>\<Esc>\<CR>" 80 iunmap <c-u> 81 exe "normal Avim4\<C-U>\<C-U>\<Esc>\<CR>" 82 83 " Test with backspace set to the compatible setting 84 set backspace= visualbell 85 exe "normal A vim5\<Esc>A\<C-U>\<C-U>\<Esc>\<CR>" 86 exe "normal A vim6\<Esc>Azwei\<C-G>u\<C-U>\<Esc>\<CR>" 87 88 inoremap <c-u> <left><c-u> 89 exe "normal A vim7\<*C-U>\<*C-U>\<Esc>\<CR>" 90 91 call assert_equal([ 92 \ "1 this shouldn't be deleted", 93 \ "2 this shouldn't be deleted", 94 \ "3 this shouldn't be deleted", 95 \ "4 this should be deleted3", 96 \ "", 97 \ "6 this shouldn't be deleted vim5", 98 \ "7 this shouldn't be deleted vim6", 99 \ "8 this shouldn't be deleted (not touched yet) vim7", 100 \ ""], getline(1, '$')) 101 102 " Reset values 103 set compatible&vim 104 set visualbell&vim 105 set backspace&vim 106 107 " Test new nostop option 108 %d_ 109 let expected = "foo bar foobar" 110 call setline(1, expected) 111 call cursor(1, 8) 112 exe ":norm! ianotherone\<c-u>" 113 call assert_equal(expected, getline(1)) 114 call cursor(1, 8) 115 exe ":norm! ianothertwo\<c-w>" 116 call assert_equal(expected, getline(1)) 117 118 let content = getline(1) 119 for value in ['indent,nostop', 'eol,nostop', 'indent,eol,nostop', 'indent,eol,start,nostop'] 120 exe ":set bs=".. value 121 %d _ 122 call setline(1, content) 123 let expected = " foobar" 124 call cursor(1, 8) 125 exe ":norm! ianotherone\<c-u>" 126 call assert_equal(expected, getline(1), 'CTRL-U backspace value: '.. &bs) 127 let expected = "foo foobar" 128 call setline(1, content) 129 call cursor(1, 8) 130 exe ":norm! ianothertwo\<c-w>" 131 call assert_equal(expected, getline(1), 'CTRL-W backspace value: '.. &bs) 132 endfor 133 134 " Reset options 135 set compatible&vim 136 set visualbell&vim 137 set backspace&vim 138 close! 139endfunc 140 141" vim: shiftwidth=2 sts=2 expandtab 142