*asyncomplete.vim.txt* Async autocompletion for Vim 8 and Neovim. *asyncomplete* =============================================================================== CONTENTS *asyncomplete-contents* 1. Introduction |asyncomplete-introduction| 2. Options |asyncomplete-options| 3. Functions |asyncomplete-functions| 4. Global vim configuration |asyncomplete-global-config| 5. Known Issues |asyncomplete-known-issues| =============================================================================== 1. Introduction *asyncomplete-introduction* Async autocompletion for Vim 8 and Neovim with |timers|. This is inspired by https://github.com/roxma/nvim-complete-manager but written in pure Vim Script. =============================================================================== 2. Options *asyncomplete-options* g:asyncomplete_enable_for_all *g:asyncomplete_enable_for_all* Type |Number| Default: 1 Enable asyncomplete for all buffers. Can be overriden with `b:asyncomplete_enable` on a per-buffer basis. Setting this to 0 prevents asyncomplete from loading upon entering a buffer. b:asyncomplete_enable *b:asyncomplete_enable* Type |Number| Default: 1 Setting this variable to 0 disables asyncomplete for the current buffer and overrides `g:asyncomplete_enable_for_all` . g:asyncomplete_auto_popup *g:asyncomplete_auto_popup* Type: |Number| Default: `1` Automatically show the autocomplete popup menu as you start typing. g:asyncomplete_log_file *g:asyncomplete_log_file* Type: |String| Default: null Path to log file. g:asyncomplete_popup_delay *g:asyncomplete_popup_delay* Type: |Number| Default: 30 Milliseconds to wait before opening the popup menu g:asyncomplete_auto_completeopt *g:asyncomplete_auto_completeopt* Type: |Number| Default: 1 Set default `completeopt` options. These are `menuone,noinsert,noselect`. This effectively overwrites what ever the user has in their config file. Set to 0 to disable. g:asyncomplete_preprocessor *g:asyncomplete_preprocessor* Type: |Array| for zero or one |Function| Default: [] Set a function to allow custom filtering or sorting. Below example implements removing duplicates. function! s:my_asyncomplete_preprocessor(options, matches) abort let l:visited = {} let l:items = [] for [l:source_name, l:matches] in items(a:matches) for l:item in l:matches['items'] if stridx(l:item['word'], a:options['base']) == 0 if !has_key(l:visited, l:item['word']) call add(l:items, l:item) let l:visited[l:item['word']] = 1 endif endif endfor endfor call asyncomplete#preprocess_complete(a:options, l:items) endfunction let g:asyncomplete_preprocessor = [function('s:my_asyncomplete_preprocessor')] Note: asyncomplete#preprocess_complete() must be called synchronously. Plans to support async preprocessing will be supported in the future. context and matches in arguments in preprecessor function should be treated as immutable. g:asyncomplete_min_chars *g:asyncomplete_min_chars* Type: |Number| Default: 0 Minimum consecutive characters to trigger auto-popup. Overridden by buffer variable if set (`b:asyncomplete_min_chars`) g:asyncomplete_matchfuzzy *g:asyncomplete_matchfuzzy* Type: |Number| Default: `exists('*matchfuzzypos')` Use |matchfuzzypos| to support fuzzy matching of 'word' when completing items. Requires vim with `matchfuzzypos()` function to exists. Set to `0` to disable fuzzy matching. =============================================================================== 3. Functions *asyncomplete-functions* asyncomplete#close_popup() *asyncomplete#close_popup()* Insert selected candidate and close popup menu. Following example prevents popup menu from re-opening after insertion. > inoremap pumvisible() ? asyncomplete#close_popup() : "\" < asyncomplete#cancel_popup() *asyncomplete#cancel_popup()* Cancel completion and close popup menu. Following example prevents popup menu from re-opening after cancellation. > inoremap pumvisible() ? asyncomplete#cancel_popup() : "\" < asyncomplete#get_source_info({source-name}) *asyncomplete#get_source_info()* Get the source configuration info as dict. Below example implements a priority sort function. > function! s:sort_by_priority_preprocessor(options, matches) abort let l:items = [] for [l:source_name, l:matches] in items(a:matches) for l:item in l:matches['items'] if stridx(l:item['word'], a:options['base']) == 0 let l:item['priority'] = \ get(asyncomplete#get_source_info(l:source_name),'priority',0) call add(l:items, l:item) endif endfor endfor let l:items = sort(l:items, {a, b -> b['priority'] - a['priority']}) call asyncomplete#preprocess_complete(a:options, l:items) endfunction let g:asyncomplete_preprocessor = [function('s:sort_by_priority_preprocessor')] < asyncomplete#get_source_names() *asyncomplete#get_source_names()* Get the registered source names list. =============================================================================== 4. Global vim configuration *asyncomplete-global-config* If you notice messages like 'Pattern not found' or 'Match 1 of ' printed in red colour in vim command line and in `:messages` history and you are annoyed with them, try setting `shortmess` vim option in your `.vimrc` like so: > set shortmess+=c < See `:help shortmess` for details and description. =============================================================================== 5. Known Issues *asyncomplete-known-issues* Builtin complete such as omni func, file func flickers and closes. You need vim with patch v8.1.1068. https://github.com/vim/vim/commit/fd133323d4e1cc9c0e61c0ce357df4d36ea148e3 =============================================================================== vim:tw=78:ts=4:sts=4:sw=4:ft=help:norl: