]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
update matchit (#12611)
authorChristian Brabandt <cb@256bit.org>
Wed, 9 Aug 2023 15:39:53 +0000 (17:39 +0200)
committerGitHub <noreply@github.com>
Wed, 9 Aug 2023 15:39:53 +0000 (17:39 +0200)
runtime/pack/dist/opt/matchit/autoload/matchit.vim
runtime/pack/dist/opt/matchit/doc/matchit.txt
runtime/pack/dist/opt/matchit/plugin/matchit.vim

index eafb7c0551bd5ec544f9fd1cefe7ca0ce223781d..dc2aba696dd750959a1687ca4810f5d5b4f39d53 100644 (file)
@@ -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, forward, mode) range
     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
index 52f448f787c89f3bcbc5a022d0f6f5365db293d6..d072d59aea4786a67c783638b0d4f3f11fddf923 100644 (file)
@@ -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 to your |vimrc|: >
 
 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 and strings.  If the |filetype|
 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*
index 51ba3a7f51fb68627817873db3bd510457086088..d6c735d7b4f312cf903cbaefa5c5d88109a52b69 100644 (file)
@@ -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)
-
-  " Text object
-  xmap a% <Plug>(MatchitVisualTextObject)
-endif
+  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)
+
+    " 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