mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 22:40:05 +08:00
51 lines
1.5 KiB
VimL
51 lines
1.5 KiB
VimL
|
"=============================================================================
|
||
|
" 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
|