]> git.madduck.net Git - etc/vim.git/blobdiff - indent/python.vim

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

s:find_opening_paren: code style
[etc/vim.git] / indent / python.vim
index 2953935111dc8c2538e32678f60a8889d033bfd8..cc9d6c203fb01d77177e2e0c0bb42f3ba9993c98 100644 (file)
@@ -109,33 +109,22 @@ else
 endif
 
 " Find backwards the closest open parenthesis/bracket/brace.
-function! s:find_opening_paren(...)
-    " optional arguments: line and column (defaults to 1) to search around
-    if a:0 > 0
-        let view = winsaveview()
-        call cursor(a:1, a:0 > 1 ? a:2 : 1)
-        let ret = s:find_opening_paren()
-        call winrestview(view)
-        return ret
-    endif
-
+function! s:find_opening_paren(lnum, col)
     " Return if cursor is in a comment.
-    if synIDattr(synID(line('.'), col('.'), 0), 'name') =~? 'comment'
+    if synIDattr(synID(a:lnum, a:col, 0), 'name') =~? 'comment'
         return [0, 0]
     endif
 
+    call cursor(a:lnum, a:col)
+
     let nearest = [0, 0]
+    let timeout = g:python_pep8_indent_searchpair_timeout
     for [p, maxoff] in items(s:paren_pairs)
         let stopline = max([0, line('.') - maxoff, nearest[0]])
         let found = 0
         while 1
-            let next = searchpairpos(
-               \ '\V'.p[0], '', '\V'.p[1], 'bnW', '', stopline, g:python_pep8_indent_searchpair_timeout)
-
-            if !next[0]
-                break
-            endif
-            if !s:_skip_special_chars(next[0], next[1])
+            let next = searchpairpos('\V'.p[0], '', '\V'.p[1], 'bnW', '', stopline, timeout)
+            if !next[0] || !s:_skip_special_chars(next[0], next[1])
                 break
             endif
             call cursor(next[0], next[1])
@@ -154,7 +143,7 @@ function! s:find_start_of_multiline_statement(lnum)
         if getline(lnum - 1) =~# '\\$'
             let lnum = prevnonblank(lnum - 1)
         else
-            let [paren_lnum, _] = s:find_opening_paren(lnum)
+            let [paren_lnum, _] = s:find_opening_paren(lnum, 1)
             if paren_lnum < 1
                 return lnum
             else
@@ -211,7 +200,7 @@ endfunction
 
 " Line up with open parenthesis/bracket/brace.
 function! s:indent_like_opening_paren(lnum)
-    let [paren_lnum, paren_col] = s:find_opening_paren(a:lnum)
+    let [paren_lnum, paren_col] = s:find_opening_paren(a:lnum, 1)
     if paren_lnum <= 0
         return -2
     endif
@@ -241,7 +230,7 @@ function! s:indent_like_opening_paren(lnum)
     " from the next logical line.
     if text =~# b:control_statement && res == base + s:sw()
         " But only if not inside parens itself (Flake's E127).
-        let [paren_lnum, _] = s:find_opening_paren(paren_lnum)
+        let [paren_lnum, _] = s:find_opening_paren(paren_lnum, 1)
         if paren_lnum <= 0
             return res + s:sw()
         endif