From 528cb5b01a4922897bbcd4ed97e0924b6c6b5cf2 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Mon, 7 Jan 2013 01:51:48 -0500 Subject: [PATCH] Capture nREPL stack trace --- autoload/nrepl/foreplay_connection.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/autoload/nrepl/foreplay_connection.vim b/autoload/nrepl/foreplay_connection.vim index 707f048..f1640f1 100644 --- a/autoload/nrepl/foreplay_connection.vim +++ b/autoload/nrepl/foreplay_connection.vim @@ -129,6 +129,8 @@ function! s:nrepl_process(payload) dict abort if index(combined[key], response[key]) < 0 call extend(combined[key], [response[key]]) endif + elseif key ==# 'out' && response.out =~# '^.*(.*:\d\+)\t.*)$' + let combined.stacktrace = split(response.out, "\t") elseif type(response[key]) == type('') let combined[key] = get(combined, key, '') . response[key] else @@ -143,7 +145,8 @@ function! s:nrepl_process(payload) dict abort endfunction function! s:nrepl_eval(expr, ...) dict abort - let payload = {"op": "eval", "code": a:expr} + let payload = {"op": "eval"} + let payload.code = '(try '.a:expr.' (catch Exception e (print (apply str (interpose "\t" (map str (.getStackTrace e))))) (throw e)))' let options = a:0 ? a:1 : {} if has_key(options, 'ns') let payload.ns = options.ns