Drop Leiningen and alternate support

This commit is contained in:
Tim Pope 2014-04-29 21:28:28 -04:00
parent 58896e23fa
commit afb036203e
2 changed files with 8 additions and 154 deletions

View File

@ -92,21 +92,6 @@ gf Go to the file for the namespace under the cursor.
:Dsplit {symbol} Jump to the definition for the given symbol in a :Dsplit {symbol} Jump to the definition for the given symbol in a
split. split.
*fireplace-:A*
:A In a test file, edit the implementation, and vice
versa. Basically adds or removes -test from the end
of the current namespace and searches for it in the
class path.
*fireplace-:AS*
:AS Like :A, but in a split.
*fireplace-:AV*
:AV Like :A, but in a vertical split.
*fireplace-:AT*
:AT Like :A, but in a tab.
EVALUATING CODE *fireplace-eval* EVALUATING CODE *fireplace-eval*
All code is evaluated in the namespace of the current file, requiring it if All code is evaluated in the namespace of the current file, requiring it if

View File

@ -1454,7 +1454,7 @@ augroup fireplace_command
augroup END augroup END
" }}}1 " }}}1
" Alternate {{{1 " Legacy {{{1
if !empty(findfile('plugin/leiningen.vim', escape(&rtp, ' '))) if !empty(findfile('plugin/leiningen.vim', escape(&rtp, ' ')))
finish finish
@ -1462,150 +1462,19 @@ endif
augroup fireplace_alternate augroup fireplace_alternate
autocmd! autocmd!
autocmd FileType clojure command! -buffer -bar -bang A :exe s:Alternate('edit<bang>') autocmd FileType clojure call s:define_alternates()
autocmd FileType clojure command! -buffer -bar AS :exe s:Alternate('split')
autocmd FileType clojure command! -buffer -bar AV :exe s:Alternate('vsplit')
autocmd FileType clojure command! -buffer -bar AT :exe s:Alternate('tabedit')
augroup END augroup END
function! fireplace#alternates() abort function! s:define_alternates() abort
let ns = fireplace#ns() if exists(':A') == 2
if ns =~# '-test$'
let alt = [ns[0:-6]]
elseif ns =~# '\.test\.'
let alt = [substitute(ns, '\.test\.', '.', '')]
elseif ns =~# '-spec$'
let alt = [ns[0:-6], ns . '-test']
elseif ns =~# '\.t-[^\.]*$'
let alt = [substitute(ns, '\.t-\([^\.]*\)$', '\.\1', '')]
else
let alt = [ns . '-test', substitute(ns, '\.', '.test.', ''), ns . '-spec',
\ substitute(ns, '\.\([^\.]*\)$', '.t-\1', '')]
endif
return map(alt, 'tr(v:val, ".-", "/_") . "." . expand("%:e")')
endfunction
function! s:Alternate(cmd) abort
let alternates = fireplace#alternates()
for file in alternates
let path = fireplace#findresource(file)
if !empty(path)
return a:cmd . ' ' . fnameescape(path)
endif
endfor
return 'echoerr '.string("Couldn't find " . alternates[0] . " in class path")
endfunction
" }}}1
" Leiningen {{{1
function! s:hunt(start, anchor, pattern) abort
let root = simplify(fnamemodify(a:start, ':p:s?[\/]$??'))
if !isdirectory(fnamemodify(root, ':h'))
return ''
endif
let previous = ""
while root !=# previous
if filereadable(root . '/' . a:anchor) && join(readfile(root . '/' . a:anchor, '', 50)) =~# a:pattern
return root
endif
let previous = root
let root = fnamemodify(root, ':h')
endwhile
return ''
endfunction
if !exists('s:leiningen_paths')
let s:leiningen_paths = {}
endif
function! s:leiningen_portfile() abort
if !exists('b:leiningen_root')
return ''
endif
let root = b:leiningen_root
let portfiles = [root.'/.nrepl-port', root.'/target/repl-port', root.'/target/repl/repl-port']
for f in portfiles
if filereadable(f)
return f
endif
endfor
return ''
endfunction
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 = exists('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd'
let cwd = getcwd()
try
execute cd fnameescape(b:leiningen_root)
execute 'Start! -title='
\ . escape(fnamemodify(b:leiningen_root, ':t') . ' repl', ' ')
\ 'lein repl'
if get(get(g:, 'dispatch_last_start', {}), 'handler', 'headless') ==# 'headless'
return {}
endif
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
return fireplace#register_port_file(portfile, b:leiningen_root)
endfunction
function! s:leiningen_init() abort
if !exists('b:leiningen_root')
let root = s:hunt(expand('%:p'), 'project.clj', '(\s*defproject')
if root !=# ''
let b:leiningen_root = root
endif
endif
if !exists('b:leiningen_root')
return return
endif endif
command! -buffer -bar -bang A echoerr 'Install leiningen.vim to continue using :A'
let b:java_root = b:leiningen_root command! -buffer -bar -bang AS echoerr 'Install leiningen.vim to continue using :A'
command! -buffer -bar -bang AV echoerr 'Install leiningen.vim to continue using :A'
let conn = s:leiningen_connect(0) command! -buffer -bar -bang AT echoerr 'Install leiningen.vim to continue using :A'
if has_key(conn, 'path')
let s:leiningen_paths[b:leiningen_root] = conn.path()
endif
let path = s:path_extract(&path)
if !empty(path)
let s:leiningen_paths[b:leiningen_root] = path
endif
compiler lein
if has_key(s:leiningen_paths, b:leiningen_root)
let &l:errorformat .= ',' . escape('classpath,'.join(s:leiningen_paths[b:leiningen_root], ','), '\,%')
endif
endfunction endfunction
augroup fireplace_leiningen
autocmd!
autocmd User FireplacePreConnect call s:leiningen_connect(1)
autocmd FileType clojure call s:leiningen_init()
augroup END
" }}}1 " }}}1
" vim:set et sw=2: " vim:set et sw=2: