Saturday, August 6, 2011

Re: OmniCppComplete doesn't work with namespaces or ::

It seems that I came across the same thing with you. When I type MyClass::, "pattern not found" appears, but when I type std::, it works well. Is it some bugs or we haven't configured the tags file?

What's more, when I include --c++-kind=+p as the ctags parameter, the member functions appears in the popup menu when I insert . or -> to try to do the completion. However, when I type <C-]>, tying to jump to the definition of the function, I doesn't work. Instead, it pop up a list, wandering where I want to jump.

Are there any ways to jump to the definition of a function under my cursor, when I include --c-kind=+p and --c++-kind=+p in my ctags parameter list?

I'm Appreciate your reply. 

2011/7/8 Tim K <scheintoter@googlemail.com>
Hi everybody,

I am new to vim and tried to set up Omni completion for C++ in vim.
I use gvim Version 7.3 and Windows XP.

What I have done so far is:

Download OmniCppComplete from http://www.vim.org/scripts/script.php?script_id=1520 and the Windows version of ctags from http://ctags.sourceforge.net/

Copy the after autoload and doc directories from the archive to C:\Programme\Vim\vimfiles\after, C:\Programme\Vim\vimfiles\autoload and C:\Programme\Vim\vimfiles\doc

Add the following lines in my _vimrc file:
set nocp
filetype plugin on

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
let OmniCpp_MayCompleteDot = 1 " autocomplete after .
let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview


Write a file main.cpp:
//------------------------------------
#include<vector>

class MyClass{
public:
int f(){return 3;}
int g(){return 6;}
};

int main(){
MyClass a;
std::vector<int> v;
vector<int> w;

return 0;
}
//----------------------------------

Download modified header files from http://www.vim.org/scripts/script.php?script_id=2358
On this header files I executed ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src 

In the directory with the main.cpp I executed ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .

The 2 tags files where then added to vims tags variable by :set tags += C:/some/path/tags

My Problem now is:
When I type "MyClass::" then I get a "-- Omni completion (^O^N^P) Pattern not found"
The same for "std::" and "v."

But "a." and "w." works as expected.

Did I misunderstand the capabilities of OmniCppComplete; did I do something wrong; or is my computer hating me?

Hope somebody can help.

Tim

P.S.:
I didn't know if I should write what I have done as detailed as I did, since everbody who tries to help me has to read all that.
But on the other hand there may be details in there that are needed.
I appreciate advices how long I should describe the situation when I have another problem in the future.

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php



--
Stanley Rice
Sun Yat-sen University

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments: