Auto-completion for C/C++ headers using Company
Emacs Lisp Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Auto-completion for C/C++ headers using Company

This library enables the completion of C/C++ header file names using Company mode for Emacs.


When you type an #include declaration within a supported major mode (currently c-mode, c++-mode and objc-mode), company-c-headers will search for completion candidates within the defined include paths. There are “system” and “user” include paths, for #include <...> and #include "..." declarations, respectively.

During completion, the path to the current candidate can be seen in the minibuffer, such as in the screenshot above. Also during completion, you can use C-w to temporarily display the currently-selected header file.

This library is inspired by auto-complete-c-headers.


The best way to install this package is via MELPA.


With the company-c-headers library added to the load-path, all you need to do to initialize it is:

(add-to-list 'company-backends 'company-c-headers)

Typically you would want to customize the search paths, which you can do using M-x customize-group, company-c-headers.

Alternatively, you can bind the company-c-headers-path-system and company-c-headers-path-user variables to functions which return the corresponding paths. For example, if you are using EDE, you can use the following:

(defun ede-object-system-include-path ()
  "Return the system include path for the current buffer."
  (when ede-object
    (ede-system-include-path ede-object)))

(setq company-c-headers-path-system 'ede-object-system-include-path)