What is company-mode?
Project homepage : https://github.com/company-mode/company-mode
company-mode adds auto-completion to the current buffer in Emacs. It's similar
ac-mode and supports some more modern features, such as lsp (language
It works well out of the box, but with some additional packages and per-language configuration it can really shine.
Example packages for web development
- Adds completion for
web-mode, and can be used with HTML and HTM templates, although I prefer using emmet-mode for creating elements.
- Auto-completion for Ruby which uses a Ruby REPL to get code information. Requires the file (or project in Rails) to be reloaded when code changes.
- Adds auto-completion for common PHP extensions, as well as user defined classes and functions. It also supports annotations and type hints. It requires a special tags file to be created in order to get the most out of it, and this file should be regenerated when code changes.
Using lsp requires some extra setup as each language has its own server implementation which may need to be installed and configured. However, once it's up and running it's a fairly smooth experience.
company-lsp integrates with lsp-mode and allows
company-mode to use
information from running lsp servers.
Although it takes a while to configure, using lsp removes the need to regenerate tag files or reload projects when code changes.
This post is part of the "Exploring my Emacs packages" series.