32 lines
710 B
VimL
32 lines
710 B
VimL
|
"
|
||
|
" Originally from:
|
||
|
" https://github.com/ward/dotfiles/blob/master/vim/ftplugin/scheme/icp1.vim
|
||
|
"
|
||
|
|
||
|
fu! s:OpenR5RS(path)
|
||
|
let prelude = [
|
||
|
\ "(#%require xrepl)",
|
||
|
\ "(load \"" . a:path . "\")",
|
||
|
\ "\<CR>"
|
||
|
\ ]->join("")
|
||
|
let s:term = term_start("plt-r5rs --no-prim", {"term_finish": "close", "vertical": 1})
|
||
|
call term_sendkeys("", prelude)
|
||
|
endfu
|
||
|
|
||
|
fu! s:GetVisualSelection()
|
||
|
try
|
||
|
let a_save = @a
|
||
|
normal! gv"ay
|
||
|
return @a
|
||
|
finally
|
||
|
let @a = a_save
|
||
|
endtry
|
||
|
endfu
|
||
|
|
||
|
fu! s:SendR5RSkeys()
|
||
|
call term_sendkeys(s:term, s:GetVisualSelection())
|
||
|
endfu
|
||
|
|
||
|
nnoremap <buffer> <leader>o :call <sid>OpenR5RS(@%)<cr>
|
||
|
vnoremap <buffer> <leader>r <esc>:call <sid>SendR5RSkeys()<cr>
|