Remove old vendored classpath.vim
This commit is contained in:
parent
1a8eab85d9
commit
fa6e35bc19
@ -97,22 +97,10 @@ Because why not? It works in the quasi-REPL too.
|
|||||||
|
|
||||||
> Why does it take so long for Vim to startup?
|
> Why does it take so long for Vim to startup?
|
||||||
|
|
||||||
The short answer is because the JVM is slow.
|
See the [classpath.vim FAQ][]. You can uninstall classpath.vim if you only
|
||||||
|
care about nREPL support.
|
||||||
|
|
||||||
The first time you load a Clojure file from any given project, foreplay.vim
|
[classpath.vim FAQ]: https://github.com/tpope/vim-classpath#FAQ
|
||||||
sets about trying to determine your class path, leveraging either
|
|
||||||
`lein classpath` or `mvn dependency:build-classpath`. This takes a couple of
|
|
||||||
seconds or so in the best case scenario, and potentially much longer if it
|
|
||||||
decides to hit the network. (I don't understand why "tell me the class path"
|
|
||||||
requires hitting the network, but what do I know?)
|
|
||||||
|
|
||||||
Because the class path is oh-so-expensive to retrieve, foreplay.vim caches it
|
|
||||||
in `g:CLASSPATH_CACHE`. By default, this disappears when you exit Vim, but
|
|
||||||
you can save it across sessions in `.viminfo` with this handy option:
|
|
||||||
|
|
||||||
set viminfo+=!
|
|
||||||
|
|
||||||
The cache is expired when the timestamp on `project.clj` or `pom.xml` changes.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
@ -1,133 +0,0 @@
|
|||||||
" autoload/classpath.vim
|
|
||||||
" Maintainer: Tim Pope <http://tpo.pe>
|
|
||||||
|
|
||||||
if exists("g:autoloaded_classpath")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let g:autoloaded_classpath = 1
|
|
||||||
|
|
||||||
function! classpath#separator() abort
|
|
||||||
return has('win32') ? ';' : ':'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! classpath#file_separator() abort
|
|
||||||
return exists('shellslash') && !&shellslash ? '\' : '/'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! classpath#split(cp) abort
|
|
||||||
return split(a:cp, classpath#separator())
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! classpath#to_vim(cp) abort
|
|
||||||
let path = []
|
|
||||||
for elem in classpath#split(a:cp)
|
|
||||||
let path += [elem ==# '.' ? '' : elem]
|
|
||||||
endfor
|
|
||||||
if a:cp =~# '\(^\|:\)\.$'
|
|
||||||
let path += ['']
|
|
||||||
endif
|
|
||||||
return join(map(path, 'escape(v:val, ", ")'), ',')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! classpath#from_vim(path) abort
|
|
||||||
if a:path =~# '^,\=$'
|
|
||||||
return '.'
|
|
||||||
endif
|
|
||||||
let path = []
|
|
||||||
for elem in split(substitute(a:path, ',$', '', ''), ',')
|
|
||||||
if elem ==# ''
|
|
||||||
let path += ['.']
|
|
||||||
else
|
|
||||||
let path += split(glob(substitute(elem, '\\\ze[\\ ,]', '', 'g'), 1), "\n")
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
return join(path, classpath#separator())
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! classpath#detect(...) abort
|
|
||||||
let sep = classpath#file_separator()
|
|
||||||
|
|
||||||
let buffer = a:0 ? a:1 : '%'
|
|
||||||
let default = $CLASSPATH ==# '' ? ',' : classpath#to_vim($CLASSPATH)
|
|
||||||
let root = getbufvar(buffer, 'java_root')
|
|
||||||
if root ==# ''
|
|
||||||
let root = simplify(fnamemodify(bufname(buffer), ':p:s?[\/]$??'))
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !isdirectory(fnamemodify(root, ':h'))
|
|
||||||
return default
|
|
||||||
endif
|
|
||||||
|
|
||||||
let previous = ""
|
|
||||||
while root !=# previous
|
|
||||||
if isdirectory(root . '/src')
|
|
||||||
if filereadable(root . '/project.clj')
|
|
||||||
let file = 'project.clj'
|
|
||||||
let cmd = 'lein classpath'
|
|
||||||
let pattern = "[^\n]*\\ze\n*$"
|
|
||||||
let default = join(map(['test', 'src', 'dev-resources', 'resources', 'target'.sep.'classes'], 'escape(root . sep . v:val, ", ")'), ',')
|
|
||||||
let base = ''
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
if filereadable(root . '/pom.xml')
|
|
||||||
let file = 'pom.xml'
|
|
||||||
let cmd = 'mvn dependency:build-classpath'
|
|
||||||
let pattern = '\%(^\|\n\)\zs[^[].\{-\}\ze\n'
|
|
||||||
let base = escape(root.sep.'src'.sep.'*'.sep.'*', ', ') . ','
|
|
||||||
let default = base . default
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
let previous = root
|
|
||||||
let root = fnamemodify(root, ':h')
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
if !exists('file')
|
|
||||||
if a:0 > 1 && a:2 ==# 'keep'
|
|
||||||
return ''
|
|
||||||
else
|
|
||||||
return default
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:CLASSPATH_CACHE') || type(g:CLASSPATH_CACHE) != type({})
|
|
||||||
unlet! g:CLASSPATH_CACHE
|
|
||||||
let g:CLASSPATH_CACHE = {}
|
|
||||||
endif
|
|
||||||
|
|
||||||
let [when, last, path] = split(get(g:CLASSPATH_CACHE, root, "-1\t-1\t."), "\t")
|
|
||||||
let disk = getftime(root . sep . file)
|
|
||||||
if last ==# disk
|
|
||||||
return path
|
|
||||||
else
|
|
||||||
try
|
|
||||||
if &verbose
|
|
||||||
echomsg 'Determining class path with '.cmd.' ...'
|
|
||||||
endif
|
|
||||||
let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '
|
|
||||||
let dir = getcwd()
|
|
||||||
try
|
|
||||||
execute cd . fnameescape(root)
|
|
||||||
let out = system(cmd)
|
|
||||||
finally
|
|
||||||
execute cd . fnameescape(dir)
|
|
||||||
endtry
|
|
||||||
catch /^Vim:Interrupt/
|
|
||||||
return default
|
|
||||||
endtry
|
|
||||||
let match = matchstr(out, pattern)
|
|
||||||
if !v:shell_error && exists('out') && out !=# ''
|
|
||||||
let path = base . classpath#to_vim(match)
|
|
||||||
let g:CLASSPATH_CACHE[root] = localtime() . "\t" . disk . "\t" . path
|
|
||||||
return path
|
|
||||||
else
|
|
||||||
echohl WarningMSG
|
|
||||||
echomsg "Couldn't determine class path."
|
|
||||||
echohl NONE
|
|
||||||
echo out
|
|
||||||
return default
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" vim:set et sw=2:
|
|
@ -7,17 +7,6 @@ This plugin is only available if 'compatible' is not set.
|
|||||||
|
|
||||||
You need Clojure runtime files to use this plugin. Try vim-clojure-static.
|
You need Clojure runtime files to use this plugin. Try vim-clojure-static.
|
||||||
|
|
||||||
CLASSPATH *foreplay-classpath*
|
|
||||||
|
|
||||||
Upon loading a Clojure buffer, the 'path' option is automatically set to your
|
|
||||||
class path. The class path is found by `lein classpath`, `mvn
|
|
||||||
dependency:build-classpath`, or failing both of those, $CLASSPATH.
|
|
||||||
|
|
||||||
This behavior is going away soon. Install classpath.vim if you'd like to keep
|
|
||||||
it.
|
|
||||||
|
|
||||||
https://github.com/tpope/vim-classpath
|
|
||||||
|
|
||||||
CONNECTING TO A REPL *foreplay-connect*
|
CONNECTING TO A REPL *foreplay-connect*
|
||||||
|
|
||||||
Connecting to lein repl happens automatically. If you have a different setup,
|
Connecting to lein repl happens automatically. If you have a different setup,
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
" classpath.vim - Set 'path' from the Java class path
|
|
||||||
" Maintainer: Tim Pope <http://tpo.pe/>
|
|
||||||
|
|
||||||
if exists('g:no_foreplay_classpath') || exists("g:loaded_classpath") || v:version < 700 || &cp
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let g:loaded_classpath = 1
|
|
||||||
|
|
||||||
if &viminfo !~# '!'
|
|
||||||
set viminfo+=!
|
|
||||||
endif
|
|
||||||
|
|
||||||
augroup classpath
|
|
||||||
autocmd!
|
|
||||||
autocmd FileType clojure
|
|
||||||
\ if expand('%:p') =~# '^zipfile:' |
|
|
||||||
\ let &l:path = getbufvar('#', '&path') |
|
|
||||||
\ else |
|
|
||||||
\ let &l:path = classpath#detect() |
|
|
||||||
\ endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
" vim:set et sw=2:
|
|
Loading…
Reference in New Issue
Block a user