project.vim wird von make erzeugt und inkludiert
git-svn-id: https://vimsuite.svn.sourceforge.net/svnroot/vimsuite/trunk@139 eb2d0018-73a3-4aeb-bfe9-1def61c9ec69
This commit is contained in:
parent
ce727f6410
commit
bcb2bb581f
@ -1,114 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: diab data 4.4
|
|
||||||
" Maintainer: Stefan Liebl
|
|
||||||
" Last Change: 13.06.2002
|
|
||||||
|
|
||||||
"if exists('current_compiler')
|
|
||||||
" finish
|
|
||||||
"endif
|
|
||||||
"let current_compiler = 'bcc'
|
|
||||||
|
|
||||||
set errorformat=
|
|
||||||
" tex-errorformat laden
|
|
||||||
let b:forceRedoTexCompiler = 'yes'
|
|
||||||
let g:Tex_ShowallLines = 1
|
|
||||||
"execute 'source ' . expand(g:vimfiles . '/compiler/tex.vim')
|
|
||||||
|
|
||||||
if exists('g:make_log')
|
|
||||||
let &shellpipe = '| ' . g:tee . PathNormpath(make_log) . ' | ' . g:tee
|
|
||||||
else
|
|
||||||
let &shellpipe = '| ' . g:tee
|
|
||||||
endif
|
|
||||||
set makeef=
|
|
||||||
|
|
||||||
" -------------------------------------
|
|
||||||
" Diab-Data-Compiler, Assembler, Linker
|
|
||||||
" -------------------------------------
|
|
||||||
" dcc_info, dcc_warning, dcc_error, dcc_fatal
|
|
||||||
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %t%.%#\ \(dcc:%n\):%m
|
|
||||||
" dcc_fatal
|
|
||||||
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %tatal\ error\ \(dcc:%n\):%m
|
|
||||||
setlocal errorformat+=%tatal\ error\ \(dcc:%n\):%m
|
|
||||||
" das_error
|
|
||||||
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %t[a-z]:%m
|
|
||||||
" dld_error
|
|
||||||
setlocal errorformat+=d%td:%m
|
|
||||||
setlocal errorformat+=d%td.EXE:%m
|
|
||||||
" -------
|
|
||||||
" PC-Lint
|
|
||||||
" -------
|
|
||||||
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %t%.%#\ \(pclint:%n\):%m
|
|
||||||
setlocal errorformat+=%t%.%#\ \(pclint:%n\):%m
|
|
||||||
" -------
|
|
||||||
" SP-Lint
|
|
||||||
" -------
|
|
||||||
"setlocal errorformat+=%f\(%l,%c\):\ %m
|
|
||||||
setlocal errorformat+=%A%f\(%l\):\ %m
|
|
||||||
setlocal errorformat+=%A%f\(%l\):
|
|
||||||
setlocal errorformat+=%A%f\(%l\\,%c\):\ %m
|
|
||||||
setlocal errorformat+=%A%f\(%l\\,%c\):
|
|
||||||
setlocal errorformat+=%C\ \ \ \ %m
|
|
||||||
" --------
|
|
||||||
" GNU-Make
|
|
||||||
" --------
|
|
||||||
setlocal errorformat+=%f:%l:\ %m
|
|
||||||
setlocal errorformat+=%f:%l:%t%.%#:\ %m
|
|
||||||
setlocal errorformat+=%+G%.%#make.exe:\ %m
|
|
||||||
setlocal errorformat+=%+G%.%#make%.%#.sh:\ %m
|
|
||||||
setlocal errorformat+=%+G%.%#mkdir.exe:\ %m
|
|
||||||
setlocal errorformat+=%+G%.%#cp.exe:\ %m
|
|
||||||
setlocal errorformat+=%+G%.%#rm.exe:\ %m
|
|
||||||
" ---------
|
|
||||||
" BMSK make
|
|
||||||
" ---------
|
|
||||||
setlocal errorformat+=bmsk:\ %m
|
|
||||||
" ------------
|
|
||||||
" python error
|
|
||||||
" ------------
|
|
||||||
setlocal errorformat+=%+G%.%#python.exe:\ %m
|
|
||||||
"setlocal errorformat+=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
|
|
||||||
" -----
|
|
||||||
" DAMOS
|
|
||||||
" -----
|
|
||||||
" Damos error
|
|
||||||
setlocal errorformat +=%PDAM-S-INPUTFILEOPENED\ %f%*\\s
|
|
||||||
setlocal errorformat +=%PDAM-S-OUTPUTFILEOPENED\ %f%*\\s
|
|
||||||
setlocal errorformat +=%QDAM-S-FILECLOSED\ %f%*\\s
|
|
||||||
"setlocal errorformat +=%PDAM-S-OSP-OPENING-SEQ-OSP\ %f%*\\s
|
|
||||||
setlocal errorformat +=%QDAM-S-OSP-CLOSE\ %f%*\\s
|
|
||||||
" ignore 'DAM-W-KONS-SW-IGNORED'
|
|
||||||
setlocal errorformat+=%-O%.%#DAM-W-KONS-SW-IGNORED
|
|
||||||
" Damos Info-Feld
|
|
||||||
"setlocal errorformat +=%-I\|\ DAM-I-%m,
|
|
||||||
" \%-Z+-%#
|
|
||||||
" Damos Warning- oder Error-Feld
|
|
||||||
" DAM-W-...
|
|
||||||
setlocal errorformat +=%A\ %#\|\ DAM-%t-%m,
|
|
||||||
\%C\ %#\|\%*\\sZeile\ %l%m,
|
|
||||||
\%C\ %#\|\%*\\sZeile\ %f:\ %l%m,
|
|
||||||
\%C\ %#\|\ %#%m,
|
|
||||||
\%-Z\ %#+-%#
|
|
||||||
" Damos: Kenngrößen, die in mehr als einer SG-Funktion definiert sind:
|
|
||||||
" Kgs: ... Fkt: ...
|
|
||||||
setlocal errorformat +=%+WKenngrößen%m
|
|
||||||
setlocal errorformat +=%+WKgs:%m
|
|
||||||
" Damos: Ram-Größen, die in einer SG-Funktion enthalten sind,
|
|
||||||
" aber nicht im OSp existieren:
|
|
||||||
" Ram: ... Fkt: ...
|
|
||||||
setlocal errorformat +=%+WRam-Größen%m,
|
|
||||||
\%+Zaber%m
|
|
||||||
" Damos: Lokale Ram-Größen, die referenziert werden:
|
|
||||||
" Ram: ... Fkt: ...
|
|
||||||
setlocal errorformat +=%+WLokale\ Ram-Größen%m
|
|
||||||
setlocal errorformat +=%+WRam:%m
|
|
||||||
"
|
|
||||||
setlocal errorformat +=%W%\\%#%#DAM-S-KGR-PLS-EXCEEDED%m:%*\\s,
|
|
||||||
\%CDAM-S-KGR-PLS-EXCEEDED%m,
|
|
||||||
\%-Z+-%#
|
|
||||||
" ignore uninterresting lines
|
|
||||||
" ---------------------------
|
|
||||||
" ignore 'ignoring option ...'
|
|
||||||
setlocal errorformat+=%-Oignoring\ option%.%#
|
|
||||||
" ignore 'file: 123: #error ...'
|
|
||||||
setlocal errorformat+=%-O%*\\S\ %*\\d:\ #%.%#
|
|
||||||
|
|
@ -144,7 +144,7 @@ function s:ReportRev(Rev)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" uncomment next line to get changelog for the last version
|
" uncomment next line to get changelog for the last version
|
||||||
execute 'call s:ReportRev(' . g:VimFilesRevision . ')'
|
"execute 'call s:ReportRev(' . g:VimFilesRevision . ')'
|
||||||
|
|
||||||
" comment changelog after first usage
|
" comment changelog after first usage
|
||||||
silent! new <sfile>
|
silent! new <sfile>
|
||||||
|
@ -24,11 +24,12 @@ let g:projectFile = fnamemodify($VIMRUNTIME . '/../projects.txt', ':p')
|
|||||||
" ----------
|
" ----------
|
||||||
" SetProject
|
" SetProject
|
||||||
" ----------
|
" ----------
|
||||||
if (v:version > 602)
|
command -complete=customlist,GetAllMakefiles -nargs=? SetProject call s:SetProject('<args>')
|
||||||
command -complete=customlist,GetAllMakefiles -nargs=? SetProject call SetProject('<args>')
|
" only for backward compatibility
|
||||||
else
|
command -nargs=? SetBmskProject
|
||||||
command -nargs=1 SetProject call SetProject('<args>')
|
\ execute 'source ' . g:vimfiles . '/tools/bmsk.vim'
|
||||||
endif
|
\ | SetBmskProject <args>
|
||||||
|
|
||||||
"function GetAllMakefiles(ArgLead, CmdLine, CursorPos)
|
"function GetAllMakefiles(ArgLead, CmdLine, CursorPos)
|
||||||
function GetAllMakefiles(...)
|
function GetAllMakefiles(...)
|
||||||
let makefilePaths = []
|
let makefilePaths = []
|
||||||
@ -86,7 +87,7 @@ endfunction
|
|||||||
|
|
||||||
" Find makefile and set some options
|
" Find makefile and set some options
|
||||||
" ----------------------------------
|
" ----------------------------------
|
||||||
function SetProject(makefile)
|
function s:SetProject(makefile)
|
||||||
if ((a:makefile == '') && has('browse'))
|
if ((a:makefile == '') && has('browse'))
|
||||||
" Browse for makefile
|
" Browse for makefile
|
||||||
if exists('g:WA')
|
if exists('g:WA')
|
||||||
@ -129,19 +130,15 @@ function SetProject(makefile)
|
|||||||
" search path
|
" search path
|
||||||
set path&
|
set path&
|
||||||
|
|
||||||
call s:SetProjectVariables()
|
call s:GetProjectVariables()
|
||||||
|
call s:EvalProjectVariables()
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Set Project Specific Variables
|
" Get Project Specific Variables
|
||||||
function s:SetProjectVariables()
|
function s:GetProjectVariables()
|
||||||
let varnames = [
|
let varnames = [
|
||||||
\ 'VIM_COMPILER',
|
\ 'VIM_CONFIGFILE',
|
||||||
\ 'VIM_PATH',
|
|
||||||
\ 'VIM_TAGS',
|
|
||||||
\ 'VIM_CSCOPEPRG',
|
|
||||||
\ 'VIM_CSCOPEFILE',
|
|
||||||
\ 'GOALS',
|
|
||||||
\]
|
\]
|
||||||
let s:Variables = GetMakeVars(varnames)
|
let s:Variables = GetMakeVars(varnames)
|
||||||
|
|
||||||
@ -152,73 +149,33 @@ function s:SetProjectVariables()
|
|||||||
endfor
|
endfor
|
||||||
echo '-------------------------------'
|
echo '-------------------------------'
|
||||||
echo ''
|
echo ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Evaluate Project Specific Variables
|
||||||
|
function s:EvalProjectVariables()
|
||||||
try
|
try
|
||||||
" evaluate path variable
|
" evaluate path variable
|
||||||
if s:Variables['VIM_PATH'] != ''
|
if s:Variables['VIM_CONFIGFILE'] != ''
|
||||||
|
if !filereadable(s:Variables['VIM_CONFIGFILE'])
|
||||||
|
" try to create config-file
|
||||||
|
make vim-config
|
||||||
|
endif
|
||||||
try
|
try
|
||||||
execute 'set path=' . s:Variables['VIM_PATH']
|
execute 'source ' . s:Variables['VIM_CONFIGFILE']
|
||||||
catch
|
catch
|
||||||
echoerr 'cant set path to "' . s:Variables['VIM_PATH'] . '"'
|
echoerr 'cant source "' . s:Variables['VIM_CONFIGFILE'] . '"'
|
||||||
echoerr 'check the make variable VIM_PATH'
|
echoerr 'check the make variable VIM_CONFIGFILE'
|
||||||
endtry
|
endtry
|
||||||
else
|
else
|
||||||
echomsg 'set the make-variable VIM_PATH to what you want to be set to path'
|
echomsg 'set the make-variable VIM_CONFIGFILE to the project-config file for vim'
|
||||||
|
echomsg 'For old BMSK-Projects try :SetBmskProject'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" evaluate tags
|
|
||||||
if s:Variables['VIM_TAGS'] != ''
|
|
||||||
try
|
|
||||||
execute 'set tags=' . s:Variables['VIM_TAGS']
|
|
||||||
catch
|
|
||||||
echoerr 'cant set tags to "' . s:Variables['VIM_TAGS'] . '"'
|
|
||||||
echoerr 'check the make variable VIM_TAGS'
|
|
||||||
endtry
|
|
||||||
else
|
|
||||||
echomsg 'set the make-variable VIM_TAGS to what you want to be set to tags'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" evaluate cscope
|
|
||||||
if s:Variables['VIM_CSCOPEPRG'] != ''
|
|
||||||
try
|
|
||||||
execute 'set cscopeprg=' . s:Variables['VIM_CSCOPEPRG']
|
|
||||||
catch
|
|
||||||
echoerr 'cant set cscopeprg to "' . s:Variables['VIM_CSCOPEPRG'] . '"'
|
|
||||||
echoerr 'check the make variable VIM_CSCOPEPRG'
|
|
||||||
endtry
|
|
||||||
else
|
|
||||||
echomsg 'set the make-variable VIM_CSCOPEPRG to what you want to be set to cscopeprg'
|
|
||||||
endif
|
|
||||||
if s:Variables['VIM_CSCOPEFILE'] != ''
|
|
||||||
try
|
|
||||||
cscope kill -1
|
|
||||||
execute 'cscope add ' . s:Variables['VIM_CSCOPEFILE']
|
|
||||||
catch
|
|
||||||
echomsg 'cant add cscope-file "' . s:Variables['VIM_CSCOPEFILE'] . '"'
|
|
||||||
echomsg 'check the make variable VIM_CSCOPEFILE and if file exists'
|
|
||||||
endtry
|
|
||||||
else
|
|
||||||
echomsg 'set the make-variable VIM_CSCOPEFILE if you want to add a cscope-database'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" evaluate compiler
|
|
||||||
if s:Variables['VIM_COMPILER'] != ''
|
|
||||||
try
|
|
||||||
execute 'compiler ' . s:Variables['VIM_COMPILER']
|
|
||||||
catch
|
|
||||||
echoerr 'cant set compiler to "' . s:Variables['VIM_COMPILER'] . '"'
|
|
||||||
echoerr 'check the make variable VIM_COMPILER'
|
|
||||||
endtry
|
|
||||||
else
|
|
||||||
echomsg 'set the make-variable VIM_COMPILER to the compiler plugin you want to use'
|
|
||||||
endif
|
|
||||||
|
|
||||||
catch /E716/ " Schlüssel nicht vorhanden
|
catch /E716/ " Schlüssel nicht vorhanden
|
||||||
echomsg v:exception
|
echomsg v:exception
|
||||||
|
echomsg 'For old BMSK-Projects try :SetBmskProject'
|
||||||
catch
|
catch
|
||||||
echoerr 'Error while reading make-variables: ' . v:exception
|
echoerr 'Error while reading make-variables: ' . v:exception
|
||||||
endtry
|
endtry
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Get values for a list of variables as dictionary
|
" Get values for a list of variables as dictionary
|
||||||
@ -230,7 +187,7 @@ function GetMakeVars(varNameList)
|
|||||||
"echomsg command
|
"echomsg command
|
||||||
let output = system(command)
|
let output = system(command)
|
||||||
let lines = split(output, "\n")
|
let lines = split(output, "\n")
|
||||||
if len(lines) == 1
|
if len(lines) == 1 && len(a:varNameList) == 1 && match(lines[0], '=') < 0
|
||||||
" make output: value
|
" make output: value
|
||||||
let RE = '\(.*\)'
|
let RE = '\(.*\)'
|
||||||
let SU = "let varlist['" . vars . "']='\\1'"
|
let SU = "let varlist['" . vars . "']='\\1'"
|
||||||
@ -243,7 +200,9 @@ function GetMakeVars(varNameList)
|
|||||||
for line in lines
|
for line in lines
|
||||||
"echomsg line
|
"echomsg line
|
||||||
if match(line, RE) >= 0
|
if match(line, RE) >= 0
|
||||||
execute substitute(line, RE, SU, '')
|
let command = substitute(line, RE, SU, '')
|
||||||
|
"echomsg command
|
||||||
|
execute command
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
"echomsg ''
|
"echomsg ''
|
||||||
@ -274,63 +233,6 @@ function GetMakeVar(varName)
|
|||||||
return varValue
|
return varValue
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" ------------------------------------------
|
|
||||||
" special make-command for target-completion
|
|
||||||
" ------------------------------------------
|
|
||||||
" Command
|
|
||||||
command -complete=customlist,GetAllMakeGoals -nargs=* Make call s:Make('<args>')
|
|
||||||
" Targets
|
|
||||||
function GetAllMakeGoals(...)
|
|
||||||
return g:GetAllMakeGoals()
|
|
||||||
endfunction
|
|
||||||
function s:GetDefaultMakeGoals(...)
|
|
||||||
" evaluate make-goals
|
|
||||||
if s:Variables['GOALS'] != ''
|
|
||||||
try
|
|
||||||
let goals = split(s:Variables['GOALS'])
|
|
||||||
return goals
|
|
||||||
catch
|
|
||||||
echoerr 'cant set goals to ' . s:Variables['GOALS']
|
|
||||||
echoerr 'check the make variable GOALS'
|
|
||||||
endtry
|
|
||||||
else
|
|
||||||
echomsg 'set the make-variable VIM_COMPILER to the compiler plugin you want to use'
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
let g:GetAllMakeGoals = function('s:GetDefaultMakeGoals')
|
|
||||||
" Options
|
|
||||||
function GetDefaultMakeOpts()
|
|
||||||
return ''
|
|
||||||
endfunction
|
|
||||||
let g:GetMakeOptsFunction = function("GetDefaultMakeOpts")
|
|
||||||
function s:Make(args)
|
|
||||||
echo a:args
|
|
||||||
cscope kill -1
|
|
||||||
let makeopts = g:GetMakeOptsFunction()
|
|
||||||
execute ':make ' . a:args . makeopts
|
|
||||||
call s:CscopeConnect()
|
|
||||||
clist
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
" -----------------
|
|
||||||
" CSCOPE-Connection
|
|
||||||
" -----------------
|
|
||||||
command CscopeConnect call s:CscopeConnect()
|
|
||||||
function s:CscopeConnect()
|
|
||||||
try
|
|
||||||
let cscopefile = s:Variables['VIM_CSCOPEFILE']
|
|
||||||
if filereadable(cscopefile)
|
|
||||||
execute 'cscope add ' . cscopefile
|
|
||||||
elseif cscopefile == ''
|
|
||||||
echomsg 'cscope: Could not connect: Make-variable "VIM_CSCOPEFILE" is empty'
|
|
||||||
else
|
|
||||||
echomsg 'cscope: Could not connect: File ' . cscopefile . ' does not exist'
|
|
||||||
endif
|
|
||||||
catch /E716/ " Schlüssel nicht vorhanden
|
|
||||||
echomsg 'cscope: Could not connect: Make-variable "VIM_CSCOPEFILE" is empty'
|
|
||||||
endtry
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" ------------------
|
" ------------------
|
||||||
" Draw Vimsuite-Menu
|
" Draw Vimsuite-Menu
|
||||||
@ -452,7 +354,7 @@ function s:DelSessions()
|
|||||||
exec 'anoremenu '.s:VimSuiteMenuLocation.'.20 '.s:VimSuiteMenuName.
|
exec 'anoremenu '.s:VimSuiteMenuLocation.'.20 '.s:VimSuiteMenuName.
|
||||||
\'&Session.&Save<tab>:SessionSave'.
|
\'&Session.&Save<tab>:SessionSave'.
|
||||||
\' :SessionSave<CR>'
|
\' :SessionSave<CR>'
|
||||||
exec 'anoremenu '.s:VimSuiteMenuLocation.'.20 '.s:VimSuiteMenuName.
|
exec 'anoremenu '.s:VimSuiteMenuLocation.'.30 '.s:VimSuiteMenuName.
|
||||||
\'&Session.Save\ &As<tab>:SessionSave'.
|
\'&Session.Save\ &As<tab>:SessionSave'.
|
||||||
\' :let v:this_session = ""<CR>:SessionSave<CR>'
|
\' :let v:this_session = ""<CR>:SessionSave<CR>'
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -19,12 +19,36 @@ let s:BMSKmenuname = '&BMSK.'
|
|||||||
" Set Project
|
" Set Project
|
||||||
" -----------
|
" -----------
|
||||||
command -complete=dir -nargs=1 SetBmskWA let g:bmskWA = '<args>'
|
command -complete=dir -nargs=1 SetBmskWA let g:bmskWA = '<args>'
|
||||||
command -complete=custom,GetAllBmskProjects -nargs=? SetBmskProject
|
command! -complete=custom,GetAllBmskProjects -nargs=? SetBmskProject
|
||||||
\ call s:SetBmskProject('<args>')
|
\ call s:SetBmskProject('<args>')
|
||||||
|
|
||||||
function s:SetBmskProject(basedir)
|
function s:SetBmskProject(basedir)
|
||||||
if (a:basedir == '')
|
if ((a:basedir == '') && has('browse'))
|
||||||
let makefile = ''
|
" Browse for makefile
|
||||||
|
if exists('g:bmskWA')
|
||||||
|
let l:bmskWA = g:bmskWA
|
||||||
|
else
|
||||||
|
let l:bmskWA = ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('b:browsefilter')
|
||||||
|
let l:browsefilter = b:browsefilter
|
||||||
|
endif
|
||||||
|
let b:browsefilter =
|
||||||
|
\ 'Makefiles (make_fsw.bat)\tmake_fsw.bat\n' .
|
||||||
|
\ 'Makefiles (makefile*)\tmakefile*\n' .
|
||||||
|
\ 'All Files (*.*)\t*.*'
|
||||||
|
let makefile = browse(0, 'Select makefile', l:bmskWA, '')
|
||||||
|
if exists('l:browsefilter')
|
||||||
|
let b:browsefilter = l:browsefilter
|
||||||
|
endif
|
||||||
|
let basedir = fnamemodify(makefile, ':p:h')
|
||||||
|
let makefile = fnamemodify(makefile, ':t')
|
||||||
|
if ((makefile == 'make_fsw.bat') || (makefile == 'makefile.mak') || (makefile == 'makefile'))
|
||||||
|
call s:SetBmskDirs(basedir)
|
||||||
|
else
|
||||||
|
echo 'No makefile:' makefile
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
" set Workarea and basedir
|
" set Workarea and basedir
|
||||||
if (isdirectory(a:basedir))
|
if (isdirectory(a:basedir))
|
||||||
@ -32,19 +56,17 @@ function s:SetBmskProject(basedir)
|
|||||||
let makefile = fnamemodify(a:basedir . '/make_fsw.bat', ':p')
|
let makefile = fnamemodify(a:basedir . '/make_fsw.bat', ':p')
|
||||||
if !filereadable(makefile)
|
if !filereadable(makefile)
|
||||||
let makefile = glob(a:basedir . '/*/make_fsw.bat')
|
let makefile = glob(a:basedir . '/*/make_fsw.bat')
|
||||||
|
let basedir = fnamemodify(makefile, ':p:h')
|
||||||
endif
|
endif
|
||||||
if !filereadable(makefile)
|
if (filereadable(makefile))
|
||||||
echoerr 'No makefile' makefile
|
call s:SetBmskDirs(basedir)
|
||||||
|
else
|
||||||
|
echo 'No makefile' makefile
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
echoerr 'No directory:' a:basedir
|
echo 'No directory:' a:basedir
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
call SetProject(makefile)
|
|
||||||
let GetMakeOptsFunction = function('GetBmskMakeOpts')
|
|
||||||
let g:GetAllMakeGoals = function('GetAllBmskTargets')
|
|
||||||
let basedir = getcwd()
|
|
||||||
call s:SetBmskDirs(basedir)
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function GetAllBmskProjects(ArgLead, CmdLine, CursorPos)
|
function GetAllBmskProjects(ArgLead, CmdLine, CursorPos)
|
||||||
@ -122,8 +144,8 @@ function s:BmskRedrawMenu()
|
|||||||
\'&Compile.&Build<tab>:Make'.
|
\'&Compile.&Build<tab>:Make'.
|
||||||
\' :Make<CR>'
|
\' :Make<CR>'
|
||||||
exec 'anoremenu ..20 '.s:BMSKmenuname.
|
exec 'anoremenu ..20 '.s:BMSKmenuname.
|
||||||
\'&Compile.&Alle\ Teststände<tab>:BmskAll\ Test'.
|
\'&Compile.&Alle\ Teststände<tab>:MakeAll\ Test'.
|
||||||
\' :BmskAll Test<CR>'
|
\' :MakeAll Test<CR>'
|
||||||
exec 'anoremenu ..30 '.s:BMSKmenuname.
|
exec 'anoremenu ..30 '.s:BMSKmenuname.
|
||||||
\'&Compile.&Lint<tab>:Lint'.
|
\'&Compile.&Lint<tab>:Lint'.
|
||||||
\' :Lint<CR>'
|
\' :Lint<CR>'
|
||||||
@ -131,8 +153,8 @@ function s:BmskRedrawMenu()
|
|||||||
\'&Compile.&Doku\ erstellen<tab>:Make\ doku'.
|
\'&Compile.&Doku\ erstellen<tab>:Make\ doku'.
|
||||||
\' :Make doku<CR>'
|
\' :Make doku<CR>'
|
||||||
exec 'anoremenu ..36 '.s:BMSKmenuname.
|
exec 'anoremenu ..36 '.s:BMSKmenuname.
|
||||||
\'&Compile.&Einzeldoku\ erstellen<tab>:BmskDoku\ doku\ funktionen="\.\.\."'.
|
\'&Compile.&Einzeldoku\ erstellen<tab>:MakeDoku\ doku\ funktionen="\.\.\."'.
|
||||||
\' :BmskDoku<CR>'
|
\' :MakeDoku<CR>'
|
||||||
exec 'anoremenu ..40 '.s:BMSKmenuname.
|
exec 'anoremenu ..40 '.s:BMSKmenuname.
|
||||||
\'&Compile.&Clean<tab>:Make\ clean'.
|
\'&Compile.&Clean<tab>:Make\ clean'.
|
||||||
\' :Make clean<CR>'
|
\' :Make clean<CR>'
|
||||||
@ -206,11 +228,11 @@ function s:BmskRedrawMenu()
|
|||||||
\' :cscope kill -1<CR>'
|
\' :cscope kill -1<CR>'
|
||||||
" BuildManager
|
" BuildManager
|
||||||
exec 'anoremenu .60.10 '.s:BMSKmenuname.
|
exec 'anoremenu .60.10 '.s:BMSKmenuname.
|
||||||
\'&BuildManager.&Entwicklerstand<tab>:BmskAll\ Entwickler'.
|
\'&BuildManager.&Entwicklerstand<tab>:MakeAll\ Entwickler'.
|
||||||
\' :BmskAll Entwickler<CR>'
|
\' :MakeAll Entwickler<CR>'
|
||||||
exec 'anoremenu ..20 '.s:BMSKmenuname.
|
exec 'anoremenu ..20 '.s:BMSKmenuname.
|
||||||
\'&BuildManager.&Serienstand<tab>:BmskAll\ Serie'.
|
\'&BuildManager.&Serienstand<tab>:MakeAll\ Serie'.
|
||||||
\' :BmskAll Serie<CR>'
|
\' :MakeAll Serie<CR>'
|
||||||
exec 'anoremenu ..30 '.s:BMSKmenuname.
|
exec 'anoremenu ..30 '.s:BMSKmenuname.
|
||||||
\'&BuildManager.&Deliver\ Products<tab>:CopyProgrammstand'.
|
\'&BuildManager.&Deliver\ Products<tab>:CopyProgrammstand'.
|
||||||
\' :CopyProgrammstand<CR>'
|
\' :CopyProgrammstand<CR>'
|
||||||
@ -406,6 +428,7 @@ function s:SetBmskDirs(bmskdir)
|
|||||||
unlet! g:Goals
|
unlet! g:Goals
|
||||||
unlet! g:Programname
|
unlet! g:Programname
|
||||||
unlet! g:OutDirVariante
|
unlet! g:OutDirVariante
|
||||||
|
unlet! g:bmsk_stand
|
||||||
|
|
||||||
" Variablen erzeugen, damit GetMakeVar funktioniert
|
" Variablen erzeugen, damit GetMakeVar funktioniert
|
||||||
if !exists('g:Muster')
|
if !exists('g:Muster')
|
||||||
@ -429,7 +452,9 @@ function s:SetBmskDirs(bmskdir)
|
|||||||
|
|
||||||
" cd to bmskdir
|
" cd to bmskdir
|
||||||
execute 'cd ' . g:bmskdir
|
execute 'cd ' . g:bmskdir
|
||||||
compiler bmsk
|
|
||||||
|
" Make
|
||||||
|
call s:SetBmskCompiler()
|
||||||
|
|
||||||
" Default-Werte aus Make übernehmen
|
" Default-Werte aus Make übernehmen
|
||||||
call GetAllMakeVars()
|
call GetAllMakeVars()
|
||||||
@ -455,6 +480,8 @@ function s:SetBmskDirs(bmskdir)
|
|||||||
let g:bmskProject = fnamemodify(g:bmskdir, ':h:h:t')
|
let g:bmskProject = fnamemodify(g:bmskdir, ':h:h:t')
|
||||||
let g:bmsk_sw = fnamemodify(g:bmskdir . '/sw', ':p')
|
let g:bmsk_sw = fnamemodify(g:bmskdir . '/sw', ':p')
|
||||||
let g:bmsk_bios = fnamemodify(g:bmskdir . '/sw/bios', ':p')
|
let g:bmsk_bios = fnamemodify(g:bmskdir . '/sw/bios', ':p')
|
||||||
|
let g:bmsk_d = GetDfilesDir()
|
||||||
|
let g:bmsk_stand = GetStandDir()
|
||||||
let g:OutDir = GetOutDir()
|
let g:OutDir = GetOutDir()
|
||||||
let g:OutDirVariante = GetOutDirVariante()
|
let g:OutDirVariante = GetOutDirVariante()
|
||||||
let g:bmsk_ext = '*.c *.h *.kgs *.d *.dat *.mak *.inv'
|
let g:bmsk_ext = '*.c *.h *.kgs *.d *.dat *.mak *.inv'
|
||||||
@ -481,11 +508,20 @@ function s:SetBmskDirs(bmskdir)
|
|||||||
let &path = substitute(&path, '\\', '/', 'g')
|
let &path = substitute(&path, '\\', '/', 'g')
|
||||||
" files for tags (may not start with './', since . is the path of the
|
" files for tags (may not start with './', since . is the path of the
|
||||||
" current file
|
" current file
|
||||||
|
let &tags = substitute(GetCTagsFile(), '^\..', '', '') . ',' . substitute(GetPTagsFile() , '^\..', '', '')
|
||||||
|
|
||||||
" Grep Dir and Extentions
|
" Grep Dir and Extentions
|
||||||
let g:GrepDir = g:bmsk_sw
|
let g:GrepDir = g:bmsk_sw
|
||||||
let g:GrepFiles = '*.c *.h *.kgs'
|
let g:GrepFiles = '*.c *.h *.kgs'
|
||||||
|
|
||||||
|
" cscope
|
||||||
|
let &cscopeprg = GetCscopePrg()
|
||||||
|
cscope kill -1
|
||||||
|
let reffile = GetCscopeFile()
|
||||||
|
if (filereadable(reffile))
|
||||||
|
execute 'cscope add' reffile
|
||||||
|
endif
|
||||||
|
|
||||||
call s:BmskRedrawMenu()
|
call s:BmskRedrawMenu()
|
||||||
call GetGoals()
|
call GetGoals()
|
||||||
|
|
||||||
@ -499,6 +535,110 @@ function s:SetBmskDirs(bmskdir)
|
|||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function s:SetBmskCompiler()
|
||||||
|
set errorformat=
|
||||||
|
" tex-errorformat laden
|
||||||
|
let b:forceRedoTexCompiler = 'yes'
|
||||||
|
let g:Tex_ShowallLines = 1
|
||||||
|
"execute 'source ' . expand(g:vimfiles . '/compiler/tex.vim')
|
||||||
|
|
||||||
|
let g:makeCommand = g:bmskdir . 'make_fsw.bat'
|
||||||
|
let &makeprg = g:makeCommand . ' $*'
|
||||||
|
let &shellpipe = '| ' . g:tee
|
||||||
|
set makeef=
|
||||||
|
|
||||||
|
" -------------------------------------
|
||||||
|
" Diab-Data-Compiler, Assembler, Linker
|
||||||
|
" -------------------------------------
|
||||||
|
" dcc_info, dcc_warning, dcc_error, dcc_fatal
|
||||||
|
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %t%.%#\ \(dcc:%n\):%m
|
||||||
|
" dcc_fatal
|
||||||
|
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %tatal\ error\ \(dcc:%n\):%m
|
||||||
|
setlocal errorformat+=%tatal\ error\ \(dcc:%n\):%m
|
||||||
|
" das_error
|
||||||
|
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %t[a-z]:%m
|
||||||
|
" dld_error
|
||||||
|
setlocal errorformat+=d%td:%m
|
||||||
|
setlocal errorformat+=d%td.EXE:%m
|
||||||
|
" -------
|
||||||
|
" PC-Lint
|
||||||
|
" -------
|
||||||
|
setlocal errorformat+=\"%f\"\\,\ line\ %l:\ %t%.%#\ \(pclint:%n\):%m
|
||||||
|
setlocal errorformat+=%t%.%#\ \(pclint:%n\):%m
|
||||||
|
" -------
|
||||||
|
" SP-Lint
|
||||||
|
" -------
|
||||||
|
"setlocal errorformat+=%f\(%l,%c\):\ %m
|
||||||
|
setlocal errorformat+=%A%f\(%l\):\ %m
|
||||||
|
setlocal errorformat+=%A%f\(%l\):
|
||||||
|
setlocal errorformat+=%A%f\(%l\\,%c\):\ %m
|
||||||
|
setlocal errorformat+=%A%f\(%l\\,%c\):
|
||||||
|
setlocal errorformat+=%C\ \ \ \ %m
|
||||||
|
" --------
|
||||||
|
" GNU-Make
|
||||||
|
" --------
|
||||||
|
setlocal errorformat+=%f:%l:\ %m
|
||||||
|
setlocal errorformat+=%f:%l:%t%.%#:\ %m
|
||||||
|
setlocal errorformat+=%+G%.%#make.exe:\ %m
|
||||||
|
setlocal errorformat+=%+G%.%#make%.%#.sh:\ %m
|
||||||
|
setlocal errorformat+=%+G%.%#mkdir.exe:\ %m
|
||||||
|
setlocal errorformat+=%+G%.%#cp.exe:\ %m
|
||||||
|
setlocal errorformat+=%+G%.%#rm.exe:\ %m
|
||||||
|
" ---------
|
||||||
|
" BMSK make
|
||||||
|
" ---------
|
||||||
|
setlocal errorformat+=bmsk:\ %m
|
||||||
|
" ------------
|
||||||
|
" python error
|
||||||
|
" ------------
|
||||||
|
setlocal errorformat+=%+G%.%#python.exe:\ %m
|
||||||
|
"setlocal errorformat+=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
|
||||||
|
" -----
|
||||||
|
" DAMOS
|
||||||
|
" -----
|
||||||
|
" Damos error
|
||||||
|
setlocal errorformat +=%PDAM-S-INPUTFILEOPENED\ %f%*\\s
|
||||||
|
setlocal errorformat +=%PDAM-S-OUTPUTFILEOPENED\ %f%*\\s
|
||||||
|
setlocal errorformat +=%QDAM-S-FILECLOSED\ %f%*\\s
|
||||||
|
"setlocal errorformat +=%PDAM-S-OSP-OPENING-SEQ-OSP\ %f%*\\s
|
||||||
|
setlocal errorformat +=%QDAM-S-OSP-CLOSE\ %f%*\\s
|
||||||
|
" ignore 'DAM-W-KONS-SW-IGNORED'
|
||||||
|
setlocal errorformat+=%-O%.%#DAM-W-KONS-SW-IGNORED
|
||||||
|
" Damos Info-Feld
|
||||||
|
"setlocal errorformat +=%-I\|\ DAM-I-%m,
|
||||||
|
" \%-Z+-%#
|
||||||
|
" Damos Warning- oder Error-Feld
|
||||||
|
" DAM-W-...
|
||||||
|
setlocal errorformat +=%A\ %#\|\ DAM-%t-%m,
|
||||||
|
\%C\ %#\|\%*\\sZeile\ %l%m,
|
||||||
|
\%C\ %#\|\%*\\sZeile\ %f:\ %l%m,
|
||||||
|
\%C\ %#\|\ %#%m,
|
||||||
|
\%-Z\ %#+-%#
|
||||||
|
" Damos: Kenngrößen, die in mehr als einer SG-Funktion definiert sind:
|
||||||
|
" Kgs: ... Fkt: ...
|
||||||
|
setlocal errorformat +=%+WKenngrößen%m
|
||||||
|
setlocal errorformat +=%+WKgs:%m
|
||||||
|
" Damos: Ram-Größen, die in einer SG-Funktion enthalten sind,
|
||||||
|
" aber nicht im OSp existieren:
|
||||||
|
" Ram: ... Fkt: ...
|
||||||
|
setlocal errorformat +=%+WRam-Größen%m,
|
||||||
|
\%+Zaber%m
|
||||||
|
" Damos: Lokale Ram-Größen, die referenziert werden:
|
||||||
|
" Ram: ... Fkt: ...
|
||||||
|
setlocal errorformat +=%+WLokale\ Ram-Größen%m
|
||||||
|
setlocal errorformat +=%+WRam:%m
|
||||||
|
"
|
||||||
|
setlocal errorformat +=%W%\\%#%#DAM-S-KGR-PLS-EXCEEDED%m:%*\\s,
|
||||||
|
\%CDAM-S-KGR-PLS-EXCEEDED%m,
|
||||||
|
\%-Z+-%#
|
||||||
|
" ignore uninterresting lines
|
||||||
|
" ---------------------------
|
||||||
|
" ignore 'ignoring option ...'
|
||||||
|
setlocal errorformat+=%-Oignoring\ option%.%#
|
||||||
|
" ignore 'file: 123: #error ...'
|
||||||
|
setlocal errorformat+=%-O%*\\S\ %*\\d:\ #%.%#
|
||||||
|
endfunction
|
||||||
|
|
||||||
" make backups
|
" make backups
|
||||||
set backup " keep a backup file
|
set backup " keep a backup file
|
||||||
set backupext=~
|
set backupext=~
|
||||||
@ -515,6 +655,7 @@ function GetAllMakeVars()
|
|||||||
let varnames['OutDir'] = 'OUTDIR'
|
let varnames['OutDir'] = 'OUTDIR'
|
||||||
let varnames['ProductDir'] = 'OUTDIR_PRODUCTS'
|
let varnames['ProductDir'] = 'OUTDIR_PRODUCTS'
|
||||||
let varnames['DfilesDir'] = 'OUTDIR_D_FILES'
|
let varnames['DfilesDir'] = 'OUTDIR_D_FILES'
|
||||||
|
let varnames['bmsk_stand'] = 'OUTDIR_STAND'
|
||||||
let varnames['OutDirVariante'] = 'OUTDIR_VARIANTE'
|
let varnames['OutDirVariante'] = 'OUTDIR_VARIANTE'
|
||||||
let varnames['CscopePrg'] = 'CSCOPE'
|
let varnames['CscopePrg'] = 'CSCOPE'
|
||||||
let varnames['CscopeFile'] = 'CSCOPEFILE'
|
let varnames['CscopeFile'] = 'CSCOPEFILE'
|
||||||
@ -577,6 +718,33 @@ function GetProductDir()
|
|||||||
return g:ProductDir
|
return g:ProductDir
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" ---------------------
|
||||||
|
function GetDfilesDir()
|
||||||
|
" ---------------------
|
||||||
|
if !exists('g:DfilesDir')
|
||||||
|
let g:DfilesDir = GetMakeVar('D_FILES_DIR')
|
||||||
|
if (g:DfilesDir == '')
|
||||||
|
let g:DfilesDir = GetMakeVar('OUTDIR_D_FILES')
|
||||||
|
endif
|
||||||
|
if (g:DfilesDir != '')
|
||||||
|
let g:DfilesDir = fnamemodify(g:DfilesDir, ':p')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return g:DfilesDir
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" --------------------
|
||||||
|
function GetStandDir()
|
||||||
|
" --------------------
|
||||||
|
if !exists('g:bmsk_stand')
|
||||||
|
let g:bmsk_stand = GetMakeVar('OUTDIR_STAND')
|
||||||
|
endif
|
||||||
|
if (g:bmsk_stand != '')
|
||||||
|
let g:bmsk_stand = fnamemodify(g:bmsk_stand, ':p')
|
||||||
|
endif
|
||||||
|
return g:bmsk_stand
|
||||||
|
endfunction
|
||||||
|
|
||||||
" --------------------------
|
" --------------------------
|
||||||
function GetOutDirVariante()
|
function GetOutDirVariante()
|
||||||
" --------------------------
|
" --------------------------
|
||||||
@ -589,13 +757,61 @@ function GetOutDirVariante()
|
|||||||
return g:OutDirVariante
|
return g:OutDirVariante
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" ----------------------
|
||||||
|
function GetCscopePrg()
|
||||||
|
" ----------------------
|
||||||
|
if !exists('g:CscopePrg')
|
||||||
|
let g:CscopePrg = GetMakeVar('CSCOPE')
|
||||||
|
endif
|
||||||
|
if (g:CscopePrg != '')
|
||||||
|
let g:CscopePrg = fnamemodify(g:CscopePrg, ':p')
|
||||||
|
endif
|
||||||
|
return g:CscopePrg
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" ----------------------
|
||||||
|
function GetCscopeFile()
|
||||||
|
" ----------------------
|
||||||
|
if !exists('g:CscopeFile')
|
||||||
|
let g:CscopeFile = GetMakeVar('CSCOPEFILE')
|
||||||
|
endif
|
||||||
|
if (g:CscopeFile != '')
|
||||||
|
let g:CscopeFile = fnamemodify(g:CscopeFile, ':p')
|
||||||
|
endif
|
||||||
|
return g:CscopeFile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" ---------------------
|
||||||
|
function GetCTagsFile()
|
||||||
|
" ---------------------
|
||||||
|
if !exists('g:CTagsFile')
|
||||||
|
let g:CTagsFile = GetMakeVar('CTAGFILE')
|
||||||
|
endif
|
||||||
|
if (g:CTagsFile != '')
|
||||||
|
let g:CTagsFile = fnamemodify(g:CTagsFile, ':p')
|
||||||
|
endif
|
||||||
|
return g:CTagsFile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" ---------------------
|
||||||
|
function GetPTagsFile()
|
||||||
|
" ---------------------
|
||||||
|
if !exists('g:PTagsFile')
|
||||||
|
let g:PTagsFile = GetMakeVar('PTAGFILE')
|
||||||
|
endif
|
||||||
|
if (g:PTagsFile != '')
|
||||||
|
let g:PTagsFile = fnamemodify(g:PTagsFile, ':p')
|
||||||
|
endif
|
||||||
|
return g:PTagsFile
|
||||||
|
endfunction
|
||||||
|
|
||||||
" -----------------
|
" -----------------
|
||||||
function GetGoals()
|
function GetGoals()
|
||||||
" -----------------
|
" -----------------
|
||||||
if !exists('g:Goals')
|
if !exists('g:Goals')
|
||||||
let g:Goals = GetMakeVar('GOALS')
|
let g:Goals = GetMakeVar('GOALS')
|
||||||
endif
|
endif
|
||||||
return split(g:Goals)
|
return g:Goals
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" -----------------------
|
" -----------------------
|
||||||
@ -625,6 +841,14 @@ command CleanSRCfile %s/^#\t\(\(r\d\{1,2\}\t\)\|\(not allocated\)\)\t\(\(\$\$\d\
|
|||||||
" tags
|
" tags
|
||||||
" ----
|
" ----
|
||||||
|
|
||||||
|
command CscopeConnect call s:CscopeConnect()
|
||||||
|
function s:CscopeConnect()
|
||||||
|
let reffile = GetCscopeFile()
|
||||||
|
if (filereadable(reffile))
|
||||||
|
execute 'cscope add' reffile
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
" significant characters in tags
|
" significant characters in tags
|
||||||
set taglength=0
|
set taglength=0
|
||||||
set notagrelative
|
set notagrelative
|
||||||
@ -637,13 +861,22 @@ command -nargs=? GrepBmsk call GrepFull(GetBmskSwDir(), '*.c *.h *.kgs', '<args>
|
|||||||
" ----------------
|
" ----------------
|
||||||
" Make and compile
|
" Make and compile
|
||||||
" ----------------
|
" ----------------
|
||||||
command -complete=customlist,GetAllBmskTargets -nargs=* Bmsk Make <args>
|
command -complete=custom,GetAllBmskTargets -nargs=* Make call s:Make('<args>')
|
||||||
command -complete=customlist,GetAllBmskTargets -nargs=* BmskDoku call s:BmskDoku('<args>')
|
command -complete=custom,GetAllBmskTargets -nargs=* MakeDoku call s:MakeDoku('<args>')
|
||||||
command -nargs=* Lint Make <args> %:t:r.lint
|
command -nargs=* Lint Make <args> %:t:r.lint
|
||||||
command -complete=customlist,GetAllBmskSWStand -nargs=1 BmskAll call s:BmskAll('<args>')
|
command -complete=customlist,GetAllBmskSWStand -nargs=1 MakeAll call s:MakeAll('<args>')
|
||||||
|
|
||||||
" make options
|
" Programmstand compilieren
|
||||||
function GetBmskMakeOpts()
|
function s:Make(args)
|
||||||
|
echo a:args
|
||||||
|
cscope kill -1
|
||||||
|
call s:SetBmskCompiler()
|
||||||
|
execute 'make! ' . a:args .' '. s:GetMakeOptions()
|
||||||
|
CscopeConnect
|
||||||
|
clist
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function s:GetMakeOptions()
|
||||||
let makeopts = ''
|
let makeopts = ''
|
||||||
if (g:Motor != '')
|
if (g:Motor != '')
|
||||||
let makeopts = makeopts . ' Motor=' . g:Motor
|
let makeopts = makeopts . ' Motor=' . g:Motor
|
||||||
@ -663,27 +896,8 @@ function GetBmskMakeOpts()
|
|||||||
return makeopts
|
return makeopts
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" reformat i-file
|
|
||||||
command ReformatIFile call Reformat_IFile()
|
|
||||||
function Reformat_IFile() abort
|
|
||||||
let cName = expand('%:t:r') . '.c'
|
|
||||||
let CR = '\<CR>'
|
|
||||||
DelAllMultipleEmptyLines
|
|
||||||
" do not wrap over end of file
|
|
||||||
setlocal nowrapscan
|
|
||||||
" go to top of file
|
|
||||||
execute 'normal gg'
|
|
||||||
" do unil error
|
|
||||||
while 1
|
|
||||||
" delete until line of c-file
|
|
||||||
execute 'normal d/\c^# \d\+ ".*\(' . cName . '\)' . CR
|
|
||||||
" go to line of include-file
|
|
||||||
execute 'normal /\c^# \d\+ ".*\(' . cName . '\)\@<!"' . CR
|
|
||||||
endwhile
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Dokumentation erzeugen (Verwenden des LaTeX errorparsers)
|
" Dokumentation erzeugen (Verwenden des LaTeX errorparsers)
|
||||||
function s:BmskDoku(args)
|
function s:MakeDoku(args)
|
||||||
echo a:args
|
echo a:args
|
||||||
let command = 'Make ' . a:args . ' '
|
let command = 'Make ' . a:args . ' '
|
||||||
if match(a:args, '\(^\|\s\)\w\+\($\|\s\+\)') < 0
|
if match(a:args, '\(^\|\s\)\w\+\($\|\s\+\)') < 0
|
||||||
@ -706,7 +920,7 @@ function s:BmskDoku(args)
|
|||||||
|
|
||||||
cscope kill -1
|
cscope kill -1
|
||||||
compiler tex
|
compiler tex
|
||||||
let &makeprg = g:makeprg . ' $*'
|
let &makeprg = g:makeCommand . ' $*'
|
||||||
let latexflags = '-interaction=nonstopmode'
|
let latexflags = '-interaction=nonstopmode'
|
||||||
execute command . ' LATEXFLAGS=' . latexflags
|
execute command . ' LATEXFLAGS=' . latexflags
|
||||||
CscopeConnect
|
CscopeConnect
|
||||||
@ -714,7 +928,7 @@ function s:BmskDoku(args)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Erzeugen aller Programmstände
|
" Erzeugen aller Programmstände
|
||||||
function s:BmskAll(Stand)
|
function s:MakeAll(Stand)
|
||||||
" Software Stand gegebenenfalls einstellen
|
" Software Stand gegebenenfalls einstellen
|
||||||
if (a:Stand != '') && (g:SW_Stand != a:Stand)
|
if (a:Stand != '') && (g:SW_Stand != a:Stand)
|
||||||
call SetSWStand(a:Stand)
|
call SetSWStand(a:Stand)
|
||||||
@ -729,43 +943,44 @@ function GetAllBmskSWStand(ArgLead, CmdLine, CursorPos)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Alle Make-Targets als Text Liste
|
" Alle Make-Targets als Text Liste
|
||||||
function GetAllBmskTargets(...)
|
function GetAllBmskTargets(ArgLead, CmdLine, CursorPos)
|
||||||
let goals = GetGoals()
|
let goals = GetGoals()
|
||||||
if goals == []
|
if goals == ''
|
||||||
let goals += ['Programmstand']
|
let targets = 'Programmstand'
|
||||||
let goals += ['clean']
|
let targets = targets . "\n" . 'clean'
|
||||||
let goals += ['cleanall']
|
let targets = targets . "\n" . 'cleanall'
|
||||||
let goals += ['cleanProducts']
|
let targets = targets . "\n" . 'cleanProducts'
|
||||||
let goals += ['allTest']
|
let targets = targets . "\n" . 'allTest'
|
||||||
let goals += ['allEntwickler']
|
let targets = targets . "\n" . 'allEntwickler'
|
||||||
let goals += ['allSerie']
|
let targets = targets . "\n" . 'allSerie'
|
||||||
let goals += ['patch_a2l']
|
let targets = targets . "\n" . 'patch_a2l'
|
||||||
let goals += ['check_memory']
|
let targets = targets . "\n" . 'check_memory'
|
||||||
let goals += ['create_csv']
|
let targets = targets . "\n" . 'create_csv'
|
||||||
let goals += ['create_arcus_csv']
|
let targets = targets . "\n" . 'create_arcus_csv'
|
||||||
let goals += ['import_arcus_csv']
|
let targets = targets . "\n" . 'import_arcus_csv'
|
||||||
let goals += ['boschsig']
|
let targets = targets . "\n" . 'boschsig'
|
||||||
let goals += ['archivate']
|
let targets = targets . "\n" . 'archivate'
|
||||||
let goals += ['lint file=' . expand('%:p')]
|
let targets = targets . "\n" . 'lint file=' . expand('%:p')
|
||||||
let goals += ['tags']
|
let targets = targets . "\n" . 'tags'
|
||||||
let goals += ['ctags']
|
let targets = targets . "\n" . 'ctags'
|
||||||
let goals += ['ptags']
|
let targets = targets . "\n" . 'ptags'
|
||||||
let goals += ['cscope']
|
let targets = targets . "\n" . 'cscope'
|
||||||
let goals += ['ccm_products_checkout CCM=' . g:ccm]
|
let targets = targets . "\n" . 'ccm_products_checkout CCM=' . g:ccm
|
||||||
let goals += ['help']
|
let targets = targets . "\n" . 'help'
|
||||||
else
|
else
|
||||||
let goals += [expand('%:t:r') . '.obj']
|
let targets = substitute(goals, '\s\+', '\n', 'g')
|
||||||
let goals += [expand('%:t:r') . '.i']
|
let targets = targets . "\n" . expand('%:t:r') . '.obj'
|
||||||
let goals += [expand('%:t:r') . '.src']
|
let targets = targets . "\n" . expand('%:t:r') . '.i'
|
||||||
let goals += [expand('%:t:r') . '.lint']
|
let targets = targets . "\n" . expand('%:t:r') . '.src'
|
||||||
let goals += ['FORCE_PROGID=no']
|
let targets = targets . "\n" . expand('%:t:r') . '.lint'
|
||||||
let goals += ['MAKE_DBG=2']
|
let targets = targets . "\n" . 'FORCE_PROGID=no'
|
||||||
let goals += ['EXTRA_C_FLAGS=']
|
let targets = targets . "\n" . 'MAKE_DBG=2'
|
||||||
let goals += ['DIAB_OPTIMIZE=']
|
let targets = targets . "\n" . 'EXTRA_C_FLAGS='
|
||||||
let goals += ['MAIN_MAKEFILES=']
|
let targets = targets . "\n" . 'DIAB_OPTIMIZE='
|
||||||
let goals += ['ALL_EXIT=']
|
let targets = targets . "\n" . 'MAIN_MAKEFILES='
|
||||||
|
let targets = targets . "\n" . 'ALL_EXIT='
|
||||||
endif
|
endif
|
||||||
return goals
|
return targets
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" -----------------------------------
|
" -----------------------------------
|
||||||
@ -773,7 +988,7 @@ endfunction
|
|||||||
" -----------------------------------
|
" -----------------------------------
|
||||||
command PatchA2L call s:A2L_EXTENTION()
|
command PatchA2L call s:A2L_EXTENTION()
|
||||||
function s:A2L_EXTENTION()
|
function s:A2L_EXTENTION()
|
||||||
execute 'compiler bmsk'
|
call s:SetBmskCompiler()
|
||||||
execute '!start make_fsw.bat patch_a2l ' . g:makeopts . ' & pause'
|
execute '!start make_fsw.bat patch_a2l ' . g:makeopts . ' & pause'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
63
vimfiles.stefan/tools/project.tmpl
Normal file
63
vimfiles.stefan/tools/project.tmpl
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
" vim: filetype=vim
|
||||||
|
|
||||||
|
" ========
|
||||||
|
" Settings
|
||||||
|
" ========
|
||||||
|
compiler $VIM_COMPILER
|
||||||
|
set path=$VIM_PATH
|
||||||
|
set tags=$VIM_TAGS
|
||||||
|
set cscopeprg=$VIM_CSCOPEPRG
|
||||||
|
let s:cscopefile = $VIM_CSCOPEFILE
|
||||||
|
let s:makegoals = $VIM_MAKEGOALS
|
||||||
|
let s:makeopts = $VIM_MAKEOPTS
|
||||||
|
|
||||||
|
if exists('s:did_projectplugin')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let s:did_projectplugin='bmsk'
|
||||||
|
|
||||||
|
" ====
|
||||||
|
" Make
|
||||||
|
" ====
|
||||||
|
function s:GetMakeOptions()
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function GetAllMakeCompletions(...)
|
||||||
|
return join(s:makegoals + s:makeopts, "\n")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command -complete=custom,GetAllMakeCompletions -nargs=* Make call s:Make('<args>')
|
||||||
|
function s:Make(args)
|
||||||
|
echo a:args
|
||||||
|
CscopeDisconnect
|
||||||
|
execute 'make ' . a:args .' '. s:GetMakeOptions()
|
||||||
|
CscopeConnect
|
||||||
|
clist
|
||||||
|
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
|
||||||
|
|
||||||
|
" ================
|
||||||
|
" Start of session
|
||||||
|
" ================
|
||||||
|
function s:ProjectOnStart()
|
||||||
|
CscopeConnect
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call s:ProjectOnStart()
|
@ -18,3 +18,4 @@ ScriptID SourceID Filename
|
|||||||
1772 6973 DAMOS.zip DAMOS tools (von Stefan)
|
1772 6973 DAMOS.zip DAMOS tools (von Stefan)
|
||||||
987 6978 DoxygenToolkit.vim
|
987 6978 DoxygenToolkit.vim
|
||||||
1397 6887 xml.vim
|
1397 6887 xml.vim
|
||||||
|
1290 5190 LogiPat
|
||||||
|
@ -1,328 +0,0 @@
|
|||||||
*getlatestvimscripts.txt* Get the Latest VimScripts Dec 23, 2005
|
|
||||||
|
|
||||||
Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz>
|
|
||||||
(remove NOSPAM from the email address)
|
|
||||||
*GetLatestVimScripts-copyright*
|
|
||||||
Copyright: (c) 2004-2005 by Charles E. Campbell, Jr.
|
|
||||||
The VIM LICENSE applies to GetLatestVimScripts.vim and
|
|
||||||
GetLatestVimScripts.txt (see |copyright|) except use
|
|
||||||
"GetLatestVimScripts" instead of "Vim".
|
|
||||||
No warranty, express or implied. Use At-Your-Own-Risk.
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Contents *glvs-contents*
|
|
||||||
|
|
||||||
1. Contents...........................................: |glvs-contents|
|
|
||||||
2. GetLatestVimScripts -- Getting Started.............: |glvs-install|
|
|
||||||
3. GetLatestVimScripts Usage..........................: |glvs|
|
|
||||||
4. GetLatestVimScripts Data File......................: |glvs-data|
|
|
||||||
5. GetLatestVimScripts Plugins........................: |glvs-plugins|
|
|
||||||
6. GetLatestVimScripts AutoInstall....................: |glvs-autoinstall|
|
|
||||||
7. GetLatestVimScripts Algorithm......................: |glvs-alg|
|
|
||||||
8. GetLatestVimScripts History........................: |glvs-hist|
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. GetLatestVimScripts -- Getting Started *getlatestvimscripts-start*
|
|
||||||
*getlatestvimscripst-install* *glvs-install*
|
|
||||||
|
|
||||||
The last step, that of renaming/moving the GetLatestVimScripts.dist
|
|
||||||
file, is for those who have just downloaded GetLatestVimScripts.tar.bz2
|
|
||||||
for the first time. The GetLatestVimScripts.dist file serves as an
|
|
||||||
example and a template for your own personal list. Feel free to remove
|
|
||||||
all the scripts mentioned within it; the "important" part of it is the
|
|
||||||
first two lines.
|
|
||||||
|
|
||||||
Your computer needs to have wget for GetLatestVimScripts to do its work.
|
|
||||||
|
|
||||||
1. Unix:
|
|
||||||
cd $HOME/.vim
|
|
||||||
bunzip2 GetLatestVimScripts.tar.bz2
|
|
||||||
tar -oxvf GetLatestVimScripts.tar
|
|
||||||
cd GetLatest
|
|
||||||
mv GetLatestVimScripts.dist GetLatestVimScripts.dat
|
|
||||||
vi
|
|
||||||
:helptags ~/.vim/doc
|
|
||||||
|
|
||||||
2. Windows:
|
|
||||||
cd
|
|
||||||
cd vimfiles
|
|
||||||
bunzip2 GetLatestVimScripts.tar.bz2
|
|
||||||
tar -oxvf GetLatestVimScripts.tar
|
|
||||||
cd GetLatest
|
|
||||||
ren GetLatestVimScripts.dist GetLatestVimScripts.dat
|
|
||||||
vi
|
|
||||||
:helptags ~/vimfiles/doc
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. GetLatestVimScripts Usage *getlatestvimscripts* *glvs*
|
|
||||||
|
|
||||||
While in vim, type
|
|
||||||
>
|
|
||||||
:GetLatestVimScripts
|
|
||||||
<
|
|
||||||
Unless its been defined elsewhere,
|
|
||||||
>
|
|
||||||
:GLVS
|
|
||||||
<
|
|
||||||
will also work.
|
|
||||||
|
|
||||||
The script will attempt to update and, if so directed, automatically
|
|
||||||
install scripts from http://vim.sourceforge.net/. To do so it will
|
|
||||||
peruse a file, [.vim|vimfiles]/GetLatest/GetLatestVimScripts.dat
|
|
||||||
(see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin
|
|
||||||
directory (see |glvs-plugin|).
|
|
||||||
|
|
||||||
Scripts which have been downloaded will appear in the .../GetLatest
|
|
||||||
subdirectory.
|
|
||||||
|
|
||||||
The <GetLatestVimScripts.dat> file will be automatically be updated to
|
|
||||||
reflect the latest version of script(s) so downloaded.
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. GetLatestVimScripts Data File *getlatestvimscripts-data* *glvs-data*
|
|
||||||
|
|
||||||
The Data file has a header which should appear as:
|
|
||||||
>
|
|
||||||
ScriptID SourceID Filename
|
|
||||||
--------------------------
|
|
||||||
<
|
|
||||||
Below that are three columns; the first two are numeric followed by a
|
|
||||||
text column.
|
|
||||||
|
|
||||||
The first number on each line gives the script's ScriptID. When you're
|
|
||||||
about to use a web browser to look at scripts on http://vim.sf.net/, just
|
|
||||||
before you click on the script's link, you'll see a line resembling
|
|
||||||
|
|
||||||
http://vim.sourceforge.net/scripts/script.php?script_id=40
|
|
||||||
|
|
||||||
The "40" happens to be a ScriptID that GetLatestVimScripts needs to
|
|
||||||
download the associated page.
|
|
||||||
|
|
||||||
The second number on each line gives the script's SourceID. The SourceID
|
|
||||||
records the count of uploaded scripts as determined by vim.sf.net; hence
|
|
||||||
it serves to indicate "when" a script was uploaded. Setting the SourceID
|
|
||||||
to 1 insures that GetLatestVimScripts will assume that the script it has
|
|
||||||
is out-of-date.
|
|
||||||
|
|
||||||
The SourceID is extracted by GetLatestVimScripts from the script's page on
|
|
||||||
vim.sf.net; whenever its greater than the one stored in the
|
|
||||||
GetLatestVimScripts.dat file, the script will be downloaded.
|
|
||||||
|
|
||||||
If your script's author has included a special comment line in his/her
|
|
||||||
plugin, the plugin itself will be used by GetLatestVimScripts to build
|
|
||||||
your <GetLatestVimScripts.dat> file, including any dependencies on
|
|
||||||
other scripts it may have.
|
|
||||||
|
|
||||||
If your comment field begins with :AutoInstall:, GetLatestVimScripts will
|
|
||||||
attempt to automatically install the script. Thus, GetLatestVimScripts
|
|
||||||
thus provides a comprehensive ability to keep your plugins up-to-date!
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. GetLatestVimScripts Plugins *getlatestvimscripts-plugins* *glvs-plugins*
|
|
||||||
|
|
||||||
|
|
||||||
If a plugin author includes the following comment anywhere in their
|
|
||||||
plugin, GetLatestVimScripts will find it and use it to build user's
|
|
||||||
GetLatestVimScripts.dat files:
|
|
||||||
>
|
|
||||||
src_id
|
|
||||||
v
|
|
||||||
" GetLatestVimScripts: ### ### yourscriptname
|
|
||||||
^
|
|
||||||
scriptid
|
|
||||||
<
|
|
||||||
As an author, you should include such a line in to refer to your own
|
|
||||||
script plus any additional lines describing any plugin dependencies it
|
|
||||||
may have. Same format, of course!
|
|
||||||
|
|
||||||
If your command is auto-installable (see |glvs-autoinstall|), and most
|
|
||||||
scripts are, then you may include :AutoInstall: at the start of
|
|
||||||
"yourscriptname".
|
|
||||||
|
|
||||||
GetLatestVimScript commands for those scripts are then appended, if not
|
|
||||||
already present, to the user's GetLatest/GetLatestVimScripts.dat file.
|
|
||||||
Its a relatively painless way to automate the acquisition of any scripts
|
|
||||||
your plugins depend upon.
|
|
||||||
|
|
||||||
Now, as an author, you probably don't want GetLatestVimScripts to download
|
|
||||||
your own scripts for you yourself, thereby overwriting your
|
|
||||||
not-yet-released hard work. GetLatestVimScripts provides a solution for
|
|
||||||
this: put
|
|
||||||
>
|
|
||||||
0 0 yourscriptname
|
|
||||||
<
|
|
||||||
into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will
|
|
||||||
skip examining the "yourscriptname" scripts for those GetLatestVimScript
|
|
||||||
comment lines. As a result, those lines won't be inadvertently installed
|
|
||||||
into your <GetLatestVimScripts.dat> file and subsequently used to download
|
|
||||||
your own scripts. This is especially important to do if you've included
|
|
||||||
the :AutoInstall: option.
|
|
||||||
|
|
||||||
Be certain to use the same "yourscriptname" in the "0 0 yourscriptname" line
|
|
||||||
as you've used in your GetLatestVimScript comment!
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. GetLatestVimScripts AutoInstall *getlatestvimscripts-autoinstall*
|
|
||||||
*glvs-autoinstall*
|
|
||||||
|
|
||||||
GetLatestVimScripts now supports "AutoInstall". Not all scripts are
|
|
||||||
supportive of auto-install, as they may have special things you need to do
|
|
||||||
to install them (please refer to the script's "install" directions). On
|
|
||||||
the other hand, most scripts will be auto-installable.
|
|
||||||
|
|
||||||
To let GetLatestVimScripts do an autoinstall, the data file's comment
|
|
||||||
field should begin with (surrounding blanks are ignored):
|
|
||||||
|
|
||||||
:AutoInstall:
|
|
||||||
|
|
||||||
Both colons are needed, and it should begin the comment (yourscriptname)
|
|
||||||
field.
|
|
||||||
|
|
||||||
One may prevent any autoinstalling by putting the following line
|
|
||||||
in your <.vimrc>:
|
|
||||||
>
|
|
||||||
let g:GetLatestVimScripts_allowautoinstall= 0
|
|
||||||
<
|
|
||||||
|
|
||||||
With :AutoInstall: enabled, as it is by default, files which end with
|
|
||||||
|
|
||||||
---.tar.bz2 : decompressed and untarred in [.vim|vimfiles] directory
|
|
||||||
---.tar.gz : decompressed and untarred in [.vim|vimfiles] directory
|
|
||||||
---.vim.bz2 : decompressed and moved to the .vim/plugin directory
|
|
||||||
---.vim.gz : decompressed and moved to the .vim/plugin directory
|
|
||||||
---.zip : unzipped in [.vim|vimfiles] directory
|
|
||||||
---.vim : moved to [.vim|vimfiles]/plugin directory
|
|
||||||
|
|
||||||
and which merely need to have their components placed by the untar/gunzip
|
|
||||||
or move-to-plugin-directory process should be auto-installable.
|
|
||||||
|
|
||||||
When is a script not auto-installable? Let me give an example:
|
|
||||||
>
|
|
||||||
[.vim|vimfiles]/after/syntax/blockhl.vim
|
|
||||||
<
|
|
||||||
The <blockhl.vim> script provides block highlighting for C/C++ programs;
|
|
||||||
it is available at:
|
|
||||||
>
|
|
||||||
http://vim.sourceforge.net/scripts/script.php?script_id=104
|
|
||||||
<
|
|
||||||
Currently, vim's after/syntax only supports by-filetype scripts (in
|
|
||||||
blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install would
|
|
||||||
possibly overwrite the current user's after/syntax/c.vim file.
|
|
||||||
|
|
||||||
In my own case, I use <aftersyntax.vim> (renamed to after/syntax/c.vim) to
|
|
||||||
allow a after/syntax/c/ directory:
|
|
||||||
>
|
|
||||||
http://vim.sourceforge.net/scripts/script.php?script_id=1023
|
|
||||||
<
|
|
||||||
The script allows multiple syntax files to exist separately in the
|
|
||||||
after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and build
|
|
||||||
an appropriate tarball for auto-install because of the potential for the
|
|
||||||
after/syntax/c.vim contained in it to overwrite a user's c.vim.
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. GetLatestVimScripts Algorithm *getlatestvimscripts-algorithm* *glvs-alg*
|
|
||||||
|
|
||||||
The Vim sourceforge page dynamically creates a page by keying off of the
|
|
||||||
so-called script-id. Within the webpage of
|
|
||||||
|
|
||||||
http://vim.sourceforge.net/scripts/script.php?script_id=40
|
|
||||||
|
|
||||||
is a line specifying the latest source-id (src_id). The source identifier
|
|
||||||
numbers are always increasing, hence if the src_id is greater than the one
|
|
||||||
recorded for the script in GetLatestVimScripts then its time to download a
|
|
||||||
newer copy of that script.
|
|
||||||
|
|
||||||
GetLatestVimScripts will then download the script and update its internal
|
|
||||||
database of script ids, source ids, and scriptnames.
|
|
||||||
|
|
||||||
The AutoInstall process will:
|
|
||||||
|
|
||||||
Move the file from GetLatest/ to the following directory
|
|
||||||
Unix : $HOME/.vim
|
|
||||||
Windows: $HOME\vimfiles
|
|
||||||
|
|
||||||
if the downloaded file ends with ".bz2"
|
|
||||||
bunzip2 it
|
|
||||||
else if the downloaded file ends with ".gz"
|
|
||||||
gunzip it
|
|
||||||
if the resulting file ends with ".zip"
|
|
||||||
unzip it
|
|
||||||
else if the resulting file ends with ".tar"
|
|
||||||
tar -oxvf it
|
|
||||||
else if the resulting file ends with ".vim"
|
|
||||||
move it to the plugin subdirectory
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
8. GetLatestVimScripts History *getlatestvimscripts-history* *glvs-hist*
|
|
||||||
|
|
||||||
v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
|
|
||||||
unzip needs the -o flag to overwrite.
|
|
||||||
v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
|
|
||||||
script! Fixed.
|
|
||||||
v18 Mar 21, 2005 : * bugfix to automatic database construction
|
|
||||||
* bugfix - nowrapscan caused an error
|
|
||||||
(tnx to David Green for the fix)
|
|
||||||
Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in
|
|
||||||
:AutoInstall:s, even though its o/s is windows
|
|
||||||
Apr 01, 2005 * when downloading errors occurred, GLVS was
|
|
||||||
terminating early. It now just goes on to trying
|
|
||||||
the next script (after trying three times to
|
|
||||||
download a script description page)
|
|
||||||
Apr 20, 2005 * bugfix - when a failure to download occurred,
|
|
||||||
GetLatestVimScripts would stop early and claim that
|
|
||||||
everything was current. Fixed.
|
|
||||||
v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
|
|
||||||
defaults to 1, can be used to prevent all
|
|
||||||
:AutoInstall:
|
|
||||||
v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
|
|
||||||
* fixed bug with :AutoInstall: use of helptags
|
|
||||||
v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
|
|
||||||
always preventing downloads (just usually). Fixed.
|
|
||||||
v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
|
|
||||||
s:dotvim. Fixed.
|
|
||||||
v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
|
|
||||||
is zero. Useful for script authors; that way their
|
|
||||||
own GetLatestVimScripts activity won't overwrite
|
|
||||||
their scripts.
|
|
||||||
v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
|
|
||||||
was intended only for testing. Removed, now works.
|
|
||||||
* :AutoInstall: implemented
|
|
||||||
v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
|
|
||||||
* :GetLatestVimScripts command
|
|
||||||
* (runtimepath)/GetLatest/GetLatestVimScripts.dat
|
|
||||||
now holds scripts that need updating
|
|
||||||
v10 Apr 19, 2004 : * moved history from script to doc
|
|
||||||
v9 Jan 23, 2004 : windows (win32/win16/win95) will use
|
|
||||||
double quotes ("") whereas other systems will use
|
|
||||||
single quotes ('') around the urls in calls via wget
|
|
||||||
v8 Dec 01, 2003 : makes three tries at downloading
|
|
||||||
v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id="
|
|
||||||
not found in downloaded webpage
|
|
||||||
Uses t_ti, t_te, and rs to make progress visible
|
|
||||||
v6 Aug 06, 2003 : final status messages now display summary of work
|
|
||||||
( "Downloaded someqty scripts" or
|
|
||||||
"Everything was current")
|
|
||||||
Now GetLatestVimScripts is careful about downloading
|
|
||||||
GetLatestVimScripts.vim itself!
|
|
||||||
(goes to <NEW_GetLatestVimScripts.vim>)
|
|
||||||
v5 Aug 04, 2003 : missing an endif near bottom
|
|
||||||
v4 Jun 17, 2003 : redraw! just before each "considering" message
|
|
||||||
v3 May 27, 2003 : Protects downloaded files from errant shell
|
|
||||||
expansions with single quotes: '...'
|
|
||||||
v2 May 14, 2003 : extracts name of item to be obtained from the
|
|
||||||
script file. Uses it instead of comment field
|
|
||||||
for output filename; comment is used in the
|
|
||||||
"considering..." line and is now just a comment!
|
|
||||||
* Fixed a bug: a string-of-numbers is not the
|
|
||||||
same as a number, so I added zero to them
|
|
||||||
and they became numbers. Fixes comparison.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help
|
|
102
vimfiles/doc/LogiPat.txt
Normal file
102
vimfiles/doc/LogiPat.txt
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
*logipat.txt* Logical Patterns Aug 09, 2005
|
||||||
|
|
||||||
|
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
|
||||||
|
Copyright: (c) 2004-2005 by Charles E. Campbell, Jr. *logipat-copyright*
|
||||||
|
The VIM LICENSE applies to LogiPat.vim and LogiPat.txt
|
||||||
|
(see |copyright|) except use "LogiPat" instead of "Vim"
|
||||||
|
No warranty, express or implied. Use At-Your-Own-Risk.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
1. Contents *logipat*
|
||||||
|
|
||||||
|
1. Contents.................: |logipat-contents|
|
||||||
|
2. LogiPat Manual...........: |logipat-manual|
|
||||||
|
3. LogiPat Examples.........: |logipat-examples|
|
||||||
|
4. Caveat...................: |logipat-caveat|
|
||||||
|
5. LogiPat History..........: |logipat-history|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
2. LogiPat Manual *logipat-manual* *logipat-man*
|
||||||
|
|
||||||
|
|
||||||
|
*logipat-arg* *logipat-input* *logipat-pattern* *logipat-operators*
|
||||||
|
Boolean logic patterns are composed of
|
||||||
|
|
||||||
|
operators ! = not
|
||||||
|
| = logical-or
|
||||||
|
& = logical-and
|
||||||
|
grouping ( ... )
|
||||||
|
patterns "pattern"
|
||||||
|
|
||||||
|
:LogiPat {boolean-logic pattern} *:LogiPat*
|
||||||
|
:LogiPat is a command which takes a boolean-logic
|
||||||
|
argument (|logipat-arg|).
|
||||||
|
|
||||||
|
:LP {boolean-logic pattern} *:LP*
|
||||||
|
:LP is a shorthand command version of :LogiPat
|
||||||
|
(|logipat-cmd|).
|
||||||
|
|
||||||
|
:LogiPatFlags {search flags} *LogiPat-flags*
|
||||||
|
:LogiPatFlags {search flags}
|
||||||
|
LogiPat uses the |search()| command. The flags
|
||||||
|
passed to that call to search() may be specified
|
||||||
|
by the :LogiPatFlags command.
|
||||||
|
|
||||||
|
:LPF {search flags} *:LPF*
|
||||||
|
:LPF is a shorthand version of :LogiPatFlags.
|
||||||
|
|
||||||
|
:let pat=LogiPat({boolean-logic pattern}) *LogiPat()*
|
||||||
|
If one calls LogiPat() directly, no search
|
||||||
|
is done, but the transformation from the boolean
|
||||||
|
logic pattern into a regular expression pattern
|
||||||
|
is performed and returned.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
3. LogiPat Examples *logipat-examples*
|
||||||
|
|
||||||
|
LogiPat takes Boolean logic arguments and produces a regular
|
||||||
|
expression which implements the choices. A series of examples
|
||||||
|
follow:
|
||||||
|
>
|
||||||
|
:LogiPat "abc"
|
||||||
|
< will search for lines containing the string "abc"
|
||||||
|
>
|
||||||
|
:LogiPat !"abc"
|
||||||
|
< will search for lines which don't contain the string "abc"
|
||||||
|
>
|
||||||
|
:LogiPat "abc"|"def"
|
||||||
|
< will search for lines which contain either the string
|
||||||
|
"abc" or the string "def"
|
||||||
|
>
|
||||||
|
:LogiPat !("abc"|"def")
|
||||||
|
< will search for lines which don't contain either
|
||||||
|
of the strings "abc" or "def"
|
||||||
|
>
|
||||||
|
:LogiPat "abc"&"def"
|
||||||
|
< will search for lines which contain both of the strings
|
||||||
|
"abc" and "def"
|
||||||
|
>
|
||||||
|
:let pat= LogiPat('!"abc"')
|
||||||
|
< will return the regular expression which will match
|
||||||
|
all lines not containing "abc". The double quotes
|
||||||
|
are needed to pass normal patterns to LogiPat, and
|
||||||
|
differentiate such patterns from boolean logic
|
||||||
|
operators.
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
4. Caveat *logipat-caveat*
|
||||||
|
|
||||||
|
The "not" operator may be fragile; ie. it may not always play well
|
||||||
|
with the & (logical-and) and | (logical-or) operators. Please try out
|
||||||
|
your patterns, possibly with :set hls, to insure that what is matching
|
||||||
|
is what you want.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
3. LogiPat History *logipat-history*
|
||||||
|
|
||||||
|
v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working
|
||||||
|
v1 May 23, 2005 * initial release
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
vim:tw=78:ts=8:ft=help
|
@ -2,6 +2,9 @@
|
|||||||
:GLVS pi_getscript.txt /*:GLVS*
|
:GLVS pi_getscript.txt /*:GLVS*
|
||||||
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
|
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
|
||||||
:Hexplore pi_netrw.txt /*:Hexplore*
|
:Hexplore pi_netrw.txt /*:Hexplore*
|
||||||
|
:LP LogiPat.txt /*:LP*
|
||||||
|
:LPF LogiPat.txt /*:LPF*
|
||||||
|
:LogiPat LogiPat.txt /*:LogiPat*
|
||||||
:MkVimball pi_vimball.txt /*:MkVimball*
|
:MkVimball pi_vimball.txt /*:MkVimball*
|
||||||
:Nexplore pi_netrw.txt /*:Nexplore*
|
:Nexplore pi_netrw.txt /*:Nexplore*
|
||||||
:Pexplore pi_netrw.txt /*:Pexplore*
|
:Pexplore pi_netrw.txt /*:Pexplore*
|
||||||
@ -18,7 +21,6 @@
|
|||||||
:VimballList pi_vimball.txt /*:VimballList*
|
:VimballList pi_vimball.txt /*:VimballList*
|
||||||
C-Reference crefvim.txt /*C-Reference*
|
C-Reference crefvim.txt /*C-Reference*
|
||||||
GetLatestVimScripts pi_getscript.txt /*GetLatestVimScripts*
|
GetLatestVimScripts pi_getscript.txt /*GetLatestVimScripts*
|
||||||
GetLatestVimScripts-copyright GetLatestVimScripts.txt /*GetLatestVimScripts-copyright*
|
|
||||||
GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright*
|
GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright*
|
||||||
GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat*
|
GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat*
|
||||||
I visincr.txt /*I*
|
I visincr.txt /*I*
|
||||||
@ -35,6 +37,8 @@ IO visincr.txt /*IO*
|
|||||||
IR visincr.txt /*IR*
|
IR visincr.txt /*IR*
|
||||||
IX visincr.txt /*IX*
|
IX visincr.txt /*IX*
|
||||||
IYMD visincr.txt /*IYMD*
|
IYMD visincr.txt /*IYMD*
|
||||||
|
LogiPat() LogiPat.txt /*LogiPat()*
|
||||||
|
LogiPat-flags LogiPat.txt /*LogiPat-flags*
|
||||||
Nread pi_netrw.txt /*Nread*
|
Nread pi_netrw.txt /*Nread*
|
||||||
Nsource pi_netrw.txt /*Nsource*
|
Nsource pi_netrw.txt /*Nsource*
|
||||||
Nwrite pi_netrw.txt /*Nwrite*
|
Nwrite pi_netrw.txt /*Nwrite*
|
||||||
@ -1326,44 +1330,39 @@ g:netrw_win95ftp pi_netrw.txt /*g:netrw_win95ftp*
|
|||||||
g:netrw_winsize pi_netrw.txt /*g:netrw_winsize*
|
g:netrw_winsize pi_netrw.txt /*g:netrw_winsize*
|
||||||
g:vimball_home pi_vimball.txt /*g:vimball_home*
|
g:vimball_home pi_vimball.txt /*g:vimball_home*
|
||||||
g:visincr_datedivset visincr.txt /*g:visincr_datedivset*
|
g:visincr_datedivset visincr.txt /*g:visincr_datedivset*
|
||||||
getlatestvimscripst-install GetLatestVimScripts.txt /*getlatestvimscripst-install*
|
|
||||||
getlatestvimscripts GetLatestVimScripts.txt /*getlatestvimscripts*
|
|
||||||
getlatestvimscripts-algorithm GetLatestVimScripts.txt /*getlatestvimscripts-algorithm*
|
|
||||||
getlatestvimscripts-autoinstall GetLatestVimScripts.txt /*getlatestvimscripts-autoinstall*
|
|
||||||
getlatestvimscripts-data GetLatestVimScripts.txt /*getlatestvimscripts-data*
|
|
||||||
getlatestvimscripts-history GetLatestVimScripts.txt /*getlatestvimscripts-history*
|
|
||||||
getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install*
|
getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install*
|
||||||
getlatestvimscripts-plugins GetLatestVimScripts.txt /*getlatestvimscripts-plugins*
|
|
||||||
getlatestvimscripts-start GetLatestVimScripts.txt /*getlatestvimscripts-start*
|
|
||||||
getlatestvimscripts.txt GetLatestVimScripts.txt /*getlatestvimscripts.txt*
|
|
||||||
getscript pi_getscript.txt /*getscript*
|
getscript pi_getscript.txt /*getscript*
|
||||||
getscript-autoinstall pi_getscript.txt /*getscript-autoinstall*
|
getscript-autoinstall pi_getscript.txt /*getscript-autoinstall*
|
||||||
getscript-data pi_getscript.txt /*getscript-data*
|
getscript-data pi_getscript.txt /*getscript-data*
|
||||||
getscript-history pi_getscript.txt /*getscript-history*
|
getscript-history pi_getscript.txt /*getscript-history*
|
||||||
getscript-plugins pi_getscript.txt /*getscript-plugins*
|
getscript-plugins pi_getscript.txt /*getscript-plugins*
|
||||||
getscript-start pi_getscript.txt /*getscript-start*
|
getscript-start pi_getscript.txt /*getscript-start*
|
||||||
glvs GetLatestVimScripts.txt /*glvs*
|
|
||||||
glvs pi_getscript.txt /*glvs*
|
glvs pi_getscript.txt /*glvs*
|
||||||
glvs-alg GetLatestVimScripts.txt /*glvs-alg*
|
|
||||||
glvs-alg pi_getscript.txt /*glvs-alg*
|
glvs-alg pi_getscript.txt /*glvs-alg*
|
||||||
glvs-algorithm pi_getscript.txt /*glvs-algorithm*
|
glvs-algorithm pi_getscript.txt /*glvs-algorithm*
|
||||||
glvs-autoinstall GetLatestVimScripts.txt /*glvs-autoinstall*
|
|
||||||
glvs-autoinstall pi_getscript.txt /*glvs-autoinstall*
|
glvs-autoinstall pi_getscript.txt /*glvs-autoinstall*
|
||||||
glvs-contents GetLatestVimScripts.txt /*glvs-contents*
|
|
||||||
glvs-contents pi_getscript.txt /*glvs-contents*
|
glvs-contents pi_getscript.txt /*glvs-contents*
|
||||||
glvs-copyright pi_getscript.txt /*glvs-copyright*
|
glvs-copyright pi_getscript.txt /*glvs-copyright*
|
||||||
glvs-data GetLatestVimScripts.txt /*glvs-data*
|
|
||||||
glvs-data pi_getscript.txt /*glvs-data*
|
glvs-data pi_getscript.txt /*glvs-data*
|
||||||
glvs-dist-install pi_getscript.txt /*glvs-dist-install*
|
glvs-dist-install pi_getscript.txt /*glvs-dist-install*
|
||||||
glvs-hist GetLatestVimScripts.txt /*glvs-hist*
|
|
||||||
glvs-hist pi_getscript.txt /*glvs-hist*
|
glvs-hist pi_getscript.txt /*glvs-hist*
|
||||||
glvs-install GetLatestVimScripts.txt /*glvs-install*
|
|
||||||
glvs-install pi_getscript.txt /*glvs-install*
|
glvs-install pi_getscript.txt /*glvs-install*
|
||||||
glvs-options pi_getscript.txt /*glvs-options*
|
glvs-options pi_getscript.txt /*glvs-options*
|
||||||
glvs-plugins GetLatestVimScripts.txt /*glvs-plugins*
|
|
||||||
glvs-plugins pi_getscript.txt /*glvs-plugins*
|
glvs-plugins pi_getscript.txt /*glvs-plugins*
|
||||||
glvs-usage pi_getscript.txt /*glvs-usage*
|
glvs-usage pi_getscript.txt /*glvs-usage*
|
||||||
http pi_netrw.txt /*http*
|
http pi_netrw.txt /*http*
|
||||||
|
logipat LogiPat.txt /*logipat*
|
||||||
|
logipat-arg LogiPat.txt /*logipat-arg*
|
||||||
|
logipat-caveat LogiPat.txt /*logipat-caveat*
|
||||||
|
logipat-copyright LogiPat.txt /*logipat-copyright*
|
||||||
|
logipat-examples LogiPat.txt /*logipat-examples*
|
||||||
|
logipat-history LogiPat.txt /*logipat-history*
|
||||||
|
logipat-input LogiPat.txt /*logipat-input*
|
||||||
|
logipat-man LogiPat.txt /*logipat-man*
|
||||||
|
logipat-manual LogiPat.txt /*logipat-manual*
|
||||||
|
logipat-operators LogiPat.txt /*logipat-operators*
|
||||||
|
logipat-pattern LogiPat.txt /*logipat-pattern*
|
||||||
|
logipat.txt LogiPat.txt /*logipat.txt*
|
||||||
netreadfixup pi_netrw.txt /*netreadfixup*
|
netreadfixup pi_netrw.txt /*netreadfixup*
|
||||||
netrw pi_netrw.txt /*netrw*
|
netrw pi_netrw.txt /*netrw*
|
||||||
netrw-- pi_netrw.txt /*netrw--*
|
netrw-- pi_netrw.txt /*netrw--*
|
||||||
|
320
vimfiles/plugin/LogiPat.vim
Normal file
320
vimfiles/plugin/LogiPat.vim
Normal file
@ -0,0 +1,320 @@
|
|||||||
|
" LogiPat:
|
||||||
|
" Author: Charles E. Campbell, Jr.
|
||||||
|
" Date: Sep 01, 2005
|
||||||
|
" Version: 2
|
||||||
|
" Purpose: to do Boolean-logic based regular expression pattern matching
|
||||||
|
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
|
||||||
|
" Permission is hereby granted to use and distribute this code,
|
||||||
|
" with or without modifications, provided that this copyright
|
||||||
|
" notice is copied with it. Like anything else that's free,
|
||||||
|
" LogiPat.vim is provided *as is* and comes with no warranty
|
||||||
|
" of any kind, either expressed or implied. By using this
|
||||||
|
" plugin, you agree that in no event will the copyright
|
||||||
|
" holder be liable for any damages resulting from the use
|
||||||
|
" of this software.
|
||||||
|
"
|
||||||
|
" Usage: {{{1
|
||||||
|
" :LogiPat ...
|
||||||
|
"
|
||||||
|
" Boolean logic supported:
|
||||||
|
" () grouping operators
|
||||||
|
" ! not the following pattern
|
||||||
|
" | logical or
|
||||||
|
" & logical and
|
||||||
|
" "..pattern.."
|
||||||
|
" Example: {{{1
|
||||||
|
" :LogiPat !("january"|"february")
|
||||||
|
" would match all strings not containing the strings january
|
||||||
|
" or february
|
||||||
|
" GetLatestVimScripts: 1290 1 :AutoInstall: LogiPat.vim
|
||||||
|
"
|
||||||
|
" Behold, you will conceive in your womb, and bring forth a son, {{{1
|
||||||
|
" and will call his name Jesus. He will be great, and will be
|
||||||
|
" called the Son of the Most High. The Lord God will give him the
|
||||||
|
" throne of his father, David, and he will reign over the house of
|
||||||
|
" Jacob forever. There will be no end to his kingdom. (Luke 1:31-33 WEB)
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" Load Once: {{{1
|
||||||
|
if &cp || exists("loaded_logipat")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_LogiPat = "v2"
|
||||||
|
let s:keepcpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" Public Interface: {{{1
|
||||||
|
com! -nargs=* LogiPat call LogiPat(<q-args>,1)
|
||||||
|
silent! com -nargs=* LP call LogiPat(<q-args>,1)
|
||||||
|
com! -nargs=+ LogiPatFlags let s:LogiPatFlags="<args>"
|
||||||
|
silent! com -nargs=+ LPF let s:LogiPatFlags="<args>"
|
||||||
|
|
||||||
|
" =====================================================================
|
||||||
|
" Functions: {{{1
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LogiPat: this function interprets the boolean-logic pattern {{{2
|
||||||
|
fun! LogiPat(pat,...)
|
||||||
|
" call Dfunc("LogiPat(pat<".a:pat.">)")
|
||||||
|
|
||||||
|
" LogiPat(pat,dosearch)
|
||||||
|
if a:0 > 0
|
||||||
|
let dosearch= a:1
|
||||||
|
else
|
||||||
|
let dosearch= 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:npatstack = 0
|
||||||
|
let s:nopstack = 0
|
||||||
|
let s:preclvl = 0
|
||||||
|
let expr = a:pat
|
||||||
|
|
||||||
|
" Lexer/Parser
|
||||||
|
while expr != ""
|
||||||
|
" call Decho("expr<".expr.">")
|
||||||
|
|
||||||
|
if expr =~ '^"'
|
||||||
|
" push a Pattern
|
||||||
|
let pat = substitute(strpart(expr,1),'^\([^"]*\)".*$','\1','')
|
||||||
|
let patlen = strlen(pat) - 1
|
||||||
|
" call Decho("pat<".pat."> patlen-1=".patlen)
|
||||||
|
if patlen > 1 && strpart(pat,patlen,1) == '\\'
|
||||||
|
echoerr "LogiPat doesn't accept escaped backquotes in patterns (yet)"
|
||||||
|
" call Dret("LogiPat --error--")
|
||||||
|
return '--error--'
|
||||||
|
endif
|
||||||
|
call s:LP_PatPush('.*'.pat.'.*')
|
||||||
|
let patlen = patlen+3
|
||||||
|
let expr = strpart(expr,patlen)
|
||||||
|
|
||||||
|
elseif expr =~ '^[!()|&]'
|
||||||
|
" push an operator
|
||||||
|
let op = strpart(expr,0,1)
|
||||||
|
let expr = strpart(expr,strlen(op))
|
||||||
|
call s:LP_OpPush(op)
|
||||||
|
|
||||||
|
elseif expr =~ '^\s'
|
||||||
|
" skip whitespace
|
||||||
|
let expr= strpart(expr,1)
|
||||||
|
|
||||||
|
else
|
||||||
|
echoerr "operator<".strpart(expr,0,1)."> not supported (yet)"
|
||||||
|
let expr= strpart(expr,1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Final Execution
|
||||||
|
call s:LP_OpPush('Z')
|
||||||
|
|
||||||
|
let result= s:LP_PatPop(1)
|
||||||
|
" call Decho("result=".result)
|
||||||
|
|
||||||
|
" sanity checks and cleanup
|
||||||
|
if s:npatstack > 0
|
||||||
|
echoerr s:npatstack." patterns left on stack!"
|
||||||
|
let s:npatstack= 0
|
||||||
|
endif
|
||||||
|
if s:nopstack > 0
|
||||||
|
echoerr s:nopstack." operators left on stack!"
|
||||||
|
let s:nopstack= 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" perform the indicated search
|
||||||
|
if dosearch
|
||||||
|
if exists("s:LogiPatFlags")
|
||||||
|
" call Decho("search(result<".result."> LogiPatFlags<".s:LogiPatFlags.">)")
|
||||||
|
call search(result,s:LogiPatFlags)
|
||||||
|
else
|
||||||
|
" call Decho("search(result<".result.">)")
|
||||||
|
call search(result)
|
||||||
|
endif
|
||||||
|
let @/= result
|
||||||
|
endif
|
||||||
|
|
||||||
|
" call Dret("LogiPat ".result)
|
||||||
|
return result
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_PatPush: {{{2
|
||||||
|
fun! s:LP_PatPush(pat)
|
||||||
|
" call Dfunc("LP_PatPush(pat<".a:pat.">)")
|
||||||
|
let s:npatstack = s:npatstack + 1
|
||||||
|
let s:patstack_{s:npatstack} = a:pat
|
||||||
|
" call s:StackLook("patpush") "Decho
|
||||||
|
" call Dret("LP_PatPush : npatstack=".s:npatstack)
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_PatPop: pop a number/variable from LogiPat's pattern stack {{{2
|
||||||
|
fun! s:LP_PatPop(lookup)
|
||||||
|
" call Dfunc("LP_PatPop(lookup=".a:lookup.")")
|
||||||
|
if s:npatstack > 0
|
||||||
|
let ret = s:patstack_{s:npatstack}
|
||||||
|
let s:npatstack = s:npatstack - 1
|
||||||
|
else
|
||||||
|
let ret= "---error---"
|
||||||
|
echoerr "(LogiPat) invalid expression"
|
||||||
|
endif
|
||||||
|
" call s:StackLook("patpop") "Decho
|
||||||
|
" call Dret("LP_PatPop ".ret)
|
||||||
|
return ret
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_OpPush: {{{2
|
||||||
|
fun! s:LP_OpPush(op)
|
||||||
|
" call Dfunc("LP_OpPush(op<".a:op.">)")
|
||||||
|
|
||||||
|
" determine new operator's precedence level
|
||||||
|
if a:op == '('
|
||||||
|
let s:preclvl= s:preclvl + 10
|
||||||
|
let preclvl = s:preclvl
|
||||||
|
elseif a:op == ')'
|
||||||
|
let s:preclvl= s:preclvl - 10
|
||||||
|
if s:preclvl < 0
|
||||||
|
let s:preclvl= 0
|
||||||
|
echoerr "too many )s"
|
||||||
|
endif
|
||||||
|
let preclvl= s:preclvl
|
||||||
|
elseif a:op =~ '|'
|
||||||
|
let preclvl= s:preclvl + 2
|
||||||
|
elseif a:op =~ '&'
|
||||||
|
let preclvl= s:preclvl + 4
|
||||||
|
elseif a:op == '!'
|
||||||
|
let preclvl= s:preclvl + 6
|
||||||
|
elseif a:op == 'Z'
|
||||||
|
let preclvl= -1
|
||||||
|
else
|
||||||
|
echoerr "expr<".expr."> not supported (yet)"
|
||||||
|
let preclvl= s:preclvl
|
||||||
|
endif
|
||||||
|
|
||||||
|
" execute higher-precdence operators
|
||||||
|
call s:LP_Execute(preclvl)
|
||||||
|
|
||||||
|
" push new operator onto operator-stack
|
||||||
|
if a:op =~ '!'
|
||||||
|
let s:nopstack = s:nopstack + 1
|
||||||
|
let s:opprec_{s:nopstack} = preclvl
|
||||||
|
let s:opstack_{s:nopstack} = a:op
|
||||||
|
elseif a:op =~ '|'
|
||||||
|
let preclvl= s:preclvl + 1
|
||||||
|
let s:nopstack = s:nopstack + 1
|
||||||
|
let s:opprec_{s:nopstack} = preclvl
|
||||||
|
let s:opstack_{s:nopstack} = a:op
|
||||||
|
elseif a:op == '&'
|
||||||
|
let preclvl= s:preclvl + 2
|
||||||
|
let s:nopstack = s:nopstack + 1
|
||||||
|
let s:opprec_{s:nopstack} = preclvl
|
||||||
|
let s:opstack_{s:nopstack} = a:op
|
||||||
|
endif
|
||||||
|
|
||||||
|
" call s:StackLook("oppush") "Decho
|
||||||
|
" call Dret("LP_OpPush")
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_Execute: execute operators from opstack using pattern stack {{{2
|
||||||
|
fun! s:LP_Execute(preclvl)
|
||||||
|
" call Dfunc("LP_Execute(preclvl=".a:preclvl.") npatstack=".s:npatstack." nopstack=".s:nopstack)
|
||||||
|
|
||||||
|
" execute all higher precedence operators
|
||||||
|
while s:nopstack > 0 && a:preclvl < s:opprec_{s:nopstack}
|
||||||
|
let op= s:opstack_{s:nopstack}
|
||||||
|
" call Decho("op<".op."> nop=".s:nopstack." [preclvl=".a:preclvl."] < [opprec_".s:nopstack."=".s:opprec_{s:nopstack}."]")
|
||||||
|
|
||||||
|
let s:nopstack = s:nopstack - 1
|
||||||
|
|
||||||
|
if op == '!'
|
||||||
|
let n1= s:LP_PatPop(1)
|
||||||
|
call s:LP_PatPush(s:LP_Not(n1))
|
||||||
|
|
||||||
|
elseif op == '|'
|
||||||
|
let n1= s:LP_PatPop(1)
|
||||||
|
let n2= s:LP_PatPop(1)
|
||||||
|
call s:LP_PatPush(s:LP_Or(n2,n1))
|
||||||
|
|
||||||
|
elseif op =~ '&'
|
||||||
|
let n1= s:LP_PatPop(1)
|
||||||
|
let n2= s:LP_PatPop(1)
|
||||||
|
call s:LP_PatPush(s:LP_And(n2,n1))
|
||||||
|
endif
|
||||||
|
|
||||||
|
" call s:StackLook("execute") "Decho
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" call Dret("LP_Execute")
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_Not: writes a logical-not for a pattern {{{2
|
||||||
|
fun! s:LP_Not(pat)
|
||||||
|
" call Dfunc("LP_Not(pat<".a:pat.">)")
|
||||||
|
if a:pat =~ '^\.\*' && a:pat =~ '\.\*$'
|
||||||
|
let pat= substitute(a:pat,'^\.\*\(.*\)\.\*$','\1','')
|
||||||
|
let ret= '^\%(\%('.pat.'\)\@!.\)*$'
|
||||||
|
else
|
||||||
|
let ret= '^\%(\%('.a:pat.'\)\@!.\)*$'
|
||||||
|
endif
|
||||||
|
" call Dret("LP_Not ".ret)
|
||||||
|
return ret
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_Or: writes a logical-or branch using two patterns {{{2
|
||||||
|
fun! s:LP_Or(pat1,pat2)
|
||||||
|
" call Dfunc("LP_Or(pat1<".a:pat1."> pat2<".a:pat2.">)")
|
||||||
|
let ret= a:pat1.'\|'.a:pat2
|
||||||
|
" call Dret("LP_Or ".ret)
|
||||||
|
return ret
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" LP_And: writes a logical-and concat using two patterns {{{2
|
||||||
|
fun! s:LP_And(pat1,pat2)
|
||||||
|
" call Dfunc("LP_And(pat1<".a:pat1."> pat2<".a:pat2.">)")
|
||||||
|
let ret= '\%('.a:pat1.'\&'.a:pat2.'\)'
|
||||||
|
" call Dret("LP_And ".ret)
|
||||||
|
return ret
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" StackLook: {{{2
|
||||||
|
fun! s:StackLook(description)
|
||||||
|
" call Dfunc("StackLook(description<".a:description.">)")
|
||||||
|
let iop = 1
|
||||||
|
let ifp = 1
|
||||||
|
" call Decho("Pattern Operator")
|
||||||
|
|
||||||
|
" print both pattern and operator
|
||||||
|
while ifp <= s:npatstack && iop <= s:nopstack
|
||||||
|
let fp = s:patstack_{ifp}
|
||||||
|
let op = s:opstack_{iop}." (P".s:opprec_{s:nopstack}.')'
|
||||||
|
let fplen= strlen(fp)
|
||||||
|
if fplen < 30
|
||||||
|
let fp= fp.strpart(" ",1,30-fplen)
|
||||||
|
endif
|
||||||
|
" call Decho(fp.op)
|
||||||
|
let ifp = ifp + 1
|
||||||
|
let iop = iop + 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" print just pattern
|
||||||
|
while ifp <= s:npatstack
|
||||||
|
let fp = s:patstack_{ifp}
|
||||||
|
" call Decho(fp)
|
||||||
|
let ifp = ifp + 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" print just operator
|
||||||
|
while iop <= s:nopstack
|
||||||
|
let op = s:opstack_{iop}." (P".s:opprec_{s:nopstack}.')'
|
||||||
|
" call Decho(" ".op)
|
||||||
|
let iop = iop + 1
|
||||||
|
endwhile
|
||||||
|
" call Dret("StackLook")
|
||||||
|
endfun
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user