diff options
Diffstat (limited to 'vim/bundle/slimv/ftplugin/scheme')
-rw-r--r-- | vim/bundle/slimv/ftplugin/scheme/slimv-scheme.vim | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/vim/bundle/slimv/ftplugin/scheme/slimv-scheme.vim b/vim/bundle/slimv/ftplugin/scheme/slimv-scheme.vim new file mode 100644 index 0000000..4a71954 --- /dev/null +++ b/vim/bundle/slimv/ftplugin/scheme/slimv-scheme.vim @@ -0,0 +1,91 @@ +" slimv-scheme.vim: +" Scheme filetype plugin for Slimv +" Version: 0.9.13 +" Last Change: 04 May 2014 +" Maintainer: Tamas Kovacs <kovisoft at gmail dot com> +" License: This file is placed in the public domain. +" No warranty, express or implied. +" *** *** Use At-Your-Own-Risk! *** *** +" +" ===================================================================== +" +" Load Once: +if exists("b:did_ftplugin") || exists("g:slimv_disable_scheme") + finish +endif + +" ---------- Begin part loaded once ---------- +if !exists( 'g:slimv_scheme_loaded' ) + +let g:slimv_scheme_loaded = 1 + +" Try to autodetect Scheme executable +" Returns list [Scheme executable, Scheme implementation] +function! SlimvAutodetect( preferred ) + " Currently only MIT Scheme on Linux + if executable( 'scheme' ) + " MIT Scheme + return ['scheme', 'mit'] + endif + + return ['', ''] +endfunction + +" Try to find out the Scheme implementation +function! SlimvImplementation() + if exists( 'g:slimv_impl' ) && g:slimv_impl != '' + " Return Lisp implementation if defined + return tolower( g:slimv_impl ) + endif + + return 'mit' +endfunction + +" Try to autodetect SWANK and build the command to load the SWANK server +function! SlimvSwankLoader() + if g:slimv_impl == 'mit' + if exists( 'g:scheme_builtin_swank' ) && g:scheme_builtin_swank + " MIT Scheme contains a built-in swank server since version 9.1.1 + return 'scheme --eval "(let loop () (start-swank) (loop))"' + endif + let swanks = split( globpath( &runtimepath, 'slime/contrib/swank-mit-scheme.scm'), '\n' ) + if len( swanks ) == 0 + return '' + endif + return '"' . g:slimv_lisp . '" --load "' . swanks[0] . '"' + endif + return '' +endfunction + +" Filetype specific initialization for the REPL buffer +function! SlimvInitRepl() + set filetype=scheme +endfunction + +" Lookup symbol in the Hyperspec +function! SlimvHyperspecLookup( word, exact, all ) + " No Hyperspec support for Scheme at the moment + let symbol = [] + return symbol +endfunction + +" Source Slimv general part +runtime ftplugin/**/slimv.vim + +endif "!exists( 'g:slimv_scheme_loaded' ) +" ---------- End of part loaded once ---------- + +runtime ftplugin/**/lisp.vim + +" The balloonexpr of MIT-Scheme is broken. Disable it. +let g:slimv_balloon = 0 + +" The fuzzy completion of MIT-Scheme is broken. Disable it. +let g:slimv_simple_compl = 1 + +" Must be called for each lisp buffer +call SlimvInitBuffer() + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + |