@@ -194,24 +194,61 @@ function! codequery#query#do_query(word) abort
194
194
return
195
195
endif
196
196
197
- " TODO: Rewrite it when Vim8 is coming
198
- " ----------------------------------------------------------------
199
- let grepcmd = g: codequery_append_to_qf ? ' grepadd!' : ' grep!'
200
- let l: grepprg_bak = &l: grepprg
201
- let l: grepformat_bak = &grepformat
197
+ if v: version >= 800
198
+ echom ' Searching ... [' . a: word . ' ]'
199
+
200
+ let job_dict = {' is_append' : g: codequery_append_to_qf ? 1 : 0 ,
201
+ \' target_file': tempname (),
202
+ \' backup_ef': &errorformat ,
203
+ \' word' : a: word ,
204
+ \' callback': function (" codequery#query#do_query_callback" )}
205
+ let options = {' out_io' : ' file' ,
206
+ \' out_name': job_dict.target_file,
207
+ \' exit_cb': job_dict.callback}
208
+
209
+ let &errorformat = ' %f:%l%m'
210
+ let grepprg .= ' \| awk "{ sub(/.*\/\.\//,x) }1"'
211
+ let shell_cmd = substitute (grepprg , ' \\|' , ' |' , " g" )
212
+ let shell_cmd = substitute (shell_cmd, " ''" , " '" , " g" )
213
+
214
+ let s: query_job = job_start ([' /bin/sh' , ' -c' , shell_cmd], options )
215
+ let timer = timer_start (50 ,
216
+ \{ - > execute (" call job_status(s:query_job)" , " " )},
217
+ \{ ' repeat' : 200 })
218
+ else
219
+ let grepcmd = g: codequery_append_to_qf ? ' grepadd!' : ' grep!'
220
+ let l: grepprg_bak = &l: grepprg
221
+ let l: grepformat_bak = &grepformat
222
+ try
223
+ let &l: grepformat = grepformat
224
+ let &l: grepprg = grepprg . ' \| awk "{ sub(/.*\/\.\//,x) }1"'
225
+ silent execute grepcmd
226
+ redraw !
227
+ call s: show_result ()
228
+ finally
229
+ let &l: grepprg = l: grepprg_bak
230
+ let &grepformat = l: grepformat_bak
231
+ let g: codequery_last_query_word = a: word
232
+ let g: last_query_fuzzy = g: codequery_fuzzy
233
+ endtry
234
+ endif
235
+ endfunction
236
+
237
+
238
+ function ! codequery#query#do_query_callback (job, status) dict
202
239
try
203
- let &l: grepformat = grepformat
204
- let &l: grepprg = grepprg . ' \| awk "{ sub(/.*\/\.\//,x) }1"'
205
- silent execute grepcmd
206
- redraw !
240
+ if self .is_append
241
+ execute " caddfile " . self .target_file
242
+ else
243
+ execute " cgetfile " . self .target_file
244
+ endif
207
245
call s: show_result ()
208
246
finally
209
- let &l: grepprg = l: grepprg_bak
210
- let &grepformat = l: grepformat_bak
211
- let g: codequery_last_query_word = a: word
247
+ let g: codequery_last_query_word = self .word
212
248
let g: last_query_fuzzy = g: codequery_fuzzy
249
+ let &errorformat = self .backup_ef
250
+ call delete (self .target_file)
213
251
endtry
214
- " ----------------------------------------------------------------
215
252
endfunction
216
253
217
254
@@ -226,4 +263,3 @@ function! codequery#query#set_options(args) abort
226
263
let g: codequery_append_to_qf = 1
227
264
endif
228
265
endfunction
229
-
0 commit comments