Как уже указывал @Jesse, вам нужен company-files
бэкэнд. Есть несколько способов использовать его:
Привязать ключ, чтобы позвонить company-files
напрямую.
Используйте команду company-begin-backend
. Это предложит вам использовать бэкэнд, а затем предложит кандидатов на завершение.
Используйте company-other-backend
для поворота по списку бэкэндов (см. Следующий пункт). Это может использоваться для запуска завершения или после запуска режима компании для переключения на другой набор кандидатов на завершение. Вы можете назначить привязку ключа на карте компании, например(define-key company-active-map (kbd "C-e") #'company-other-backend)
Настройте переменную company-backends
. Режим компании пересекает этот список, чтобы найти серверную часть, которая принимает текущий префикс (т. Е. Текст перед точкой). Вполне возможно иметь в списке бэкэнд, который принимает текущий префикс, но не предлагает никаких кандидатов на завершение, и в этом случае режим компании ничего не завершит автоматически. Вы можете настроить список, чтобы упорядочить бэкэнды в соответствии с вашими потребностями.
Несколько примеров модификации company-backends
:
Если вы когда-либо хотели завершить имена файлов, вы можете сделать это своим единственным бэкэндом:
(setq company-backends '(company-files))
Это кажется маловероятным, поэтому вам лучше сначала поставить свой наиболее часто используемый бэкэнд, а затем использовать один из упомянутых ранее вариантов, чтобы переключать бэкенд или вызывать его по имени, когда вам нужно что-то еще.
Вы также можете настроить «групповой» бэкэнд, который создает объединенный набор кандидатов на завершение. Попробуйте это, например:
(setq company-backends '((company-capf company-dabbrev-code company-files)))
Здесь указывается один сервер, который объединяет кандидатов из трех других серверов. Это даст вам результаты из точки завершения, dabbrev и файловой системы.
Вы можете использовать ловушки режима, чтобы указать различный набор бэкэндов для разных основных режимов. Например:
(add-hook 'org-mode-hook
(lambda ()
(setq-local company-backends '((company-files company-dabbrev)))))
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(setq-local company-backends '((company-capf company-dabbrev-code)))))