Cleaner classpath retrieval

This commit is contained in:
Tim Pope 2014-04-12 18:15:22 -04:00
parent 2dec3b49b2
commit bc8f3af299
2 changed files with 15 additions and 12 deletions

View File

@ -33,14 +33,15 @@ function! fireplace#nrepl#for(transport) abort
let client = copy(s:nrepl)
let client.transport = a:transport
let client.session = client.process({'op': 'clone', 'session': 0})['new-session']
let response = client.process({'op': 'eval', 'code':
\ '(do (println "success") (symbol (str (System/getProperty "path.separator") (System/getProperty "java.class.path"))))'})
let client._path = response.value[-1]
if has_key(response, 'out')
let g:fireplace_nrepl_sessions[client.session] = client
else
unlet client.session
let client.describe = client.process({'op': 'describe', 'verbose?': 1})
if client.describe.versions.nrepl.major == 0 &&
\ client.describe.versions.nrepl.minor < 2
throw 'nREPL: 0.2.0 or higher required'
endif
let response = client.process({'op': 'eval', 'code':
\ '[(System/getProperty "path.separator") (System/getProperty "java.class.path")]', 'session': ''})
let client._path = split(eval(response.value[-1][5:-2]), response.value[-1][2])
let g:fireplace_nrepl_sessions[client.session] = client
return client
endfunction
@ -68,7 +69,7 @@ function! s:nrepl_clone() dict abort
endfunction
function! s:nrepl_path() dict abort
return split(self._path[1:-1], self._path[0])
return self._path
endfunction
function! fireplace#nrepl#combine(responses)
@ -157,9 +158,9 @@ endfunction
function! s:extract_last_stacktrace(nrepl) abort
let format_st = '(clojure.core/symbol (clojure.core/str "\n\b" (clojure.core/apply clojure.core/str (clojure.core/interleave (clojure.core/repeat "\n") (clojure.core/map clojure.core/str (.getStackTrace *e)))) "\n\b\n"))'
let stacktrace = split(get(split(a:nrepl.process({'op': 'eval', 'code': '['.format_st.' *3 *2 *1]', 'session': a:nrepl.session}).value[0], "\n\b\n"), 1, ""), "\n")
call a:nrepl.message({'op': 'eval', 'code': '(nth *1 1)', 'session': a:nrepl.session})
call a:nrepl.message({'op': 'eval', 'code': '(nth *2 2)', 'session': a:nrepl.session})
call a:nrepl.message({'op': 'eval', 'code': '(nth *3 3)', 'session': a:nrepl.session})
call a:nrepl.message({'op': 'eval', 'code': '(*1 1)', 'session': a:nrepl.session})
call a:nrepl.message({'op': 'eval', 'code': '(*2 2)', 'session': a:nrepl.session})
call a:nrepl.message({'op': 'eval', 'code': '(*3 3)', 'session': a:nrepl.session})
return stacktrace
endfunction

View File

@ -1477,7 +1477,9 @@ function! s:leiningen_connect(auto) abort
let cwd = getcwd()
try
execute cd fnameescape(b:leiningen_root)
Start! -title=lein\ repl lein repl
execute 'Start! -title='
\ . escape(fnamemodify(b:leiningen_root, ':t') . ' repl', ' ')
\ 'lein repl'
if get(get(g:, 'dispatch_last_start', {}), 'handler', 'headless') ==# 'headless'
return
endif