diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-08-25 06:07:43 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-25 06:07:43 +0800 |
commit | cf44121f7fb6f55a22e644a1e5e1f1dc6b90c27a (patch) | |
tree | 5c98c222adf773301fc32f847dbb20618899ecf9 /runtime/plugin | |
parent | 84f1c5e072565f946f8632fb72424553b773f8c0 (diff) | |
download | rneovim-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.vim | 8 |
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 |