Nikolai Weibull wrote:
> I'm a firm believer in the nextgroup directive for defining syntaxes.
> It allows you to define grammars, which I really enjoy doing.
> However, one problem is that many languages allow things to appear in
> their input that's not part of the language's grammar. For example,
> many languages allow comments to appear almost anywhere in the input,
> which are stripped out of the input while lexing the input into tokens
> that are then fed to the actual parser. Now comments could be a part
> of the grammar, simply being thrown away at that point in the process,
> but it forces you to provide for the possibility of a comment
> appearing basically anywhere between terminals/non-terminals.
>
> Anyway, what I'm actually suggesting is a way to get around this issue
> by adding a new directive to the :syntax command that can be used
> alongside nextgroup to skip certain syntax groups before trying the
> groups defined by nextgroup. This is much like skipwhite, skipnl, and
> skipempty, but for arbitrary syntax groups.
>
> Here's an example of what I intend for it to do:
>
> syn keyword tocTodo
> \ contained
> \ TODO
> \ FIXME
> \ XXX
> \ NOTE
>
> syn match tocComment
> \ contains=tocTodo,@Spell
> \ '//.*$'
>
> syn keyword tocHeaderKeyword
> \ nextgroup=tocCatalogNumber
> \ skip=tocComment
> \ skipwhite
> \ skipempty
> \ CATALOG
>
> syn match tocCatalogNumber
> \ contained
> \ '"\d\{13\}"'
>
> This is a partial grammar that matches comments and the CATALOG
> keyword in the header part of a cdrdao(1) TOC file (yes, I'm writing a
> grammar for such files). Comments begin with a set of slashes and can
> appear anywhere in the file. The CATALOG keyword is followed by a
> (optional, but let's keep it simple for this example) catalog number.
> The idea here is that the skip=tocComment directive to
> tocHeaderKeyword will tell the syntax highlighting engine that it
> should skip any matches to tocComment that follow tocHeaderKeyword,
> just as the skipwhite and skipempty pair tells it to skip whitespace
> and empty lines (before and after any tocComments) before it tries to
> match a tocCatalogNumber.
>
> I have no idea how hard this would be to implement, but I'm thinking
> that it can't be too difficult. It should "only" be to add some
> handling around the code that handles skipwhite/skipnl/skipempty to go
> through a list of syntax groups and try to match them, highlighting
> them, and then trying to highlight whatever is in nextgroup
> afterwards.
>
> I'm sure there are edge cases to consider, but I can't think that it
> should be impossible. I sadly don't have any understanding of the Vim
> syntax highlighter, so someone with more knowledge will have to help
> me out.
>
> Comments? Patches? Complaints?
Sounds like a good idea. I'll add it to the todo list.
If you really want this added you would have to send a patch...
--
hundred-and-one symptoms of being an internet addict:
227. You sleep next to your monitor. Or on top of it.
/// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///