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!

VIM clang_complete

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
autocmd FileType *        set nocindent smartindent
autocmd FileType c,cpp    set cindent
augroup END

syntax on


comments powered by Disqus