diff src/testdir/test_quickfix.vim @ 11301:cc8ece2aa389 v8.0.0536

patch 8.0.0536: quickfix window not updated when freeing quickfix stack commit https://github.com/vim/vim/commit/69f40be64555d50f603c6f22722cf762aaa6bbc1 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 2 15:15:49 2017 +0200 patch 8.0.0536: quickfix window not updated when freeing quickfix stack Problem: Quickfix window not updated when freeing quickfix stack. Solution: Update the quickfix window. (Yegappan Lakshmanan)
author Christian Brabandt <cb@256bit.org>
date Sun, 02 Apr 2017 15:30:04 +0200
parents ae5f9f26f81c
children 2ed7a34ecc54
line wrap: on
line diff
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1912,3 +1912,66 @@ func Test_vimgrep()
   call XvimgrepTests('c')
   call XvimgrepTests('l')
 endfunc
+
+func XfreeTests(cchar)
+  call s:setup_commands(a:cchar)
+
+  enew | only
+
+  " Deleting the quickfix stack should work even When the current list is
+  " somewhere in the middle of the stack
+  Xexpr ['Xfile1:10:10:Line 10', 'Xfile1:15:15:Line 15']
+  Xexpr ['Xfile2:20:20:Line 20', 'Xfile2:25:25:Line 25']
+  Xexpr ['Xfile3:30:30:Line 30', 'Xfile3:35:35:Line 35']
+  Xolder
+  call g:Xsetlist([], 'f')
+  call assert_equal(0, len(g:Xgetlist()))
+
+  " After deleting the stack, adding a new list should create a stack with a
+  " single list.
+  Xexpr ['Xfile1:10:10:Line 10', 'Xfile1:15:15:Line 15']
+  call assert_equal(1, g:Xgetlist({'all':1}).nr)
+
+  " Deleting the stack from a quickfix window should update/clear the
+  " quickfix/location list window.
+  Xexpr ['Xfile1:10:10:Line 10', 'Xfile1:15:15:Line 15']
+  Xexpr ['Xfile2:20:20:Line 20', 'Xfile2:25:25:Line 25']
+  Xexpr ['Xfile3:30:30:Line 30', 'Xfile3:35:35:Line 35']
+  Xolder
+  Xwindow
+  call g:Xsetlist([], 'f')
+  call assert_equal(2, winnr('$'))
+  call assert_equal(1, line('$'))
+  Xclose
+
+  " Deleting the stack from a non-quickfix window should update/clear the
+  " quickfix/location list window.
+  Xexpr ['Xfile1:10:10:Line 10', 'Xfile1:15:15:Line 15']
+  Xexpr ['Xfile2:20:20:Line 20', 'Xfile2:25:25:Line 25']
+  Xexpr ['Xfile3:30:30:Line 30', 'Xfile3:35:35:Line 35']
+  Xolder
+  Xwindow
+  wincmd p
+  call g:Xsetlist([], 'f')
+  call assert_equal(0, len(g:Xgetlist()))
+  wincmd p
+  call assert_equal(2, winnr('$'))
+  call assert_equal(1, line('$'))
+
+  " After deleting the location list stack, if the location list window is
+  " opened, then a new location list should be created. So opening the
+  " location list window again should not create a new window.
+  if a:cchar == 'l'
+      lexpr ['Xfile1:10:10:Line 10', 'Xfile1:15:15:Line 15']
+      wincmd p
+      lopen
+      call assert_equal(2, winnr('$'))
+  endif
+  Xclose
+endfunc
+
+" Tests for the quickifx free functionality
+func Test_qf_free()
+  call XfreeTests('c')
+  call XfreeTests('l')
+endfunc