Skip to content

Instantly share code, notes, and snippets.

@Olical
Created April 15, 2018 20:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Olical/8aadfdf92731a759de6b0ce22eed45c5 to your computer and use it in GitHub Desktop.
Save Olical/8aadfdf92731a759de6b0ce22eed45c5 to your computer and use it in GitHub Desktop.
Some MIT Scheme bindings intended for Neovim
function! scheme#connect()
vnew
let s:repl_term_id = termopen('mit-scheme')
normal! G
endfunction
function! scheme#eval_top_form()
let l:save_clipboard = &clipboard
set clipboard=
let l:save_reg = getreg('s')
let l:save_regmode = getregtype('s')
normal yaF``
let l:text = @@
call setreg('s', l:save_reg, l:save_regmode)
let &clipboard = l:save_clipboard
call jobsend(s:repl_term_id, l:text . "\n")
endfunction
function! scheme#eval_file()
for line in getline(1, '$')
call jobsend(s:repl_term_id, line . "\n")
endfor
endfunction
command SchemeConnect call scheme#connect()
command SchemeEvalTopForm call scheme#eval_top_form()
command SchemeEvalFile call scheme#eval_file()
autocmd FileType scheme nnoremap <buffer> <localleader>sc :SchemeConnect<cr>
autocmd FileType scheme nnoremap <buffer> <localleader>se :SchemeEvalTopForm<cr>
autocmd FileType scheme nnoremap <buffer> <localleader>sf :SchemeEvalFile<cr>
@Olical
Copy link
Author

Olical commented Apr 15, 2018

From my dotfiles https://github.com/Olical/dotfiles

Requires vim-sexp for the form grabbing.

@Olical
Copy link
Author

Olical commented Apr 16, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment