diff --git a/vim/plugin/defer.vim b/vim/plugin/defer.vim index 947cd60..ab75c82 100644 --- a/vim/plugin/defer.vim +++ b/vim/plugin/defer.vim @@ -23,6 +23,7 @@ function Defer(command, ...) call jobstart(a:command, { \ "out_io": "pipe", \ "on_stdout": { pipe, text -> extend(l:buffer, text) }, + \ "on_stderr": { pipe, text -> extend(l:buffer, text) }, \ "on_exit": { id, code -> exit(code, l:buffer, l:start, strftime("%s"), l:callbacks) } \}) else @@ -52,6 +53,11 @@ function s:echo(message, ...) end endfun +function s:scratch(result) + new + call nvim_buf_set_lines(0, 0, nvim_buf_line_count(0), 0, a:result["output"]) +endfun + function s:notify(message) call Defer('notify-send "Vim" "'.a:message.'"', { b -> 0 }) endfun @@ -59,4 +65,5 @@ endfun comm -complete=shellcmd -nargs=* Defer call Defer(s:expand()) comm -complete=shellcmd -nargs=* DeferEcho call Defer(s:expand(), { result -> echo("Deferred job completed (".(result['tend']-result['tstart'])."s): ".s:expand()) }, { result -> echo("Deferred job errored with ".result['code']." (".(result['tend']-result['tstart'])."s): ".s:expand(), 'WarningMsg') }) comm -complete=shellcmd -nargs=* DeferNotify call Defer(s:expand(), { result -> notify("Deferred job completed (".(result['tend']-result['tstart'])."s):\n$ ".s:expand()) }, { result -> notify("Deferred job errored with ".result['code']." (".(result['tend']-result['tstart'])."s):\n$ ".s:expand()) }) +comm -complete=shellcmd -nargs=* DeferScratch call Defer(s:expand(), function("scratch")) comm -complete=shellcmd -count=0 -nargs=* DeferBuffer call Defer(s:expand(), { result -> replace(, result['output']) })