diff options
| author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-11-13 21:13:28 -0500 |
|---|---|---|
| committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-11-13 21:15:29 -0500 |
| commit | 091ae1e63fb36b28ec8a0cadfcfbb4e90859af1b (patch) | |
| tree | 31946ffc6b1f8ed8ea40b67f83b4a77697a1be77 /runtime/plugin/matchparen.vim | |
| parent | 24ce4c62332e29b0c252e4ec64764cfb3d54bc65 (diff) | |
| download | rneovim-091ae1e63fb36b28ec8a0cadfcfbb4e90859af1b.tar.gz rneovim-091ae1e63fb36b28ec8a0cadfcfbb4e90859af1b.tar.bz2 rneovim-091ae1e63fb36b28ec8a0cadfcfbb4e90859af1b.zip | |
vim-patch:8.1.0143: matchit and matchparen don't handle E363
Problem: Matchit and matchparen don't handle E363.
Solution: Catch the E363 error. (Christian Brabandt)
https://github.com/vim/vim/commit/3d1d6475f9665660c80cc53a7da2d5450b8b8d08
Diffstat (limited to 'runtime/plugin/matchparen.vim')
| -rw-r--r-- | runtime/plugin/matchparen.vim | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim index d53fb22df0..65b9fe57bf 100644 --- a/runtime/plugin/matchparen.vim +++ b/runtime/plugin/matchparen.vim @@ -1,6 +1,6 @@ " Vim plugin for showing matching parens " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2018 Jun 23 +" Last Change: 2018 Jul 3 " Exit quickly when: " - this plugin was already loaded (or disabled) @@ -103,18 +103,28 @@ function! s:Highlight_Matching_Pair() call cursor(c_lnum, c_col - before) endif - " Build an expression that detects whether the current cursor position is in - " certain syntax types (string, comment, etc.), for use as searchpairpos()'s - " skip argument. - " We match "escape" for special items, such as lispEscapeSpecial. - let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' . + if !has("syntax") || !exists("g:syntax_on") + let s_skip = "0" + else + " Build an expression that detects whether the current cursor position is + " in certain syntax types (string, comment, etc.), for use as + " searchpairpos()'s skip argument. + " We match "escape" for special items, such as lispEscapeSpecial. + let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' . \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|comment"''))' - " If executing the expression determines that the cursor is currently in - " one of the syntax types, then we want searchpairpos() to find the pair - " within those syntax types (i.e., not skip). Otherwise, the cursor is - " outside of the syntax types and s_skip should keep its value so we skip any - " matching pair inside the syntax types. - execute 'if' s_skip '| let s_skip = "0" | endif' + " If executing the expression determines that the cursor is currently in + " one of the syntax types, then we want searchpairpos() to find the pair + " within those syntax types (i.e., not skip). Otherwise, the cursor is + " outside of the syntax types and s_skip should keep its value so we skip + " any matching pair inside the syntax types. + " Catch if this throws E363: pattern uses more memory than 'maxmempattern'. + try + execute 'if ' . s_skip . ' | let s_skip = "0" | endif' + catch /^Vim\%((\a\+)\)\=:E363/ + " We won't find anything, so skip searching, should keep Vim responsive. + return + endtry + endif " Limit the search to lines visible in the window. let stoplinebottom = line('w$') |