@@ -735,6 +735,15 @@ function! s:request(request) abort
735735 return a: request
736736 elseif type (a: request ) == type (0 ) && a: request >= 0
737737 return get (s: makes , a: request- 1 , {})
738+ elseif type (a: request ) == type (' ' ) && a: request = ~# ' ^\w\+/\d\+$'
739+ let i = len (s: makes )
740+ while i
741+ let i -= 1
742+ if s: handler_id (s: makes [i ]) == # a: request
743+ return s: makes [i ]
744+ endif
745+ endwhile
746+ return {}
738747 elseif type (a: request ) == type (' ' ) && ! empty (a: request )
739748 return get (s: files , a: request , {})
740749 else
@@ -850,6 +859,9 @@ function! s:cgetfile(request, all, copen) abort
850859 let &l: makeprg = request.command
851860 silent doautocmd QuickFixCmdPre cgetfile
852861 execute ' noautocmd cgetfile' fnameescape (request.file )
862+ if exists (' :chistory' )
863+ call setqflist ([], ' r' , {' title' : ' :Dispatch ' .escape (request.expanded, ' %#' ) . ' ' . s: postfix (request)})
864+ endif
853865 silent doautocmd QuickFixCmdPost cgetfile
854866 catch ' ^E40:'
855867 return v: exception
@@ -869,14 +881,15 @@ function! s:cgetfile(request, all, copen) abort
869881endfunction
870882
871883function ! dispatch#quickfix_init () abort
872- let request = s: request (matchstr (w: quickfix_title , ' ^:noautocmd cgetfile \zs.*' ))
884+ let id = matchstr (w: quickfix_title , ' ^:noautocmd cgetfile \zs.*\|^:Dispatch.*(\zs\w\+/\d\+\ze)$' )
885+ let request = s: request (id)
873886 if empty (request)
874887 return
875888 endif
876- let w: quickfix_title = ' :Dispatch ' . escape (request.expanded, ' %#! ' ) .
889+ let w: quickfix_title = ' :Dispatch ' . escape (request.expanded, ' %#' ) .
877890 \ ' ' . s: postfix (request)
878891 let b: dispatch = dispatch#dir_opt (request.directory ) .
879- \ escape (request.expanded, ' %#! ' )
892+ \ escape (request.expanded, ' %#' )
880893 if has_key (request, ' compiler' )
881894 let b: dispatch = ' -compiler=' . request.compiler . ' ' . b: dispatch
882895 endif
0 commit comments