On Friday, March 30, 2012 10:31:20 PM UTC-5, Yichao Zhou wrote:
> On Fri, Mar 30, 2012 at 11:09 PM, Ben Fritz <[email protected]> wrote:
> > On Friday, March 30, 2012 3:33:13 AM UTC-5, Yichao Zhou wrote:
> >> Hi, everyone.
> >>
> >>   I want to let vim use syntax to fold c's function in K&R like.
> >>
> >> int main()
> >> {
> >>     return 0;
> >> }
> >>
> >> So I write this:
> >>
> >> syntax region function        start='^\h\+\_.\{-}\n\_^\ze{' end="}"
> >> contains=ALLBUT,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
> >> fold keepend
> >>
> >> But I find that the "int" on the beginning of the file will stop this
> >> syntax rule become effective. If I change "int main" to "aint main",
> >> everything is OK.  How to deal with this problem?
> >
> > You might be able to work around it, by using a zero-width look-behind like 
> > \@<=. Possibly \zs will work as well.
> >
> > I'm not sure if either will work, however. If two matches begin at the same 
> > place, keyword always takes precedence and there's no way around it beyond 
> > removing the keyword or making it contained. I'd expect \@<= to be more 
> > likely to work than \zs but may make the highlight much slower.
> >
> > --
> > You received this message from the "vim_use" maillist.
> > Do not top-post! Type your reply below the text you are replying to.
> > For more information, visit http://www.vim.org/maillist.php
> 
> Em... This is too ugly and I don't success.  Maybe I should hack into
> vim's sources code and add a priority option for syntax?

I'm pretty sure using an admittedly complex regular expression is going to be 
MUCH easier than re-writing a huge swathe of complex syntax highlighting code. 
If you're going to start hacking existing functionality, just hack the C syntax 
script and place it in ~/.vim/syntax so it overrides the default syntax rules. 
Then you can match whatever you want any way you want.

-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to