clang_complete is what the people want and what the doctor ordered:
let g:clang_snippets=1 let g:clang_conceal_snippets=1
C^X, C^U, profit. Another awesome development for LLVM!
It sucks for C and C++ development.
Popup code completion ("IntelliSense") is a godsend. Instead of flipping back and forth between an API reference and your code, a non-invasive popup of available functions, method signature, struct members, instance variables, etc is right at your fingertips. It's especially useful when it contains the declaration's comment/Doxygen/JavaDoc.
Building a 'ctags' file of my system libraries takes ten minutes and weighs 1.5GB for VIM's integrated omnicomplete. Any time the headers are updated, it has to be manually rebuilt. The project's tags need to be rebuilt per change. Unbearable.
I also can't get inline function/method signatures or automatic struct member completion without a three year old script, omnicppcomplete. Yes, this is true for plain old C too.
The one editor I've found that provides the level of introspection I expect yet otherwise stays out of the way is KDevelop 4.1. It basically takes the Kate text editor, with awesome syntax highlighting and standard editing features, and adds some of the best auto-completion I've seen for C or C++. It's fast too, and doesn't require a ridiculous manual scan or gigabyte symbol database. It just works - automatically.
Well, editing from the console is pretty convenient, especially on slow remote SSH connections. Lazyweb, am I missing something that VIM gurus know and I don't? Does emacs provide the level of completion I'm looking for on the console out of the box?
I know the llvm devs have some code brewing that uses llvm for syntax completion. Maybe there's light at the end of the tunnel.
My .vimrc looks like this if anyone has any suggestions:
filetype on filetype plugin on filetype indent on set nocp set expandtab set smarttab set textwidth=80 set softtabstop=2 set shiftwidth=2 set omnifunc+=syntaxcomplete#Complete set completeopt+=longest,menuone set tags+=~/.vim/systags autocmd FileType make set noexpandtab augroup csrc au! autocmd FileType * set nocindent smartindent autocmd FileType c,cpp set cindent augroup END syntax on