changeset 32709:ea044451c98f

update matchit (#12611) Commit: https://github.com/vim/vim/commit/bd76c89e31ac9d9efd00ec8dda9c32436415dbbb Author: Christian Brabandt <cb@256bit.org> Date: Wed Aug 9 17:39:53 2023 +0200 update matchit (https://github.com/vim/vim/issues/12611)
author Christian Brabandt <cb@256bit.org>
date Wed, 09 Aug 2023 17:45:05 +0200
parents 346703c4ddd1
children a57db996dbe3
files runtime/pack/dist/opt/matchit/autoload/matchit.vim runtime/pack/dist/opt/matchit/doc/matchit.txt runtime/pack/dist/opt/matchit/plugin/matchit.vim
diffstat 3 files changed, 96 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/pack/dist/opt/matchit/autoload/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/autoload/matchit.vim
@@ -1,6 +1,6 @@
 "  matchit.vim: (global plugin) Extended "%" matching
 "  autload script of matchit plugin, see ../plugin/matchit.vim
-"  Last Change: Jun 10, 2021
+"  Last Change: Jan 24, 2022
 
 " Neovim does not support scriptversion
 if has("vimscript-4")
@@ -42,6 +42,10 @@ function s:RestoreOptions()
     let restore_options = " ve=" .. &ve .. restore_options
     set ve=
   endif
+  if &smartcase
+    let restore_options = " smartcase " .. restore_options
+    set nosmartcase
+  endif
   return restore_options
 endfunction
 
@@ -134,9 +138,6 @@ function matchit#Match_wrapper(word, for
     let curcol = match(matchline, regexp)
     " If there is no match, give up.
     if curcol == -1
-      " Make sure macros abort properly
-      "exe "norm! \<esc>"
-      call feedkeys("\e", 'tni')
       return s:CleanUp(restore_options, a:mode, startpos)
     endif
     let endcol = matchend(matchline, regexp)
@@ -756,15 +757,15 @@ endfun
 fun! s:ParseSkip(str)
   let skip = a:str
   if skip[1] == ":"
-    if skip[0] == "s"
+    if skip[0] ==# "s"
       let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" ..
         \ strpart(skip,2) .. "'"
-    elseif skip[0] == "S"
+    elseif skip[0] ==# "S"
       let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" ..
         \ strpart(skip,2) .. "'"
-    elseif skip[0] == "r"
+    elseif skip[0] ==# "r"
       let skip = "strpart(getline('.'),0,col('.'))=~'" .. strpart(skip,2) .. "'"
-    elseif skip[0] == "R"
+    elseif skip[0] ==# "R"
       let skip = "strpart(getline('.'),0,col('.'))!~'" .. strpart(skip,2) .. "'"
     endif
   endif
--- a/runtime/pack/dist/opt/matchit/doc/matchit.txt
+++ b/runtime/pack/dist/opt/matchit/doc/matchit.txt
@@ -1,10 +1,10 @@
-*matchit.txt*	Extended "%" matching
+*matchit.txt*   Extended "%" matching
 
 For instructions on installing this file, type
 	`:help matchit-install`
 inside Vim.
 
-For Vim version 8.2.  Last change:  2021 Dec 24
+For Vim version 9.0.  Last change:  2023 June 28
 
 
 		  VIM REFERENCE MANUAL    by Benji Fisher et al
@@ -148,10 +148,6 @@ To use the matchit plugin add this line 
 
 The script should start working the next time you start Vim.
 
-To use the matching plugin after startup, you can use this command (note the
-omitted '!'): >
-	packadd matchit
-
 To use the matchit plugin after Vim has started, execute this command: >
        packadd matchit
 
@@ -176,6 +172,22 @@ fail to skip matching groups in comments
 mechanism is turned off, the |b:match_words| variable will probably not be
 defined automatically.
 
+2.1 Temporarily disable the matchit plugin	*matchit-disable* *:MatchDisable*
+
+To temporarily reset the plugins, that are setup you can run the following
+command: >
+	:MatchDisable
+
+This will delete all the defined key mappings to the Vim default.
+Now the "%" command will work like before loading the plugin |%|
+
+2.2 Re-enable the matchit plugin		*:MatchEnable*
+
+To re-enable the plugin, after it was disabled, use the following command: >
+	:MatchEnable
+
+This will resetup the key mappings.
+
 ==============================================================================
 3. Configuration					*matchit-configure*
 
@@ -244,6 +256,9 @@ Examples:
 	comment character) you can >
 		:let b:match_skip = 'r:\(^\|[^\\]\)\(\\\\\)*%'
 <
