From 4425618825ec87b59ecaea4f332c41e4e303fc6a Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Fri, 4 Apr 2014 00:47:46 -0400 Subject: [PATCH] Add run-tests to cpr Clobbering the quickfix is probably a deal breaker but hey let's try it anyways. References #59. --- doc/fireplace.txt | 2 +- plugin/fireplace.vim | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/doc/fireplace.txt b/doc/fireplace.txt index 720fc03..3e9c4cc 100644 --- a/doc/fireplace.txt +++ b/doc/fireplace.txt @@ -153,7 +153,7 @@ cp{motion} Eval/print the code indicated by {motion}. cpp Eval/print the innermost form at the cursor. *fireplace-cpr* -cpr Eval a require :reload form. +cpr :Require|RunTests *fireplace-c!* c!{motion} Eval/replace the code indicated by {motion}. diff --git a/plugin/fireplace.vim b/plugin/fireplace.vim index 15e4446..f5c8b2a 100644 --- a/plugin/fireplace.vim +++ b/plugin/fireplace.vim @@ -1045,13 +1045,15 @@ augroup END " }}}1 " :Require {{{1 -function! s:Require(bang, ns) abort +function! s:Require(bang, echo, ns) abort if expand('%:e') ==# 'cljs' let cmd = '(load-file '.s:str(tr(a:ns ==# '' ? fireplace#ns() : a:ns, '-.', '_/').'.cljs').')' else let cmd = ('(clojure.core/require '.s:qsym(a:ns ==# '' ? fireplace#ns() : a:ns).' :reload'.(a:bang ? '-all' : '').')') endif - echo cmd + if a:echo + echo cmd + endif try call fireplace#session_eval(cmd) return '' @@ -1060,9 +1062,19 @@ function! s:Require(bang, ns) abort endtry endfunction +function! s:cpr() abort + let echo = "(require ".fireplace#ns().' :reload) (clojure.test/run-tests)' + try + call s:Require(0, 0, '') + catch /^Fireplace: no live REPL connection$/ + endtry + call s:RunTests(0, 0) + echo echo +endfunction + function! s:setup_require() abort - command! -buffer -bar -bang -complete=customlist,fireplace#ns_complete -nargs=? Require :exe s:Require(0, ) - nnoremap cpr :Require + command! -buffer -bar -bang -complete=customlist,fireplace#ns_complete -nargs=? Require :exe s:Require(0, 1, ) + nnoremap cpr :if expand('%:e') ==# 'cljs'Requireelsecall cpr()endif endfunction augroup fireplace_require @@ -1341,7 +1353,7 @@ function! fireplace#capture_test_run(expr) abort cwindow endfunction -function! s:RunTests(bang, ...) abort +function! s:RunTests(bang, echo, ...) abort if a:bang && a:0 let expr = '(clojure.test/run-all-tests #"'.join(a:000, '|').'")' elseif a:bang @@ -1351,12 +1363,16 @@ function! s:RunTests(bang, ...) abort endif call fireplace#capture_test_run(expr) cwindow - echo expr + if a:echo + echo expr + endif endfunction augroup fireplace_command autocmd! - autocmd FileType clojure command! -buffer -bar -bang -nargs=* -complete=customlist,fireplace#ns_complete RunTests call s:RunTests(0, ) + autocmd FileType clojure command! -buffer -bar -bang -nargs=* + \ -complete=customlist,fireplace#ns_complete RunTests + \ call s:RunTests(0, 1, ) augroup END " }}}1