有没有一种方法可以在公司模式下完成时自动添加空格?

时间:2019-05-30 17:22:05

标签: emacs autocomplete code-completion

在本地字典的自然语言完成方面,我经常使用公司模式。我想知道是否有一种方法可以在完成时自动添加空格。

例如,当前,当我键入abili并选择第一个候选词ability时,我的插入点就在y|之后。公司模式是否可以添加空格,使我的插入点位于y |之后?

我找不到与此相关的任何信息,但是this issue提到在Eshell模式下完成后会添加一个空格。显然这正是我想要的。

问题提到了功能completion-at-point。有什么方法可以更改或具有可以覆盖当前完成机制的功能?

谢谢!我真的很感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您可以在company-after-completion-hook上添加一个钩子,该钩子将在您使用任何公司后端完成之后被调用,例如。

(defun my-company-after-completion-hook (&rest _ignored)
  ;; this would be called with the completion candidate, so you could
  ;; modify it to insert spaces based on the candidate
  (just-one-space))

;; or setq-local in a mode hook, eg. for text-mode/org-mode or wherever you are
;; completing with dictionary words 
(setq company-after-completion-hook #'my-company-after-completion-hook)

如果您只想在完成特定的后端后添加空间,则可以查看后端是否已经实现了post-completion操作,否则您可能会建议这样做。