Loading ...
Sorry, an error occurred while loading the content.

Re: How to do region syntax and avoid the effect of keywords.

Expand Messages
  • Ben Fritz
    ... 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
    Message 1 of 4 , Apr 2, 2012
    • 0 Attachment
      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 <fritzophrenic@...> 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
    Your message has been successfully submitted and would be delivered to recipients shortly.