spacevim/bundle/neocomplete.vim/autoload/neocomplete/mappings.vim
JIe 2bb7059579
Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
init
2024-08-21 14:17:26 +08:00

270 lines
9.0 KiB
VimL

"=============================================================================
" FILE: mappings.vim
" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>
" License: MIT license {{{
" Permission is hereby granted, free of charge, to any person obtaining
" a copy of this software and associated documentation files (the
" "Software"), to deal in the Software without restriction, including
" without limitation the rights to use, copy, modify, merge, publish,
" distribute, sublicense, and/or sell copies of the Software, and to
" permit persons to whom the Software is furnished to do so, subject to
" the following conditions:
"
" The above copyright notice and this permission notice shall be included
" in all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
" }}}
"=============================================================================
let s:save_cpo = &cpo
set cpo&vim
function! neocomplete#mappings#define_default_mappings() abort "{{{
inoremap <expr><silent> <Plug>(neocomplete_start_unite_complete)
\ unite#sources#neocomplete#start_complete()
inoremap <expr><silent> <Plug>(neocomplete_start_unite_quick_match)
\ unite#sources#neocomplete#start_quick_match()
if neocomplete#util#is_complete_select()
inoremap <silent> <Plug>(neocomplete_start_omni_complete)
\ <C-x><C-o>
else
inoremap <silent> <Plug>(neocomplete_start_omni_complete)
\ <C-x><C-o><C-p>
endif
if neocomplete#util#is_complete_select()
inoremap <silent> <Plug>(neocomplete_start_auto_complete)
\ <C-r>=neocomplete#mappings#auto_complete()<CR>
inoremap <silent> <Plug>(neocomplete_start_manual_complete)
\ <C-r>=neocomplete#mappings#manual_complete()<CR>
else
inoremap <silent> <Plug>(neocomplete_start_auto_complete)
\ <C-r>=neocomplete#mappings#auto_complete()<CR><C-r>=
\neocomplete#mappings#popup_post()<CR>
inoremap <silent> <Plug>(neocomplete_start_manual_complete)
\ <C-r>=neocomplete#mappings#manual_complete()<CR><C-r>=
\neocomplete#mappings#popup_post()<CR>
endif
if !has('patch-7.4.653')
" To prevent Vim's complete() bug.
if mapcheck('<C-h>', 'i') ==# ''
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
endif
if mapcheck('<BS>', 'i') ==# ''
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
endif
endif
inoremap <silent> <Plug>(neocomplete_auto_refresh)
\ <C-r>=neocomplete#mappings#refresh()<CR>
endfunction"}}}
function! neocomplete#mappings#auto_complete() abort "{{{
let neocomplete = neocomplete#get_current_neocomplete()
let cur_text = neocomplete#get_cur_text(1)
let complete_pos =
\ neocomplete#complete#_get_complete_pos(
\ neocomplete.complete_sources)
let base = cur_text[complete_pos :]
let neocomplete.candidates = neocomplete#complete#_get_words(
\ neocomplete.complete_sources, complete_pos, base)
let neocomplete.complete_str = base
let neocomplete.refresh = 0
if empty(neocomplete.candidates)
return ''
endif
" Start auto complete.
call complete(complete_pos+1, neocomplete.candidates)
return ''
endfunction"}}}
function! neocomplete#mappings#manual_complete() abort "{{{
let neocomplete = neocomplete#get_current_neocomplete()
let cur_text = neocomplete#get_cur_text(1)
let complete_sources = neocomplete#complete#_get_results(
\ cur_text, neocomplete.manual_sources)
let complete_pos =
\ neocomplete#complete#_get_complete_pos(
\ complete_sources)
let base = cur_text[complete_pos :]
let neocomplete.complete_pos = complete_pos
let neocomplete.candidates = neocomplete#complete#_get_words(
\ complete_sources, complete_pos, base)
let neocomplete.complete_str = base
if empty(neocomplete.candidates)
return ''
endif
" Start auto complete.
call complete(complete_pos+1, neocomplete.candidates)
return ''
endfunction"}}}
function! neocomplete#mappings#smart_close_popup() abort "{{{
return neocomplete#mappings#cancel_popup()
endfunction
"}}}
function! neocomplete#mappings#close_popup() abort "{{{
let neocomplete = neocomplete#get_current_neocomplete()
let neocomplete.complete_str = ''
let neocomplete.old_cur_text = neocomplete#get_cur_text(1)
let neocomplete.skip_next_complete = 1
return pumvisible() ? "\<C-y>" : ''
endfunction
"}}}
function! neocomplete#mappings#cancel_popup() abort "{{{
let neocomplete = neocomplete#get_current_neocomplete()
let neocomplete.complete_str = ''
let neocomplete.old_cur_text = neocomplete#get_cur_text(1)
let neocomplete.old_complete_pos = col('.')
if mode() !=# 'i'
let neocomplete.old_complete_pos += 1
endif
let neocomplete.old_linenr = line('.')
let neocomplete.skip_next_complete = 1
return pumvisible() ? "\<C-e>" : ''
endfunction
"}}}
function! neocomplete#mappings#popup_post() abort "{{{
return !pumvisible() ? "" :
\ g:neocomplete#enable_auto_select ? "\<C-p>\<Down>" : "\<C-p>"
endfunction"}}}
function! neocomplete#mappings#undo_completion() abort "{{{
if !neocomplete#is_enabled()
return ''
endif
let neocomplete = neocomplete#get_current_neocomplete()
" Get cursor word.
let complete_str =
\ (!exists('v:completed_item') || empty(v:completed_item)) ?
\ neocomplete#helper#match_word(neocomplete#get_cur_text(1))[1] :
\ v:completed_item.word
let old_keyword_str = neocomplete.complete_str
let neocomplete.complete_str = complete_str
return (!pumvisible() ? '' :
\ complete_str ==# old_keyword_str ? "\<C-e>" : "\<C-y>")
\. repeat("\<BS>", strchars(complete_str)) . old_keyword_str
endfunction"}}}
function! neocomplete#mappings#complete_common_string() abort "{{{
if !neocomplete#is_enabled()
return ''
endif
" Get cursor word.
let neocomplete = neocomplete#get_current_neocomplete()
let neocomplete.event = 'mapping'
let complete_str =
\ neocomplete#helper#match_word(neocomplete#get_cur_text(1))[1]
if complete_str == ''
return ''
endif
" Save options.
let ignorecase_save = &ignorecase
try
if neocomplete#is_text_mode()
let &ignorecase = 1
elseif g:neocomplete#enable_smart_case
\ || g:neocomplete#enable_camel_case
let &ignorecase = complete_str !~ '\u'
else
let &ignorecase = g:neocomplete#enable_ignore_case
endif
let candidates = neocomplete#filters#matcher_head#define().filter(
\ { 'candidates' : copy(neocomplete.candidates),
\ 'complete_str' : complete_str})
if empty(candidates)
return ''
endif
let common_str = candidates[0].word
for keyword in candidates[1:]
while !neocomplete#head_match(keyword.word, common_str)
let common_str = common_str[: -2]
endwhile
endfor
finally
let &ignorecase = ignorecase_save
endtry
if common_str == ''
\ || complete_str ==? common_str
return ''
endif
return (pumvisible() ? "\<C-e>" : '')
\ . repeat("\<BS>", strchars(complete_str)) . common_str
endfunction"}}}
function! neocomplete#mappings#fallback(i) abort "{{{
let mapping = g:neocomplete#fallback_mappings[a:i]
return (pumvisible() || (mapping ==? "\<C-x>\<C-o>"
\ && &l:omnifunc == '')) ? "" :
\ (mapping . (neocomplete#util#is_complete_select() ?
\ "" : "\<C-p>"))
endfunction"}}}
function! neocomplete#mappings#refresh() abort "{{{
let neocomplete = neocomplete#get_current_neocomplete()
let neocomplete.refresh = 1
return pumvisible() ? "\<C-e>" : ''
endfunction"}}}
" Manual complete wrapper.
function! neocomplete#mappings#start_manual_complete(...) abort "{{{
if !neocomplete#is_enabled()
return ''
endif
if neocomplete#helper#get_force_omni_complete_pos(
\ neocomplete#get_cur_text(1)) >= 0
return "\<C-x>\<C-o>"
endif
" Set context filetype.
call neocomplete#context_filetype#set()
let neocomplete = neocomplete#get_current_neocomplete()
let sources = get(a:000, 0,
\ keys(neocomplete#available_sources()))
let neocomplete.manual_sources = neocomplete#helper#get_sources_list(
\ neocomplete#util#convert2list(sources))
let neocomplete.sources_filetype = ''
call neocomplete#helper#complete_configure()
" Start complete.
return "\<C-r>=neocomplete#mappings#manual_complete()\<CR>"
\ . (neocomplete#util#is_complete_select() ?
\ "" : "\<C-r>=neocomplete#mappings#popup_post()\<CR>")
endfunction"}}}
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: foldmethod=marker