view src/testdir/test_changelist.vim @ 34780:54890be01c00 v9.1.0265

patch 9.1.0265: console dialog cannot save unnamed buffers Commit: https://github.com/vim/vim/commit/df46115fc839c8912ed60646e86a412e5180ba1d Author: glepnir <glephunter@gmail.com> Date: Thu Apr 4 22:23:29 2024 +0200 patch 9.1.0265: console dialog cannot save unnamed buffers Problem: console dialog cannot save unnamed buffers Solution: set bufname before save (glepnir). Define dialog_con_gui to test for GUI+Console dialog support, use it to skip the test when the GUI feature has been defined. Note: The dialog_changed() function will also try to call the browse_save_fname() function, when FEAT_BROWSE is defined (which is only defined in a GUI build of Vim). This will eventually lead to a call of do_browse(), which causes an error message if a GUI is not currently running (see the TODO: in do_browse()) and will then lead to a failure in Test_goto_buf_with_onfirm(). Therefore, we must disable the Test_goto_buf_with_onfirm(), when the dialog_con_gui feature is enabled (which basically means dialog feature for GUI and Console builds, in contrast to the dialog_con and dialog_gui feature). (Previously this wasn't a problem, because the test aborted in the YES case for the :confirm :b XgotoConf case and did therefore not run into the browse function call) closes: #14398 Signed-off-by: glepnir <glephunter@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 04 Apr 2024 23:45:02 +0200
parents f7a2de8a4ddc
children
line wrap: on
line source

" Tests for the changelist functionality

" When splitting a window the changelist position is wrong.
" Test the changelist position after splitting a window.
" Test for the bug fixed by 7.4.386
func Test_changelist()
  let save_ul = &ul
  enew!
  call append('$', ['1', '2'])
  exe "normal i\<C-G>u"
  exe "normal Gkylpa\<C-G>u"
  set ul=100
  exe "normal Gylpa\<C-G>u"
  set ul=100
  normal gg
  vsplit
  normal g;
  call assert_equal([3, 2], [line('.'), col('.')])
  normal g;
  call assert_equal([2, 2], [line('.'), col('.')])
  call assert_fails('normal g;', 'E662:')
  new
  call assert_fails('normal g;', 'E664:')
  %bwipe!
  let &ul = save_ul
endfunc

" Moving a split should not change its changelist index.
func Test_changelist_index_move_split()
  exe "norm! iabc\<C-G>u\ndef\<C-G>u\nghi"
  vsplit
  normal 99g;
  call assert_equal(0, getchangelist('%')[1])
  wincmd L
  call assert_equal(0, getchangelist('%')[1])
endfunc

" Tests for the getchangelist() function
func Test_changelist_index()
  edit Xgclfile1.txt
  exe "normal iabc\<C-G>u\ndef\<C-G>u\nghi"
  call assert_equal(3, getchangelist('%')[1])
  " Move one step back in the changelist.
  normal 2g;

  hide edit Xgclfile2.txt
  exe "normal iabcd\<C-G>u\ndefg\<C-G>u\nghij"
  call assert_equal(3, getchangelist('%')[1])
  " Move to the beginning of the changelist.
  normal 99g;

  " Check the changelist indices.
  call assert_equal(0, getchangelist('%')[1])
  call assert_equal(1, getchangelist('#')[1])

  bwipe!
  call delete('Xgclfile1.txt')
  call delete('Xgclfile2.txt')
endfunc

func Test_getchangelist()
  bwipe!
  enew
  call assert_equal([], 10->getchangelist())
  call assert_equal([[], 0], getchangelist())

  call writefile(['line1', 'line2', 'line3'], 'Xclistfile1.txt', 'D')
  call writefile(['line1', 'line2', 'line3'], 'Xclistfile2.txt', 'D')

  edit Xclistfile1.txt
  let buf_1 = bufnr()
  exe "normal 1Goline\<C-G>u1.1"
  exe "normal 3Goline\<C-G>u2.1"
  exe "normal 5Goline\<C-G>u3.1"
  normal g;
  call assert_equal([[
	      \ {'lnum' : 2, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 4, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2],
	      \ getchangelist('%'))

  hide edit Xclistfile2.txt
  let buf_2 = bufnr()
  exe "normal 1GOline\<C-G>u1.0"
  exe "normal 2Goline\<C-G>u2.0"
  call assert_equal([[
	      \ {'lnum' : 1, 'col' : 6, 'coladd' : 0},
	      \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2],
	      \ getchangelist('%'))
  hide enew

  call assert_equal([[
	      \ {'lnum' : 2, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 4, 'col' : 4, 'coladd' : 0},
	      \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2],
	      \ getchangelist(buf_1))
  call assert_equal([[
	      \ {'lnum' : 1, 'col' : 6, 'coladd' : 0},
	      \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2],
	      \ getchangelist(buf_2))

  bwipe!
endfunc

" vim: shiftwidth=2 sts=2 expandtab