diff options
Diffstat (limited to '.vimrc')
| -rw-r--r-- | .vimrc | 57 |
1 files changed, 56 insertions, 1 deletions
@@ -215,7 +215,62 @@ endif endfunction " }}} - + + " Code terminal {{{ + let g:codeenvs = { + \ 'scheme': 'racket' + \ } + let g:codebuildsingle = { + \ 'scheme': '(enter! "%F")', + \ 'cpp' : "g++ -g -pedantic '%F' && ./a.out" + \ } + let g:codebuildproject = { + \ 'cpp' : "g++ -g -pedantic '%D/'**/*.cpp && ./a.out" + \ } + + noremap <F3> :call CodeTerminal(g:codebuildsingle)<CR> + noremap <F4> :call CodeTerminal(g:codebuildproject)<CR> + + let t:codetermbufnr = -1 + let t:codetermft = "" + let t:codetermhadenv = 0 + function! OpenCodeTerminal() + if !bufexists(t:codetermbufnr) + term + let t:codetermbufnr = bufnr("$") + wincmd p + endif + + if &filetype != t:codetermft + if t:codetermhadenv + call term_sendkeys(t:codetermbufnr, "\<C-D>") + sleep 500m + endif + + let t:codetermft = &filetype + if has_key(g:codeenvs, &filetype) + call term_sendkeys(t:codetermbufnr, g:codeenvs[&filetype] . "\<CR>") + let t:codetermhadenv = 1 + else + let t:codetermhadenv = 0 + endif + endif + endfunction + + function! CodeTerminal(builddict) + call OpenCodeTerminal() + + if has_key(a:builddict, &filetype) + let buildcomm = a:builddict[&filetype] . "\<CR>" + let buildcomm = substitute(buildcomm, "%F", @%, "") + let buildcomm = substitute(buildcomm, "%D", expand('%:p:h'), "") + call term_sendkeys(t:codetermbufnr, buildcomm) + else + echo "[CodeTerminal] No value in build dictionary!" + endif + endfunction + " }}} + " Other {{{ autocmd BufRead,BufNewFile * set tw=0 " Sets textwidth to 0 for all files (set with autocmd since just doing "set tw=0" can be overridden) set signcolumn=number " Show signs and numbers on the same column |
