Xi Juanjie wrote:

> I found a strange behavior about highlighting matching parens with c
> files, I wonder if it's a bug or not.
> 
> I have this code in my c file.
>     Foo(Bar("FOOBAR"));
> and I use the arrow key to move the cursor through the code
> when cursor stand like this,
>     Foo(Bar|("FOOBAR"));
> it highlighted the 2nd left paren and the 1st right paren, everything is ok.
> but when cursor stand like this,
>     Foo(Bar(|"FOOBAR"));
> it highlighted the 2nd left paren and the 2nd right paren.
> and when move cursor to the end of code,
>     Foo(Bar("FOOBAR"))|;
> it also highlighted the 2nd left paran and the 2nd right paren.
> 
> I can reproduced this in many known filetypes with systax highlighting.
> like c,java,pl,jsp files and so on.
> but filetypes with out highlighting seems be ok, for example the txt file.
> 
> Is this a bug of the vim7?
> I used the vim7f on win2k.

I see the problem.  The check for the paren being inside a string is off
by one column.  This patch will fix it:

--- ../runtime/plugin/matchparen.vim    5 Apr 2006 20:19:48 -0000       1.8
+++ ../runtime/plugin/matchparen.vim    27 Apr 2006 13:32:00 -0000
@@ -87,18 +87,20 @@
     let c2 = '\]'
   endif
 
-  " When not in a string or comment ignore matches inside them.
-  let s_skip ='synIDattr(synID(line("."), col(".") - before, 0), "name") ' .
-       \ '=~?  "string\\|comment"'
-  execute 'if' s_skip '| let s_skip = 0 | endif'
-
   " Find the match.  When it was just before the cursor move it there for a
   " moment.
   if before > 0
     let save_cursor = getpos('.')
     call cursor(c_lnum, c_col - before)
   endif
+
+  " When not in a string or comment ignore matches inside them.
+  let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
+       \ '=~?  "string\\|comment"'
+  execute 'if' s_skip '| let s_skip = 0 | endif'
+
   let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
+
   if before > 0
     call setpos('.', save_cursor)
   endif

-- 
       [Autumn changed into Winter ... Winter changed into Spring ...  Spring
       changed back into Autumn and Autumn gave Winter and Spring a miss and
       went straight on into Summer ...  Until one day ...]
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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

Reply via email to