On Fri, 24 Sep 2010, Dewdman42 wrote:

I'm trying to create a syntax definition. I need to catch the following occurrences in a file

Groove <name> <comments with spaces>

Groove is the keyword, the <name> can be any single word with any characters other than "/" and the comment is the rest of the text on the line after that.

I would like to assign a color to "Groove" (easy) and a color to the comments, and then either leave the <name> unhighlighted or also assign a color to it.

I have tried all manner of contains, contained, nextgroup, etc..and I can't seem to find a way to handle this situation, but I'm new to this, so maybe I am missing something obvious.

Can anyone help?

This is the last thing I tried:

syn keyword     MMAgroove       groove nextgroup=MMAid skipwhite
syn match       MMAid           "[^\s/]+" transparent
contains=MMAgrooveComment
syn match       MMAgrooveComment ".*$" contained


This works for the following example:

groove some-id the rest is the groove comment

syn region MMAgrooveComment matchgroup=MMAgroove start=/^groove\ze\s/ end=/$/ 
contains=MMAid
syn match MMAid "\%(^groove\s\+\)\@<=\zs[^[:space:]/]\+" contained

" some colors for testing
" helped point out that the whole file was matched as MMAid
hi def link MMAgroove Keyword
hi def link MMAid Identifier
hi def link MMAgrooveComment Comment


I tend in general to shy away from 'syn keyword', because it's not usually what you want. (If 'groove' were a keyword, the second 'groove' on the line would be highlighted.)

--
Best,
Ben

--
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