A.J.Mechelynck wrote: > Liu Yubao wrote: >> Hi, >> >> I want a function Highlight(from_row, from_col, width, height, color) >> where >> from_row > 0 && from_col > 0 && width >=0 && height >=0 and zero means >> maximum. >> The highlight will stay until I call something to cancel it. >> >> With this function, I can place a rule at column 80 with Highlight(1, >> 80, 1, 0, green), >> highlight all xml blocks like View Source Chart extension for Firefox >> (http://jennifermadden.com/scripts/ViewRenderedSource.html), make a >> table with colorized >> border and so on. >> >> I would greatly appreciate your help! >> >>
[snip] > else > exe 'match' a:highlightGroup '/' > \ . '\%>' . row_before . 'l^.*$' > \ . '\&' > \ . '\%<' . row_after . 'l^.*$' > \ . '\&' > \ . '\%>' . col_before . 'v.*$' > \ . '\&' > \ . '^.*\%>' . col_after . 'v.' It appears it should be: \ . '\%>' . row_before . 'l' \ . '\&' \ . '\%<' . row_after . 'l' \ . '\&' \ . '\%>' . col_before . 'v' \ . '\&' \ . '\%<' . col_after . 'v' > \ . '/' > endif > endfunction > > Notes: > - The last argument is not a color but a highlight group, as in > > :exe 'call Highlight(1,80,1,' . (line('$') - 1) . ', Todo)' The last argument should be quoted with double quotation marks. It's a pity this function can only highlight text in a rectangle area, it can't highlight an empty area. Anyway, thank you very much, I learn the usage of "\%>" and "\%<". > > - Arguments which would not result in a nonempty highlight will be > rejected (except that there is no check that lines are long enough or > numerous enough to reach into the highlight area). In particular, height > or width cannot be zero. (Use some arbitrary high value like 999999 for > maximum height or width.) > - To remove the highlight, use > > :match none > > - The use of continuation lines assumes that 'nocompatible' has been > set, either explicitly, or implicitly due to the existence of a user vimrc. > > see > :help :match > :help ordinary-atom > :help pattern > > > Best regards, > Tony. >