+	See the $VIMRUNTIME/ftplugin/vim.vim for an example that uses both
+	syntax and a regular expression.
+
 ==============================================================================
 4. Supporting a New Language				*matchit-newlang*
 							*b:match_words*
--- a/runtime/pack/dist/opt/matchit/plugin/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/plugin/matchit.vim
@@ -1,7 +1,7 @@
 "  matchit.vim: (global plugin) Extended "%" matching
 "  Maintainer:  Christian Brabandt
-"  Version:     1.18
-"  Last Change: 2020 Dec 23
+"  Version:     1.19
+"  Last Change: 2023, June 28th
 "  Repository:  https://github.com/chrisbra/matchit
 "  Previous URL:http://www.vim.org/script.php?script_id=39
 "  Previous Maintainer:  Benji Fisher PhD   <benji@member.AMS.org>
@@ -46,44 +46,65 @@ let g:loaded_matchit = 1
 let s:save_cpo = &cpo
 set cpo&vim
 
-nnoremap <silent> <Plug>(MatchitNormalForward)     :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
-nnoremap <silent> <Plug>(MatchitNormalBackward)    :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
-xnoremap <silent> <Plug>(MatchitVisualForward)     :<C-U>call matchit#Match_wrapper('',1,'v')<CR>
-      \:if col("''") != col("$") \| exe ":normal! m'" \| endif<cr>gv``
-xnoremap <silent> <Plug>(MatchitVisualBackward)    :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
-onoremap <silent> <Plug>(MatchitOperationForward)  :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
-onoremap <silent> <Plug>(MatchitOperationBackward) :<C-U>call matchit#Match_wrapper('',0,'o')<CR>
-
-" Analogues of [{ and ]} using matching patterns:
-nnoremap <silent> <Plug>(MatchitNormalMultiBackward)    :<C-U>call matchit#MultiMatch("bW", "n")<CR>
-nnoremap <silent> <Plug>(MatchitNormalMultiForward)     :<C-U>call matchit#MultiMatch("W",  "n")<CR>
-xnoremap <silent> <Plug>(MatchitVisualMultiBackward)    :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
-xnoremap <silent> <Plug>(MatchitVisualMultiForward)     :<C-U>call matchit#MultiMatch("W",  "n")<CR>m'gv``
-onoremap <silent> <Plug>(MatchitOperationMultiBackward) :<C-U>call matchit#MultiMatch("bW", "o")<CR>
-onoremap <silent> <Plug>(MatchitOperationMultiForward)  :<C-U>call matchit#MultiMatch("W",  "o")<CR>
-
-" text object:
-xmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
-
-if !exists("g:no_plugin_maps")
-  nmap <silent> %  <Plug>(MatchitNormalForward)
-  nmap <silent> g% <Plug>(MatchitNormalBackward)
-  xmap <silent> %  <Plug>(MatchitVisualForward)
-  xmap <silent> g% <Plug>(MatchitVisualBackward)
-  omap <silent> %  <Plug>(MatchitOperationForward)
-  omap <silent> g% <Plug>(MatchitOperationBackward)
+fun MatchEnable()
+  nnoremap <silent> <Plug>(MatchitNormalForward)     :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
+  nnoremap <silent> <Plug>(MatchitNormalBackward)    :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
+  xnoremap <silent> <Plug>(MatchitVisualForward)     :<C-U>call matchit#Match_wrapper('',1,'v')<CR>
+        \:if col("''") != col("$") \| exe ":normal! m'" \| endif<cr>gv``
+  xnoremap <silent> <Plug>(MatchitVisualBackward)    :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
+  onoremap <silent> <Plug>(MatchitOperationForward)  :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
+  onoremap <silent> <Plug>(MatchitOperationBackward) :<C-U>call matchit#Match_wrapper('',0,'o')<CR>
 
   " Analogues of [{ and ]} using matching patterns:
