Created
June 27, 2013 02:21
-
-
Save a13xb/5873488 to your computer and use it in GitHub Desktop.
Quickly evaluate C and Python code in the current buffer (Shift + Enter).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let s:buf_nr = -1 | |
function! EvalView() | |
if !bufexists(s:buf_nr) | |
leftabove vnew | |
file `="[Eval]"` | |
let s:buf_nr = bufnr('%') | |
elseif bufwinnr(s:buf_nr) == -1 | |
leftabove vsplit | |
exe s:buf_nr . 'buffer' | |
delete _ | |
elseif bufwinnr(s:buf_nr) != bufwinnr('%') | |
exe bufwinnr(s:buf_nr) . 'wincmd w' | |
endif | |
setlocal bufhidden=delete | |
setlocal buftype=nofile | |
setlocal noswapfile | |
setlocal nobuflisted | |
setlocal modifiable | |
setlocal nocursorline | |
setlocal nocursorcolumn | |
setlocal iskeyword+=: | |
setlocal iskeyword-=- | |
au BufHidden <buffer> call let <SID>buf_nr = -1 | |
endfunction | |
function! PyEval() | |
let l:w = winnr() | |
silent let l:script = join(getline(0, "$"), "\n") | |
silent let l:content = system("cat<<'EOF' | python3\n" . l:script . "\nEOF\n") | |
"silent! let content = system('python solve.py < sample.in') | |
silent! call EvalView() | |
setlocal modifiable | |
silent! %d _ | |
silent! put! =content | |
silent! normal gg | |
setlocal nomodifiable | |
exe l:w . 'wincmd w' | |
endfunction | |
function! CEval() | |
let l:w = winnr() | |
silent let l:script = join(getline(0, "$"), "\n") | |
silent let l:content = system("rm -f /tmp/ceval") | |
silent let l:content = system("cat<<'EOF' | gcc -std=c99 -Wall -Werror -xc -O3 -o /tmp/ceval - && /tmp/ceval\n" . l:script . "\nEOF\n") | |
silent! call EvalView() | |
setlocal modifiable | |
silent! %d _ | |
silent! put! =content | |
silent! normal gg | |
setlocal nomodifiable | |
exe l:w . 'wincmd w' | |
endfunction | |
au FileType python map <buffer> <S-cr> :call PyEval()<CR> | |
au FileType c map <buffer> <S-cr> :call CEval()<CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment