Friday, March 2, 2012

Re: creating syntax file - syn match problem

On Mar 2, 8:56 am, Tarlika Elisabeth Schmitz
<v...@numerixtechnology.de> wrote:
>
> Ben, this works a treat for the examples I posted last night - many
> thanks.
>

Good to know, glad it helped.

> However, I just realized the code blocks are a little more complex than
> I thought:
>
> a) one-line/inline  code blocks are delimited by a set of 3 curly
> braces.

Good, you have this already.

> b) multi-line blocks
>  - are delimited by any number of braces (min 3)

For this, I think you'll need to compromise and select some maximum
number of braces to allow highlighting for. You could even make this
configurable if you use a loop to build a bunch of similar rules
starting at 4 braces (you get 3 from your existing definition for
free).

>  - the code may contain sets of curly braces (they don't need to match)

I'm not sure what you mean by this. Are you saying {{{ does not always
start a code block? If so, you'll need to figure out the "real" start
of a code block and somehow key off of that, possibly using nextgroup.

>  - the block is closed by the first set of braces that contains the same
>    number of braces as the opening set

This makes sense. But can blocks with the same number of braces nest?
Can groups overlap, e.g. is this valid?

begin block1 {{{
code
begin block2 {{{{
end block1 }}}
end block2 }}}}

If so, I don't think Vim can highlight it. At least, not easily.

>  - the first code line must be on a new line (not on the same line as
> the opening braces)
>

That should be easy enough with a negative look-ahead assertion (using
the \@! zero-width match). Just make sure there's nothing but
whitespace until the end of the line in the start pattern of your
syntax region.

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

No comments:

Post a Comment