@@ -172,20 +172,23 @@ function! dispatch#prepare_start(request, ...) abort
172172 let pause = " (printf '\e [1m--- Press ENTER to continue ---\e [0m\\ n'; exec head -1)"
173173 if wait == ' always'
174174 let exec .= ' ; ' . pause
175- elseif wait !=# ' never'
175+ elseif wait !=# ' never' && wait !=# ' make '
176176 let exec .= " ; test " .status." = 0 -o " .status." = 130 || " . pause
177177 endif
178+ if wait !=# ' make'
179+ let exec .= ' ; touch ' .a: request .file . ' .complete'
180+ endif
178181 let callback = dispatch#callback (a: request )
179- let after = ' rm -f ' . a: request .file . ' .pid' .
182+ return exec .
183+ \ ' ; rm -f ' . a: request .file . ' .pid' .
180184 \ (empty (callback) ? ' ' : ' ; ' . callback)
181- return exec . ' ; ' . after
182185endfunction
183186
184187function ! dispatch#prepare_make (request, ... ) abort
185188 let exec = a: 0 ? a: 1 : (' (' . a: request .expanded . ' ; echo ' .
186189 \ dispatch#status_var () . ' > ' . a: request .file . ' .complete)' .
187190 \ dispatch#shellpipe (a: request .file ))
188- return dispatch#prepare_start (a: request , exec , ' never ' )
191+ return dispatch#prepare_start (a: request , exec , ' make ' )
189192endfunction
190193
191194function ! dispatch#set_title (request) abort
@@ -761,6 +764,9 @@ endfunction
761764
762765function ! dispatch#pid (request) abort
763766 let request = s: request (a: request )
767+ if dispatch#completed (request)
768+ return 0
769+ endif
764770 let file = request.file
765771 if ! has_key (request, ' pid' )
766772 if has (' win32' ) && ! executable (' wmic' )
@@ -779,12 +785,16 @@ function! dispatch#pid(request) abort
779785 let request.pid = 0
780786 endtry
781787 endif
782- if request.pid && getfsize (file .' .pid' ) > 0
788+ let complete = filereadable (file .' .complete' )
789+ if ! complete && request.pid && getfsize (file .' .pid' ) > 0
783790 if s: running (request.handler, request.pid)
784791 return request.pid
785792 else
786793 let request.pid = 0
787794 call delete (file .' .pid' )
795+ if ! complete
796+ call writefile ([], file .' .complete' )
797+ endif
788798 endif
789799 endif
790800endfunction
@@ -801,6 +811,7 @@ function! dispatch#complete(file) abort
801811 let status = readfile (request.file . ' .complete' , 1 )[0 ]
802812 catch
803813 let status = -1
814+ call writefile ([-1 ], request.file . ' .complete' )
804815 endtry
805816 if status > 0
806817 let label = ' Failure:'
0 commit comments