diff --git a/vimfiles.stefan/doc/bmsk.txt b/vimfiles.stefan/doc/bmsk.txt index 05112ef..2e394eb 100644 --- a/vimfiles.stefan/doc/bmsk.txt +++ b/vimfiles.stefan/doc/bmsk.txt @@ -10,7 +10,7 @@ |BMSK.7| DAMOS-Tools ============================================================================== -*BMSK.1* Auswählen des Projektes *Projekt* *Project* *BMSK* +*BMSK.1* Auswählen des Projektes *BMSK* Ein BMSK-Projekt bezieht sich nicht auf eine VIM-Session, sondern nur auf den Build-Prozess des BMSK-Projektes. Mit dem Auswählen eines Projektes werden nur diff --git a/vimfiles.stefan/doc/tags b/vimfiles.stefan/doc/tags index 26e99b7..5144864 100644 --- a/vimfiles.stefan/doc/tags +++ b/vimfiles.stefan/doc/tags @@ -1,7 +1,5 @@ :BMSK-cscope bmsk.txt /*:BMSK-cscope* :BMSK-ctags bmsk.txt /*:BMSK-ctags* -:Bmsk bmsk.txt /*:Bmsk* -:BmskDoku bmsk.txt /*:BmskDoku* :BuffersUpdate bmsk.txt /*:BuffersUpdate* :CCMchangeable ccm.txt /*:CCMchangeable* :CCMcheckout ccm.txt /*:CCMcheckout* @@ -17,6 +15,8 @@ :GrepBmsk bmsk.txt /*:GrepBmsk* :InsertCHeader vimsuite.txt /*:InsertCHeader* :Lint bmsk.txt /*:Lint* +:Make bmsk.txt /*:Make* +:MakeDoku bmsk.txt /*:MakeDoku* :MarkLongLines vimsuite.txt /*:MarkLongLines* :MarkLongLinesOff vimsuite.txt /*:MarkLongLinesOff* :RENAMEoutput bmsk.txt /*:RENAMEoutput* @@ -34,6 +34,7 @@ :SetEgas bmsk.txt /*:SetEgas* :SetMotorvariante bmsk.txt /*:SetMotorvariante* :SetMuster bmsk.txt /*:SetMuster* +:SetProject vimsuite.txt /*:SetProject* :SetSWStand bmsk.txt /*:SetSWStand* :SetXlint bmsk.txt /*:SetXlint* :SyntaxShowGroup vimsuite.txt /*:SyntaxShowGroup* @@ -61,8 +62,8 @@ DelAllTrailingWhitespace vimsuite.txt /*DelAllTrailingWhitespace* DirDiff vimsuite.txt /*DirDiff* GrepDir vimsuite.txt /*GrepDir* GrepFiles vimsuite.txt /*GrepFiles* -Project bmsk.txt /*Project* -Projekt bmsk.txt /*Projekt* +Project vimsuite.txt /*Project* +Projekt vimsuite.txt /*Projekt* Reformat vimsuite.txt /*Reformat* SVN svn.txt /*SVN* SVNstudio svn.txt /*SVNstudio* @@ -72,7 +73,10 @@ Synergy/CM ccm.txt /*Synergy\/CM* VimSuite vimsuite.txt /*VimSuite* VimSuiteEinstellungen vimsuite.txt /*VimSuiteEinstellungen* VimSuiteInstallation vimsuite.txt /*VimSuiteInstallation* +VimSuiteProject vimsuite.txt /*VimSuiteProject* +VimSuiteProjekt vimsuite.txt /*VimSuiteProjekt* VimSuiteTools vimsuite.txt /*VimSuiteTools* +Workarea vimsuite.txt /*Workarea* b:GrepDir vimsuite.txt /*b:GrepDir* b:GrepFiles vimsuite.txt /*b:GrepFiles* b:commentstring vimsuite.txt /*b:commentstring* @@ -83,6 +87,7 @@ ccm.txt ccm.txt /*ccm.txt* cscope_macros vimsuite.txt /*cscope_macros* g:GrepDir vimsuite.txt /*g:GrepDir* g:GrepFiles vimsuite.txt /*g:GrepFiles* +g:WA vimsuite.txt /*g:WA* projects.txt bmsk.txt /*projects.txt* svn svn.txt /*svn* svn.txt svn.txt /*svn.txt* @@ -92,4 +97,5 @@ vimsuite.1 vimsuite.txt /*vimsuite.1* vimsuite.2 vimsuite.txt /*vimsuite.2* vimsuite.3 vimsuite.txt /*vimsuite.3* vimsuite.4 vimsuite.txt /*vimsuite.4* +vimsuite.5 vimsuite.txt /*vimsuite.5* vimsuite.txt vimsuite.txt /*vimsuite.txt* diff --git a/vimfiles.stefan/doc/vimsuite.txt b/vimfiles.stefan/doc/vimsuite.txt index 1212f03..bfae5f6 100644 --- a/vimfiles.stefan/doc/vimsuite.txt +++ b/vimfiles.stefan/doc/vimsuite.txt @@ -4,7 +4,8 @@ |vimsuite.1| Bestandteile |vimsuite.2| Installation |vimsuite.3| Einstellungen -|vimsuite.4| VimSuiteTools +|vimsuite.4| Projekte +|vimsuite.5| VimSuiteTools ============================================================================== *vimsuite.1* Bestandteile der VimSuite *VimSuite* *vimsuite* *Bestandteile* @@ -49,6 +50,10 @@ Einstellungen f gemacht werden. Alternativ kann dort ein eigenes vimrc-File mit|source|geladen werden. + *g:WA* *Workarea* +Die Variable g:WA sollte auf ein Verzeichnis zeigen, in dem die Projekte der +VimSuite liegen. Standard ist 'C:/wa'. + *b:GrepFiles* *g:GrepFiles* *GrepFiles* Die Variable b:GrepFiles kann z.B. in einem|filetype-plugin|gesetzt werden. g:GrepFiles ist normalerweise *. Für C-Projekte kann die Variable z.B. > @@ -67,9 +72,38 @@ Diese Variable wird verwendet, um Code auszukommentieren. Sie sollte in einem |filetype-plugin|gesetzt werden. ============================================================================== -*vimsuite.4* VimSuiteTools *VimSuiteTools* +*vimsuite.4* Projekte *Projekt* *Project* *VimSuiteProjekt* *VimSuiteProject* - *:SessionLoad* +Ein Projekt bezieht sich nicht auf eine VIM-Session, sondern auf ein +Entwicklungsprojekt. Im Menü VimSuite->Project werden alle erkannten Projekte +aufgelistet. Das Projekt kann mit dem Menü oder folgendem Befehl geladen +werden: + + *:SetProject* +:SetProject [file] (Tab-Erweiterung funktioniert) Laden eines Projekts. + +Ein Projekt sollte die Datei project.vim enthalten. Nach dieser Datei sucht +die VimSuite für die Auswahl von Projekten in allen Unterverzeichnissen von +|g:WA|. Eine Beispiel für Projekte, die ihre eigene Konfiguration verändern +können ist in project_example.vim und settings_example.vim zu sehen. Die +zweite Datei wird über den Make-Befehl 'Make vim-config' erzeugt und von der +ersten geladen. Die Datei project.vim kann aber auch beliebig anders aussehen. +Sie wird lediglich bei|SetProject| geladen. + +============================================================================== +*vimsuite.5* VimSuiteTools *VimSuiteTools* + +Um die Arbeit auf Windows-Systemen zu erleichtern, sind im Ordner tools ein +paar Programme, die auf diesem System üblicherweise nicht vorhanden sind: +- ctags.exe: http://ctags.sourceforge.net +- cscope.exe: http://cscope.sourceforge.net +- pythonXX.dll: http://www.python.org +- patch.exe, tee.exe: http://www.mingw.org +- DirDiff.bat: Diese Datei kann in's 'SendTo' Verzeichnis kopiert werden. + Anschließend können im Explorer zwei Verzeichnisse markiert und mit + |DirDiff|verglichen werden. + + *:SessionLoad* :SessionLoad [Name] Laden der Session mit dem Namen Name. Ruft|:source|Name auf. Falls kein Name angegeben wird, öffnet sich ein diff --git a/vimfiles.stefan/project_example.vim b/vimfiles.stefan/project_example.vim new file mode 100644 index 0000000..251257b --- /dev/null +++ b/vimfiles.stefan/project_example.vim @@ -0,0 +1,295 @@ +let s:project_file = expand('') + +if exists('s:did_projectplugin') + finish +endif +let s:did_projectplugin='myProject' +let current_compiler = 'myCompiler' + +" ======== +" Settings +" ======== +function s:ProjectCreateSettings(setting_file) + echo 'Create' a:setting_file + if !exists('s:makeCommand') + let s:makeCommand = expand(s:basedir . '/make.bat') + endif + let command = escape(s:makeCommand, ' \') . ' vim-config' + echo command + call system(command) + if !filereadable(a:setting_file) + throw 'Could not create Settings-file ' . a:setting_file + endif +endfunction + +function s:ProjectLoadSettings() + let s:basedir = fnamemodify(s:project_file, ':h') + execute 'cd ' . s:basedir + let s:setting_file = expand(s:basedir . '/out/settings.vim') + + " Create setting file + if !filereadable(s:setting_file) + call s:ProjectCreateSettings() + endif + + " Load setting file + try + echo 'Load ' . s:setting_file + " don't use 'source', so you can use script-variables + for command in readfile(s:setting_file) + execute command + endfor + catch + echoerr 'could not read' s:setting_file + endtry +endfunction + +" ===== +" Menue +" ===== +let s:ProjectMenuLocation = 90 +let s:ProjectMenuName = '&BMSX.' + +function s:ProjectRedrawMenu() + " Settings + " ... + " Compile + exec 'anoremenu .30.10 '.s:ProjectMenuName. + \'&Compile.&Build:Make'. + \' :Make' + exec 'anoremenu ..40 '.s:ProjectMenuName. + \'&Compile.&Clean:Make\ clean'. + \' :Make clean' + exec 'anoremenu ..45 '.s:ProjectMenuName. + \'&Compile.&Clean\ all:Make\ distclean'. + \' :Make distclean' + exec 'anoremenu ..50 '. s:ProjectMenuName. + \'&Compile.-sep- :' + exec 'anoremenu ..60 '.s:ProjectMenuName. + \'&Compile.&Show\ Errors:cl'. + \' :cl' + exec 'anoremenu ..70 '.s:ProjectMenuName. + \'&Compile.&Open\ Error\ Window:copen'. + \' :copen' + exec 'anoremenu ..75 '.s:ProjectMenuName. + \'&Compile.&Parse\ make\.log:cfile\ out/make\.log'. + \' :cfile out/make.log' + exec 'anoremenu ..80 '.s:ProjectMenuName. + \'&Compile.Goto\ &Error:cc'. + \' :cc' + exec 'anoremenu ..90 '.s:ProjectMenuName. + \'&Compile.Goto\ &next\ Error:cn'. + \' :cn' + " Search + exec 'anoremenu ..20 '.s:ProjectMenuName. + \'&Search.Goto\ &Cscope-Tag:cscope'. + \' :cscope find i ' + exec 'anoremenu ..30 '.s:ProjectMenuName. + \'&Search.Goto\ &CTag:tag'. + \' :tag ' + exec 'anoremenu ..40 '.s:ProjectMenuName. + \'&Search.List\ &CTags:tselect'. + \' :tselect /' + exec 'anoremenu ..50 '.s:ProjectMenuName. + \'&Search.Update\ c&tags:Make\ ctags'. + \' :Make ctags' + exec 'anoremenu ..60 '.s:ProjectMenuName. + \'&Search.Update\ C&scope:Make\ cscope'. + \' :Make cscope' + exec 'anoremenu ..70 '.s:ProjectMenuName. + \'&Search.Disconnect\ C&scope:cscope\ kill\ -1'. + \' :cscope kill -1' +endfunction + +" ==== +" Make +" ==== +function s:GetMakeOptions(args) + let makeopts = a:args + return makeopts +endfunction + +function GetAllMakeCompletions(...) + return join(s:makegoals + s:makeopts, "\n") +endfunction + +command -complete=custom,GetAllMakeCompletions -nargs=* Make call s:Make('') +function s:Make(args) + echo a:args + CscopeDisconnect + execute 'make ' . s:GetMakeOptions(a:args) + CscopeConnect + try + clist + catch /E42/ " list is empty + echo 'no output' + endtry +endfunction + +" ----------------- +" CSCOPE-Connection +" ----------------- +command CscopeConnect call s:CscopeConnect(s:cscopefile) +function s:CscopeConnect(cscopefile) + if filereadable(a:cscopefile) + execute 'cscope add ' . a:cscopefile + "else + "echomsg 'cscope: Could not connect: File ' . a:cscopefile . ' does not exist' + endif +endfunction + +command CscopeDisconnect call s:CscopeDisconnect() +function s:CscopeDisconnect() + cscope kill -1 +endfunction + +" ======== +" Settings +" ======== +" ... + +" ===== +" Tools +" ===== +" ... + +" ======== +" Compiler +" ======== +function s:SetCompiler() + " clear errorformats + set errorformat= + setlocal errorformat= + " stdout and stderr to stdout and file + let &shellpipe = '2>&1 | ' . g:tee + " automatic errorfilename + set makeef= + + " ------- + " Doxygen + " ------- + set errorformat+=%t%.%#:\ Doxygen:\ %f:%l:\ %m + + " ----- + " LaTeX + " ----- + set errorformat+=%t%.%#:\ LaTeX:\ %f:%l:\ %m + + " ---------- + " A2L-Parser + " ---------- + set errorformat+=%t%.%#:\ Yacc:\ %f:%l:\ %m + set errorformat+=%t%.%#:\ Yacc:\ %f:\ %m + + " ----- + " BMS-X + " ----- + set errorformat+=BMS-X:\ %tarning:\ %f:\ %m + set errorformat+=BMS-X:\ %tarning:\ %m + set errorformat+=BMS-X:\ %trror:\ %f:\ %m + set errorformat+=BMS-X:\ %trror:\ %m + + " ----- + " scons + " ----- + set errorformat+=%+Gscons:\ ***\ %m + set errorformat+=%+Gscons:\ %m\ is\ up\ to\ date. + set errorformat+=%+Gscons:\ done\ building\ targets. + set errorformat+=%Dos.chdir('%f') + set errorformat+=scons:\ %tarning:\ %m + + " ------ + " python + " ------ + set errorformat+=%f:%l:\ User%tarning:\ %m + + set errorformat+=%E%\\s%#File\ \"%f\"\\,\ line\ %l\\,\ %m + set errorformat+=%C%m + set errorformat+=%Z%.%#Error:\ %m + + set errorformat+=%E%\\s%#File\ \"\"\\,\ line\ %l + set errorformat+=%C%m + set errorformat+=%-C\ %p^ + set errorformat+=%Z%.%#Error:\ %m + + " ------- + " PC-Lint + " ------- + set errorformat+=\"%f\"\\,\ line\ %l:\ %t%.%#\ \(pclint:%n\):%m + set errorformat+=%t%.%#\ %n:\ %m + set errorformat+=%t%.%#\ \(pclint:%n\):\ %m + " ------- + " SP-Lint + " ------- + set errorformat+=%A%f\(%l\):\ %m + set errorformat+=%A%f\(%l\): + set errorformat+=%A%f\(%l\\,%c\):\ %m + set errorformat+=%A%f\(%l\\,%c\): + set errorformat+=%C\ \ \ \ %m + + " --- + " gcc + " --- + set errorformat+=%f:%l:%c:\ %t%*\\w:\ \[%n\]\ %m + set errorformat+=%*[^\"]\"%f\"%*\\D%l:\ %m + set errorformat+=\"%f\"%*\\D%l:\ %m + set errorformat+=%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once + set errorformat+=%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.) + set errorformat+=%f:%l:\ %m + set errorformat+=\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m + set errorformat+=%D%*\\a[%*\\d]:\ Entering\ directory\ `%f' + set errorformat+=%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f' + set errorformat+=%D%*\\a:\ Entering\ directory\ `%f' + set errorformat+=%X%*\\a:\ Leaving\ directory\ `%f' + set errorformat+=%DMaking\ %*\\a\ in\ %f + + " ----- + " Tools + " ----- + set errorformat+=%+G/bin/%.%#:\ %m + set errorformat+=%+G%.%#.exe:\ %m + set errorformat+=%+G%.%#.exe[%*\\d]:\ ***\ %m + + " Error format from other programs: ...: ... + "set errorformat+=%+G%f:\ %m +endfunction + + +" ================ +" Start of session +" ================ +function s:ProjectOnStart() + " Load Settings + call s:ProjectLoadSettings() + " Menu + call s:ProjectRedrawMenu() + exec 'anoremenu .42 Hilfe.-MyProject- :' + exec 'anoremenu .43 Hilfe.MyProject :help myProject' + + " Titel-Leiste + set titlelen=100 + let &titlestring = '%t - (%-F) - %=' + + " Make Settings + let &cdpath = s:basedir + let &path = s:path + set notagrelative + let &tags = s:tags + let &cscopeprg = s:cscopeprg + let &makeprg = s:makeCommand . ' $*' + call s:SetCompiler() + CscopeDisconnect + CscopeConnect +endfunction + +command ProjectUpdate call s:ProjectUpdate() +function s:ProjectUpdate() + " rewrite vim-config + Make vim-config + " reload file + execute 'SetProject ' . s:project_file + call s:ProjectOnStart() +endfunction + +call s:ProjectOnStart() + diff --git a/vimfiles.stefan/settings_example.vim b/vimfiles.stefan/settings_example.vim new file mode 100644 index 0000000..be76f11 --- /dev/null +++ b/vimfiles.stefan/settings_example.vim @@ -0,0 +1,22 @@ +" vim: filetype=vim + +" ======== +" Settings +" ======== +let s:path = "c:/wa/bmsx,,c:/wa/bmsx/src/**,c:/wa/bmsx/out/k48_c1/d" +let s:tags = "c:/wa/bmsx/src/config/damos/tags,c:/wa/tools/python/2.5.1/tags,c:/wa/bmsx/src/make/tools/scons/tags,c:/wa/tools/shade/programme/makefile/v2.9.2/tags,c:/wa/bmsx/src/sg/z6xv/bosch/make.tags,c:/wa/bmsx/src/make/tags,c:/wa/bmsx/src/fsw/**/tags,c:/wa/bmsx/src/kt/**/tags,c:/wa/bmsx/src/bdl/**/tags,c:/wa/bmsx/src/sg/**/tags,c:/wa/bmsx/src/os/**/tags" +let s:cscopeprg = "c:/wa/bmsx/src/make/tools/tags/cscope.exe" +let s:cscopefile = "c:/wa/bmsx/out/k48_c1/cscope.out" +let s:makegoals = ["-h","-c","objs","lsts","metric","libs","doxygen-view-fsw","asms","doxygen-install-server","branch","ctags","doxygen-view-bdl","bosch-osp-ref","lint","tags","developertest","delivery","funktionsdoku","doxygen-view-os","doxygen-view-make","doxygen-view-sg","damos-dfiles","doxygen","doxygen-view-kt","vim-config","doxygen-view","shade","distclean","cscope","integrationstest","shade-config","lint-project","labelstex","kgs-ref","miktex-update","bmw-a2l","stags","a2l-parse","dtags","merged-a2l","shade-proj-tags","doxygen-conf","ptags","doxygen-install","damos-osp","functionstex","damos-config","mtags","shade-tags","tags-all"] +let s:makeopts = ["Motor=","Muster=","Stand=","verbose=","EXTRA_CCFLAGS=","funktionen=","CR=","text="] +let s:Motor = "K48" +let s:MotorVarianten = ["K48","K4X-EGAS","KXX","K7X-EGAS","K2X-EGAS"] +let s:Muster = "C1" +let s:MusterVarianten = ["C1"] +let s:SW_Stand = "Test" +let s:StandVarianten = ["Test","Release","Bosch"] +let s:basedir = "c:/wa/bmsx" +let s:Project = "bmsx" +let s:makeCommand = "c:/wa/bmsx/make.bat" +let g:sessionfile = "c:/wa/bmsx/out/session.vim" + diff --git a/vimfiles.stefan/tools/cscope.exe b/vimfiles.stefan/tools/cscope.exe index a7f70d1..4bae06d 100644 Binary files a/vimfiles.stefan/tools/cscope.exe and b/vimfiles.stefan/tools/cscope.exe differ