mirror of
https://github.com/neovim/neovim.git
synced 2024-12-26 14:11:15 -07:00
142 lines
4.1 KiB
VimL
142 lines
4.1 KiB
VimL
" 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\<C-U>\<Esc>\<CR>"
|
|
exe "normal Avim2\<C-G>u\<C-U>\<Esc>\<CR>"
|
|
|
|
set cpo-=<
|
|
inoremap <c-u> <left><c-u>
|
|
exe "normal Avim3\<*C-U>\<Esc>\<CR>"
|
|
iunmap <c-u>
|
|
exe "normal Avim4\<C-U>\<C-U>\<Esc>\<CR>"
|
|
|
|
" Test with backspace set to the compatible setting
|
|
set backspace= visualbell
|
|
exe "normal A vim5\<Esc>A\<C-U>\<C-U>\<Esc>\<CR>"
|
|
exe "normal A vim6\<Esc>Azwei\<C-G>u\<C-U>\<Esc>\<CR>"
|
|
|
|
inoremap <c-u> <left><c-u>
|
|
exe "normal A vim7\<*C-U>\<*C-U>\<Esc>\<CR>"
|
|
|
|
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\<c-u>"
|
|
call assert_equal(expected, getline(1))
|
|
call cursor(1, 8)
|
|
exe ":norm! ianothertwo\<c-w>"
|
|
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\<c-u>"
|
|
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\<c-w>"
|
|
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
|