aboutsummaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/regex_escape.vim19
1 files changed, 9 insertions, 10 deletions
diff --git a/autoload/regex_escape.vim b/autoload/regex_escape.vim
index 6acff6b..b57392a 100644
--- a/autoload/regex_escape.vim
+++ b/autoload/regex_escape.vim
@@ -1,10 +1,9 @@
-" Define Vim pattern character classes of characters that should have an
-" escape character added before them to make them literal, for use in
-" substitute()
+" Define characters that should be scaped to make them literal, for use as the
+" second parameter to escape()
let s:classes = {
- \ 'bre': '[][\.*?^$]',
- \ 'ere': '[][\.*?^$+{}()/]',
- \ 'vim': '[][\.*^$~]'
+ \ 'bre': '\.[]*^$?',
+ \ 'ere': '\.[]*^$?+{}()/',
+ \ 'vim': '\.[]*^$~'
\ }
" This function does the actual translation, defined as 'operatorfunc' for the
@@ -45,12 +44,12 @@ function! regex_escape#Operatorfunc(type) abort
" Get the corresponding character class
let class = s:classes[flavor]
- " Perform the substitution on the unnamed register's contents, inserting a
+ " Perform the escaping on the unnamed register's contents, inserting a
" backslash before every instance of any character in that class
- let @@ = substitute(@@, class, '\\&', 'g')
+ let @@ = escape(@@, class)
- " Paste our substituted changes back in over the top of the previously
- " selected text, by reselecting it before the paste
+ " Paste our escaped changes back in over the top of the previously selected
+ " text, by reselecting it before the paste
silent normal! gvp
" Restore contents of the unnamed register and the previous values of the