diff options
Diffstat (limited to '.vim/miniplugins/code_terminal.vim')
| -rw-r--r-- | .vim/miniplugins/code_terminal.vim | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/.vim/miniplugins/code_terminal.vim b/.vim/miniplugins/code_terminal.vim deleted file mode 100644 index 4ddc1ae..0000000 --- a/.vim/miniplugins/code_terminal.vim +++ /dev/null @@ -1,85 +0,0 @@ -" Program in which build actions are executed. If no value, build commands are executes as bash commands. -" This is only really useful in languages with interpreters -let g:codeenvs = { -\ 'scheme' : 'racket', -\ 'lisp' : 'rlwrap sbcl --noinform', -\ } - -" The following two dictionaries support certain substitutions: -" %F - location of current file (relative path) -" %D - directory of current file (full path) - -" Building the current file only -let g:codebuildsingle = { -\ 'scheme' : '(enter! "%F")', -\ 'cpp' : "g++ -g -pedantic '%F' && ./a.out", -\ 'yacc' : 'bison -t -d %F', -\ 'lex' : 'flex %F', -\ 'haskell' : 'runhaskell "%F"', -\ 'lisp' : '(load "%F")', -\ } -" Building all files in the directory (and subdirectories) of the current file -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> -inoremap <F3> <C-O>:call CodeTerminal(g:codebuildsingle)<CR> -inoremap <F4> <C-O>:call CodeTerminal(g:codebuildproject)<CR> -" We assume that the last accessed window is the one with the source code, otherwise it gets complicated -tnoremap <F3> <C-W><C-P>:call CodeTerminal(g:codebuildsingle)<CR><C-W><C-P> -tnoremap <F4> <C-W><C-P>:call CodeTerminal(g:codebuildproject)<CR><C-W><C-P> - -au TabNew * call CTCreateTabVars() - -function! CTCreateTabVars() - let t:codetermbufnr = -1 - let t:codetermft = "" - let t:codetermhadenv = 0 -endfunction -call CTCreateTabVars() - -function! OpenCodeTerminal() - if !bufexists(t:codetermbufnr) - term - " Latest buffer is the terminal buffer we just opened - let t:codetermbufnr = bufnr("$") - " We go back to the file from which this was called - wincmd p - let t:codetermft = "" - let t:codetermhadenv = 0 - endif - - if &filetype != t:codetermft - if t:codetermhadenv - " This is kinda bad, since certain environments might not close with this only - call term_sendkeys(t:codetermbufnr, "\<C-D>") - " The sleep is kinda bad, but it fixes the next term_sendkeys not working properly - 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) - echo "[CodeTerminal] Sent build command!" - else - call term_sendkeys(t:codetermbufnr, "\<Up>\<CR>") - echo "[CodeTerminal] No value in build dictionary!" - endif -endfunction |
