For example:
<code>
while ($ok) {
  if ($tbs) {
    &show("step 1", \@arr, [24,60,60]);
  &show("step 1", \@arr, [24,60,60]);
&show("step 1", \@arr, [24,60,60]);
    &show("step 1", \@arr, [24,60,60]);
  &show("step 1", \@arr, [24,60,60]);
&show("step 1", \@arr, [24,60,60]);
  }
}
</code>
in /usr/share/vim/vim73/indent/perl.vim
I found 2 lines:
<code>
let bracepos = match(line, '[(){}\[\]]', match...
</code>
It seems as '[(){}\[\]]' finds brackets 'and' backslashes!
So I replaced these 2 lines with
<code>
let bracepos = BracePos(line, match...
</code>
and wrote a new function
<code>
" get position of () {} []
function! BracePos(line, start)
   let l:min = strlen(a:line)+1
   for l:char in split('(){}[]', '\zs')
      let l:pos = match(a:line, l:char, a:start)
      if l:pos >= 0
         let l:min = min([l:min, l:pos])
      endif
   endfor
   if l:min == strlen(a:line)+1
      let l:min = -1
   endif
   return l:min
endfunction
</code>
Now it works fine.
I had checked it on my perl programs and it works for me.
-- 
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