Code refactoring.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
"
|
||||
"
|
||||
" {{{1
|
||||
" Functions to compile and link a single c/cpp/java files.
|
||||
"
|
||||
" let g:cf5output
|
||||
@@ -20,7 +19,22 @@ if !exists('*FirstModeLine')
|
||||
endif
|
||||
|
||||
"
|
||||
" Windows {{{1
|
||||
" Init global variables with default values.
|
||||
"
|
||||
function! s:initDefaults()
|
||||
let g:cf5output=0
|
||||
let g:argv=""
|
||||
let g:pyflags=""
|
||||
let g:cppflags=""
|
||||
let g:wcppflags="/O2 /EHsc /DWIN32"
|
||||
let g:lcppflags="-O2"
|
||||
let g:ldflags=""
|
||||
let g:wldflags=""
|
||||
let g:ldlibpath=""
|
||||
endfunction
|
||||
|
||||
"
|
||||
" Microsoft Visual C++
|
||||
"
|
||||
function! s:CompileMSVC(run) "{{{2
|
||||
let exename=expand("%:p:r:s,$,.exe,")
|
||||
@@ -51,60 +65,8 @@ function! s:CompileMSVC(run) "{{{2
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:CompileJava(run) "{{{2
|
||||
" compile it
|
||||
let cmd = "javac " . g:javaflags . " " . expand("%")
|
||||
echo cmd
|
||||
let cout = system( cmd )
|
||||
echo cout
|
||||
if v:shell_error
|
||||
return
|
||||
endif
|
||||
" run it
|
||||
"let classpath=expand("%:p:r")
|
||||
let exename=expand("%:r")
|
||||
let cmd = "java " . exename . " " . g:argv
|
||||
echo cmd
|
||||
let eout = system( cmd )
|
||||
echo eout
|
||||
endfunction
|
||||
|
||||
function! s:InterpretPython(run) "{{{2
|
||||
" Interpret it
|
||||
let cmd = "python " . g:pyflags . " " . expand("%")
|
||||
echo cmd
|
||||
let cout = system( cmd )
|
||||
echo cout
|
||||
if v:shell_error
|
||||
return
|
||||
endif
|
||||
" run it
|
||||
"let classpath=expand("%:p:r")
|
||||
"let exename=expand("%:r")
|
||||
"let cmd = "java " . exename . " " . g:argv
|
||||
"echo cmd
|
||||
"let eout = system( cmd )
|
||||
"echo eout
|
||||
endfunction
|
||||
|
||||
function! s:CompileWindows(run) "{{{2
|
||||
let ext=expand("%:e")
|
||||
if ext=="java"
|
||||
call s:CompileJava(a:run)
|
||||
endif
|
||||
if ext=="cpp"
|
||||
call s:CompileMSVC(a:run)
|
||||
endif
|
||||
if ext=="c"
|
||||
call s:CompileMSVC(a:run)
|
||||
endif
|
||||
if ext=="py"
|
||||
call s:InterpretPython(a:run)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
"
|
||||
" Linux {{{1
|
||||
" GCC
|
||||
"
|
||||
function! s:CompileGCC(run) "{{{2
|
||||
let exename=expand("%:p:r:s,$,.exe,")
|
||||
@@ -128,20 +90,49 @@ function! s:CompileGCC(run) "{{{2
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:CompileLinux(run) "{{{2
|
||||
let ext=expand("%:e")
|
||||
if ext=="java"
|
||||
call s:CompileJava(a:run)
|
||||
function! s:CompileJava(run) "{{{2
|
||||
" compile it
|
||||
let cmd = "javac " . g:javaflags . " " . expand("%")
|
||||
echo cmd
|
||||
let cout = system( cmd )
|
||||
echo cout
|
||||
if v:shell_error
|
||||
return
|
||||
endif
|
||||
if ext=="cpp"
|
||||
call s:CompileGCC(a:run)
|
||||
" run it
|
||||
"let classpath=expand("%:p:r")
|
||||
let exename=expand("%:r")
|
||||
let cmd = "java " . exename . " " . g:argv
|
||||
echo cmd
|
||||
let eout = system( cmd )
|
||||
echo eout
|
||||
endfunction
|
||||
|
||||
function! s:InterpretPython(run)
|
||||
" Interpret it
|
||||
let cmd = "python " . g:pyflags . " " . expand("%")
|
||||
echo cmd
|
||||
let cout = system( cmd )
|
||||
echo cout
|
||||
if v:shell_error
|
||||
return
|
||||
endif
|
||||
if ext=="c"
|
||||
call s:CompileGCC(a:run)
|
||||
endfunction
|
||||
|
||||
function! s:Compile(run)
|
||||
if &filetype=="c" || &filetype=="cpp"
|
||||
if has("win32") || has("win64")
|
||||
call s:CompileMSVC(a:run)
|
||||
else
|
||||
call s:CompileGCC(a:run)
|
||||
endif
|
||||
endif
|
||||
if ext=="py"
|
||||
if &filetype=="python"
|
||||
call s:InterpretPython(a:run)
|
||||
endif
|
||||
if &filetype=="java"
|
||||
call s:CompileJava(a:run)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
"
|
||||
@@ -197,23 +188,13 @@ function! s:clearOutputWindow()
|
||||
endif
|
||||
endfunction
|
||||
"
|
||||
" Init global variables with default values. {{{1
|
||||
"
|
||||
function! s:initDefaults()
|
||||
let g:cf5output=0
|
||||
let g:argv=""
|
||||
let g:pyflags=""
|
||||
let g:cppflags=""
|
||||
let g:wcppflags="/O2 /EHsc /DWIN32"
|
||||
let g:lcppflags="-O2"
|
||||
let g:ldflags=""
|
||||
let g:wldflags=""
|
||||
let g:ldlibpath=""
|
||||
endfunction
|
||||
"
|
||||
" Load compile instructions and call window or linux compiler. {{{1
|
||||
"
|
||||
function! CF5Compile(run)
|
||||
"
|
||||
" Interpreters and compilers don't work with buffers, but ratter they run
|
||||
" on files. So, make sure that the file is updated.
|
||||
"
|
||||
if &modified == 1
|
||||
echo "The buffer is not saved. First save it."
|
||||
return
|
||||
@@ -226,9 +207,6 @@ function! CF5Compile(run)
|
||||
" Set source specific compiler options.
|
||||
"
|
||||
call FirstModeLine()
|
||||
"if exists("g:cf5script")
|
||||
" execute g:cf5script
|
||||
"endif
|
||||
"
|
||||
" Clear output window
|
||||
"
|
||||
@@ -236,10 +214,6 @@ function! CF5Compile(run)
|
||||
"
|
||||
" Compile.
|
||||
"
|
||||
if has("win32") || has("win64")
|
||||
call s:CompileWindows(a:run)
|
||||
else
|
||||
call s:CompileLinux(a:run)
|
||||
endif
|
||||
call s:Compile(a:run)
|
||||
endfunction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user