aboutsummaryrefslogtreecommitdiffstats
path: root/autoload/searchop.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/searchop.vim')
-rw-r--r--autoload/searchop.vim28
1 files changed, 28 insertions, 0 deletions
diff --git a/autoload/searchop.vim b/autoload/searchop.vim
new file mode 100644
index 0000000..6912787
--- /dev/null
+++ b/autoload/searchop.vim
@@ -0,0 +1,28 @@
+function! s:Search(type, ...)
+ let user_unnamed_register = @@
+
+ if a:0
+ silent execute "normal! gvy"
+ elseif a:type == 'line'
+ silent execute "normal! '[V']y"
+ else
+ silent execute "normal! `[v`]y"
+ endif
+
+ let @/ = substitute(escape(@@, '\'), '\n', '\\n', 'g')
+ call histadd('/', @/)
+
+ let @@ = user_unnamed_register
+endfunction
+
+function! searchop#SearchForward(type, ...)
+ call call('s:Search', [a:type] + a:000)
+
+ call feedkeys('n', 't')
+endfunction
+
+function! searchop#SearchBackward(type, ...)
+ call call('s:Search', [a:type] + a:000)
+
+ call feedkeys('N', 't')
+endfunction