Ответ 1
A/Из официальный документ,
Компания - это основа для создания текста для Emacs. Название означает "все что-нибудь". Он использует подключаемые back-end и front-end к извлекать и отображать кандидатов на завершение.
Это означает, что "back-end" - это источники информации (парсер, база данных...), используемая компанией для предложения завершения.
В качестве примера, для работы C/С++ я использую отличный RTags. Добавление этого back-end для компании выполняется благодаря:
(push 'company-rtags company-backends)
B/Теперь для вашей проблемы минимальный рабочий пример рабочих групп c-заголовков:
(package-initialize)
(require 'company)
(require 'company-c-headers)
(add-to-list 'company-backends 'company-c-headers)
;; system dirs (for include <...>)
(add-to-list 'company-c-headers-path-system "/usr/include/c++/6")
;; (add-to-list 'company-c-headers-path-system "ANOTHER_SYSTEM_DIR")
;; -> use "gcc -E -Wp,-v -" to get the complete list
;; You can also define (for include "...")
;;(add-to-list 'company-c-headers-path-user "/home/YOUR_PROJECT")
(add-hook 'c++-mode-hook 'company-mode)
(add-hook 'c-mode-hook 'company-mode)
Сохраните этот файл test_init.el и запустите emacs с помощью
emacs -q --load "testing_init.el" your_prog.cpp
Теперь, если вы наберете
#include<...
в файле your_prog.cpp компания должна запустить автоматическое завершение после третьего введенного char.
Существует множество хороших учебных пособий для настройки Emacs как редактора С++. Если подумать этот является хорошей отправной точкой.