nvim/pack/acp/start/neocomplete.vim/autoload/neocomplete/init.vim

660 lines
22 KiB
VimL
Raw Normal View History

2017-04-06 14:34:32 +00:00
"=============================================================================
" FILE: init.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
if !exists('s:is_enabled')
let s:is_enabled = 0
endif
function! neocomplete#init#enable() abort "{{{
if neocomplete#is_enabled()
return
endif
if !(has('lua') && (v:version > 703 || v:version == 703 && has('patch885')))
echomsg 'neocomplete does not work with this version of Vim.'
echomsg 'neocomplete requires Vim 7.3.885 or later with Lua support ("+lua").'
return
endif
if !exists('b:neocomplete')
call neocomplete#init#_current_neocomplete()
endif
call neocomplete#init#_autocmds()
call neocomplete#init#_others()
call neocomplete#init#_sources(get(g:neocomplete#sources,
\ neocomplete#get_context_filetype(), ['_']))
let s:is_enabled = 1
doautocmd <nomodeline> neocomplete InsertEnter
endfunction"}}}
function! neocomplete#init#disable() abort "{{{
if !neocomplete#is_enabled()
return
endif
let s:is_enabled = 0
augroup neocomplete
autocmd!
augroup END
silent! delcommand NeoCompleteDisable
call neocomplete#helper#call_hook(filter(values(
\ neocomplete#variables#get_sources()), 'v:val.loaded'),
\ 'on_final', {})
endfunction"}}}
function! neocomplete#init#is_enabled() abort "{{{
return s:is_enabled
endfunction"}}}
function! neocomplete#init#_autocmds() abort "{{{
augroup neocomplete
autocmd!
autocmd InsertEnter *
\ call neocomplete#handler#_on_insert_enter()
autocmd InsertLeave *
\ call neocomplete#handler#_on_insert_leave()
autocmd CursorMovedI *
\ call neocomplete#handler#_on_moved_i()
autocmd InsertCharPre *
\ call neocomplete#handler#_on_insert_char_pre()
autocmd TextChangedI *
\ call neocomplete#handler#_on_text_changed()
autocmd CompleteDone *
\ call neocomplete#handler#_on_complete_done()
augroup END
let event = neocomplete#util#is_text_changed() ?
\ 'TextChangedI' : 'CursorMovedI'
execute 'autocmd neocomplete' event '*'
\ 'call neocomplete#handler#_do_auto_complete("'.event.'")'
autocmd neocomplete InsertEnter *
\ call neocomplete#handler#_do_auto_complete('InsertEnter')
endfunction"}}}
function! neocomplete#init#_others() abort "{{{
call neocomplete#init#_variables()
call neocomplete#commands#_initialize()
" For auto complete keymappings.
call neocomplete#mappings#define_default_mappings()
" Detect set paste.
if &paste
redir => output
99verbose set paste
redir END
call neocomplete#print_error(output)
call neocomplete#print_error(
\ 'Detected set paste! Disabled neocomplete.')
endif
" Detect poor color
if &t_Co != '' && &t_Co < 8
call neocomplete#print_error(
\ 'Your terminal color is very limited. Disabled neocomplete.')
endif
command! -nargs=0 -bar NeoCompleteDisable
\ call neocomplete#init#disable()
endfunction"}}}
function! neocomplete#init#_variables() abort "{{{
" Initialize keyword patterns. "{{{
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'_',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#keyword_patterns',
\'filename',
\ neocomplete#util#is_windows() ?
\'\%(\a\+:/\)\?\%([/[:alnum:]()$+_~.{}\x80-\xff-]\|[^[:print:]]\|\\.\)\+' :
\'\%([/\[\][:alnum:]()$+_~.{}-]\|[^[:print:]]\|\\.\)\+')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'lisp,scheme,clojure,int-gosh,int-clisp,int-clj',
\'[[:alpha:]!$%&*+/:<=>?@\^_~\-][[:alnum:]!$%&*./:<=>?@\^_~\-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'ruby,int-irb',
\'^=\%(b\%[egin]\|e\%[nd]\)\|\%(@@\|[$@]\)\h\w*\|\h\w*\%(::\w*\)*[!?]\?')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'php,int-php',
\'</\?\%(\h[[:alnum:]_-]*\s*\)\?\%(/\?>\)\?'.
\'\|\$\h\w*\|\h\w*\%(\%(\\\|::\)\w*\)*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'perl,int-perlsh',
\'<\h\w*>\?\|[$@%&*]\h\w*\|\h\w*\%(::\w*\)*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'perl6,int-perl6',
\'<\h\w*>\?\|[$@%&][!.*?]\?\h[[:alnum:]_-]*'.
\'\|\h[[:alnum:]_-]*\%(::[[:alnum:]_-]*\)*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'pir',
\'[$@%.=]\?\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'pasm',
\'[=]\?\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'vim,help',
\'-\h[[:alnum:]-]*=\?\|\c\[:\%(\h\w*:\]\)\?\|&\h[[:alnum:]_:]*\|'.
\'<SID>\%(\h\w*\)\?\|<Plug>([^)]*)\?'.
\'\|<\h[[:alnum:]_-]*>\?\|\h[[:alnum:]_:#]*[!(]\?\|$\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'tex',
\'\\\a{\a\{1,2}}\|\\[[:alpha:]@][[:alnum:]@]*'.
\'\%({\%([[:alnum:]:_]\+\*\?}\?\)\?\)\?\|\a[[:alnum:]:_]*\*\?')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'sh,zsh,int-zsh,int-bash,int-sh',
\'[[:alpha:]_.-][[:alnum:]_.-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'vimshell',
\'\$\$\?\w*\|[[:alpha:]_.\\/~-][[:alnum:]_.\\/~-]*\|\d\+\%(\.\d\+\)\+')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'ps1,int-powershell',
\'\[\h\%([[:alnum:]_.]*\]::\)\?\|[$%@.]\?[[:alpha:]_.:-][[:alnum:]_.:-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'c',
\'^\s*#\s*\h\w*\|\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'cpp',
\'^\s*#\s*\h\w*\|\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'objc',
\'^\s*#\s*\h\w*\|\h\w*\|@\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'objcpp',
\'^\s*#\s*\h\w*\|\h\w*\|@\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'objj',
\'\h\w*\|@\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'d',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'python,int-python,int-ipython',
\'[@]\?\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'cs',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'java',
\'[@]\?\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'javascript,actionscript,int-js,int-kjs,int-rhino',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'coffee,int-coffee',
\'[@]\?\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'awk',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'haskell,int-ghci',
\'\%(\u\w*\.\)\+[[:alnum:]_'']*\|[[:alpha:]_''][[:alnum:]_'']*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'ml,ocaml,int-ocaml,int-sml,int-smlsharp',
\'[''`#.]\?\h[[:alnum:]_'']*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'erlang,int-erl',
\'^\s*-\h\w*\|\%(\h\w*:\)*\h\w*\|\h[[:alnum:]_@]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'html,xhtml,xml,markdown,mkd,eruby',
\'</\?\%([[:alnum:]_:-]\+\s*\)\?\%(/\?>\)\?\|&\h\%(\w*;\)\?'.
\'\|\h[[:alnum:]_-]*="\%([^"]*"\?\)\?\|\h[[:alnum:]_:-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'css,stylus,scss,less',
\'[@#.]\?[[:alpha:]_:-][[:alnum:]_:-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'tags',
\'^[^!][^/[:blank:]]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'pic',
\'^\s*#\h\w*\|\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'arm',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'asmh8300',
\'[[:alpha:]_.][[:alnum:]_.]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'masm',
\'\.\h\w*\|[[:alpha:]_@?$][[:alnum:]_@?$]*\|\h\w*:\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'nasm',
\'^\s*\[\h\w*\|[%.]\?\h\w*\|\%(\.\.@\?\|%[%$!]\)\%(\h\w*\)\?\|\h\w*:\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'asm',
\'[%$.]\?\h\w*\%(\$\h\w*\)\?')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'gas',
\'[$.]\?\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'gdb,int-gdb',
\'$\h\w*\|[[:alnum:]:._-]\+')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'make',
\'[[:alpha:]_.-][[:alnum:]_.-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'scala,int-scala',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'int-termtter',
\'\h[[:alnum:]_/-]*\|\$\a\+\|#\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'int-earthquake',
\'[:#$]\h\w*\|\h[[:alnum:]_/-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'dosbatch,int-cmdproxy',
\'\$\w+\|[[:alpha:]_./-][[:alnum:]_.-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'vb',
\'\h\w*\|#\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'lua',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\ 'zimbu',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'konoha',
\'[*$@%]\h\w*\|\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'cobol',
\'\a[[:alnum:]-]*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'coq',
\'\h[[:alnum:]_'']*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'tcl',
\'[.-]\h\w*\|\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'nyaos,int-nyaos',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'go',
\'\h\w*')
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#keyword_patterns',
\'toml',
\'\h[[:alnum:]_.-]*')
"}}}
" Initialize delimiter patterns. "{{{
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'vim,help', ['#'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'erlang,lisp,int-clisp', [':'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'lisp,int-clisp', ['/', ':'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'clojure,int-clj', ['/', '.'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'perl,cpp', ['::'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'php', ['\', '::'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'java,d,javascript,actionscript,'.
\ 'ruby,eruby,haskell,int-ghci,coffee,zimbu,konoha',
\ ['.'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'lua', ['.', ':'])
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#delimiter_patterns',
\ 'perl6', ['.', '::'])
"}}}
" Initialize text mode filetypes. "{{{
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#text_mode_filetypes',
\ join(['hybrid', 'text', 'help', 'tex', 'gitcommit', 'gitrebase',
\ 'vcs-commit', 'markdown', 'mkd', 'textile', 'creole',
\ 'org', 'rdoc', 'mediawiki', 'rst', 'asciidoc', 'pod',
\ 'gita-commit', 'J6uil_say',
\ ], ','), 1)
"}}}
" Initialize tags filter patterns. "{{{
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#tags_filter_patterns', 'c,cpp',
\'v:val.word !~ ''^[~_]''')
"}}}
" Initialize force omni completion patterns. "{{{
call neocomplete#util#set_default_dictionary(
\'g:neocomplete#force_omni_input_patterns', 'objc',
\'\h\w\+\|[^.[:digit:] *\t]\%(\.\|->\)')
"}}}
" Must g:neocomplete#auto_completion_start_length > 1.
if g:neocomplete#auto_completion_start_length < 1
let g:neocomplete#auto_completion_start_length = 1
endif
" Must g:neocomplete#min_keyword_length > 1.
if g:neocomplete#min_keyword_length < 1
let g:neocomplete#min_keyword_length = 1
endif
endfunction"}}}
function! neocomplete#init#_current_neocomplete() abort "{{{
let b:neocomplete = {
\ 'context' : {
\ 'input' : '',
\ 'complete_pos' : -1,
\ 'complete_str' : '',
\ 'candidates' : [],
\ },
\ 'lock' : 0,
\ 'skip_next_complete' : 0,
\ 'filetype' : '',
\ 'context_filetype' : '',
\ 'context_filetypes' : [],
\ 'completion_length' : -1,
\ 'foldinfo' : [],
\ 'skipped' : 0,
\ 'event' : '',
\ 'cur_text' : '',
\ 'old_cur_text' : '',
\ 'old_linenr' : line('.'),
\ 'old_complete_pos' : -1,
\ 'old_char' : '',
\ 'complete_str' : '',
\ 'complete_pos' : -1,
\ 'candidates' : [],
\ 'complete_sources' : [],
\ 'manual_sources' : [],
\ 'start_time' : reltime(),
\ 'linenr' : 0,
\ 'completeopt' : &completeopt,
\ 'sources' : [],
\ 'sources_filetype' : '',
\ 'within_comment' : 0,
\ 'is_auto_complete' : 0,
\ 'indent_text' : '',
\ 'detected_foldmethod' : 0,
\ 'default_matchers' : neocomplete#init#_filters(
\ (g:neocomplete#enable_fuzzy_completion ?
\ ['matcher_fuzzy'] : ['matcher_head'])
\ + ['matcher_length']),
\}
endfunction"}}}
function! neocomplete#init#_sources(names) abort "{{{
if !exists('s:loaded_source_files')
" Initialize.
let s:loaded_source_files = {}
let s:loaded_all_sources = 0
let s:runtimepath_save = ''
endif
" Initialize sources table.
if s:loaded_all_sources && &runtimepath ==# s:runtimepath_save
return
endif
let runtimepath_save = neocomplete#util#split_rtp(s:runtimepath_save)
let runtimepath = neocomplete#util#join_rtp(
\ filter(neocomplete#util#split_rtp(),
\ 'index(runtimepath_save, v:val) < 0'))
let sources = neocomplete#variables#get_sources()
for name in filter(copy(a:names), '!has_key(sources, v:val)')
" Search autoload.
for source_name in map(filter(split(globpath(runtimepath,
\ 'autoload/neocomplete/sources/*.vim'), '\n'),
\ "index(g:neocomplete#ignore_source_files,
\ fnamemodify(v:val, ':t')) < 0"),
\ "fnamemodify(v:val, ':t:r')")
if has_key(s:loaded_source_files, source_name)
continue
endif
let s:loaded_source_files[source_name] = 1
let source = neocomplete#sources#{source_name}#define()
if empty(source)
" Ignore.
continue
endif
call neocomplete#define_source(source)
endfor
if name == '_'
let s:loaded_all_sources = 1
let s:runtimepath_save = &runtimepath
endif
endfor
endfunction"}}}
function! neocomplete#init#_source(source) abort "{{{
let default = {
\ 'is_volatile' : 0,
\ 'max_candidates' : 0,
\ 'filetypes' : {},
\ 'disabled' : 0,
\ 'disabled_filetypes' : {},
\ 'hooks' : {},
\ 'matchers' : [],
\ 'sorters' : ['sorter_rank'],
\ 'converters' : [
\ 'converter_remove_overlap',
\ 'converter_delimiter',
\ 'converter_abbr',
\ ],
\ 'keyword_patterns' : g:neocomplete#keyword_patterns,
\ 'min_pattern_length' : g:neocomplete#auto_completion_start_length,
\ 'input_pattern' : '',
\ 'neocomplete__context' : neocomplete#init#_context({}),
\ }
let source = extend(copy(default), a:source)
" Overwritten by user custom.
let custom = neocomplete#custom#get().sources
let source = extend(source, get(custom, source.name,
\ get(custom, '_', {})))
let source.loaded = 0
" Source kind convertion.
if !has_key(source, 'kind')
let source.kind = 'manual'
elseif source.kind ==# 'plugin'
let source.kind = 'keyword'
elseif source.kind ==# 'ftplugin' || source.kind ==# 'complfunc'
" For compatibility.
let source.kind = 'manual'
endif
if !has_key(source, 'rank')
" Set default rank.
let source.rank = (source.kind ==# 'keyword') ? 5 :
\ empty(source.filetypes) ? 10 : 100
endif
if !has_key(source, 'mark')
" Set default mark.
let source.mark = '[' . source.name . ']'
endif
if !has_key(source.keyword_patterns, '_')
" Set default keyword pattern.
let source.keyword_patterns['_'] =
\ get(g:neocomplete#keyword_patterns, '_', '\h\w*')
endif
let source.neocomplete__matchers = neocomplete#init#_filters(
\ neocomplete#util#convert2list(source.matchers))
let source.neocomplete__sorters = neocomplete#init#_filters(
\ neocomplete#util#convert2list(source.sorters))
let source.neocomplete__converters = neocomplete#init#_filters(
\ neocomplete#util#convert2list(source.converters))
let source.neocomplete__context.source_name = source.name
return source
endfunction"}}}
function! neocomplete#init#_filters(names) abort "{{{
let _ = []
let filters = neocomplete#variables#get_filters()
for name in a:names
if !has_key(filters, name)
" Search autoload.
for filter_name in map(split(globpath(&runtimepath,
\ 'autoload/neocomplete/filters/'.
\ substitute(name,
\'^\%(matcher\|sorter\|converter\)_[^/_-]\+\zs[/_-].*$', '', '')
\ .'*.vim'), '\n'), "fnamemodify(v:val, ':t:r')")
let filter = neocomplete#filters#{filter_name}#define()
if empty(filter)
" Ignore.
continue
endif
call neocomplete#define_filter(filter)
endfor
if !has_key(filters, name)
" Not found.
call neocomplete#print_error(
\ printf('filter name : %s is not found.', string(name)))
continue
endif
endif
if has_key(filters, name)
call add(_, filters[name])
endif
endfor
return _
endfunction"}}}
function! neocomplete#init#_filter(filter) abort "{{{
let default = {
\ }
let filter = extend(default, a:filter)
if !has_key(filter, 'kind')
let filter.kind =
\ (filter.name =~# '^matcher_') ? 'matcher' :
\ (filter.name =~# '^sorter_') ? 'sorter' : 'converter'
endif
return filter
endfunction"}}}
function! neocomplete#init#_context(context) abort "{{{
let filetype = neocomplete#get_context_filetype()
return extend(a:context, {
\ 'input' : '',
\ 'prev_complete_pos' : -1,
\ 'prev_candidates' : [],
\ 'prev_line' : '',
\ 'complete_pos' : -1,
\ 'complete_str' : '',
\ 'candidates' : [],
\ 'filetype' : filetype,
\ 'filetypes' : neocomplete#context_filetype#filetypes(),
\ })
endfunction"}}}
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: foldmethod=marker