From 283356ee526c775469e52b8716c31ddba2cceee2 Mon Sep 17 00:00:00 2001 From: jdhao Date: Wed, 25 Nov 2020 01:07:50 +0800 Subject: Initial support for C++ --- after/ftplugin/cpp.vim | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'after/ftplugin/cpp.vim') diff --git a/after/ftplugin/cpp.vim b/after/ftplugin/cpp.vim index 4fe80ab..4dd59bc 100644 --- a/after/ftplugin/cpp.vim +++ b/after/ftplugin/cpp.vim @@ -1 +1,30 @@ -nnoremap :w :!g++ -Wall -std=c++11 % -o %<&&./%< +nnoremap :call compile_run_cpp() + +function! s:compile_run_cpp() abort + let src_path = expand('%:p:~') + let src_noext = expand('%:p:~:r') + " The building flags + let _flag = '-Wall -Wextra -std=c++11 -O2' + + if executable('clang++') + let prog = 'clang++' + elseif executable('g++') + let prog = 'g++' + else + echoerr 'No C++ compiler found on the system!' + endif + call s:create_term_buf('h', 20) + execute printf('term %s %s %s -o %s && %s', prog, _flag, src_path, src_noext, src_noext) + startinsert +endfunction + +function s:create_term_buf(_type, size) abort + set splitbelow + set splitright + if a:_type ==# 'v' + vnew + else + new + endif + execute 'resize ' . a:size +endfunction -- cgit v1.2.3