From fa7a19140b33e4949ad1df28f34455e8120668ff Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Mon, 5 May 2014 00:38:30 -0400 Subject: [PATCH] Allow sending custom id on eval --- autoload/fireplace/nrepl.vim | 6 +++++- plugin/fireplace.vim | 13 +++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/autoload/fireplace/nrepl.vim b/autoload/fireplace/nrepl.vim index 746b828..070a3ba 100644 --- a/autoload/fireplace/nrepl.vim +++ b/autoload/fireplace/nrepl.vim @@ -128,7 +128,11 @@ function! s:nrepl_eval(expr, ...) dict abort if has_key(options, 'session') let msg.session = options.session endif - let msg.id = fireplace#nrepl#next_id() + if has_key(options, 'id') + let msg.id = options.id + else + let msg.id = fireplace#nrepl#next_id() + endif if has_key(options, 'file_path') let msg.op = 'load-file' let msg['file-path'] = options.file_path diff --git a/plugin/fireplace.vim b/plugin/fireplace.vim index 669a6e3..2e7d89e 100644 --- a/plugin/fireplace.vim +++ b/plugin/fireplace.vim @@ -412,6 +412,11 @@ function! s:spawning_eval(classpath, expr, ns) abort let result.err = join(readfile(s:oneoff_err, 'b'), "\n") let result.ex = join(readfile(s:oneoff_ex, 'b'), "\n") let result.stacktrace = readfile(s:oneoff_stk) + if empty(result.ex) + let result.status = ['done'] + else + let result.status = ['eval-error', 'done'] + endif call filter(result, '!empty(v:val)') if v:shell_error && get(result, 'ex', '') ==# '' throw 'Error running Java: '.get(split(captured, "\n"), -1, '') @@ -434,8 +439,12 @@ function! s:oneoff.eval(expr, options) dict abort if !empty(get(a:options, 'session', 1)) throw 'Fireplace: no live REPL connection' endif - return s:spawning_eval(join(self.path(), has('win32') ? ';' : ':'), - \ a:expr, get(a:options, 'ns', self.user_ns())) + let result = s:spawning_eval(join(self.path(), has('win32') ? ';' : ':'), + \ a:expr, get(a:options, 'ns', self.user_ns())) + if has_key(a:options, 'id') + let result.id = a:options.id + endif + return result endfunction function! s:oneoff.message(...) abort