From edc20dd7b60087db44c6d173c83b4f98af52157e Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 7 Nov 2022 12:27:36 +0200 Subject: [vimrc] Added custom functionality for automatic code building --- .vimrc | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) 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 :call CodeTerminal(g:codebuildsingle) + noremap :call CodeTerminal(g:codebuildproject) + + 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, "\") + sleep 500m + endif + + let t:codetermft = &filetype + if has_key(g:codeenvs, &filetype) + call term_sendkeys(t:codetermbufnr, g:codeenvs[&filetype] . "\") + 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] . "\" + 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 -- cgit v1.2.3