mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
runtime: move matchit.vim to /pack/dist/opt/
Align matchit.vim with upstream Vim. We don't want to maintain a fork of matchit.vim; our small changes should be sent to https://github.com/chrisbra/matchit
This commit is contained in:
parent
62b5f25b6b
commit
5342342426
@ -64,6 +64,10 @@ the differences.
|
|||||||
- 'wildmenu' is enabled
|
- 'wildmenu' is enabled
|
||||||
- 'wildoptions' defaults to "pum,tagfile"
|
- 'wildoptions' defaults to "pum,tagfile"
|
||||||
|
|
||||||
|
- The |man.vim| plugin is enabled, to provide the |:Man| command.
|
||||||
|
- The |matchit| plugin is enabled. To disable it in your config: >
|
||||||
|
:let loaded_matchit = 1
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. New Features *nvim-features*
|
3. New Features *nvim-features*
|
||||||
|
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
*pi_matchit.txt* Extended "%" matching
|
*matchit.txt* Extended "%" matching
|
||||||
|
|
||||||
For Vim version 8.1. Last change: 2019 Jan 28
|
For instructions on installing this file, type
|
||||||
|
`:help matchit-install`
|
||||||
|
inside Vim.
|
||||||
|
|
||||||
|
For Vim version 8.1. Last change: 2019 May 05
|
||||||
|
|
||||||
|
|
||||||
|
VIM REFERENCE MANUAL by Benji Fisher et al
|
||||||
|
|
||||||
*matchit* *matchit.vim*
|
*matchit* *matchit.vim*
|
||||||
|
|
||||||
@ -34,7 +41,7 @@ g% Cycle backwards through matching groups, as specified by
|
|||||||
]% Go to [count] next unmatched group, as specified by
|
]% Go to [count] next unmatched group, as specified by
|
||||||
|b:match_words|. Similar to |]}|.
|
|b:match_words|. Similar to |]}|.
|
||||||
|
|
||||||
*a%* *v_a%*
|
*v_a%*
|
||||||
a% In Visual mode, select the matching group, as specified by
|
a% In Visual mode, select the matching group, as specified by
|
||||||
|b:match_words|, containing the cursor. Similar to |v_a[|.
|
|b:match_words|, containing the cursor. Similar to |v_a[|.
|
||||||
A [count] is ignored, and only the first character of the closing
|
A [count] is ignored, and only the first character of the closing
|
||||||
@ -77,9 +84,9 @@ To support a new language, see |matchit-newlang| below.
|
|||||||
DETAILS: *matchit-details* *matchit-parse*
|
DETAILS: *matchit-details* *matchit-parse*
|
||||||
|
|
||||||
Here is an outline of what matchit.vim does each time you hit the "%" key. If
|
Here is an outline of what matchit.vim does each time you hit the "%" key. If
|
||||||
there are backrefs in |b:match_words| then the first step is to produce a
|
there are |backref|s in |b:match_words| then the first step is to produce a
|
||||||
version in which these back references have been eliminated; if there are no
|
version in which these back references have been eliminated; if there are no
|
||||||
backrefs then this step is skipped. This step is called parsing. For
|
|backref|s then this step is skipped. This step is called parsing. For
|
||||||
example, "\(foo\|bar\):end\1" is parsed to yield
|
example, "\(foo\|bar\):end\1" is parsed to yield
|
||||||
"\(foo\|bar\):end\(foo\|bar\)". This can get tricky, especially if there are
|
"\(foo\|bar\):end\(foo\|bar\)". This can get tricky, especially if there are
|
||||||
nested groups. If debugging is turned on, the parsed version is saved as
|
nested groups. If debugging is turned on, the parsed version is saved as
|
||||||
@ -124,9 +131,9 @@ column of the start of the match is saved as |b:match_col|.
|
|||||||
Next, the script looks through |b:match_words| (original and parsed versions)
|
Next, the script looks through |b:match_words| (original and parsed versions)
|
||||||
for the group and pattern that match. If debugging is turned on, the group is
|
for the group and pattern that match. If debugging is turned on, the group is
|
||||||
saved as |b:match_ini| (the first pattern) and |b:match_tail| (the rest). If
|
saved as |b:match_ini| (the first pattern) and |b:match_tail| (the rest). If
|
||||||
there are backrefs then, in addition, the matching pattern is saved as
|
there are |backref|s then, in addition, the matching pattern is saved as
|
||||||
|b:match_word| and a table of translations is saved as |b:match_table|. If
|
|b:match_word| and a table of translations is saved as |b:match_table|. If
|
||||||
there are backrefs, these are determined from the matching pattern and
|
there are |backref|s, these are determined from the matching pattern and
|
||||||
|b:match_match| and substituted into each pattern in the matching group.
|
|b:match_match| and substituted into each pattern in the matching group.
|
||||||
|
|
||||||
The script decides whether to search forwards or backwards and chooses
|
The script decides whether to search forwards or backwards and chooses
|
||||||
@ -138,11 +145,32 @@ setting |b:match_skip|.
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
2. Activation *matchit-activate*
|
2. Activation *matchit-activate*
|
||||||
|
|
||||||
For a new language, you can add a line such as >
|
To use the matchit plugin add this line to your |vimrc|: >
|
||||||
|
packadd! matchit
|
||||||
|
|
||||||
|
The script should start working the next time you start Vim.
|
||||||
|
|
||||||
|
(Earlier versions of the script did nothing unless a |buffer-variable| named
|
||||||
|
|b:match_words| was defined. Even earlier versions contained autocommands
|
||||||
|
that set this variable for various file types. Now, |b:match_words| is
|
||||||
|
defined in many of the default |filetype-plugin|s instead.)
|
||||||
|
|
||||||
|
For a new language, you can add autocommands to the script or to your vimrc
|
||||||
|
file, but the recommended method is to add a line such as >
|
||||||
let b:match_words = '\<foo\>:\<bar\>'
|
let b:match_words = '\<foo\>:\<bar\>'
|
||||||
to the corresponding |filetype-plugin|. See |b:match_words| below for how
|
to the |filetype-plugin| for your language. See |b:match_words| below for how
|
||||||
this variable is interpreted.
|
this variable is interpreted.
|
||||||
|
|
||||||
|
TROUBLESHOOTING *matchit-troubleshoot*
|
||||||
|
|
||||||
|
The script should work in most installations of Vim. It may not work if Vim
|
||||||
|
was compiled with a minimal feature set, for example if the |+syntax| option
|
||||||
|
was not enabled. If your Vim has support for syntax compiled in, but you do
|
||||||
|
not have |syntax| highlighting turned on, matchit.vim should work, but it may
|
||||||
|
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.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. Configuration *matchit-configure*
|
3. Configuration *matchit-configure*
|
||||||
|
|
||||||
@ -231,7 +259,7 @@ have only one group; the effect is undefined if a group has only one pattern.
|
|||||||
A simple example is >
|
A simple example is >
|
||||||
:let b:match_words = '\<if\>:\<endif\>,'
|
:let b:match_words = '\<if\>:\<endif\>,'
|
||||||
\ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>'
|
\ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>'
|
||||||
(In Vim regular expressions, |/\<| and |/\>| denote word boundaries. Thus "if"
|
(In Vim regular expressions, |\<| and |\>| denote word boundaries. Thus "if"
|
||||||
matches the end of "endif" but "\<if\>" does not.) Then banging on the "%"
|
matches the end of "endif" but "\<if\>" does not.) Then banging on the "%"
|
||||||
key will bounce the cursor between "if" and the matching "endif"; and from
|
key will bounce the cursor between "if" and the matching "endif"; and from
|
||||||
"while" to any matching "continue" or "break", then to the matching "endwhile"
|
"while" to any matching "continue" or "break", then to the matching "endwhile"
|
||||||
@ -252,7 +280,7 @@ definition to a |filetype-plugin| file.
|
|||||||
Tips: Be careful that your initial pattern does not match your final pattern.
|
Tips: Be careful that your initial pattern does not match your final pattern.
|
||||||
See the example above for the use of word-boundary expressions. It is usually
|
See the example above for the use of word-boundary expressions. It is usually
|
||||||
better to use ".\{-}" (as many as necessary) instead of ".*" (as many as
|
better to use ".\{-}" (as many as necessary) instead of ".*" (as many as
|
||||||
possible). See |/\{-|. For example, in the string "<tag>label</tag>", "<.*>"
|
possible). See |\{-|. For example, in the string "<tag>label</tag>", "<.*>"
|
||||||
matches the whole string whereas "<.\{-}>" and "<[^>]*>" match "<tag>" and
|
matches the whole string whereas "<.\{-}>" and "<[^>]*>" match "<tag>" and
|
||||||
"</tag>".
|
"</tag>".
|
||||||
|
|
||||||
@ -271,18 +299,18 @@ if keywords are only recognized after the start of a line or after a
|
|||||||
semicolon (;), with optional white space.
|
semicolon (;), with optional white space.
|
||||||
|
|
||||||
*matchit-backref* *matchit-\1*
|
*matchit-backref* *matchit-\1*
|
||||||
In any group, the expressions `\1`, `\2`, ..., `\9` (see |/\1|) refer to parts of the
|
In any group, the expressions |\1|, |\2|, ..., |\9| refer to parts of the
|
||||||
INITIAL pattern enclosed in escaped parentheses. These are referred to as
|
INITIAL pattern enclosed in |\(|escaped parentheses|\)|. These are referred
|
||||||
back references, or backrefs. For example, >
|
to as back references, or backrefs. For example, >
|
||||||
:let b:match_words = '\<b\(o\+\)\>:\(h\)\1\>'
|
:let b:match_words = '\<b\(o\+\)\>:\(h\)\1\>'
|
||||||
means that "bo" pairs with "ho" and "boo" pairs with "hoo" and so on. Note
|
means that "bo" pairs with "ho" and "boo" pairs with "hoo" and so on. Note
|
||||||
that "\1" does not refer to the "\(h\)" in this example. If you have
|
that "\1" does not refer to the "\(h\)" in this example. If you have
|
||||||
"\(nested \(parentheses\)\) then "\d" refers to the d-th "\(" and everything
|
"\(nested \(parentheses\)\) then "\d" refers to the d-th "\(" and everything
|
||||||
up to and including the matching "\)": in "\(nested\(parentheses\)\)", "\1"
|
up to and including the matching "\)": in "\(nested\(parentheses\)\)", "\1"
|
||||||
refers to everything and "\2" refers to "\(parentheses\)". If you use a
|
refers to everything and "\2" refers to "\(parentheses\)". If you use a
|
||||||
variable such as `s:notend` or `s:sol` in the previous paragraph then remember
|
variable such as |s:notend| or |s:sol| in the previous paragraph then remember
|
||||||
to count any "\(" patterns in this variable. You do not have to count groups
|
to count any "\(" patterns in this variable. You do not have to count groups
|
||||||
defined by |/\%(\)|.
|
defined by |\%(\)|.
|
||||||
|
|
||||||
It should be possible to resolve back references from any pattern in the
|
It should be possible to resolve back references from any pattern in the
|
||||||
group. For example, >
|
group. For example, >
|
||||||
@ -293,7 +321,7 @@ cannot be determined from "andbar". On the other hand, >
|
|||||||
should work (and have the same effect as "foobar:barfoo:endfoobar"), although
|
should work (and have the same effect as "foobar:barfoo:endfoobar"), although
|
||||||
this has not been thoroughly tested.
|
this has not been thoroughly tested.
|
||||||
|
|
||||||
You can use |/zero-width| patterns such as |/\@<=| and |/\zs|. (The latter has
|
You can use |zero-width| patterns such as |\@<=| and |\zs|. (The latter has
|
||||||
not been thouroughly tested in matchit.vim.) For example, if the keyword "if"
|
not been thouroughly tested in matchit.vim.) For example, if the keyword "if"
|
||||||
must occur at the start of the line, with optional white space, you might use
|
must occur at the start of the line, with optional white space, you might use
|
||||||
the pattern "\(^\s*\)\@<=if" so that the cursor will end on the "i" instead of
|
the pattern "\(^\s*\)\@<=if" so that the cursor will end on the "i" instead of
|
||||||
@ -301,7 +329,7 @@ at the start of the line. For another example, if HTML had only one tag then
|
|||||||
one could >
|
one could >
|
||||||
:let b:match_words = '<:>,<\@<=tag>:<\@<=/tag>'
|
:let b:match_words = '<:>,<\@<=tag>:<\@<=/tag>'
|
||||||
so that "%" can bounce between matching "<" and ">" pairs or (starting on
|
so that "%" can bounce between matching "<" and ">" pairs or (starting on
|
||||||
"tag" or "/tag") between matching tags. Without the |/\@<=|, the script would
|
"tag" or "/tag") between matching tags. Without the |\@<=|, the script would
|
||||||
bounce from "tag" to the "<" in "</tag>", and another "%" would not take you
|
bounce from "tag" to the "<" in "</tag>", and another "%" would not take you
|
||||||
back to where you started.
|
back to where you started.
|
||||||
|
|
||||||
@ -318,10 +346,10 @@ the variables described below. You will probably also want to read
|
|||||||
|
|
||||||
Defining the variable |b:match_debug| causes the script to set the following
|
Defining the variable |b:match_debug| causes the script to set the following
|
||||||
variables, each time you hit the "%" key. Several of these are only defined
|
variables, each time you hit the "%" key. Several of these are only defined
|
||||||
if |b:match_words| includes backrefs.
|
if |b:match_words| includes |backref|s.
|
||||||
|
|
||||||
*b:match_pat*
|
*b:match_pat*
|
||||||
The b:match_pat variable is set to |b:match_words| with backrefs parsed.
|
The b:match_pat variable is set to |b:match_words| with |backref|s parsed.
|
||||||
*b:match_match*
|
*b:match_match*
|
||||||
The b:match_match variable is set to the bit of text that is recognized as a
|
The b:match_match variable is set to the bit of text that is recognized as a
|
||||||
match.
|
match.
|
||||||
@ -330,15 +358,15 @@ The b:match_col variable is set to the cursor column of the start of the
|
|||||||
matching text.
|
matching text.
|
||||||
*b:match_wholeBR*
|
*b:match_wholeBR*
|
||||||
The b:match_wholeBR variable is set to the comma-separated group of patterns
|
The b:match_wholeBR variable is set to the comma-separated group of patterns
|
||||||
that matches, with backrefs unparsed.
|
that matches, with |backref|s unparsed.
|
||||||
*b:match_iniBR*
|
*b:match_iniBR*
|
||||||
The b:match_iniBR variable is set to the first pattern in |b:match_wholeBR|.
|
The b:match_iniBR variable is set to the first pattern in |b:match_wholeBR|.
|
||||||
*b:match_ini*
|
*b:match_ini*
|
||||||
The b:match_ini variable is set to the first pattern in |b:match_wholeBR|,
|
The b:match_ini variable is set to the first pattern in |b:match_wholeBR|,
|
||||||
with backrefs resolved from |b:match_match|.
|
with |backref|s resolved from |b:match_match|.
|
||||||
*b:match_tail*
|
*b:match_tail*
|
||||||
The b:match_tail variable is set to the remaining patterns in
|
The b:match_tail variable is set to the remaining patterns in
|
||||||
|b:match_wholeBR|, with backrefs resolved from |b:match_match|.
|
|b:match_wholeBR|, with |backref|s resolved from |b:match_match|.
|
||||||
*b:match_word*
|
*b:match_word*
|
||||||
The b:match_word variable is set to the pattern from |b:match_wholeBR| that
|
The b:match_word variable is set to the pattern from |b:match_wholeBR| that
|
||||||
matches |b:match_match|.
|
matches |b:match_match|.
|
||||||
@ -349,8 +377,15 @@ The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
5. Known Bugs and Limitations *matchit-bugs*
|
5. Known Bugs and Limitations *matchit-bugs*
|
||||||
|
|
||||||
|
Just because I know about a bug does not mean that it is on my todo list. I
|
||||||
|
try to respond to reports of bugs that cause real problems. If it does not
|
||||||
|
cause serious problems, or if there is a work-around, a bug may sit there for
|
||||||
|
a while. Moral: if a bug (known or not) bothers you, let me know.
|
||||||
|
|
||||||
It would be nice if "\0" were recognized as the entire pattern. That is, it
|
It would be nice if "\0" were recognized as the entire pattern. That is, it
|
||||||
would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1".
|
would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1". I may
|
||||||
|
try to implement this in a future version. (This is not so easy to arrange as
|
||||||
|
you might think!)
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
vim:tw=78:fo=tcq2:ft=help:
|
92
runtime/pack/dist/opt/matchit/plugin/matchit.vim
vendored
Normal file
92
runtime/pack/dist/opt/matchit/plugin/matchit.vim
vendored
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
" matchit.vim: (global plugin) Extended "%" matching
|
||||||
|
" Maintainer: Christian Brabandt
|
||||||
|
" Version: 1.15
|
||||||
|
" Last Change: 2019 Jan 28
|
||||||
|
" 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>
|
||||||
|
|
||||||
|
" Documentation:
|
||||||
|
" The documentation is in a separate file: ../doc/matchit.txt .
|
||||||
|
|
||||||
|
" Credits:
|
||||||
|
" Vim editor by Bram Moolenaar (Thanks, Bram!)
|
||||||
|
" Original script and design by Raul Segura Acevedo
|
||||||
|
" Support for comments by Douglas Potts
|
||||||
|
" Support for back references and other improvements by Benji Fisher
|
||||||
|
" Support for many languages by Johannes Zellner
|
||||||
|
" Suggestions for improvement, bug reports, and support for additional
|
||||||
|
" languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
|
||||||
|
" Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
|
||||||
|
|
||||||
|
" Debugging:
|
||||||
|
" If you'd like to try the built-in debugging commands...
|
||||||
|
" :MatchDebug to activate debugging for the current buffer
|
||||||
|
" This saves the values of several key script variables as buffer-local
|
||||||
|
" variables. See the MatchDebug() function, below, for details.
|
||||||
|
|
||||||
|
" TODO: I should think about multi-line patterns for b:match_words.
|
||||||
|
" This would require an option: how many lines to scan (default 1).
|
||||||
|
" This would be useful for Python, maybe also for *ML.
|
||||||
|
" TODO: Maybe I should add a menu so that people will actually use some of
|
||||||
|
" the features that I have implemented.
|
||||||
|
" TODO: Eliminate the MultiMatch function. Add yet another argument to
|
||||||
|
" Match_wrapper() instead.
|
||||||
|
" TODO: Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
|
||||||
|
" TODO: Make backrefs safer by using '\V' (very no-magic).
|
||||||
|
" TODO: Add a level of indirection, so that custom % scripts can use my
|
||||||
|
" work but extend it.
|
||||||
|
|
||||||
|
" Allow user to prevent loading and prevent duplicate loading.
|
||||||
|
if exists("g:loaded_matchit") || &cp
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
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>
|
||||||
|
vnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
|
||||||
|
vnoremap <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>
|
||||||
|
|
||||||
|
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:
|
||||||
|
nnoremap <silent> <Plug>(MatchitNormalMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>
|
||||||
|
nnoremap <silent> <Plug>(MatchitNormalMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>
|
||||||
|
vnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
|
||||||
|
vnoremap <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>
|
||||||
|
|
||||||
|
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:
|
||||||
|
vmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
||||||
|
xmap a% <Plug>(MatchitVisualTextObject)
|
||||||
|
|
||||||
|
" 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
|
||||||
|
" or viewed using the menu items below.
|
||||||
|
if !exists(":MatchDebug")
|
||||||
|
command! -nargs=0 MatchDebug call matchit#Match_debug()
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:sts=2:sw=2:et:
|
@ -1,92 +1,2 @@
|
|||||||
" matchit.vim: (global plugin) Extended "%" matching
|
" Nvim: load the matchit plugin by default.
|
||||||
" Maintainer: Christian Brabandt
|
packadd matchit
|
||||||
" Version: 1.15
|
|
||||||
" Last Change: 2019 Jan 28
|
|
||||||
" 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>
|
|
||||||
|
|
||||||
" Documentation:
|
|
||||||
" The documentation is in a separate file: ../doc/matchit.txt .
|
|
||||||
|
|
||||||
" Credits:
|
|
||||||
" Vim editor by Bram Moolenaar (Thanks, Bram!)
|
|
||||||
" Original script and design by Raul Segura Acevedo
|
|
||||||
" Support for comments by Douglas Potts
|
|
||||||
" Support for back references and other improvements by Benji Fisher
|
|
||||||
" Support for many languages by Johannes Zellner
|
|
||||||
" Suggestions for improvement, bug reports, and support for additional
|
|
||||||
" languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
|
|
||||||
" Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
|
|
||||||
|
|
||||||
" Debugging:
|
|
||||||
" If you'd like to try the built-in debugging commands...
|
|
||||||
" :MatchDebug to activate debugging for the current buffer
|
|
||||||
" This saves the values of several key script variables as buffer-local
|
|
||||||
" variables. See the MatchDebug() function, below, for details.
|
|
||||||
|
|
||||||
" TODO: I should think about multi-line patterns for b:match_words.
|
|
||||||
" This would require an option: how many lines to scan (default 1).
|
|
||||||
" This would be useful for Python, maybe also for *ML.
|
|
||||||
" TODO: Maybe I should add a menu so that people will actually use some of
|
|
||||||
" the features that I have implemented.
|
|
||||||
" TODO: Eliminate the MultiMatch function. Add yet another argument to
|
|
||||||
" Match_wrapper() instead.
|
|
||||||
" TODO: Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
|
|
||||||
" TODO: Make backrefs safer by using '\V' (very no-magic).
|
|
||||||
" TODO: Add a level of indirection, so that custom % scripts can use my
|
|
||||||
" work but extend it.
|
|
||||||
|
|
||||||
" Allow user to prevent loading and prevent duplicate loading.
|
|
||||||
if exists("g:loaded_matchit") || &cp
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
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>
|
|
||||||
vnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
|
|
||||||
vnoremap <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>
|
|
||||||
|
|
||||||
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:
|
|
||||||
nnoremap <silent> <Plug>(MatchitNormalMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>
|
|
||||||
nnoremap <silent> <Plug>(MatchitNormalMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>
|
|
||||||
vnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
|
|
||||||
vnoremap <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>
|
|
||||||
|
|
||||||
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:
|
|
||||||
vmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
|
||||||
xmap a% <Plug>(MatchitVisualTextObject)
|
|
||||||
|
|
||||||
" 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
|
|
||||||
" or viewed using the menu items below.
|
|
||||||
if !exists(":MatchDebug")
|
|
||||||
command! -nargs=0 MatchDebug call matchit#Match_debug()
|
|
||||||
endif
|
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
|
||||||
unlet s:save_cpo
|
|
||||||
|
|
||||||
" vim:sts=2:sw=2:et:
|
|
||||||
|
@ -178,12 +178,6 @@ preprocess_patch() {
|
|||||||
LC_ALL=C sed -e 's/\( [ab]\/src\)/\1\/nvim/g' \
|
LC_ALL=C sed -e 's/\( [ab]\/src\)/\1\/nvim/g' \
|
||||||
"$file" > "$file".tmp && mv "$file".tmp "$file"
|
"$file" > "$file".tmp && mv "$file".tmp "$file"
|
||||||
|
|
||||||
# Rename path to matchit plugin.
|
|
||||||
LC_ALL=C sed -e 's@\( [ab]/runtime\)/pack/dist/opt/matchit/\(plugin/matchit.vim\)@\1/\2@g' \
|
|
||||||
"$file" > "$file".tmp && mv "$file".tmp "$file"
|
|
||||||
LC_ALL=C sed -e 's@\( [ab]/runtime\)/pack/dist/opt/matchit/doc/\(matchit.txt\)@\1/doc/pi_\2@g' \
|
|
||||||
"$file" > "$file".tmp && mv "$file".tmp "$file"
|
|
||||||
|
|
||||||
# Rename test_urls.vim to check_urls.vim
|
# Rename test_urls.vim to check_urls.vim
|
||||||
LC_ALL=C sed -e 's@\( [ab]\)/runtime/doc/test\(_urls.vim\)@\1/scripts/check\2@g' \
|
LC_ALL=C sed -e 's@\( [ab]\)/runtime/doc/test\(_urls.vim\)@\1/scripts/check\2@g' \
|
||||||
"$file" > "$file".tmp && mv "$file".tmp "$file"
|
"$file" > "$file".tmp && mv "$file".tmp "$file"
|
||||||
|
Loading…
Reference in New Issue
Block a user