diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-10-19 16:22:31 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-10-19 16:22:31 +0200 |
commit | 2c64ca1802b2c99b16d2fdf581b68b5baffb082a (patch) | |
tree | aa6937d8f3704d98c6a5246e87e612b767104d22 /runtime/indent | |
parent | 04c86d27fed5757ae40246d7bb3fdcd0c1959468 (diff) |
Update runtime files
Diffstat (limited to 'runtime/indent')
-rw-r--r-- | runtime/indent/python.vim | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim index 4ce3c234a5..7ab3cb9f50 100644 --- a/runtime/indent/python.vim +++ b/runtime/indent/python.vim @@ -53,6 +53,11 @@ function GetPythonIndent(lnum) return 0 endif + " searchpair() can be slow sometimes, limit the time to 100 msec or what is + " put in g:pyindent_searchpair_timeout + let searchpair_stopline = 0 + let searchpair_timeout = get(g:, 'pyindent_searchpair_timeout', 150) + " If the previous line is inside parenthesis, use the indent of the starting " line. " Trick: use the non-existing "dummy" variable to break out of the loop when @@ -61,7 +66,8 @@ function GetPythonIndent(lnum) let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" - \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'", + \ searchpair_stopline, searchpair_timeout) if parlnum > 0 let plindent = indent(parlnum) let plnumstart = parlnum @@ -80,14 +86,16 @@ function GetPythonIndent(lnum) let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" - \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'", + \ searchpair_stopline, searchpair_timeout) if p > 0 if p == plnum " When the start is inside parenthesis, only indent one 'shiftwidth'. let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" - \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'", + \ searchpair_stopline, searchpair_timeout) if pp > 0 return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth()) endif |