@@ -492,15 +492,22 @@ function! dispatch#spawn_command(bang, command, count, mods, ...) abort
492492 return ' '
493493endfunction
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+
495505function ! 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
505512endfunction
506513
@@ -805,14 +812,11 @@ function! dispatch#command_complete(A, L, P) abort
805812endfunction
806813
807814function ! 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
817821endfunction
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
0 commit comments