From: Daniel Hahler <git@thequod.de>
Date: Sat, 17 Nov 2018 23:49:06 +0000 (+0100)
Subject: s:find_opening_paren: remove wrong optimization
X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/88333bde264a6cb4d81f68a962bfc0d883e7ed39

s:find_opening_paren: remove wrong optimization
---

diff --git a/indent/python.vim b/indent/python.vim
index 977ec05..b053083 100644
--- a/indent/python.vim
+++ b/indent/python.vim
@@ -119,16 +119,11 @@ function! s:find_opening_paren(lnum, col)
 
     let nearest = [0, 0]
     let timeout = g:python_pep8_indent_searchpair_timeout
+    let skip_special_chars = 's:_skip_special_chars(line("."), col("."))'
     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, timeout)
-            if !next[0] || !s:_skip_special_chars(next[0], next[1])
-                break
-            endif
-            call cursor(next[0], next[1])
-        endwhile
+        let next = searchpairpos(
+           \ '\V'.p[0], '', '\V'.p[1], 'bnW', skip_special_chars, stopline, timeout)
         if next[0] && (next[0] > nearest[0] || (next[0] == nearest[0] && next[1] > nearest[1]))
             let nearest = next
         endif
diff --git a/spec/indent/indent_spec.rb b/spec/indent/indent_spec.rb
index 9c52235..4227b3f 100644
--- a/spec/indent/indent_spec.rb
+++ b/spec/indent/indent_spec.rb
@@ -719,3 +719,11 @@ describe "Using O" do
     indent.should == 0
   end
 end
+
+describe "searchpairpos" do
+  before { vim.feedkeys '\<ESC>ggdG' }
+  it "handles nested parenthesis" do
+    vim.feedkeys 'iif foo.startswith("("):\<CR>'
+    indent.should == shiftwidth
+  end
+end