--- ÐикÑÐ¾Ñ ÐожÑÑ
аÑов <[EMAIL PROTECTED]> wrote:
> Ð ÑÑ, 2006-11-01 в 10:53 +1100, Peter Hodge напиÑа:
> > --- ÃøúÃþì ÃaþöÃÃ&ðìþò
> <[EMAIL PROTECTED]> wrote:
> >
> > > Hello,
> > >
> > > I'm working on a syntax file for .edc files. The problem before me is
> > > that I want to use a different syntax file for a "script" part. I've
> > > created the syntax file for the script syntax, and I've read how yto use
> > > "syn include".
> > >
> > > The real problem is, that in the .edc files, scripts are located within:
> > > script {
> > > SCRIPT HERE
> > > }
> > > ,however, the scripts themselves can also have {} braces. I've written
> > > the following, but it only uncludes the script syntax upto the first "}"
> > > brace, and I have no idea how to make it end on the _matching_ "}" brace
> > > instead:
> > >
> > > -----------------------------------------------------------------------
> > > syn include @edcEmbryo syntax/embryo.vim
> > > unlet b:current_syntax
> > > syn region edcScript start="\<script\>\s*\n*\s*{" end="}"
> > > [EMAIL PROTECTED],edcScriptTag
> > > syn keyword edcScriptTag contained script
> > > -----------------------------------------------------------------------
> > >
> > > So the question is, if I have:
> > > script {
> > > if (foo) {
> > > bar;
> > > } else {
> > > baz;
> > > }
> > > }
> > > how do I make vim use the script syntax all the way up to the closing }
> > > brace for the "script"?
> >
> > Hello,
> >
> > Your syntax file 'embryo.vim' will need regions match up all {} pairs as
> well.
> >
> > syn region embryoBraces matchgroup=Delimiter start=/{/ end=/}/
> transparent
> >
> > regards,
> > Peter
> >
>
> actually, after adding this region, what really happens, is that all the
> '}' in the script part are of group Delimeter, including the '}' for the
> 'script {' itself. so, if there's another '}' after that, it becomes of
> region edcScript (even though logically it's out of the script's scope).
> There are times however, where a '}' won't follow the script's own
> closing '}', thus the edcScript region will never end, as I observed in
> the first case.
try:
syn region edcScript matchgroup=edcScriptTag start="\<script\_s*{" end="}"
keepend [EMAIL PROTECTED]
syn region embryoBraces matchgroup=Delimiter start=/{/ end=/}/ transparent
keepend extend
I'm not sure if 'transparent' is going to mess things up ... if it does, take
out 'transparent' and use '[EMAIL PROTECTED]'
regards,
Peter
Send instant messages to your online friends http://au.messenger.yahoo.com