From b0f9fad9ec192daad66a914cc14d8568c69ed823 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Fri, 4 Apr 2014 01:57:43 -0400 Subject: [PATCH] Autostart lein repl with dispatch.vim Great idea? Or greatest idea? --- plugin/fireplace.vim | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/plugin/fireplace.vim b/plugin/fireplace.vim index f5c8b2a..138c5ef 100644 --- a/plugin/fireplace.vim +++ b/plugin/fireplace.vim @@ -1453,8 +1453,29 @@ function! s:leiningen_portfile() abort return '' endfunction -function! s:leiningen_connect() abort +function! s:leiningen_connect(auto) abort + if !exists('b:leiningen_root') + return + endif let portfile = s:leiningen_portfile() + if a:auto && empty(portfile) && exists(':Start') ==# 2 + + let cd = has('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd' + let cwd = getcwd() + try + execute cd fnameescape(b:leiningen_root) + Start! -title=lein\ repl lein repl + finally + execute cd fnameescape(cwd) + endtry + + let i = 0 + while empty(portfile) && i < 300 && !getchar(0) + let i += 1 + sleep 100m + let portfile = s:leiningen_portfile() + endwhile + endif if empty(portfile) return endif @@ -1483,7 +1504,7 @@ function! s:leiningen_init() abort if exists('*classpath#from_vim') let s:leiningen_paths[b:leiningen_root] = classpath#split(classpath#from_vim(&path)) endif - call s:leiningen_connect() + call s:leiningen_connect(0) endfunction function! s:massage_quickfix() abort @@ -1504,7 +1525,7 @@ endfunction augroup fireplace_leiningen autocmd! - autocmd User FireplacePreConnect call s:leiningen_connect() + autocmd User FireplacePreConnect call s:leiningen_connect(1) autocmd FileType clojure call s:leiningen_init() autocmd QuickFixCmdPost make,cfile,cgetfile call s:massage_quickfix() augroup END