"============================================================================= " 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