blob: fb3b1ffaef1f60eebb7212ad3a1e497dfe8e7471 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
"=============================================================================
" FILE: mapping.vim
" AUTHOR: Shougo Matsushita <Shougo.Matsu at gmail.com>
" License: MIT license
"=============================================================================
function! deoplete#mapping#_init() abort
inoremap <silent> <Plug>_
\ <C-r>=deoplete#mapping#_complete()<CR>
endfunction
function! deoplete#mapping#_completefunc(findstart, base) abort
if a:findstart
return g:deoplete#_context.complete_position
else
return g:deoplete#_context.candidates
endif
endfunction
function! deoplete#mapping#_complete() abort
call complete(g:deoplete#_context.complete_position + 1,
\ g:deoplete#_context.candidates)
return ''
endfunction
function! deoplete#mapping#_set_completeopt() abort
if exists('g:deoplete#_saved_completeopt')
return
endif
let g:deoplete#_saved_completeopt = &completeopt
set completeopt-=longest
set completeopt+=menuone
set completeopt-=menu
if &completeopt !~# 'noinsert\|noselect'
set completeopt+=noselect
endif
endfunction
function! deoplete#mapping#_restore_completeopt() abort
if exists('g:deoplete#_saved_completeopt')
let &completeopt = g:deoplete#_saved_completeopt
unlet g:deoplete#_saved_completeopt
endif
endfunction
function! deoplete#mapping#_rpcrequest_wrapper(sources) abort
if !exists('g:deoplete#_initialized')
return ''
endif
call rpcnotify(g:deoplete#_channel_id,
\ 'deoplete_manual_completion_begin',
\ deoplete#init#_context('Manual', a:sources))
return ''
endfunction
function! deoplete#mapping#_undo_completion() abort
endfunction
function! deoplete#mapping#_complete_common_string() abort
if deoplete#initialize()
return
endif
" Get cursor word.
let complete_str = matchstr(deoplete#util#get_input(''), '\w*$')
if complete_str == '' || !has_key(g:deoplete#_context, 'candidates')
return ''
endif
let candidates = filter(copy(g:deoplete#_context.candidates),
\ 'stridx(tolower(v:val.word), tolower(complete_str)) == 0')
if empty(candidates)
return ''
endif
let common_str = candidates[0].word
for candidate in candidates[1:]
while stridx(tolower(candidate.word), tolower(common_str)) != 0
let common_str = common_str[: -2]
endwhile
endfor
if common_str == '' || complete_str ==? common_str
return ''
endif
return (pumvisible() ? "\<C-e>" : '')
\ . repeat("\<BS>", strchars(complete_str)) . common_str
endfunction
|