В ср, 2006-11-01 в 23:26 +1100, Peter Hodge написа:
> --- Виктор Кожухаров <[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]'
> 
that worked almost perfectly. the only problem now, is that if the
script part is too long, if I scroll to where it ends, the edc stuff is
not highlighted anymore, untill i reload the file, and if i do, they are
highlighted, but I have to scroll up until close to the begining of the
script, so that the script itself is highlighted. And for small scripts,
even reloading the file doesn't return the .edc highlighting, after the
script.

I'm not sure why that happens, and out of pure guessing, i'd say it's
something to do with syn sync, which I got from other syn files. I have
both edc and embryo sync with the following line:
syn sync ccomment edc(embryo)Comment minlines=50

if I make the minlines too big, edc isn't highlighted after a script
even after reload. with a value of 1, it exhibits the above behaviour.

> regards,
> Peter
> 
> 
> Send instant messages to your online friends http://au.messenger.yahoo.com 
-- 
Виктор Кожухаров /Viktor Kojouharov/

Attachment: signature.asc
Description: Това е цифрово подписана част от писмото

Reply via email to