aboutsummaryrefslogtreecommitdiff
path: root/runtime/plugin
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-08-25 06:07:43 +0800
committerGitHub <noreply@github.com>2024-08-25 06:07:43 +0800
commitcf44121f7fb6f55a22e644a1e5e1f1dc6b90c27a (patch)
tree5c98c222adf773301fc32f847dbb20618899ecf9 /runtime/plugin
parent84f1c5e072565f946f8632fb72424553b773f8c0 (diff)
downloadrneovim-cf44121f7fb6f55a22e644a1e5e1f1dc6b90c27a.tar.gz
rneovim-cf44121f7fb6f55a22e644a1e5e1f1dc6b90c27a.tar.bz2
rneovim-cf44121f7fb6f55a22e644a1e5e1f1dc6b90c27a.zip
vim-patch:9.1.0694: matchparen is slow on a long line (#30134)
Problem: The matchparen plugin is slow on a long line. Solution: Don't use a regexp to get char at and before cursor. (zeertzjq) Example: ```vim call setline(1, repeat(' foobar', 100000)) runtime plugin/matchparen.vim normal! $hhhhhhhh ``` closes: vim/vim#15568 https://github.com/vim/vim/commit/81e7513c86459c40676bd983f73c2722096d67a9
Diffstat (limited to 'runtime/plugin')
-rw-r--r--runtime/plugin/matchparen.vim8
1 files changed, 2 insertions, 6 deletions
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index 6c061c9fb8..2899612dce 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -60,12 +60,8 @@ func s:Highlight_Matching_Pair()
let before = 0
let text = getline(c_lnum)
- let matches = matchlist(text, '\(.\)\=\%'.c_col.'c\(.\=\)')
- if empty(matches)
- let [c_before, c] = ['', '']
- else
- let [c_before, c] = matches[1:2]
- endif
+ let c_before = text->strpart(0, c_col - 1)->slice(-1)
+ let c = text->strpart(c_col - 1)->slice(0, 1)
let plist = split(&matchpairs, '.\zs[:,]')
let i = index(plist, c)
if i < 0