Mercurial > vim
comparison src/testdir/test96.in @ 5084:14e7a115d54d v7.3.1285
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)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Mon, 01 Jul 2013 21:25:25 +0200 |
parents | |
children | 6cabac58f26f |
comparison
equal
deleted
inserted
replaced
5083:8b6ce1e5dccc | 5084:14e7a115d54d |
---|---|
1 This will test for problems in quickfix: | |
2 A. incorrectly copying location lists which caused the location list to show a | |
3 different name than the file that was actually being displayed. | |
4 B. not reusing the window for which the location list window is opened but | |
5 instead creating new windows. | |
6 C. make sure that the location list window is not reused instead of the window | |
7 it belongs to. | |
8 | |
9 Note: to debug a problem comment out the last ":b 1" in a test and testing will | |
10 stop at this point. | |
11 | |
12 STARTTEST | |
13 :so small.vim | |
14 : enew | |
15 : w! test.out | |
16 : b 1 | |
17 : " Set up the test environment: | |
18 : function! ReadTestProtocol(name) | |
19 : let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '') | |
20 : let word = substitute(base, '\v(.*)\..*', '\1', '') | |
21 : | |
22 : setl modifiable | |
23 : setl noreadonly | |
24 : setl noswapfile | |
25 : setl bufhidden=delete | |
26 : %del _ | |
27 : " For problem 2: | |
28 : " 'buftype' has to be set to reproduce the constant opening of new windows | |
29 : setl buftype=nofile | |
30 : | |
31 : call setline(1, word) | |
32 : | |
33 : setl nomodified | |
34 : setl nomodifiable | |
35 : setl readonly | |
36 : exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '') | |
37 : endfunction | |
38 : augroup testgroup | |
39 : au! | |
40 : autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>")) | |
41 : augroup END | |
42 : let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ] | |
43 : | |
44 : let qflist = [] | |
45 : for word in words | |
46 : call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', }) | |
47 : " NOTE: problem 1: | |
48 : " intentionally not setting 'lnum' so that the quickfix entries are not | |
49 : " valid | |
50 : call setloclist(0, qflist, ' ') | |
51 : endfor | |
52 ENDTEST | |
53 | |
54 Test A: | |
55 STARTTEST | |
56 :lrewind | |
57 :enew | |
58 :lopen | |
59 :lnext | |
60 :lnext | |
61 :lnext | |
62 :lnext | |
63 :vert split | |
64 :wincmd L | |
65 :lopen | |
66 :wincmd p | |
67 :lnext | |
68 :"b 1 | |
69 :let fileName = expand("%") | |
70 :wincmd p | |
71 :let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '') | |
72 :wincmd n | |
73 :wincmd K | |
74 :b test.out | |
75 :call append(line('$'), "Test A:") | |
76 :call append(line('$'), " - file name displayed: " . fileName) | |
77 :call append(line('$'), " - quickfix claims that the file name displayed is: " . locationListFileName) | |
78 :w | |
79 :wincmd o | |
80 :b 1 | |
81 ENDTEST | |
82 | |
83 Test B: | |
84 STARTTEST | |
85 :lrewind | |
86 :lopen | |
87 :2 | |
88 :exe "normal \<CR>" | |
89 :wincmd p | |
90 :3 | |
91 :exe "normal \<CR>" | |
92 :wincmd p | |
93 :4 | |
94 :exe "normal \<CR>" | |
95 :let numberOfWindowsOpen = winnr('$') | |
96 :wincmd n | |
97 :wincmd K | |
98 :b test.out | |
99 :call append(line('$'), "Test B:") | |
100 :call append(line('$'), " - number of window open: " . numberOfWindowsOpen) | |
101 :w | |
102 :wincmd o | |
103 :b 1 | |
104 ENDTEST | |
105 | |
106 Test C: | |
107 STARTTEST | |
108 :lrewind | |
109 :lopen | |
110 :" Let's move the location list window to the top to check whether it (the first | |
111 :" window found) will be reused when we try to open new windows: | |
112 :wincmd K | |
113 :2 | |
114 :exe "normal \<CR>" | |
115 :wincmd p | |
116 :3 | |
117 :exe "normal \<CR>" | |
118 :wincmd p | |
119 :4 | |
120 :exe "normal \<CR>" | |
121 :1wincmd w | |
122 :let locationListWindowBufType = &buftype | |
123 :2wincmd w | |
124 :let bufferName = expand("%") | |
125 :wincmd n | |
126 :wincmd K | |
127 :b test.out | |
128 :call append(line('$'), "Test C:") | |
129 :call append(line('$'), " - 'buftype' of the location list window: " . locationListWindowBufType) | |
130 :call append(line('$'), " - buffer displayed in the 2nd window: " . bufferName) | |
131 :w | |
132 :wincmd o | |
133 :b 1 | |
134 ENDTEST | |
135 | |
136 STARTTEST | |
137 :qa | |
138 ENDTEST | |
139 |