Skip to content

Commit a833860

Browse files
committed
Repeat last task with :Dispatch -
1 parent db42bd0 commit a833860

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

autoload/dispatch.vim

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,6 @@ function! dispatch#compile_command(bang, args, count) abort
423423
let request = {
424424
\ 'action': 'make',
425425
\ 'background': a:bang,
426-
\ 'file': tempname(),
427426
\ 'format': '%+I%.%#'
428427
\ }
429428

@@ -458,25 +457,38 @@ function! dispatch#compile_command(bang, args, count) abort
458457
endif
459458
let request.title = get(request, 'compiler', 'make')
460459

460+
if a:args ==# '-' && !empty(s:makes)
461+
let request = copy(s:makes[-1])
462+
unlet! request.pid
463+
unlet! request.completed
464+
unlet! request.handler
465+
endif
466+
461467
if &autowrite || &autowriteall
462468
silent! wall
463469
endif
464470
cclose
471+
let request.file = tempname()
465472
let &errorfile = request.file
466473

467474
let efm = &l:efm
468475
let makeprg = &l:makeprg
469476
let compiler = get(b:, 'current_compiler', '')
470477
let modelines = &modelines
471478
let after = ''
479+
let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd'
472480
try
473481
let &modelines = 0
474482
call s:set_current_compiler(get(request, 'compiler', ''))
475483
let &l:efm = request.format
476484
let &l:makeprg = request.command
477485
silent doautocmd QuickFixCmdPre dispatch-make
478-
let request.directory = getcwd()
479-
let request.expanded = dispatch#expand(request.command)
486+
let request.directory = get(request, 'directory', getcwd())
487+
if request.directory !=# getcwd()
488+
let cwd = getcwd()
489+
execute cd fnameescape(request.directory)
490+
endif
491+
let request.expanded = get(request, 'expanded', dispatch#expand(request.command))
480492
call extend(s:makes, [request])
481493
let request.id = len(s:makes)
482494
let s:files[request.file] = request
@@ -493,6 +505,9 @@ function! dispatch#compile_command(bang, args, count) abort
493505
let &l:efm = efm
494506
let &l:makeprg = makeprg
495507
call s:set_current_compiler(compiler)
508+
if exists('cwd')
509+
execute cd fnameescape(cwd)
510+
endif
496511
endtry
497512
execute after
498513
return ''

0 commit comments

Comments
 (0)