有没有办法在公司模式下完成后自动添加空格?

Is there a way to automatically add a whitespace upon completion in company-mode?

我经常使用公司模式使用本地词典进行自然语言补全。我想知道有没有办法在完成时自动添加一个白色space。

例如,当前当我键入 abili 和 select 第一个候选 ability 时,我的插入点就在 y| 之后。有没有办法让公司模式可以添加一个 space 所以我的插入点在 y | 之后?

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

问题提到函数 completion-at-point。有没有办法可以更改或具有可以覆盖当前完成机制的功能?

谢谢!如果有任何建议,我将不胜感激。

您可以向 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)

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