├── .gitignore
├── README.md
├── after
└── ftplugin
│ └── qf.vim
├── autoload
└── qfpreview.vim
└── doc
└── qfpreview.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | Session.vim
2 | /doc/tags
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vim-qf-preview
2 |
3 | A plugin for the quickfix and location list window to quickly preview the file
4 | under the cursor at the current quickfix location in a popup window.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | ## Usage
16 |
17 | ### Quickfix window mapping
18 |
19 | To avoid conflicts with other plugins no default key mapping for opening the
20 | popup window is provided. You will first have to bind `(qf-preview-open)`
21 | to a key-sequence of your choice.
22 |
23 | For example, to open the popup window with p, add the following to
24 | `~/.vim/after/ftplugin/qf.vim`:
25 | ```vim
26 | nmap p (qf-preview-open)
27 | ```
28 |
29 | Or alternatively, if you prefer to keep your plugin settings in your `vimrc`:
30 | ```vim
31 | augroup qfpreview
32 | autocmd!
33 | autocmd FileType qf nmap p (qf-preview-open)
34 | augroup END
35 | ```
36 |
37 | In the quickfix window navigate the cursor to the desired error and press
38 | p to preview the file at the current quickfix location in a popup
39 | window. The window is scrolled such that the buffer line with the error is at
40 | the top of the popup window.
41 |
42 | ### Popup window mappings
43 |
44 | The following default popup mappings are provided:
45 |
46 | - Scroll up/down one text line: Ctrl-k, Ctrl-j
47 | - Scroll to first/last line of displayed buffer: Shift-Home,
48 | Shift-End
49 | - Scroll back to error line ("reset"): r
50 | - Close the popup window: q, Ctrl-c
51 |
52 |
53 | ## Configuration
54 |
55 | ### b:qfpreview and g:qfpreview
56 |
57 | The default popup key mappings and the appearance of the popup window can be
58 | configured through the variable `b:qfpreview` in `after/ftplugin/qf.vim`, or
59 | alternatively through the global variable `g:qfpreview`. The variable must be a
60 | dictionary containing any of the following entries:
61 |
62 | | Entry | Description | Default |
63 | | -------------- | ---------------------------------------------------------- | ----------------------- |
64 | | `top` | Scroll to the first line of the buffer. | `"\"` |
65 | | `bottom` | Scroll to the bottom of the buffer. | `"\"` |
66 | | `scrollup` | Scroll window up one text line. | `"\"` |
67 | | `scrolldown` | Scroll window down one text line. | `"\"` |
68 | | `halfpageup` | Scroll window up one half page. | none |
69 | | `halfpagedown` | Scroll window down one half page. | none |
70 | | `fullpageup` | Scroll window up one full page. | none |
71 | | `fullpagedown` | Scroll window down one full page. | none |
72 | | `reset` | Scroll window back to error line. | `"r"` |
73 | | `close` | Close the popup window. | `"q"` |
74 | | `next` | Navigate to next quickfix item in current list. | none |
75 | | `previous` | Navigate to previous quickfix item in current list. | none |
76 | | `height` | Number of text lines to display in the popup window. | `15` |
77 | | `offset` | Number of buffer lines to show above the error line. | `3` |
78 | | `number` | Enable the `'number'` column in the popup window. | `false` |
79 | | `sign` | Place a `sign` on the error line in the displayed buffer.¹ | `{linehl: 'CursorLine'}`|
80 | | `matchcolumn` | Highlight column of current quickfix item in popup window. | `true` |
81 |
82 | ¹For valid `sign` attributes see :help qfpreview.sign and the
83 | [examples](#examples) below.
84 |
85 | ### Highlighting
86 |
87 | The highlighting of the popup window can be configured through the highlighting
88 | groups `QfPreview`, `QfPreviewTitle`, `QfPreviewScrollbar`, `QfPreviewThumb` and
89 | `QfPreviewColumn`. See :help qfpreview-highlight for more details.
90 |
91 | ### Examples
92 |
93 | 1. Override the popup scrolling keys:
94 | ```vim
95 | vim9script
96 | g:qfpreview = {
97 | top: 'g',
98 | bottom: 'G',
99 | scrollup: 'k',
100 | scrolldown: 'j',
101 | halfpageup: 'u',
102 | halfpagedown: 'd',
103 | fullpageup: 'b',
104 | fullpagedown: 'f',
105 | next: 'n',
106 | previous: 'p'
107 | }
108 | ```
109 | 2. Instead of displaying a cursorline, display a sign in the `'signcolumn'`:
110 | ```vim
111 | g:qfpreview = {
112 | sign: {
113 | text: '>>',
114 | texthl: 'Search'
115 | }
116 | }
117 | ```
118 | 3. Same as 2., but also enable the `'number'` column. In this case the placed
119 | sign is shown in the `'number'` column:
120 | ```vim
121 | g:qfpreview = {
122 | number: true,
123 | sign: {
124 | text: '>>',
125 | texthl: 'Search'
126 | }
127 | }
128 | ```
129 |
130 | Screenshots of default configuration, 2. and 3.:
131 | 
132 |
133 |
134 | ## Installation
135 |
136 | Run the following commands in your terminal:
137 | ```bash
138 | $ cd ~/.vim/pack/git-plugins/start
139 | $ git clone https://github.com/bfrg/vim-qf-preview
140 | $ vim -u NONE -c 'helptags vim-qf-preview/doc | quit'
141 | ```
142 | **Note:** The directory name `git-plugins` is arbitrary, you can pick any other
143 | name. For more details see :help packages. Alternatively, use your
144 | favorite plugin manager.
145 |
146 |
147 | ## License
148 |
149 | Distributed under the same terms as Vim itself. See :help license.
150 |
--------------------------------------------------------------------------------
/after/ftplugin/qf.vim:
--------------------------------------------------------------------------------
1 | vim9script
2 | # ==============================================================================
3 | # Preview file with quickfix error in a popup window
4 | # File: after/ftplugin/qf.vim
5 | # Author: bfrg
6 | # Website: https://github.com/bfrg/vim-qf-preview
7 | # Last Change: Nov 25, 2022
8 | # License: Same as Vim itself (see :h license)
9 | # ==============================================================================
10 |
11 | # Stop here if user doesn't want ftplugin mappings
12 | if get(g:, 'no_plugin_maps')
13 | finish
14 | endif
15 |
16 | import autoload '../../autoload/qfpreview.vim'
17 |
18 | nnoremap (qf-preview-open) qfpreview.Open(line('.') - 1)
19 |
20 | b:undo_ftplugin = get(b:, 'undo_ftplugin', 'execute') .. '| execute "nunmap (qf-preview-open)"'
21 |
--------------------------------------------------------------------------------
/autoload/qfpreview.vim:
--------------------------------------------------------------------------------
1 | vim9script
2 | # ==============================================================================
3 | # Preview file with quickfix error in a popup window
4 | # File: autoload/qfpreview.vim
5 | # Author: bfrg
6 | # Website: https://github.com/bfrg/vim-qf-preview
7 | # Last Change: Nov 23, 2022
8 | # License: Same as Vim itself (see :h license)
9 | # ==============================================================================
10 |
11 | scriptencoding utf-8
12 |
13 | hlset([
14 | {name: 'QfPreview', linksto: 'Pmenu', default: true},
15 | {name: 'QfPreviewTitle', linksto: 'Pmenu', default: true},
16 | {name: 'QfPreviewScrollbar', linksto: 'PmenuSbar', default: true},
17 | {name: 'QfPreviewThumb', linksto: 'PmenuThumb', default: true},
18 | {name: 'QfPreviewColumn', linksto: 'QuickFixLine', default: true},
19 | ])
20 |
21 | const defaults: dict = {
22 | height: 15,
23 | number: false,
24 | offset: 3,
25 | sign: {linehl: 'CursorLine'},
26 | matchcolumn: true,
27 | scrollup: "\",
28 | scrolldown: "\",
29 | halfpageup: '',
30 | halfpagedown: '',
31 | fullpageup: '',
32 | fullpagedown: '',
33 | top: "\",
34 | bottom: "\",
35 | reset: 'r',
36 | close: 'q',
37 | next: '',
38 | previous: ''
39 | }
40 |
41 | def Getopt(key: string): any
42 | return get(b:, 'qfpreview', get(g:, 'qfpreview', {}))->get(key, defaults[key])
43 | enddef
44 |
45 | # Window ID of preview popup window
46 | var popup_id: number = 0
47 |
48 | # Cache the quickfix list while popup is open and cycling through item
49 | var qf_list: list> = []
50 |
51 | def Error(msg: string)
52 | echohl ErrorMsg | echomsg msg | echohl None
53 | enddef
54 |
55 | def Display2byte(str: string, virtcol: number): number
56 | const ts_old: number = &tabstop
57 | &tabstop = 8
58 | var col: number
59 | try
60 | col = match(str, $'\%{virtcol}v') + 1
61 | finally
62 | &tabstop = ts_old
63 | endtry
64 | return col
65 | enddef
66 |
67 | def Cycle(winid: number, step: number)
68 | var cur_pos: list = getpos('.')
69 | var new_lnum: number = line('.') + step > line('$')
70 | ? line('$')
71 | : line('.') + step < 1 ? 1 : line('.') + step
72 |
73 | while (!qf_list[new_lnum - 1].valid || qf_list[new_lnum - 1].bufnr < 1)
74 | && new_lnum > 0
75 | && new_lnum < line('$')
76 | new_lnum += step
77 | endwhile
78 |
79 | if new_lnum == cur_pos[1] || !qf_list[new_lnum - 1].valid || qf_list[new_lnum - 1].bufnr < 1
80 | return
81 | endif
82 |
83 | popup_close(winid)
84 | cur_pos[1] = new_lnum
85 | setpos('.', cur_pos)
86 | Open(line('.') - 1)
87 | enddef
88 |
89 | def Popup_filter(line: number, winid: number, key: string): bool
90 | if !empty(Getopt('close')) && key == Getopt('close')
91 | popup_close(winid)
92 | elseif !empty(Getopt('top')) && key == Getopt('top')
93 | win_execute(winid, 'normal! gg')
94 | elseif !empty(Getopt('bottom')) && key == Getopt('bottom')
95 | win_execute(winid, 'normal! G')
96 | elseif !empty(Getopt('scrollup')) && key == Getopt('scrollup')
97 | win_execute(winid, "normal! \")
98 | elseif !empty(Getopt('scrolldown')) && key == Getopt('scrolldown')
99 | win_execute(winid, "normal! \")
100 | elseif !empty(Getopt('halfpageup')) && key == Getopt('halfpageup')
101 | win_execute(winid, "normal! \")
102 | elseif !empty(Getopt('halfpagedown')) && key == Getopt('halfpagedown')
103 | win_execute(winid, "normal! \")
104 | elseif !empty(Getopt('fullpageup')) && key == Getopt('fullpageup')
105 | win_execute(winid, "normal! \")
106 | elseif !empty(Getopt('fullpagedown')) && key == Getopt('fullpagedown')
107 | win_execute(winid, "normal! \")
108 | elseif !empty(Getopt('reset')) && key == Getopt('reset')
109 | popup_setoptions(winid, {firstline: line})
110 | popup_setoptions(winid, {firstline: 0})
111 | elseif !empty(Getopt('next')) && key == Getopt('next')
112 | Cycle(winid, 1)
113 | elseif !empty(Getopt('previous')) && key == Getopt('previous')
114 | Cycle(winid, -1)
115 | else
116 | return false
117 | endif
118 | return true
119 | enddef
120 |
121 | def Popup_cb(winid: number, result: number)
122 | qf_list = []
123 | sign_unplace('PopUpQfPreview')
124 | if !empty(sign_getdefined('QfErrorLine'))
125 | sign_undefine('QfErrorLine')
126 | endif
127 | enddef
128 |
129 | export def Open(idx: number): number
130 | const wininfo: dict = win_getid()->getwininfo()[0]
131 |
132 | if empty(qf_list)
133 | qf_list = wininfo.loclist ? getloclist(0) : getqflist()
134 | if empty(qf_list)
135 | return 0
136 | endif
137 | endif
138 |
139 | const qf_item: dict = qf_list[idx]
140 | if !qf_item.valid || qf_item.bufnr < 1 || !bufexists(qf_item.bufnr)
141 | qf_list = []
142 | return 0
143 | endif
144 |
145 | const space_above: number = wininfo.winrow - 1
146 | const space_below: number = &lines - (wininfo.winrow + wininfo.height - 1) - &cmdheight
147 | const firstline: number = qf_item.lnum - Getopt('offset') < 1 ? 1 : qf_item.lnum - Getopt('offset')
148 | var height: number = Getopt('height')
149 | var title: string = $'{qf_item.bufnr->bufname()->fnamemodify(':~:.')} ({idx + 1}/{len(qf_list)})'
150 | var line: number
151 | var pos: string
152 |
153 | # Truncate long titles at beginning
154 | if strwidth(title) > wininfo.width
155 | title = '…' .. title[-(wininfo.width - 4) :]
156 | endif
157 |
158 | if space_above > height
159 | if space_above == height + 1
160 | height -= 1
161 | endif
162 | line = wininfo.winrow - 1
163 | pos = 'botleft'
164 | elseif space_below >= height
165 | line = wininfo.winrow + wininfo.height
166 | pos = 'topleft'
167 | elseif space_above > 5
168 | height = space_above - 2
169 | line = wininfo.winrow - 1
170 | pos = 'botleft'
171 | elseif space_below > 5
172 | height = space_below - 2
173 | line = wininfo.winrow + wininfo.height
174 | pos = 'topleft'
175 | elseif space_above <= 5 || space_below <= 5
176 | line = &lines - &cmdheight
177 | pos = 'botleft'
178 | else
179 | Error('Not enough space to display preview popup')
180 | return 0
181 | endif
182 |
183 | popup_close(popup_id)
184 | silent popup_id = popup_create(qf_item.bufnr, {
185 | pos: pos,
186 | line: line,
187 | col: wininfo.wincol,
188 | minheight: height,
189 | maxheight: height,
190 | minwidth: wininfo.width - 2,
191 | maxwidth: wininfo.width - 2,
192 | firstline: firstline,
193 | title: title,
194 | close: 'button',
195 | hidden: true,
196 | padding: [0, 1, 1, 1],
197 | border: [1, 0, 0, 0],
198 | borderchars: [' '],
199 | moved: 'any',
200 | mapping: false,
201 | filter: (winid: number, key: string): bool => Popup_filter(firstline, winid, key),
202 | filtermode: 'n',
203 | highlight: 'QfPreview',
204 | borderhighlight: ['QfPreviewTitle'],
205 | scrollbarhighlight: 'QfPreviewScrollbar',
206 | thumbhighlight: 'QfPreviewThumb',
207 | callback: Popup_cb
208 | })
209 |
210 | # Set firstline to zero to prevent jumps when calling win_execute() #4876
211 | popup_setoptions(popup_id, {firstline: 0})
212 | setwinvar(popup_id, '&number', Getopt('number'))
213 | setwinvar(popup_id, '&smoothscroll', true)
214 | setwinvar(popup_id, '&conceallevel', 2)
215 |
216 | if !empty(Getopt('sign')->get('text', ''))
217 | setwinvar(popup_id, '&signcolumn', 'number')
218 | endif
219 |
220 | if &g:breakindent
221 | setwinvar(popup_id, '&breakindent', true)
222 | endif
223 |
224 | if !empty(Getopt('sign')) && qf_item.lnum > 0
225 | sign_define('QfErrorLine', Getopt('sign'))
226 | sign_place(0, 'PopUpQfPreview', 'QfErrorLine', qf_item.bufnr, {lnum: qf_item.lnum})
227 | endif
228 |
229 | if popup_getpos(popup_id).scrollbar > 0
230 | popup_move(popup_id, {
231 | minwidth: wininfo.width - 3,
232 | maxwidth: wininfo.width - 3
233 | })
234 | endif
235 | popup_show(popup_id)
236 |
237 | if Getopt('matchcolumn') && qf_item.lnum > 0 && qf_item.col > 0
238 | var lines: list = getbufline(qf_item.bufnr, qf_item.lnum, qf_item.end_lnum > 0 ? qf_item.end_lnum : qf_item.lnum)
239 | var col: number = qf_item.col
240 | const max_col: number = strlen(lines[0])
241 | var end_col: number = qf_item.end_col
242 |
243 | if qf_item.vcol == 1
244 | col = Display2byte(lines[0], qf_item.col)
245 | if qf_item.end_col > 0
246 | end_col = Display2byte(lines[-1], qf_item.end_col)
247 | endif
248 | endif
249 |
250 | if col > max_col
251 | col = max_col
252 | endif
253 |
254 | if qf_item.end_col > 0
255 | const max_end_col: number = strlen(lines[-1]) + 1
256 | if end_col > max_end_col
257 | end_col = max_end_col
258 | endif
259 | lines[-1] = strpart(lines[-1], 0, end_col - 1)
260 | lines[0] = strpart(lines[0], col - 1)
261 | const charlen: number = lines->join("\n")->strcharlen()
262 | matchadd('QfPreviewColumn', $'\%{qf_item.lnum}l\%{col}c\_.\{{{charlen}}}', 1, -1, {window: popup_id})
263 | else
264 | matchaddpos('QfPreviewColumn', [[qf_item.lnum, col]], 1, -1, {window: popup_id})
265 | endif
266 | endif
267 |
268 | return popup_id
269 | enddef
270 |
--------------------------------------------------------------------------------
/doc/qfpreview.txt:
--------------------------------------------------------------------------------
1 | *qfpreview.txt* Preview the current quickfix item in a popup window.
2 |
3 | Author: bfrg
4 | Website: https://github.com/bfrg/vim-qf-preview
5 | License: Same terms as Vim itself (see |license|)
6 |
7 | ==============================================================================
8 | INTRODUCTION *vim-qf-preview* *qfpreview*
9 |
10 | vim-qf-preview is a |ftplugin| for the |quickfix-window| and |location-list-window|
11 | to quickly preview the location of the quickfix error under the cursor in a
12 | |popup-window|.
13 |
14 | The popup window is opened directly above the quickfix window, without
15 | rearranging the current window layout. Moving the cursor in any direction
16 | closes the popup window.
17 |
18 | ==============================================================================
19 | MAPPINGS *qfpreview-mappings*
20 |
21 | Quickfix window ~
22 |
23 | (qf-preview-open) *(qf-preview-open)*
24 | Preview the file under the cursor at the current quickfix location
25 | in a popup window. The window will be scrolled such that the
26 | buffer line with the error is at the top of the popup window.
27 |
28 | Note: To avoid conflicts with other plugins, the key mapping is
29 | not bound to any key-sequence by default. You will first have to
30 | bind (qf-preview-open) to a key of your choice.
31 |
32 | For example, to open the popup window with "p", add the following
33 | to |qf.vim|, for example, in ~/.vim/after/ftplugin/qf.vim: >
34 | nmap p (qf-preview-open)
35 | <
36 | Or alternatively, if you prefer keeping your plugin settings in
37 | your |vimrc|: >
38 | augroup qfpreview
39 | autocmd!
40 | autocmd FileType qf nmap p (qf-preview-open)
41 | augroup END
42 | <
43 | *qfpreview-popup-mappings*
44 | Popup window mappings ~
45 |
46 | The following default keys can be used while the popup window is open:
47 |
48 | CTRL-J Scroll popup window down one text line.
49 | CTRL-K Scroll popup window up one text line.
50 | SHIFT-HOME Scroll to first line of displayed buffer.
51 | SHIFT-END Scroll to bottom of displayed buffer.
52 | r Scroll back to error line ("reset").
53 | CTRL-C, q Close the popup window.
54 |
55 | All keys are configurable. See |qfpreview-config| below.
56 |
57 | ==============================================================================
58 | MOUSE EVENTS *qfpreview-mouse*
59 |
60 | While the mouse pointer is on the popup window, mouse scroll events will cause
61 | the text to scroll up or down as one would expect. Clicking on "X" in the top
62 | right corner will close the window.
63 |
64 | ==============================================================================
65 | CONFIGURATION *qfpreview-config*
66 |
67 | b:qfpreview *b:qfpreview*
68 | g:qfpreview *g:qfpreview*
69 |
70 | The default key mappings and the appearance of the popup window can be changed
71 | through the buffer variable b:qfpreview in |qf.vim|, or through global
72 | variabel g:qfpreview. The variable must be a |Dictionary| containing any of
73 | the following entries:
74 |
75 | *qfpreview.close*
76 | close Key to press for closing the popup window.
77 | Note: CTRL-C always closes the popup window.
78 | Default: q
79 | *qfpreview.scrolldown*
80 | scrolldown Key to press for scrolling the text down.
81 | Default: CTRL-J
82 | *qfpreview.scrollup*
83 | scrollup Key to press for scrolling the text up.
84 | Default: CTRL-K
85 | *qfpreview.halfpagedown*
86 | halfpagedown Key to press for scrolling the popup window one half page
87 | down.
88 | Default: none
89 | *qfpreview.halfpageup*
90 | halfpageup Key to press for scrolling the popup window one half page
91 | up.
92 | Default: none
93 | *qfpreview.fullpagedown*
94 | fullpagedown Key to press for scrolling the popup window one full page
95 | down.
96 | Default: none
97 | *qfpreview.fullpageup*
98 | fullpageup Key to press for scrolling the popup window one full page
99 | up.
100 | Default: none
101 | *qfpreview.top*
102 | top Key to press for scrolling the popup window to the top of
103 | the buffer.
104 | Default: SHIFT-HOME
105 | *qfpreview.bottom*
106 | bottom Key to press for scrolling the popup window to the bottom
107 | of the buffer.
108 | Default: SHIFT-END
109 | *qfpreview.reset*
110 | reset Key to press for scrolling the popup window back to the
111 | error line.
112 | Default: r
113 | *qfpreview.next*
114 | next Key to press for jumping to the next quickfix item in the
115 | current list. This is the same as if you closed the popup
116 | window, moved the cursor to the next valid quickfix entry
117 | and opened it again.
118 | Default: none
119 | *qfpreview.previous*
120 | previous Key to press for jumping to the previous quickfix item in
121 | the current list.
122 | Default: none
123 | *qfpreview.height*
124 | height Number of text lines to display in the popup window.
125 | Default: 15
126 | *qfpreview.offset*
127 | offset Number of buffer lines to show above the quickfix location
128 | in the popup window.
129 | Default: 3
130 | *qfpreview.number*
131 | number Enable 'number' in the popup window.
132 | Default: |false|
133 | *qfpreview.sign*
134 | sign Place a |sign| at the quickfix location in the displayed
135 | buffer. This entry must be a dictionary with sign
136 | attributes. See the {dict} argument in |sign_define()| for
137 | valid entries as well as the examples below.
138 | Default: `{linehl: 'CursorLine'}`
139 | *qfpreview.matchcolumn*
140 | matchcolumn Highlight the column of the current quickfix item in the
141 | popup window using the highlight group |QfPreviewColumn|.
142 | Default: |true|
143 |
144 | ==============================================================================
145 | EXAMPLES *qfpreview-examples*
146 |
147 | 1. Override the popup scrolling keys: >
148 | vim9script
149 | # Option 1: in your vimrc
150 | g:qfpreview = {
151 | scrolldown: 'j',
152 | scrollup: 'k',
153 | halfpagedown: 'd',
154 | halfpageup: 'u',
155 | fullpagedown: 'f',
156 | fullpageup: 'b',
157 | number: v:true,
158 | offset: 5,
159 | height: 20
160 | }
161 |
162 | # Option 2: in ~/.vim/after/ftplugin/qf.vim
163 | b:qfpreview = {
164 | scrolldown: "\",
165 | scrollup: "\",
166 | close: "\",
167 | height: 20
168 | }
169 | <
170 | 2. Instead of displaying a cursorline, display a sign in the 'signcolumn': >
171 | g:qfpreview = {sign: {text: '>>', texthl: 'Search'}}
172 | <
173 | 4. Same as 2., but also enable the 'number' column. The placed sign is
174 | displayed in the 'number' column: >
175 | g:qfpreview = {
176 | number: true,
177 | sign: {text: '>>', texthl: 'Search'}
178 | }
179 | <
180 | ==============================================================================
181 | HIGHLIGHTING *qfpreview-highlight*
182 |
183 | The following highlighting groups are used for the popup window:
184 | *hl-QfPreview*
185 | QfPreview Normal text in the popup window. This is the equivalent of
186 | the |hl-Normal| highlight group in regular windows.
187 | By default links to |hl-Pmenu|.
188 | *hl-QfPreviewTitle*
189 | QfPreviewTitle Title (top line) of the popup window.
190 | By default links to |hl-Pmenu|.
191 | *hl-QfPreviewScrollbar*
192 | QfPreviewScrollbar Highlight group name for the |popup-scrollbar|. The
193 | background color is what matters.
194 | By default links to |hl-PmenuSbar|.
195 | *hl-QfPreviewThumb*
196 | QfPreviewThumb Highlight group name for the |popup-scrollbar| thumb. The
197 | background color is what matters.
198 | By default links to |hl-PmenuThumb|.
199 | *hl-QfPreviewColumn*
200 | QfPreviewColumn Highlight group name for highlighting the column of the
201 | current quickfix item in the popup window.
202 | By default links to |hl-QuickFixLine|.
203 |
204 | vim:tw=78:et:ft=help:norl:
205 |
--------------------------------------------------------------------------------