There seem to be two major autocompletion extensions for emacs: autocomplete and company mode. What are some of the practical differences between the two and when would I want to use one over the other? Also, are they compatible with each other?
I've used autocomplete-mode for a good a few years and switched to company-mode a couple of months ago.
In basic usage there's not much of a difference. Like someone else posted this link has a good summary of the differences.
I found company-mode to be easier to configure and to let it do what I want it to. With autocomplete-mode I ran into issues now and then of something not working the way I wanted it to and then something else falling over when tweaking it. In usage, I rarely feel company-mode is in the way when using Emacs while autocomplete-mode did get in the way now and then.
Also, for developers it is easy to add support for their packages to company-mode, see: EmacsWiki:CompanyMode:Backends.
They are not compatible with each other. For now, there's more packages that support autocomplete-mode but that is changing fast.
tl;dr. They pretty much do the same thing. Start with company-mode and try autocomplete-mode if you miss anything from the former.
They're pretty much equivalent, but
company-mode has a better thought-out API for plugin developers. It's also much more actively maintained. But there are two key differences which may or may not matter to you:
company-mode now targets Emacs 24, so if you're stuck with Emacs 23 then you're out of luck.
auto-complete still works with Emacs 23.
auto-complete has a "popup docs" mechanism which displays a tool-tip-like yellow overlay in the current buffer showing info about the symbol at point. IIRC,
company-mode can pull in the same info, but it does it in a separate window right now.
There's an issue filed for that, and it seems likely that
company-mode will gain popup doc support, perhaps via an add-on package. Historically, such popup windows have been somewhat buggy, so it might be worth getting used to
company's separate-window approach.
If you're starting afresh now, and you have Emacs 24,
company-mode is the way to go.