]> git.madduck.net Git - etc/vim.git/commitdiff

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: pass lnum/col always, no winsaveview
authorDaniel Hahler <git@thequod.de>
Fri, 16 Nov 2018 13:50:57 +0000 (14:50 +0100)
committerDaniel Hahler <git@thequod.de>
Fri, 16 Nov 2018 13:50:57 +0000 (14:50 +0100)
indent/python.vim

index 2953935111dc8c2538e32678f60a8889d033bfd8..2797fdbf484a97ed65611125a1baec9c9db7c584 100644 (file)
@@ -109,21 +109,14 @@ 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]
     for [p, maxoff] in items(s:paren_pairs)
         let stopline = max([0, line('.') - maxoff, nearest[0]])
@@ -154,7 +147,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 +204,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 +234,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