summaryrefslogtreecommitdiff
path: root/vim/bundle/slimv/ftplugin/scheme
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/slimv/ftplugin/scheme')
-rw-r--r--vim/bundle/slimv/ftplugin/scheme/slimv-scheme.vim91
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
+