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
