127a82e31SBram Moolenaar" Tests for 'backspace' settings 227a82e31SBram Moolenaar 327a82e31SBram Moolenaarfunc Test_backspace_option() 427a82e31SBram Moolenaar set backspace= 527a82e31SBram Moolenaar call assert_equal('', &backspace) 627a82e31SBram Moolenaar set backspace=indent 727a82e31SBram Moolenaar call assert_equal('indent', &backspace) 827a82e31SBram Moolenaar set backspace=eol 927a82e31SBram Moolenaar call assert_equal('eol', &backspace) 1027a82e31SBram Moolenaar set backspace=start 1127a82e31SBram Moolenaar call assert_equal('start', &backspace) 12aa0489e1SBram Moolenaar set backspace=nostop 13aa0489e1SBram Moolenaar call assert_equal('nostop', &backspace) 1427a82e31SBram Moolenaar " Add the value 1527a82e31SBram Moolenaar set backspace= 1627a82e31SBram Moolenaar set backspace=indent 1727a82e31SBram Moolenaar call assert_equal('indent', &backspace) 1827a82e31SBram Moolenaar set backspace+=eol 1927a82e31SBram Moolenaar call assert_equal('indent,eol', &backspace) 2027a82e31SBram Moolenaar set backspace+=start 2127a82e31SBram Moolenaar call assert_equal('indent,eol,start', &backspace) 22aa0489e1SBram Moolenaar set backspace+=nostop 23aa0489e1SBram Moolenaar call assert_equal('indent,eol,start,nostop', &backspace) 2427a82e31SBram Moolenaar " Delete the value 25aa0489e1SBram Moolenaar set backspace-=nostop 26aa0489e1SBram Moolenaar call assert_equal('indent,eol,start', &backspace) 2727a82e31SBram Moolenaar set backspace-=indent 2827a82e31SBram Moolenaar call assert_equal('eol,start', &backspace) 2927a82e31SBram Moolenaar set backspace-=start 3027a82e31SBram Moolenaar call assert_equal('eol', &backspace) 3127a82e31SBram Moolenaar set backspace-=eol 3227a82e31SBram Moolenaar call assert_equal('', &backspace) 3327a82e31SBram Moolenaar " Check the error 34*5dc4e2f8SBram Moolenaar call assert_fails('set backspace=ABC', 'E474:') 35*5dc4e2f8SBram Moolenaar call assert_fails('set backspace+=def', 'E474:') 3627a82e31SBram Moolenaar " NOTE: Vim doesn't check following error... 37*5dc4e2f8SBram Moolenaar "call assert_fails('set backspace-=ghi', 'E474:') 3827a82e31SBram Moolenaar 3927a82e31SBram Moolenaar " Check backwards compatibility with version 5.4 and earlier 4027a82e31SBram Moolenaar set backspace=0 4127a82e31SBram Moolenaar call assert_equal('0', &backspace) 4227a82e31SBram Moolenaar set backspace=1 4327a82e31SBram Moolenaar call assert_equal('1', &backspace) 4427a82e31SBram Moolenaar set backspace=2 4527a82e31SBram Moolenaar call assert_equal('2', &backspace) 46aa0489e1SBram Moolenaar set backspace=3 47aa0489e1SBram Moolenaar call assert_equal('3', &backspace) 48*5dc4e2f8SBram Moolenaar call assert_fails('set backspace=4', 'E474:') 49*5dc4e2f8SBram Moolenaar call assert_fails('set backspace=10', 'E474:') 5027a82e31SBram Moolenaar 5127a82e31SBram Moolenaar " Cleared when 'compatible' is set 5227a82e31SBram Moolenaar set compatible 5327a82e31SBram Moolenaar call assert_equal('', &backspace) 54e9c07270SBram Moolenaar set nocompatible viminfo+=nviminfo 5527a82e31SBram Moolenaarendfunc 5627a82e31SBram Moolenaar 57fb222df2SBram Moolenaar" Test with backspace set to the non-compatible setting 58fb222df2SBram Moolenaarfunc Test_backspace_ctrl_u() 59fb222df2SBram Moolenaar new 60fb222df2SBram Moolenaar call append(0, [ 61fb222df2SBram Moolenaar \ "1 this shouldn't be deleted", 62fb222df2SBram Moolenaar \ "2 this shouldn't be deleted", 63fb222df2SBram Moolenaar \ "3 this shouldn't be deleted", 64fb222df2SBram Moolenaar \ "4 this should be deleted", 65fb222df2SBram Moolenaar \ "5 this shouldn't be deleted", 66fb222df2SBram Moolenaar \ "6 this shouldn't be deleted", 67fb222df2SBram Moolenaar \ "7 this shouldn't be deleted", 68fb222df2SBram Moolenaar \ "8 this shouldn't be deleted (not touched yet)"]) 69fb222df2SBram Moolenaar call cursor(2, 1) 70fb222df2SBram Moolenaar 71fb222df2SBram Moolenaar set compatible 72fb222df2SBram Moolenaar set backspace=2 73fb222df2SBram Moolenaar 74fb222df2SBram Moolenaar exe "normal Avim1\<C-U>\<Esc>\<CR>" 75fb222df2SBram Moolenaar exe "normal Avim2\<C-G>u\<C-U>\<Esc>\<CR>" 76fb222df2SBram Moolenaar 77fb222df2SBram Moolenaar set cpo-=< 78fb222df2SBram Moolenaar inoremap <c-u> <left><c-u> 79fccd93f0SBram Moolenaar exe "normal Avim3\<*C-U>\<Esc>\<CR>" 80fb222df2SBram Moolenaar iunmap <c-u> 81fb222df2SBram Moolenaar exe "normal Avim4\<C-U>\<C-U>\<Esc>\<CR>" 82fb222df2SBram Moolenaar 83fb222df2SBram Moolenaar " Test with backspace set to the compatible setting 84fb222df2SBram Moolenaar set backspace= visualbell 85fb222df2SBram Moolenaar exe "normal A vim5\<Esc>A\<C-U>\<C-U>\<Esc>\<CR>" 86fb222df2SBram Moolenaar exe "normal A vim6\<Esc>Azwei\<C-G>u\<C-U>\<Esc>\<CR>" 87fb222df2SBram Moolenaar 88fb222df2SBram Moolenaar inoremap <c-u> <left><c-u> 89fccd93f0SBram Moolenaar exe "normal A vim7\<*C-U>\<*C-U>\<Esc>\<CR>" 90fb222df2SBram Moolenaar 91fb222df2SBram Moolenaar call assert_equal([ 92fb222df2SBram Moolenaar \ "1 this shouldn't be deleted", 93fb222df2SBram Moolenaar \ "2 this shouldn't be deleted", 94fb222df2SBram Moolenaar \ "3 this shouldn't be deleted", 95fb222df2SBram Moolenaar \ "4 this should be deleted3", 96fb222df2SBram Moolenaar \ "", 97fb222df2SBram Moolenaar \ "6 this shouldn't be deleted vim5", 98fb222df2SBram Moolenaar \ "7 this shouldn't be deleted vim6", 99fb222df2SBram Moolenaar \ "8 this shouldn't be deleted (not touched yet) vim7", 100fb222df2SBram Moolenaar \ ""], getline(1, '$')) 101fb222df2SBram Moolenaar 102aa0489e1SBram Moolenaar " Reset values 103aa0489e1SBram Moolenaar set compatible&vim 104aa0489e1SBram Moolenaar set visualbell&vim 105aa0489e1SBram Moolenaar set backspace&vim 106aa0489e1SBram Moolenaar 107aa0489e1SBram Moolenaar " Test new nostop option 108aa0489e1SBram Moolenaar %d_ 109aa0489e1SBram Moolenaar let expected = "foo bar foobar" 110aa0489e1SBram Moolenaar call setline(1, expected) 111aa0489e1SBram Moolenaar call cursor(1, 8) 112aa0489e1SBram Moolenaar exe ":norm! ianotherone\<c-u>" 113aa0489e1SBram Moolenaar call assert_equal(expected, getline(1)) 114aa0489e1SBram Moolenaar call cursor(1, 8) 115aa0489e1SBram Moolenaar exe ":norm! ianothertwo\<c-w>" 116aa0489e1SBram Moolenaar call assert_equal(expected, getline(1)) 117aa0489e1SBram Moolenaar 118aa0489e1SBram Moolenaar let content = getline(1) 119aa0489e1SBram Moolenaar for value in ['indent,nostop', 'eol,nostop', 'indent,eol,nostop', 'indent,eol,start,nostop'] 120aa0489e1SBram Moolenaar exe ":set bs=".. value 121aa0489e1SBram Moolenaar %d _ 122aa0489e1SBram Moolenaar call setline(1, content) 123aa0489e1SBram Moolenaar let expected = " foobar" 124aa0489e1SBram Moolenaar call cursor(1, 8) 125aa0489e1SBram Moolenaar exe ":norm! ianotherone\<c-u>" 126aa0489e1SBram Moolenaar call assert_equal(expected, getline(1), 'CTRL-U backspace value: '.. &bs) 127aa0489e1SBram Moolenaar let expected = "foo foobar" 128aa0489e1SBram Moolenaar call setline(1, content) 129aa0489e1SBram Moolenaar call cursor(1, 8) 130aa0489e1SBram Moolenaar exe ":norm! ianothertwo\<c-w>" 131aa0489e1SBram Moolenaar call assert_equal(expected, getline(1), 'CTRL-W backspace value: '.. &bs) 132aa0489e1SBram Moolenaar endfor 133aa0489e1SBram Moolenaar 134aa0489e1SBram Moolenaar " Reset options 135fb222df2SBram Moolenaar set compatible&vim 136fb222df2SBram Moolenaar set visualbell&vim 137fb222df2SBram Moolenaar set backspace&vim 138fb222df2SBram Moolenaar close! 139fb222df2SBram Moolenaarendfunc 140fb222df2SBram Moolenaar 1419e4d8215SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 142