Skip to content

Commit 9d65de8

Browse files
committed
Use doautocmd <nomodeline> when available
1 parent 09faff3 commit 9d65de8

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

autoload/dispatch.vim

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -492,15 +492,22 @@ function! dispatch#spawn_command(bang, command, count, mods, ...) abort
492492
return ''
493493
endfunction
494494

495+
function! s:doautocmd(event) abort
496+
if v:version >= 704 || (v:version == 703 && has('patch442'))
497+
return 'doautocmd <nomodeline> ' . a:event
498+
elseif &modelines == 0 || !&modeline
499+
return 'doautocmd ' . a:event
500+
else
501+
return 'try|set modelines=0|doautocmd ' . a:event . '|finally|set modelines=' . &modelines . '|endtry'
502+
endif
503+
endfunction
504+
495505
function! s:compiler_getcwd() abort
496-
let modelines = &modelines
497506
try
498-
let &modelines = 0
499-
silent doautocmd QuickFixCmdPre dispatch-make-complete
507+
exe s:doautocmd('QuickFixCmdPre dispatch-make-complete')
500508
return getcwd()
501509
finally
502-
silent doautocmd QuickFixCmdPost dispatch-make-complete
503-
let &modelines = modelines
510+
exe s:doautocmd('QuickFixCmdPost dispatch-make-complete')
504511
endtry
505512
endfunction
506513

@@ -805,14 +812,11 @@ function! dispatch#command_complete(A, L, P) abort
805812
endfunction
806813

807814
function! dispatch#make_complete(A, L, P) abort
808-
let modelines = &modelines
809815
try
810-
let &modelines = 0
811-
silent doautocmd QuickFixCmdPre dispatch-make-complete
816+
exe s:doautocmd('QuickFixCmdPre dispatch-make-complete')
812817
return s:compiler_complete(&errorformat, s:current_compiler(), a:A, a:L, a:P)
813818
finally
814-
silent doautocmd QuickFixCmdPost dispatch-make-complete
815-
let &modelines = modelines
819+
exe s:doautocmd('QuickFixCmdPost dispatch-make-complete')
816820
endtry
817821
endfunction
818822

@@ -922,16 +926,14 @@ function! dispatch#compile_command(bang, args, count, mods, ...) abort
922926
let efm = &l:efm
923927
let makeprg = &l:makeprg
924928
let compiler = get(b:, 'current_compiler', '')
925-
let modelines = &modelines
926929
let after = ''
927930
let cd = s:cd_command()
928931
try
929-
let &modelines = 0
930932
call s:set_current_compiler(get(request, 'compiler', ''))
931933
let v:lnum = a:count > 0 ? a:count : 0
932934
let &l:efm = request.format
933935
let &l:makeprg = request.command
934-
silent doautocmd QuickFixCmdPre dispatch-make
936+
exe s:doautocmd('QuickFixCmdPre dispatch-make')
935937
let request.directory = get(request, 'directory', getcwd())
936938
if request.directory !=# getcwd()
937939
let cwd = getcwd()
@@ -977,9 +979,8 @@ function! dispatch#compile_command(bang, args, count, mods, ...) abort
977979
redraw!
978980
endif
979981
finally
980-
silent doautocmd QuickFixCmdPost dispatch-make
982+
exe s:doautocmd('QuickFixCmdPost dispatch-make')
981983
let v:lnum = lnum
982-
let &modelines = modelines
983984
let &l:efm = efm
984985
let &l:makeprg = makeprg
985986
call s:set_current_compiler(compiler)
@@ -1317,9 +1318,7 @@ function! s:cgetfile(request, event, ...) abort
13171318
let compiler = get(b:, 'current_compiler', '')
13181319
let cd = s:cd_command()
13191320
let dir = getcwd()
1320-
let modelines = &modelines
13211321
try
1322-
let &modelines = 0
13231322
call s:set_current_compiler(get(request, 'compiler', ''))
13241323
exe cd dispatch#fnameescape(request.directory)
13251324
if a:0 && a:1
@@ -1330,7 +1329,7 @@ function! s:cgetfile(request, event, ...) abort
13301329
let &l:makeprg = dispatch#escape(request.expanded)
13311330
let title = ':Dispatch '.dispatch#escape(request.expanded) . ' ' . s:postfix(request)
13321331
if len(a:event)
1333-
exe 'silent doautocmd QuickFixCmdPre' a:event
1332+
exe s:doautocmd('QuickFixCmdPre ' . a:event)
13341333
endif
13351334
if exists(':chistory') && get(getqflist({'title': 1}), 'title', '') ==# title
13361335
call setqflist([], 'r')
@@ -1342,10 +1341,9 @@ function! s:cgetfile(request, event, ...) abort
13421341
call setqflist([], 'r', {'title': title})
13431342
endif
13441343
if len(a:event)
1345-
exe 'silent doautocmd QuickFixCmdPost' a:event
1344+
exe s:doautocmd('QuickFixCmdPost ' . a:event)
13461345
endif
13471346
finally
1348-
let &modelines = modelines
13491347
exe cd dispatch#fnameescape(dir)
13501348
let &l:efm = efm
13511349
let &l:makeprg = makeprg

plugin/dispatch.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ endif
9999

100100
augroup dispatch
101101
autocmd!
102+
autocmd QuickfixCmdPre,QuickfixCmdPost * "
102103
autocmd FileType qf
103104
\ if &buftype ==# 'quickfix' && empty(getloclist(winnr())) && get(w:, 'quickfix_title') =~# '^:noautocmd cgetfile\>\|^:\d*Dispatch\>' |
104105
\ call dispatch#quickfix_init() |

0 commit comments

Comments
 (0)