Code refactoring.

This commit is contained in:
2014-11-10 15:07:46 +04:00
parent 656c694bf9
commit 85c79ae795

View File

@@ -1,6 +1,5 @@
" "
" "
" {{{1
" Functions to compile and link a single c/cpp/java files. " Functions to compile and link a single c/cpp/java files.
" "
" let g:cf5output " let g:cf5output
@@ -20,7 +19,22 @@ if !exists('*FirstModeLine')
endif 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 function! s:CompileMSVC(run) "{{{2
let exename=expand("%:p:r:s,$,.exe,") let exename=expand("%:p:r:s,$,.exe,")
@@ -51,60 +65,8 @@ function! s:CompileMSVC(run) "{{{2
endif endif
endfunction 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 function! s:CompileGCC(run) "{{{2
let exename=expand("%:p:r:s,$,.exe,") let exename=expand("%:p:r:s,$,.exe,")
@@ -128,20 +90,49 @@ function! s:CompileGCC(run) "{{{2
endif endif
endfunction endfunction
function! s:CompileLinux(run) "{{{2 function! s:CompileJava(run) "{{{2
let ext=expand("%:e") " compile it
if ext=="java" let cmd = "javac " . g:javaflags . " " . expand("%")
call s:CompileJava(a:run) echo cmd
let cout = system( cmd )
echo cout
if v:shell_error
return
endif endif
if ext=="cpp" " run it
call s:CompileGCC(a:run) "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 endif
if ext=="c" endfunction
call s:CompileGCC(a:run)
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 endif
if ext=="py" if &filetype=="python"
call s:InterpretPython(a:run) call s:InterpretPython(a:run)
endif endif
if &filetype=="java"
call s:CompileJava(a:run)
endif
endfunction endfunction
" "
@@ -197,23 +188,13 @@ function! s:clearOutputWindow()
endif endif
endfunction 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 " Load compile instructions and call window or linux compiler. {{{1
" "
function! CF5Compile(run) 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 if &modified == 1
echo "The buffer is not saved. First save it." echo "The buffer is not saved. First save it."
return return
@@ -226,9 +207,6 @@ function! CF5Compile(run)
" Set source specific compiler options. " Set source specific compiler options.
" "
call FirstModeLine() call FirstModeLine()
"if exists("g:cf5script")
" execute g:cf5script
"endif
" "
" Clear output window " Clear output window
" "
@@ -236,10 +214,6 @@ function! CF5Compile(run)
" "
" Compile. " Compile.
" "
if has("win32") || has("win64") call s:Compile(a:run)
call s:CompileWindows(a:run)
else
call s:CompileLinux(a:run)
endif
endfunction endfunction