From fa6e35bc1914ddf77ae407b9df4e3769d91a7db4 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Tue, 12 Mar 2013 15:37:58 -0400 Subject: [PATCH] Remove old vendored classpath.vim --- README.markdown | 18 +----- autoload/classpath.vim | 133 ----------------------------------------- doc/foreplay.txt | 11 ---- plugin/classpath.vim | 23 ------- 4 files changed, 3 insertions(+), 182 deletions(-) delete mode 100644 autoload/classpath.vim delete mode 100644 plugin/classpath.vim diff --git a/README.markdown b/README.markdown index 1d83e47..856229e 100644 --- a/README.markdown +++ b/README.markdown @@ -97,22 +97,10 @@ Because why not? It works in the quasi-REPL too. > 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 -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. +[classpath.vim FAQ]: https://github.com/tpope/vim-classpath#FAQ ## Contributing diff --git a/autoload/classpath.vim b/autoload/classpath.vim deleted file mode 100644 index 72c9649..0000000 --- a/autoload/classpath.vim +++ /dev/null @@ -1,133 +0,0 @@ -" autoload/classpath.vim -" Maintainer: Tim Pope - -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: diff --git a/doc/foreplay.txt b/doc/foreplay.txt index e60b5dc..b9569ac 100644 --- a/doc/foreplay.txt +++ b/doc/foreplay.txt @@ -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. -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 lein repl happens automatically. If you have a different setup, diff --git a/plugin/classpath.vim b/plugin/classpath.vim deleted file mode 100644 index 292d624..0000000 --- a/plugin/classpath.vim +++ /dev/null @@ -1,23 +0,0 @@ -" classpath.vim - Set 'path' from the Java class path -" Maintainer: Tim Pope - -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: