From 3474bd5d7211b81cfba74c1dc6ebabd5523e4f31 Mon Sep 17 00:00:00 2001 From: Vitaliy Vlasov Date: Thu, 24 Sep 2015 20:31:42 +0300 Subject: [PATCH] Change :Piggieback behavior for empty/port parameters - Explicitly specify Rhino REPL when :Piggieback has no parameters - Use Weasel REPL when port parameter is provided to :Piggieback - Improve leading space handling for :Piggieback params - Fall back to cljs.repl.browser if Weasel in not in classpath - Use has_key() when checking for Weasel repl availability --- plugin/fireplace.vim | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugin/fireplace.vim b/plugin/fireplace.vim index 4bd4e51..42245bd 100644 --- a/plugin/fireplace.vim +++ b/plugin/fireplace.vim @@ -277,15 +277,19 @@ function! s:repl.piggieback(arg, ...) abort let connection = s:conn_try(self.connection, 'clone') if empty(a:arg) - let arg = '' + let arg = '(cljs.repl.rhino/repl-env)' elseif a:arg =~# '^\d\{1,5}$' - call connection.eval("(require 'cljs.repl.browser)") + let replns = 'weasel.repl.websocket' + if has_key(connection.eval("(require '" . replns . ")"), 'ex') + let replns = 'cljs.repl.browser' + call connection.eval("(require '" . replns . ")") + endif let port = matchstr(a:arg, '^\d\{1,5}$') - let arg = ' (cljs.repl.browser/repl-env :port '.port.')' + let arg = '('.replns.'/repl-env :port '.port.')' else - let arg = ' ' . a:arg + let arg = a:arg endif - let response = connection.eval('(cemerick.piggieback/cljs-repl'.arg.')') + let response = connection.eval('(cemerick.piggieback/cljs-repl'.' '.arg.')') if empty(get(response, 'ex')) call insert(self.piggiebacks, extend({'connection': connection}, deepcopy(s:piggieback)))