123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- "=============================================================================
- " FILE: neocomplete.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.
- " }}}
- "=============================================================================
- if !exists('g:loaded_neocomplete')
- runtime! plugin/neocomplete.vim
- endif
- let s:save_cpo = &cpo
- set cpo&vim
- " Global options definition. "{{{
- let g:neocomplete#max_list =
- \ get(g:, 'neocomplete#max_list', 100)
- let g:neocomplete#max_keyword_width =
- \ get(g:, 'neocomplete#max_keyword_width', 80)
- let g:neocomplete#auto_completion_start_length =
- \ get(g:, 'neocomplete#auto_completion_start_length', 2)
- let g:neocomplete#manual_completion_start_length =
- \ get(g:, 'neocomplete#manual_completion_start_length', 0)
- let g:neocomplete#min_keyword_length =
- \ get(g:, 'neocomplete#min_keyword_length', 4)
- let g:neocomplete#enable_ignore_case =
- \ get(g:, 'neocomplete#enable_ignore_case', &ignorecase)
- let g:neocomplete#enable_smart_case =
- \ get(g:, 'neocomplete#enable_smart_case', &infercase)
- let g:neocomplete#enable_camel_case =
- \ get(g:, 'neocomplete#enable_camel_case', 0)
- let g:neocomplete#disable_auto_complete =
- \ get(g:, 'neocomplete#disable_auto_complete', 0)
- let g:neocomplete#enable_fuzzy_completion =
- \ get(g:, 'neocomplete#enable_fuzzy_completion', 1)
- let g:neocomplete#auto_complete_delay =
- \ get(g:, 'neocomplete#auto_complete_delay', 50)
- let g:neocomplete#enable_auto_select =
- \ get(g:, 'neocomplete#enable_auto_select', 0)
- let g:neocomplete#enable_auto_delimiter =
- \ get(g:, 'neocomplete#enable_auto_delimiter', 0)
- let g:neocomplete#lock_buffer_name_pattern =
- \ get(g:, 'neocomplete#lock_buffer_name_pattern', '')
- let g:neocomplete#lock_iminsert =
- \ get(g:, 'neocomplete#lock_iminsert', 0)
- let g:neocomplete#enable_multibyte_completion =
- \ get(g:, 'neocomplete#enable_multibyte_completion', 0)
- let g:neocomplete#release_cache_time =
- \ get(g:, 'neocomplete#release_cache_time', 900)
- let g:neocomplete#skip_auto_completion_time =
- \ get(g:, 'neocomplete#skip_auto_completion_time', '0.3')
- let g:neocomplete#enable_auto_close_preview =
- \ get(g:, 'neocomplete#enable_auto_close_preview', 0)
- let g:neocomplete#enable_refresh_always =
- \ get(g:, 'neocomplete#enable_refresh_always', 0)
- let g:neocomplete#fallback_mappings =
- \ get(g:, 'neocomplete#fallback_mappings', [])
- let g:neocomplete#sources =
- \ get(g:, 'neocomplete#sources', {})
- let g:neocomplete#keyword_patterns =
- \ get(g:, 'neocomplete#keyword_patterns', {})
- let g:neocomplete#delimiter_patterns =
- \ get(g:, 'neocomplete#delimiter_patterns', {})
- let g:neocomplete#text_mode_filetypes =
- \ get(g:, 'neocomplete#text_mode_filetypes', {})
- let g:neocomplete#tags_filter_patterns =
- \ get(g:, 'neocomplete#tags_filter_patterns', {})
- let g:neocomplete#force_omni_input_patterns =
- \ get(g:, 'neocomplete#force_omni_input_patterns', {})
- let g:neocomplete#ignore_source_files =
- \ get(g:, 'neocomplete#ignore_source_files', [])
- "}}}
- function! neocomplete#initialize() abort "{{{
- return neocomplete#init#enable()
- endfunction"}}}
- function! neocomplete#get_current_neocomplete() abort "{{{
- if !exists('b:neocomplete')
- call neocomplete#init#_current_neocomplete()
- endif
- return b:neocomplete
- endfunction"}}}
- function! neocomplete#get_context() abort "{{{
- return neocomplete#get_current_neocomplete().context
- endfunction"}}}
- " Source helper. "{{{
- function! neocomplete#define_source(source) abort "{{{
- let sources = neocomplete#variables#get_sources()
- for source in neocomplete#util#convert2list(a:source)
- let source = neocomplete#init#_source(source)
- if !source.disabled
- let sources[source.name] = source
- endif
- endfor
- endfunction"}}}
- function! neocomplete#define_filter(filter) abort "{{{
- let filters = neocomplete#variables#get_filters()
- for filter in neocomplete#util#convert2list(a:filter)
- let filters[filter.name] = neocomplete#init#_filter(filter)
- endfor
- endfunction"}}}
- function! neocomplete#available_sources() abort "{{{
- return copy(neocomplete#variables#get_sources())
- endfunction"}}}
- function! neocomplete#custom_source(source_name, option_name, value) abort "{{{
- return neocomplete#custom#source(a:source_name, a:option_name, a:value)
- endfunction"}}}
- function! neocomplete#dup_filter(list) abort "{{{
- return neocomplete#util#dup_filter(a:list)
- endfunction"}}}
- function! neocomplete#system(...) abort "{{{
- return call('neocomplete#util#system', a:000)
- endfunction"}}}
- function! neocomplete#has_vimproc() abort "{{{
- return neocomplete#util#has_vimproc()
- endfunction"}}}
- function! neocomplete#get_cur_text(...) abort "{{{
- " Return cached text.
- let neocomplete = neocomplete#get_current_neocomplete()
- return (a:0 == 0 && mode() ==# 'i' &&
- \ neocomplete.cur_text != '') ?
- \ neocomplete.cur_text : neocomplete#helper#get_cur_text()
- endfunction"}}}
- function! neocomplete#get_keyword_pattern(...) abort "{{{
- let filetype = a:0 != 0? a:1 : neocomplete#get_context_filetype()
- if a:0 < 2
- return neocomplete#helper#unite_patterns(
- \ g:neocomplete#keyword_patterns, filetype)
- endif
- let source = neocomplete#variables#get_source(a:2)
- if !has_key(source, 'neocomplete__keyword_patterns')
- let source.neocomplete__keyword_patterns = {}
- endif
- if !has_key(source.neocomplete__keyword_patterns, filetype)
- let source.neocomplete__keyword_patterns[filetype] =
- \ neocomplete#helper#unite_patterns(
- \ source.keyword_patterns, filetype)
- endif
- return source.neocomplete__keyword_patterns[filetype]
- endfunction"}}}
- function! neocomplete#get_keyword_pattern_end(...) abort "{{{
- return '\%('.call('neocomplete#get_keyword_pattern', a:000).'\m\)$'
- endfunction"}}}
- function! neocomplete#match_word(...) abort "{{{
- return call('neocomplete#helper#match_word', a:000)
- endfunction"}}}
- function! neocomplete#is_enabled() abort "{{{
- return neocomplete#init#is_enabled()
- endfunction"}}}
- function! neocomplete#is_locked(...) abort "{{{
- return neocomplete#is_cache_disabled() || &paste
- \ || (&t_Co != '' && &t_Co < 8)
- \ || g:neocomplete#disable_auto_complete
- endfunction"}}}
- function! neocomplete#is_cache_disabled() abort "{{{
- let ignore_filetypes = ['fuf', 'ku']
- let bufnr = a:0 > 0 ? a:1 : bufnr('%')
- return !neocomplete#is_enabled()
- \ || index(ignore_filetypes, &filetype) >= 0
- \ || neocomplete#get_current_neocomplete().lock
- \ || (g:neocomplete#lock_buffer_name_pattern != '' &&
- \ bufname(bufnr) =~ g:neocomplete#lock_buffer_name_pattern)
- endfunction"}}}
- function! neocomplete#is_auto_select() abort "{{{
- return g:neocomplete#enable_auto_select
- endfunction"}}}
- function! neocomplete#is_auto_complete() abort "{{{
- let neocomplete = neocomplete#get_current_neocomplete()
- return neocomplete.is_auto_complete
- endfunction"}}}
- function! neocomplete#is_eskk_enabled() abort "{{{
- return exists('*eskk#is_enabled') && eskk#is_enabled()
- endfunction"}}}
- function! neocomplete#is_multibyte_input(cur_text) abort "{{{
- return (exists('b:skk_on') && b:skk_on)
- \ || (!g:neocomplete#enable_multibyte_completion
- \ && char2nr(split(a:cur_text, '\zs')[-1]) > 0x80)
- endfunction"}}}
- function! neocomplete#is_text_mode() abort "{{{
- let neocomplete = neocomplete#get_current_neocomplete()
- let filetypes = g:neocomplete#text_mode_filetypes
- return get(filetypes, neocomplete.context_filetype, 0)
- \ || get(filetypes, '_', 0)
- endfunction"}}}
- function! neocomplete#is_windows() abort "{{{
- return neocomplete#util#is_windows()
- endfunction"}}}
- function! neocomplete#is_prefetch() abort "{{{
- return 1
- endfunction"}}}
- function! neocomplete#exists_echodoc() abort "{{{
- return exists('g:loaded_echodoc') && g:loaded_echodoc
- endfunction"}}}
- function! neocomplete#within_comment() abort "{{{
- return neocomplete#get_current_neocomplete().within_comment
- endfunction"}}}
- function! neocomplete#print_error(string) abort "{{{
- echohl Error | echomsg '[neocomplete] ' . a:string | echohl None
- endfunction"}}}
- function! neocomplete#print_warning(string) abort "{{{
- echohl WarningMsg | echomsg '[neocomplete] ' . a:string | echohl None
- endfunction"}}}
- function! neocomplete#head_match(checkstr, headstr) abort "{{{
- let checkstr = &ignorecase ?
- \ tolower(a:checkstr) : a:checkstr
- let headstr = &ignorecase ?
- \ tolower(a:headstr) : a:headstr
- return stridx(checkstr, headstr) == 0
- endfunction"}}}
- function! neocomplete#get_source_filetypes(filetype) abort "{{{
- return neocomplete#helper#get_source_filetypes(a:filetype)
- endfunction"}}}
- function! neocomplete#escape_match(str) abort "{{{
- return escape(a:str, '~"*\.^$[]')
- endfunction"}}}
- function! neocomplete#get_context_filetype(...) abort "{{{
- let neocomplete = exists('b:neocomplete') ?
- \ b:neocomplete : neocomplete#get_current_neocomplete()
- if a:0 != 0 || mode() !=# 'i' ||
- \ neocomplete.context_filetype == ''
- call neocomplete#context_filetype#set()
- endif
- return neocomplete.context_filetype
- endfunction"}}}
- function! neocomplete#print_debug(expr) abort "{{{
- if g:neocomplete#enable_debug
- echomsg string(a:expr)
- endif
- endfunction"}}}
- function! neocomplete#get_data_directory() abort "{{{
- let g:neocomplete#data_directory =
- \ get(g:, 'neocomplete#data_directory',
- \ ($XDG_CACHE_HOME != '' ?
- \ $XDG_CACHE_HOME . '/neocomplete' : '~/.cache/neocomplete'))
- let directory = neocomplete#util#substitute_path_separator(
- \ neocomplete#util#expand(g:neocomplete#data_directory))
- if !isdirectory(directory)
- if neocomplete#util#is_sudo()
- call neocomplete#print_error(printf(
- \ 'Cannot create Directory "%s" in sudo session.', directory))
- else
- call mkdir(directory, 'p')
- endif
- endif
- return directory
- endfunction"}}}
- function! neocomplete#complete_check() abort "{{{
- return neocomplete#helper#complete_check()
- endfunction"}}}
- function! neocomplete#skip_next_complete() abort "{{{
- let neocomplete = neocomplete#get_current_neocomplete()
- let neocomplete.skip_next_complete = 1
- endfunction"}}}
- function! neocomplete#get_default_matchers() abort "{{{
- return map(copy(neocomplete#get_current_neocomplete().default_matchers),
- \ 'v:val.name')
- endfunction"}}}
- function! neocomplete#set_default_matchers(matchers) abort "{{{
- let neocomplete = neocomplete#get_current_neocomplete()
- let neocomplete.default_matchers = neocomplete#init#_filters(
- \ neocomplete#util#convert2list(a:matchers))
- endfunction"}}}
- function! neocomplete#set_dictionary_helper(variable, keys, value) abort "{{{
- return neocomplete#util#set_dictionary_helper(
- \ a:variable, a:keys, a:value)
- endfunction"}}}
- function! neocomplete#disable_default_dictionary(variable) abort "{{{
- return neocomplete#util#disable_default_dictionary(a:variable)
- endfunction"}}}
- function! neocomplete#filetype_complete(arglead, cmdline, cursorpos) abort "{{{
- return neocomplete#helper#filetype_complete(a:arglead, a:cmdline, a:cursorpos)
- endfunction"}}}
- "}}}
- " Key mapping functions. "{{{
- function! neocomplete#smart_close_popup() abort
- return neocomplete#mappings#smart_close_popup()
- endfunction
- function! neocomplete#close_popup() abort
- return neocomplete#mappings#close_popup()
- endfunction
- function! neocomplete#cancel_popup() abort
- return neocomplete#mappings#cancel_popup()
- endfunction
- function! neocomplete#undo_completion() abort
- return neocomplete#mappings#undo_completion()
- endfunction
- function! neocomplete#complete_common_string() abort
- return neocomplete#mappings#complete_common_string()
- endfunction
- function! neocomplete#start_manual_complete(...) abort
- return call('neocomplete#mappings#start_manual_complete', a:000)
- endfunction
- "}}}
- let &cpo = s:save_cpo
- unlet s:save_cpo
- " vim: foldmethod=marker
|