" Tests for 'backspace' settings func Test_backspace_option() set backspace= call assert_equal('', &backspace) set backspace=indent call assert_equal('indent', &backspace) set backspace=eol call assert_equal('eol', &backspace) set backspace=start call assert_equal('start', &backspace) set backspace=nostop call assert_equal('nostop', &backspace) " Add the value set backspace= set backspace=indent call assert_equal('indent', &backspace) set backspace+=eol call assert_equal('indent,eol', &backspace) set backspace+=start call assert_equal('indent,eol,start', &backspace) set backspace+=nostop call assert_equal('indent,eol,start,nostop', &backspace) " Delete the value set backspace-=nostop call assert_equal('indent,eol,start', &backspace) set backspace-=indent call assert_equal('eol,start', &backspace) set backspace-=start call assert_equal('eol', &backspace) set backspace-=eol call assert_equal('', &backspace) " Check the error call assert_fails('set backspace=ABC', 'E474:') call assert_fails('set backspace+=def', 'E474:') " NOTE: Vim doesn't check following error... "call assert_fails('set backspace-=ghi', 'E474:') " " Check backwards compatibility with version 5.4 and earlier " set backspace=0 " call assert_equal('0', &backspace) " set backspace=1 " call assert_equal('1', &backspace) " set backspace=2 " call assert_equal('2', &backspace) " set backspace=3 " call assert_equal('3', &backspace) call assert_fails('set backspace=4', 'E474:') call assert_fails('set backspace=10', 'E474:') " Cleared when 'compatible' is set " set compatible " call assert_equal('', &backspace) set nocompatible viminfo+=nviminfo endfunc " Test with backspace set to the non-compatible setting func Test_backspace_ctrl_u() new call append(0, [ \ "1 this shouldn't be deleted", \ "2 this shouldn't be deleted", \ "3 this shouldn't be deleted", \ "4 this should be deleted", \ "5 this shouldn't be deleted", \ "6 this shouldn't be deleted", \ "7 this shouldn't be deleted", \ "8 this shouldn't be deleted (not touched yet)"]) call cursor(2, 1) " set compatible set backspace=2 exe "normal Avim1\\\" exe "normal Avim2\u\\\" set cpo-=< inoremap exe "normal Avim3\<*C-U>\\" iunmap exe "normal Avim4\\\\" " Test with backspace set to the compatible setting set backspace= visualbell exe "normal A vim5\A\\\\" exe "normal A vim6\Azwei\u\\\" inoremap exe "normal A vim7\<*C-U>\<*C-U>\\" call assert_equal([ \ "1 this shouldn't be deleted", \ "2 this shouldn't be deleted", \ "3 this shouldn't be deleted", \ "4 this should be deleted3", \ "", \ "6 this shouldn't be deleted vim5", \ "7 this shouldn't be deleted vim6", \ "8 this shouldn't be deleted (not touched yet) vim7", \ ""], getline(1, '$')) " Reset values set compatible&vim set visualbell&vim set backspace&vim " Test new nostop option %d_ let expected = "foo bar foobar" call setline(1, expected) call cursor(1, 8) exe ":norm! ianotherone\" call assert_equal(expected, getline(1)) call cursor(1, 8) exe ":norm! ianothertwo\" call assert_equal(expected, getline(1)) let content = getline(1) for value in ['indent,nostop', 'eol,nostop', 'indent,eol,nostop', 'indent,eol,start,nostop'] exe ":set bs=".. value %d _ call setline(1, content) let expected = " foobar" call cursor(1, 8) exe ":norm! ianotherone\" call assert_equal(expected, getline(1), 'CTRL-U backspace value: '.. &bs) let expected = "foo foobar" call setline(1, content) call cursor(1, 8) exe ":norm! ianothertwo\" call assert_equal(expected, getline(1), 'CTRL-W backspace value: '.. &bs) endfor " Reset options set compatible&vim set visualbell&vim set backspace&vim close! endfunc " vim: shiftwidth=2 sts=2 expandtab