mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 07:30:05 +08:00
100 lines
2.2 KiB
VimL
100 lines
2.2 KiB
VimL
|
"=============================================================================
|
||
|
" FILE: autoload/incsearch/config.vim
|
||
|
" AUTHOR: haya14busa
|
||
|
" License: MIT license
|
||
|
"=============================================================================
|
||
|
scriptencoding utf-8
|
||
|
let s:save_cpo = &cpo
|
||
|
set cpo&vim
|
||
|
|
||
|
let s:TRUE = !0
|
||
|
let s:FALSE = 0
|
||
|
lockvar s:TRUE s:FALSE
|
||
|
|
||
|
let s:U = incsearch#util#import()
|
||
|
|
||
|
"" incsearch config
|
||
|
" TODO: more detail documentation
|
||
|
" @command is equivalent with base_key TODO: fix this inconsistence
|
||
|
" @count default: v:count secret
|
||
|
" @mode default: mode(1) secret
|
||
|
let s:config = {
|
||
|
\ 'command': '/',
|
||
|
\ 'is_stay': s:FALSE,
|
||
|
\ 'is_expr': s:FALSE,
|
||
|
\ 'pattern': '',
|
||
|
\ 'mode': 'n',
|
||
|
\ 'count': 0,
|
||
|
\ 'prompt': '',
|
||
|
\ 'modules': [],
|
||
|
\ 'converters': [],
|
||
|
\ 'keymap': {}
|
||
|
\ }
|
||
|
|
||
|
" @return config for lazy value
|
||
|
function! s:lazy_config() abort
|
||
|
let m = mode(1)
|
||
|
return {
|
||
|
\ 'count': v:count,
|
||
|
\ 'mode': m,
|
||
|
\ 'is_expr': (m is# 'no'),
|
||
|
\ 'keymap': s:keymap()
|
||
|
\ }
|
||
|
endfunction
|
||
|
|
||
|
" @return config with default value
|
||
|
function! incsearch#config#make(additional) abort
|
||
|
let default = extend(deepcopy(s:config), s:lazy_config())
|
||
|
let c = s:U.deepextend(default, a:additional)
|
||
|
if c.prompt is# ''
|
||
|
let c.prompt = c.command
|
||
|
endif
|
||
|
return c
|
||
|
endfunction
|
||
|
|
||
|
let s:default_keymappings = {
|
||
|
\ "\<Tab>" : {
|
||
|
\ 'key' : '<Over>(incsearch-next)',
|
||
|
\ 'noremap' : 1,
|
||
|
\ },
|
||
|
\ "\<S-Tab>" : {
|
||
|
\ 'key' : '<Over>(incsearch-prev)',
|
||
|
\ 'noremap' : 1,
|
||
|
\ },
|
||
|
\ "\<C-j>" : {
|
||
|
\ 'key' : '<Over>(incsearch-scroll-f)',
|
||
|
\ 'noremap' : 1,
|
||
|
\ },
|
||
|
\ "\<C-k>" : {
|
||
|
\ 'key' : '<Over>(incsearch-scroll-b)',
|
||
|
\ 'noremap' : 1,
|
||
|
\ },
|
||
|
\ "\<C-l>" : {
|
||
|
\ 'key' : '<Over>(buffer-complete)',
|
||
|
\ 'noremap' : 1,
|
||
|
\ },
|
||
|
\ "\<CR>" : {
|
||
|
\ 'key': "\<CR>",
|
||
|
\ 'noremap': 1
|
||
|
\ },
|
||
|
\ }
|
||
|
|
||
|
" https://github.com/haya14busa/incsearch.vim/issues/35
|
||
|
if has('mac')
|
||
|
call extend(s:default_keymappings, {
|
||
|
\ '"+gP' : {
|
||
|
\ 'key': "\<C-r>+",
|
||
|
\ 'noremap': 1
|
||
|
\ },
|
||
|
\ })
|
||
|
endif
|
||
|
|
||
|
function! s:keymap() abort
|
||
|
return extend(copy(s:default_keymappings), g:incsearch_cli_key_mappings)
|
||
|
endfunction
|
||
|
|
||
|
let &cpo = s:save_cpo
|
||
|
unlet s:save_cpo
|
||
|
" __END__
|
||
|
" vim: expandtab softtabstop=2 shiftwidth=2 foldmethod=marker
|