| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  | " 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) | 
					
						
							| 
									
										
										
										
											2020-04-17 19:41:21 +02:00
										 |  |  |   set backspace=nostop | 
					
						
							|  |  |  |   call assert_equal('nostop', &backspace) | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  |   " 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) | 
					
						
							| 
									
										
										
										
											2020-04-17 19:41:21 +02:00
										 |  |  |   set backspace+=nostop | 
					
						
							|  |  |  |   call assert_equal('indent,eol,start,nostop', &backspace) | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  |   " Delete the value | 
					
						
							| 
									
										
										
										
											2020-04-17 19:41:21 +02:00
										 |  |  |   set backspace-=nostop | 
					
						
							|  |  |  |   call assert_equal('indent,eol,start', &backspace) | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  |   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 | 
					
						
							| 
									
										
										
										
											2020-11-25 14:15:12 +01:00
										 |  |  |   call assert_fails('set backspace=ABC', 'E474:') | 
					
						
							|  |  |  |   call assert_fails('set backspace+=def', 'E474:') | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  |   " NOTE: Vim doesn't check following error... | 
					
						
							| 
									
										
										
										
											2020-11-25 14:15:12 +01:00
										 |  |  |   "call assert_fails('set backspace-=ghi', 'E474:') | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   " 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) | 
					
						
							| 
									
										
										
										
											2020-04-17 19:41:21 +02:00
										 |  |  |   set backspace=3 | 
					
						
							|  |  |  |   call assert_equal('3', &backspace) | 
					
						
							| 
									
										
										
										
											2020-11-25 14:15:12 +01:00
										 |  |  |   call assert_fails('set backspace=4', 'E474:') | 
					
						
							|  |  |  |   call assert_fails('set backspace=10', 'E474:') | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   " Cleared when 'compatible' is set | 
					
						
							|  |  |  |   set compatible | 
					
						
							|  |  |  |   call assert_equal('', &backspace) | 
					
						
							| 
									
										
										
										
											2016-03-30 20:50:46 +02:00
										 |  |  |   set nocompatible viminfo+=nviminfo | 
					
						
							| 
									
										
										
										
											2016-01-02 21:39:09 +01:00
										 |  |  | endfunc | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-14 17:57:19 +02:00
										 |  |  | " 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> | 
					
						
							| 
									
										
										
										
											2020-05-31 22:06:51 +02:00
										 |  |  |   exe "normal Avim3\<*C-U>\<Esc>\<CR>" | 
					
						
							| 
									
										
										
										
											2019-05-14 17:57:19 +02:00
										 |  |  |   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> | 
					
						
							| 
									
										
										
										
											2020-05-31 22:06:51 +02:00
										 |  |  |   exe "normal A vim7\<*C-U>\<*C-U>\<Esc>\<CR>" | 
					
						
							| 
									
										
										
										
											2019-05-14 17:57:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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, '$')) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-17 19:41:21 +02:00
										 |  |  |   " 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 | 
					
						
							| 
									
										
										
										
											2019-05-14 17:57:19 +02:00
										 |  |  |   set compatible&vim | 
					
						
							|  |  |  |   set visualbell&vim | 
					
						
							|  |  |  |   set backspace&vim | 
					
						
							|  |  |  |   close! | 
					
						
							|  |  |  | endfunc | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-18 23:04:48 +02:00
										 |  |  | " vim: shiftwidth=2 sts=2 expandtab |