summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vimrc57
1 files changed, 56 insertions, 1 deletions
diff --git a/.vimrc b/.vimrc
index 80acdcc..2f17c23 100644
--- a/.vimrc
+++ b/.vimrc
@@ -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