我在init.el中使用以下命令启用了公司:
(require 'company)
(add-hook 'after-init-hook 'global-company-mode)
但是,尽管源中有一些提供程序,但网站没有提到它的支持,但我没有完成文件名。
我开始输入/ home / emmanuel ...,虽然我希望完成功能会开始提供选项,但什么也没发生?
另外,公司模式如何自动检测相对路径的完成,我想我读到了它的支持,但是我不确定如果没有开头的“ /”作为提示,它将如何检测到它?
我在init.el中使用以下命令启用了公司:
(require 'company)
(add-hook 'after-init-hook 'global-company-mode)
但是,尽管源中有一些提供程序,但网站没有提到它的支持,但我没有完成文件名。
我开始输入/ home / emmanuel ...,虽然我希望完成功能会开始提供选项,但什么也没发生?
另外,公司模式如何自动检测相对路径的完成,我想我读到了它的支持,但是我不确定如果没有开头的“ /”作为提示,它将如何检测到它?
Answers:
您必须运行company-files以完成文件。您可以为文件完成完成绑定其他映射
(define-key global-map (kbd "C-.") 'company-files)
还要确保您在公司后端中有公司文件(M-x> customize-group> company> company backends)
company-backends。例如,您可以将其放在company-files该列表的首位,或将其包括在组后端中。
company-files或配置一些东西。至少对我来说,即使它company-backends
company-files在company-backends列表的开头插入,它将自动完成。当然,这可能并不是您真正想要的,只是指出文件后端只是另一个后端...
正如@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)))))