From 1cc4706e94489498b12c4844c1b3a2e9aa5cc921 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Sat, 20 Aug 2022 10:04:55 +0200 Subject: vim-patch:e80086446cc2 (#19848) * vim-patch:e80086446cc2 Update runtime files https://github.com/vim/vim/commit/e80086446cc20856ed8359bc8dc87c4d430da4c8 Co-authored-by: Sean Dewar --- runtime/autoload/python.vim | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'runtime/autoload') diff --git a/runtime/autoload/python.vim b/runtime/autoload/python.vim index 4b220708cf..e45dbd9db8 100644 --- a/runtime/autoload/python.vim +++ b/runtime/autoload/python.vim @@ -15,8 +15,9 @@ let s:maxoff = 50 " maximum number of lines to look backwards for () function s:SearchBracket(fromlnum, flags) return searchpairpos('[[({]', '', '[])}]', a:flags, - \ {-> synID('.', col('.'), v:true)->synIDattr('name') - \ =~ '\%(Comment\|Todo\|String\)$'}, + \ {-> synstack('.', col('.')) + \ ->map({_, id -> id->synIDattr('name')}) + \ ->match('\%(Comment\|Todo\|String\)$') >= 0}, \ [0, a:fromlnum - s:maxoff]->max(), s:searchpair_timeout) endfunction @@ -143,12 +144,16 @@ function python#GetIndent(lnum, ...) " If the last character in the line is a comment, do a binary search for " the start of the comment. synID() is slow, a linear search would take " too long on a long line. - if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)" + if synstack(plnum, pline_len) + \ ->map({_, id -> id->synIDattr('name')}) + \ ->match('\%(Comment\|Todo\)$') >= 0 let min = 1 let max = pline_len while min < max let col = (min + max) / 2 - if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)" + if synstack(plnum, col) + \ ->map({_, id -> id->synIDattr('name')}) + \ ->match('\%(Comment\|Todo\)$') >= 0 let max = col else let min = col + 1 -- cgit