From 656c694bf9afbee08b2781709e1b2d2f07cfc2b7 Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Fri, 7 Nov 2014 22:03:56 +0400 Subject: [PATCH 1/3] Fix: CF5 compiler runs through temporary BAT file. --- vim/plugin/cf5-compiler.vim | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/vim/plugin/cf5-compiler.vim b/vim/plugin/cf5-compiler.vim index e8a475a..2632428 100755 --- a/vim/plugin/cf5-compiler.vim +++ b/vim/plugin/cf5-compiler.vim @@ -35,12 +35,19 @@ function! s:CompileMSVC(run) "{{{2 endif echo cout " run it - if a:run==1 - let cmdline="\"set PATH=".g:ldlibpath.$PATH." && ".exename." ".g:argv."\"" - echo exename." ".g:argv - "echo cmdline - let eout = system( cmdline ) + if a:run==1 + let en = "set PATH=\"".g:ldlibpath."%PATH%\"" + let cmdline=exename." ".g:argv + let cont = [ en, cmdline ] + let tf = tempname() + let tf = fnamemodify( tf, ":p:r") + let tf = tf.".bat" + call writefile( cont, tf ) + + let eout = system( tf ) echo eout + + call delete( tf ) endif endfunction From 85c79ae795ad62e92e9da78b592eba4b03a10a61 Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Mon, 10 Nov 2014 15:07:46 +0400 Subject: [PATCH 2/3] Code refactoring. --- vim/plugin/cf5-compiler.vim | 146 +++++++++++++++--------------------- 1 file changed, 60 insertions(+), 86 deletions(-) diff --git a/vim/plugin/cf5-compiler.vim b/vim/plugin/cf5-compiler.vim index 2632428..c8310e5 100755 --- a/vim/plugin/cf5-compiler.vim +++ b/vim/plugin/cf5-compiler.vim @@ -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 From b5f2f51f868f367c8d38daaa1d057f83b9770ad5 Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Wed, 12 Nov 2014 18:28:52 +0400 Subject: [PATCH 3/3] local-vimrc: find all .vimrc.local files in the dir hierarchy and source them. --- vim/plugin/local-vimrc.vim | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/vim/plugin/local-vimrc.vim b/vim/plugin/local-vimrc.vim index 0493b2c..54b0b23 100644 --- a/vim/plugin/local-vimrc.vim +++ b/vim/plugin/local-vimrc.vim @@ -38,16 +38,24 @@ function s:LoadConfig() return endif + let l:paths = [] let l:pathp = "" - while !filereadable(l:path.'/.vimrc') && l:pathp != l:path + while l:pathp != l:path + let l:vimrc = l:path.'/.vimrc.local' + if filereadable(l:vimrc) && l:vimrc != $MYVIMRC + let l:paths = [ l:vimrc ] + l:paths + endif +"echo 'try'.l:path + let l:pathp = l:path let l:path = fnamemodify(l:path, ":h") endwhile + +"echo l:paths + for vimrc in l:paths + exec ":source " . vimrc + endfor - let l:vimrc = l:path . '/.vimrc' - if filereadable(l:vimrc) && l:vimrc != $MYVIMRC - exec ":source " . l:vimrc - endif endfunction " Section: Plugin completion