-  nmap <silent> [% <Plug>(MatchitNormalMultiBackward)
-  nmap <silent> ]% <Plug>(MatchitNormalMultiForward)
-  xmap <silent> [% <Plug>(MatchitVisualMultiBackward)
-  xmap <silent> ]% <Plug>(MatchitVisualMultiForward)
-  omap <silent> [% <Plug>(MatchitOperationMultiBackward)
-  omap <silent> ]% <Plug>(MatchitOperationMultiForward)
+  nnoremap <silent> <Plug>(MatchitNormalMultiBackward)    :<C-U>call matchit#MultiMatch("bW", "n")<CR>
+  nnoremap <silent> <Plug>(MatchitNormalMultiForward)     :<C-U>call matchit#MultiMatch("W",  "n")<CR>
+  xnoremap <silent> <Plug>(MatchitVisualMultiBackward)    :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
+  xnoremap <silent> <Plug>(MatchitVisualMultiForward)     :<C-U>call matchit#MultiMatch("W",  "n")<CR>m'gv``
+  onoremap <silent> <Plug>(MatchitOperationMultiBackward) :<C-U>call matchit#MultiMatch("bW", "o")<CR>
+  onoremap <silent> <Plug>(MatchitOperationMultiForward)  :<C-U>call matchit#MultiMatch("W",  "o")<CR>
+
+  " text object:
+  xmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
+
+  if !exists("g:no_plugin_maps")
+    nmap <silent> %  <Plug>(MatchitNormalForward)
+    nmap <silent> g% <Plug>(MatchitNormalBackward)
+    xmap <silent> %  <Plug>(MatchitVisualForward)
+    xmap <silent> g% <Plug>(MatchitVisualBackward)
+    omap <silent> %  <Plug>(MatchitOperationForward)
+    omap <silent> g% <Plug>(MatchitOperationBackward)
 
-  " Text object
-  xmap a% <Plug>(MatchitVisualTextObject)
-endif
+    " Analogues of [{ and ]} using matching patterns:
+    nmap <silent> [% <Plug>(MatchitNormalMultiBackward)
+    nmap <silent> ]% <Plug>(MatchitNormalMultiForward)
+    xmap <silent> [% <Plug>(MatchitVisualMultiBackward)
+    xmap <silent> ]% <Plug>(MatchitVisualMultiForward)
+    omap <silent> [% <Plug>(MatchitOperationMultiBackward)
+    omap <silent> ]% <Plug>(MatchitOperationMultiForward)
+
+    " Text object
+    xmap a% <Plug>(MatchitVisualTextObject)
+  endif
+endfun
+
+fun MatchDisable()
+  " remove all the setup keymappings
+  nunmap %
+  nunmap g%
+  xunmap %
+  xunmap g%
+  ounmap %
+  ounmap g%
+
+  nunmap [%
+  nunmap ]%
+  xunmap [%
+  xunmap ]%
+  ounmap [%
+  ounmap ]%
+
+  xunmap a%
+endfun
 
 " Call this function to turn on debugging information.  Every time the main
 " script is run, buffer variables will be saved.  These can be used directly
@@ -91,6 +112,14 @@ endif
 if !exists(":MatchDebug")
   command! -nargs=0 MatchDebug call matchit#Match_debug()
 endif
+if !exists(":MatchDisable")
+  command! -nargs=0 MatchDisable :call MatchDisable()
+endif
+if !exists(":MatchEnable")
+  command! -nargs=0 MatchEnable :call MatchEnable()
+endif
+
+call MatchEnable()
 
 let &cpo = s:save_cpo
 unlet s:save_cpo