# HG changeset patch # User Bram Moolenaar # Date 1372706725 -7200 # Node ID 14e7a115d54d2c095f31ccda2d04fbcf775dacde # Parent 8b6ce1e5dccc8782fedd5f10f270f203781928bc updated for version 7.3.1285 Problem: No tests for picking a window when selecting an entry in a location list. Not picking the right window sometimes. Solution: Add test 96. Set usable_win appropriately. (Lech Lorens) diff --git a/src/quickfix.c b/src/quickfix.c --- a/src/quickfix.c +++ b/src/quickfix.c @@ -1635,7 +1635,10 @@ qf_jump(qi, dir, errornr, forceit) FOR_ALL_WINDOWS(usable_win_ptr) if (usable_win_ptr->w_llist == ll_ref && usable_win_ptr->w_buffer->b_p_bt[0] != 'q') + { + usable_win = 1; break; + } } if (!usable_win) diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -33,7 +33,7 @@ SCRIPTS = test1.out test3.out test4.out test76.out test77.out test78.out test79.out test80.out \ test81.out test82.out test83.out test84.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out + test94.out test95.out test96.out .SUFFIXES: .in .out @@ -145,3 +145,4 @@ test92.out: test92.in test93.out: test93.in test94.out: test94.in test95.out: test95.in +test96.out: test96.in diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -32,7 +32,7 @@ SCRIPTS = test3.out test4.out test5.out test79.out test80.out test81.out test82.out test83.out \ test84.out test85.out test86.out test87.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out + test94.out test95.out test96.out SCRIPTS32 = test50.out test70.out diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -52,7 +52,7 @@ SCRIPTS = test3.out test4.out test5.out test79.out test80.out test81.out test82.out test83.out \ test84.out test85.out test86.out test87.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out + test94.out test95.out test96.out SCRIPTS32 = test50.out test70.out diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -33,7 +33,7 @@ SCRIPTS = test1.out test3.out test4.out test76.out test77.out test78.out test79.out test80.out \ test81.out test82.out test83.out test84.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out + test94.out test95.out test96.out .SUFFIXES: .in .out diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -4,7 +4,7 @@ # Authors: Zoltan Arpadffy, # Sandor Kopanyi, # -# Last change: 2013 May 18 +# Last change: 2013 Jul 01 # # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. # Edit the lines in the Configuration section below to select. @@ -78,7 +78,7 @@ SCRIPT = test1.out test2.out test3.out test77.out test78.out test79.out test80.out test81.out \ test82.out test83.out test84.out test88.out test89.out \ test90.out test91.out test92.out test93.out test94.out \ - test95.out + test95.out test96.out # Known problems: # Test 30: a problem around mac format - unknown reason diff --git a/src/testdir/Makefile b/src/testdir/Makefile --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -29,7 +29,7 @@ SCRIPTS = test1.out test2.out test3.out test79.out test80.out test81.out test82.out test83.out \ test84.out test85.out test86.out test87.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out + test94.out test95.out test96.out SCRIPTS_GUI = test16.out diff --git a/src/testdir/test96.in b/src/testdir/test96.in new file mode 100644 --- /dev/null +++ b/src/testdir/test96.in @@ -0,0 +1,139 @@ +This will test for problems in quickfix: +A. incorrectly copying location lists which caused the location list to show a + different name than the file that was actually being displayed. +B. not reusing the window for which the location list window is opened but + instead creating new windows. +C. make sure that the location list window is not reused instead of the window + it belongs to. + +Note: to debug a problem comment out the last ":b 1" in a test and testing will +stop at this point. + +STARTTEST +:so small.vim +: enew +: w! test.out +: b 1 +: " Set up the test environment: +: function! ReadTestProtocol(name) +: let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '') +: let word = substitute(base, '\v(.*)\..*', '\1', '') +: +: setl modifiable +: setl noreadonly +: setl noswapfile +: setl bufhidden=delete +: %del _ +: " For problem 2: +: " 'buftype' has to be set to reproduce the constant opening of new windows +: setl buftype=nofile +: +: call setline(1, word) +: +: setl nomodified +: setl nomodifiable +: setl readonly +: exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '') +: endfunction +: augroup testgroup +: au! +: autocmd BufReadCmd test://* call ReadTestProtocol(expand("")) +: augroup END +: let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ] +: +: let qflist = [] +: for word in words +: call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', }) +: " NOTE: problem 1: +: " intentionally not setting 'lnum' so that the quickfix entries are not +: " valid +: call setloclist(0, qflist, ' ') +: endfor +ENDTEST + +Test A: +STARTTEST +:lrewind +:enew +:lopen +:lnext +:lnext +:lnext +:lnext +:vert split +:wincmd L +:lopen +:wincmd p +:lnext +:"b 1 +:let fileName = expand("%") +:wincmd p +:let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '') +:wincmd n +:wincmd K +:b test.out +:call append(line('$'), "Test A:") +:call append(line('$'), " - file name displayed: " . fileName) +:call append(line('$'), " - quickfix claims that the file name displayed is: " . locationListFileName) +:w +:wincmd o +:b 1 +ENDTEST + +Test B: +STARTTEST +:lrewind +:lopen +:2 +:exe "normal \" +:wincmd p +:3 +:exe "normal \" +:wincmd p +:4 +:exe "normal \" +:let numberOfWindowsOpen = winnr('$') +:wincmd n +:wincmd K +:b test.out +:call append(line('$'), "Test B:") +:call append(line('$'), " - number of window open: " . numberOfWindowsOpen) +:w +:wincmd o +:b 1 +ENDTEST + +Test C: +STARTTEST +:lrewind +:lopen +:" Let's move the location list window to the top to check whether it (the first +:" window found) will be reused when we try to open new windows: +:wincmd K +:2 +:exe "normal \" +:wincmd p +:3 +:exe "normal \" +:wincmd p +:4 +:exe "normal \" +:1wincmd w +:let locationListWindowBufType = &buftype +:2wincmd w +:let bufferName = expand("%") +:wincmd n +:wincmd K +:b test.out +:call append(line('$'), "Test C:") +:call append(line('$'), " - 'buftype' of the location list window: " . locationListWindowBufType) +:call append(line('$'), " - buffer displayed in the 2nd window: " . bufferName) +:w +:wincmd o +:b 1 +ENDTEST + +STARTTEST +:qa +ENDTEST + diff --git a/src/testdir/test96.ok b/src/testdir/test96.ok new file mode 100644 --- /dev/null +++ b/src/testdir/test96.ok @@ -0,0 +1,9 @@ + +Test A: + - file name displayed: test://bar.txt + - quickfix claims that the file name displayed is: test://bar.txt +Test B: + - number of window open: 2 +Test C: + - 'buftype' of the location list window: quickfix + - buffer displayed in the 2nd window: test://quux.txt diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1285, +/**/ 1284, /**/ 1283,