views:

250

answers:

1

I'd like to have vim highlight entire lines that match certain patterns. I can get all the text in a line to highlight (by doing syn match MyMatch "^.*text-to-match.*$"), but it always stops at the end of the text. I'd like to to continue to the end of the term, like highlighting CursorLine.

I've tried replacing $ with a \n^, hoping that would wrap it around. No change. (I didn't actually expect this would work, but there's no harm in trying.) I also tried adjusting the syn-pattern-offset (which I read about here: http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern). Long story short, adding he=he-5 will highlight 5 fewer characters, but he=he+5 doesn't show any extra characters because there aren't characters to highlight.

This is my first attempt at making a vim syntax and I'm relatively new to vim. Please be gentle and include explanations.

Thanks!

(edit: Forgot to include, this is a multiline highlight. That probably increases the complexity a bit.)

+4  A: 

From the documentation on syn-pattern:

The highlighted area will never be outside of the matched text.

I'd count myself surprised if you got this to work, but then again, Vim is always full of surprises.

Jay
Yes, but the pattern is matching the entire line. It should highlight the entire line.
Jefromi
If the window is 80 characters, and the text is 4 characters, only the 4 characters are matched and only the 4 characters are highlighted. The OP wants all 80 columns highlighted.
Jay
Jay's correct. There's no way to mimic the behavior of the `cursorline` option with standard syntax highlighting. Syntax highlighting is simply meant to highlight existing text.
jamessan
That's unfortunate, but also explains why I wasn't able to figure it out :-P
valadil