119 lines
3.2 KiB
VimL

"
" limp/vim/mode.vim
"
" URL:
" http://mikael.jansson.be
"
" Description:
" Lisp-mode specific functions
"
" Authors:
" Mikael Jansson <mail@mikael.jansson.be>
"
"Eval (say-hello 'mikael)
command! -buffer -nargs=* Eval silent call LimpBridge_send_to_lisp(<q-args>)
let b:listener_always_open_window=0
let b:listener_keep_open=0
let g:lisp_mode_active = 0
fun! LimpMode_start()
if g:lisp_mode_active
return
endif
let g:lisp_mode_active = 1
"-------------------------------------------------------------------
" coloring
"-------------------------------------------------------------------
let g:lisp_rainbow=1
set t_Co=256
if !exists("g:colors_name")
colorscheme desert256
endif
hi Brackets ctermbg=53 ctermfg=white
hi BracketsBlock ctermbg=235 guibg=lightgray
hi StatusLine ctermbg=white ctermfg=160
hi StatusLineNC ctermbg=black ctermfg=gray
hi Pmenu ctermbg=53 ctermfg=255
hi PmenuSel ctermbg=255 ctermfg=53
"
" set all parens to gray
"
hi hlLevel0 ctermfg=238
hi hlLevel1 ctermfg=238
hi hlLevel2 ctermfg=238
hi hlLevel3 ctermfg=238
hi hlLevel4 ctermfg=238
hi hlLevel5 ctermfg=238
hi hlLevel6 ctermfg=238
hi hlLevel7 ctermfg=238
hi hlLevel8 ctermfg=238
hi hlLevel9 ctermfg=238
hi hlLevel10 ctermfg=238
hi hlLevel11 ctermfg=238
call LimpHighlight_start()
call AutoClose_start()
" for whatever reason, nocursorline isn't set after pressing F12... (i.e.,
" switching back to the buffer)
setlocal nocursorline
endfun
fun! LimpMode_stop()
let g:lisp_mode_active = 0
"call LimpHighlight_stop()
"call AutoClose_stop()
endfun
augroup LimpMode
au!
au BufEnter * :if &filetype == "lisp" | call LimpMode_start() | endif
au BufLeave * :if &filetype == "lisp" | call LimpMode_stop() | endif
augroup END
"-------------------------------------------------------------------
" init filetype plugin
"-------------------------------------------------------------------
syntax on
setlocal nocompatible nocursorline
setlocal lisp syntax=lisp
setlocal ls=2 bs=2 si et sw=2 ts=2 tw=0
setlocal statusline=%<%f\ \(%{LimpBridge_connection_status()}\)\ %h%m%r%=%-14.(%l,%c%V%)\ %P\ of\ %L\ \(%.45{getcwd()}\)
setlocal iskeyword=&,*,+,45,/,48-57,:,<,=,>,@,A-Z,a-z,_
setlocal cpoptions=-mp
setlocal foldmethod=marker foldmarker=(,) foldminlines=1
" This allows gf and :find to work. Fix path to your needs
setlocal suffixesadd=.lisp,cl path=/home/mikael/hacking/lisp/**
" This allows [d [i [D [I work across files if an ASDF buffer is opened
" If I used load, it would be there too.
setlocal include=(:file\
"-------------------------------------------------------------------
" reset to previous values
"-------------------------------------------------------------------
let s:save_cpo = &cpo
set cpo&vim
let b:undo_ftplugin = "setlocal syntax< lisp< ls< bs< si< et< sw< "
\ . "ts< tw< complete< nocursorline< nocompatible< statusline< iskeyword< "
\ . "cpoptions< foldmethod< foldmarker< foldminlines< "
\ . "suffixesadd< path< include< "
let &cpo = s:save_cpo
unlet s:save_cpo
"------------- boot!
call LimpMode_start()