Sarcasm / irony-mode

A C/C++ minor mode for Emacs powered by libclang
GNU General Public License v3.0
901 stars 98 forks source link

irony mode not completing on stl object members (clang 8 ) #555

Open alapachianbulbus opened 4 years ago

alapachianbulbus commented 4 years ago

I have c++ completion working with libclang (v 8.0) in vim. I am trying to get irony mode working in emacs. It doesn't work fully. It does completion on local classes and most class member functions but not all but it definitely will not pick up on most (although it some work) stl object member functions. It does suggest stl classes or stl globals like std::cout but if I do std::string s; it will not complete any members on "s." .

For some reason also it only reads a .clang_complete file and will not parse a compile_commands.json file. Below is my json file.

Is there some diagnostics I can turn on to find out why it is failing ? I've included the server log below.

"directory": "/home/xxxx/dev", "command": "/apps/opt/gcc/5.4.0_01/bin/gcc -I/apps/opt/gcc/5.4.0_01/include/c++/5.4.0 -I/apps/opt/gcc/5.4.0_01/include/c++/5.4.0/x86_64-suse-linux-gnu -std=gnu++14 -o CMakeFiles/testB.dir/test.cpp.o -c /home/xxx/dev/test.cpp", "file": "/home/xxxx/dev/test.cpp"

from the irony server logs I can see that irony is passing the correct stl inlcude paths. This is puzzling - as it all works with vim using clang_complete plugin and the same libclang.

execute: Command{action=Command::Complete, file='/homexxx/dev/test.cpp', unsavedFile='', dir='', line=198, column=19, prefix='', caseStyle='exact', flags=['-x', 'c++', '-working-directory', '/home/xx/dev/', '-DDEBUG', '-I/apps/opt/gcc/5.4.0_01/include/c++/5.4.0', '-I/apps/opt/gcc/5.4.0_01/include/c++/5.4.0/x86_64-suse-linux-gnu', '-std=c++14'], opt=off} execute: Command{action=Command::Candidates, file='', unsavedFile='', dir='', line=0, column=0, prefix='', caseStyle='exact', flags=[], opt=off}