1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 22:40:05 +08:00
SpaceVim/bundle/incsearch.vim/autoload/incsearch/over/modules/module_management.vim

51 lines
1.5 KiB
VimL
Raw Normal View History

"=============================================================================
" FILE: autoload/incsearch/over/modules/module_management.vim
" AUTHOR: haya14busa
" License: MIT license
"=============================================================================
scriptencoding utf-8
let s:save_cpo = &cpo
set cpo&vim
let s:module_management = {
\ 'name' : 'IncsearchModuleManagement',
\ 'modules' : [ ]
\}
function! s:module_management.on_enter(cmdline) abort
if !exists('s:default_backward_word')
let s:default_backward_word = a:cmdline.backward_word
endif
for module in self.modules
if has_key(module, '_condition') && ! module._condition()
call a:cmdline.disconnect(module.name)
if module.name ==# 'IgnoreRegexpBackwardWord'
function! a:cmdline.backward_word(...) abort
return call(s:default_backward_word, a:000, self)
endfunction
endif
elseif empty(a:cmdline.get_module(module.name))
call a:cmdline.connect(module)
if has_key(module, 'on_enter')
call module.on_enter(a:cmdline)
endif
endif
endfor
endfunction
function! s:module_management.priority(event) abort
" NOTE: to overwrite backward_word() with default function
return a:event ==# 'on_enter' ? 5 : 0
endfunction
function! incsearch#over#modules#module_management#make(modules) abort
let m = deepcopy(s:module_management)
let m.modules = a:modules
return m
endfunction
let &cpo = s:save_cpo
unlet s:save_cpo
" __END__
" vim: expandtab softtabstop=2 shiftwidth=2 foldmethod=marker