Closed Shougo closed 11 years ago
+1
It's exciting !
looks promising!
Refactorred neocomplcache is in ver.8 branch. But it is very unstable.
support if_lua interface
This feature is friezed until fixing if_lua problem.
Current ver.8.0 progress:
I think neocomplcache ver.8 has killer features(like YouCompleteMe).
Neo: Trinity,you complete me.LOL
have not tried YouCompleteMe
. It looks nice based on the stars and readme. Is there anyway to integrate neocomplcache with YouCompleteMe
at this time? How do you think of the differences? Thanks.
Tried YouCompleteMe
. There are a few things I like:
But compared with neocomplcache, I consider it as "incomplete" - lack of many features like snippets_complete, tags_complete, etc.
I just recompiled MacVim with if-lua support, will this help the speed of neocomplcache ver8? Thanks.
I don’t think YCM can replace neo.
Neo is more powerful and much easier to use.
If neo can make jedi and pydict integrated , it will be perfect for pythoner!
have not tried YouCompleteMe. It looks nice based on the stars and readme. Is there anyway to integrate neocomplcache with YouCompleteMe at this time? How do you think of the differences? Thanks.
No. I cannot integrate with YouCompleteMe.
the speed of completion real fuzzy match
I will implement it in ver.8.
integration with syntastic
I have not the plan to implement this feature.
good support for c-family completion
You can use it with neocomplcache and clang_complete.
But compared with neocomplcache, I consider it as "incomplete" - lack of many features like snippets_complete, tags_complete, etc.
Yes.
I just recompiled MacVim with if-lua support, will this help the speed of neocomplcache ver8? Thanks.
Yes. But this feature is incomplete. I will improve it later. I recommend you to enable if_lua in Vim.
I don’t think YCM can replace neo. Neo is more powerful and much easier to use. If neo can make jedi and pydict integrated , it will be perfect for pythoner!
Yes. To enable YouCompleteMe is too hard(and it has a lot of crash problem). You can use jedi with neocomplcache(Please read FAQ). What is pydict? I don't know it...
Thanks for your attention and be sorry to omit the jedi –integrated feature .
I tried this feature as the FAQ instructs ,and I’d like to say something about what I expect for this feature :
when I typed a object and dot ,all the pre –defined methods are listed automatically. after I selecting a item ,also the
MRU will take effect for this object ‘s next time ”dot ” popup.
Is there any way to make neo behave like this ?
Here is the pydict detail : https://github.com/vim-scripts/Pydiction
Can you upload screenshot? I want to know more detail.
Here is the pydict detail : https://github.com/vim-scripts/Pydiction
OK. I will check later. I think you can use neocomplcache with pydiction. But it may be slow(because pydiction dictionary is too large).
Thanks for the update. I have not check the FAQ for a while. Now I got jedi.vim and clang_complete working. great
you see, the menu poped up automatically by jedi.vim when press dot, listing all the methods the object can call. but this menu is lack of MRU and fuuzy match features ,which can be provided by neo .
for pydiction case ,i think i can put up with the long time to load items ,as long as it is supported by neo .
you see, the menu poped up automatically by jedi.vim when press dot, listing all the methods the object can call. but this menu is lack of MRU and fuuzy match features ,which can be provided by neo .
What's your configuration of neocomplcache? I think it is not used neocomplcache.
hi ,here is the corresponding setting :
" Define keyword.
if !exists('g:neocomplcache_keyword_patterns')
let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
" Plugin key-mappings.
inoremap <expr><C-g> neocomplcache#undo_completion()
inoremap <expr><C-l> neocomplcache#complete_common_string()
" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <expr><CR> neocomplcache#close_popup() . "\<CR>"
" <TAB>: completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><C-y> neocomplcache#close_popup()
inoremap <expr><C-e> neocomplcache#cancel_popup()
"Enter select items:
inoremap <expr><space> pumvisible() ? neocomplcache#close_popup() : "\<SPACE>"
"Caching everywhere:
noremap <Leader>neo :NeoComplCacheCachingBuffer<CR>:NeoComplCacheCachingTags<CR>
" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
" Enable heavy omni completion.
if !exists('g:neocomplcache_omni_patterns')
let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\h\w*\|\h\w*::'
"autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
let g:neocomplcache_omni_patterns.c = '\%(\.\|->\)\h\w*'
let g:neocomplcache_omni_patterns.cpp = '\h\w*\%(\.\|->\)\h\w*\|\h\w*::'
" For perlomni.vim setting.
" https://github.com/c9s/perlomni.vim
let g:neocomplcache_omni_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
" For rank priority setting in the popup list
let g:neocomplcache_source_rank = {
\'snippets_complete' : 4,
\ 'buffer_complete' : 8
\ }
" For jedi-Vim
let g:jedi#auto_vim_configuration = 0
let g:jedi#show_function_definition = "0"
let g:jedi#popup_select_first = 0
" For jedi-Neo integrated :
if !exists('g:neocomplcache_omni_functions')
let g:neocomplcache_omni_functions = {}
endif
let g:neocomplcache_omni_functions.python = 'jedi#complete'
let g:jedi#popup_on_dot = 1
but this menu is lack of MRU and fuuzy match features ,which can be provided by neo .
Oh, it is feature. Because, current fuzzy match is not supported omnifunc. This feature may be changed in neocomplcache ver.8. And currently disabled sorting in omnifunc. Because there was the demand.
for pydiction case ,i think i can put up with the long time to load items ,as long as it is supported by neo .
You should install vimproc to save startup time. I tested pydiction as neocomplcache dictionary, but it is not slow.
Thanks for your updating to pydiction.I will try it at once!
Oh, it is feature. Because, current fuzzy match is not supported omnifunc. This feature may be changed in neocomplcache ver.8. And currently disabled sorting in omnifunc. Because there was the demand
that's to say ,neither of these two features can apply to jedi in the current neo ?
Yes.
hi . to use pydtiction , my neo configuration is this :
_let g:neocomplcache_dictionary_filetypelists = { \ 'default' : '', _\ 'python' : 'D:\Programe files\Vim\vimfiles\bundle\pydiction-1.2.1\complete-dict', \ 'vimshell' : $HOME.'/.vimshellhist', _\ 'scheme' : $HOME.'/.goshcompletions' \ }
but none of item can be listed automatically ,is there anything wrong with the configuration ? ps: neo is upgraded to latest version of master .
You can check the dictionary path by:
:echo filereadable(neocomplcache#util#substitute_path_separator(fnamemodify(g:neocomplcache_dictionary_filetype_lists['python'], ':p')))
but none of item can be listed automatically ,is there anything wrong with the configuration ?
You have to wait until vimproc finishes making cache.
You can check the dictionary path by:
:echo filereadable(neocomplcache#util#substitute_path_separator(fnamemodify(g:neocomplcache_dictionar
this returns 1
You have to wait until vimproc finishes making cache.
very long time i waited. when i typed 3rd(neocomplcache_min_syntax_length = 3) character , the status line says : "user defined completion (^U^N^P) can't find pattern "
You can make cache manually by :NeoComplCacheCachingDictionary
.
And check to the g:neocomplcache_data_directory/dictionary_cache
directory.
If you set g:neocomplcache_enable_debug
to 1, you can check making cache timing.
You can make cache manually by :NeoComplCacheCachingDictionary
the problem is not only dictionary items can't poped up ,but also other types of completion disappeared ,such as buffer ,syntax ,and tags etc .
In my environment, neocomplcache works. Hmmmm... Please update neocomplcache. I updated it.
In my environment, neocomplcache works. Hmmmm..
can you show your neo configuration ? i want to check it with my _vimrc.
No. My configuration is too long. Please show me your minimal neocomplcache settings. I will check it.
No. My configuration is too long. Please show me your minimal neocomplcache settings. I will check it.
with pleasure .
I think you should test minimal .vimrc and with only neocomplcache. I tested below settings but it works.
checked neocomplcache#util#has_lua()
1
but s:lua_filter
is never called.
is it disabled or do i need to set some option to make it work?
If you enabled heavy comletion(fuzzy completion or underbar completion or camel case completion), lua filter is not called. So I said "it is experimental".
thanks.
the problem is not only dictionary items can't poped up ,but also other types of completion disappeared ,such as buffer ,syntax ,and tags etc .
I think I fixed the problem. Please update neocomplcache.
I think I fixed the problem. Please update neocomplcache.
Thanks for that! I tried the latest push of master ,but the problem still exist...
Thanks for that! I tried the latest push of master ,but the problem still exist...
Hummm. I fixed other same behavior by last commit. I think you should make minimal .vimrc and upload it. (Before configuration is too long and I'm not reappeared using it.) I will check.
I updated ver.8 branch.
if_lua
It seems that if_lua
is not widely compiled to vim. Based on neocomplcache#util#has_lua()
, it looks like it also requires very new vim built.
so my question is, why if_lua
? Many people may not be able to use it because they do not have the root privilege to recompile vim.
I guess you focused on a vim on remote shared server that people don't always have privilege to install vim for everyone on the server, but in that case I don't think people even try to use neocomplcache on the server since completion popup is really slow over ssh.
if_lua
on neocomplcache makes sense for me, as long as it doesn't crash ;)
if_lua on neocomplcache makes sense for me, as long as it doesn't crash ;)
Yes.
so my question is, why if_lua? Many people may not be able to use it because they do not have the root privilege to recompile vim.
OK. I answer the question.
thanks for the update! By the way, does the current s:lua_filter
function have any fuzziness?
By the way, does the current s:lua_filter function have any fuzziness?
Yes. I will fix it later version in filters for neocomplcache.
Updated status
Unfortunately, if I enable neocomplcache ver.8 with matcher, wildcard and camel case completion feature and underbar completion features are disabled. And if your Vim is not enabled if_lua or too old, neocomplcache completion speed will slow(than before version). So, I will release neocomplcache ver.8(or ver.8-pre) before implementing matcher.
I highly recommend for you to use if_lua enabled Vim.
what is the progress now?
I think ver.8 branch will be merged completely to master in this week. After released ver.8.0, I will develop neocomplcache ver.8.1(contains new featured matchers). neocomplcache ver.8.1 has full features but it breaks backward compatibility(for example underbar completion, camel case completion)...
so fuzzy match will replace underbar completion, camel case completion, etc...
I use these features a lot. But if fuzzy match is done right. It should be better.
Yes. But to use fuzzy match, you must enable if_lua feature in Vim. In not if_lua featured Vim, underbar completion, wild card, fuzzy completion features are disabled and too slow. So this feature will be in ver.8.1.
In ver.8.1, neocomplcache detect not enabled if_lua environment and may warn.
I have developped neocomplcache ver.8.
ver.8 aims are: