在 emacs 自动完成中启用"."和"->"

Enable "." and "->" in emacs autocomplete

本文关键字:gt 启用 emacs      更新时间:2023-10-16

有没有办法在键入"."或"->"后自动完成弹出?

我认为这个代码是

       (add-to-list 'ac-omni-completion-sources
                    (cons "\." '(ac-source-semantic)))
       (add-to-list 'ac-omni-completion-sources
                    (cons "->" '(ac-source-semantic)))

但似乎这可能已被弃用。

我看到的最接近的是亚历克斯·奥特(Alex Ott)在这里的回应:

(defun my-c-mode-cedet-hook ()
 (local-set-key "." 'semantic-complete-self-insert)
 (local-set-key ">" 'semantic-complete-self-insert))
(add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)

但是,这总是会弹出另一个框架来显示来自语义的建议。如果可能的话,我希望所有内容都使用自动完成的本机弹出窗口,当我尝试使用"myClass->"引用类的成员函数时,自动完成会弹出建议。知道这是否可以实现吗?

对不起,我的评论有很大的疏忽。 我有点不知所措。 在带有自动完成 1.3.1 的 Emacs 24.3.1 中,我实际上看到了启用自动完成和语义模式所需的行为。 也就是说,我在键入以下之一时会出现一个自动弹出窗口:

someObj.
someObj->

我添加了这个作为答案,以便我可以列出一些代码。 如果有帮助,我的自动完成设置如下所示:

(add-to-list 'load-path "<ac-install-dir>")
(require 'auto-complete-config)`
(add-to-list 'ac-dictionary-directories "<ac-install-dir>/ac-dict")
(ac-config-default)
(defun ac-common-setup ()
  (setq ac-sources (append ac-sources '(ac-source-gtags ac-source-semantic ac-source-semantic-raw))))

似乎变量ac-prefix-definitions控制模式,这些模式是触发完成的前缀。 我看到的值是:

((symbol . ac-prefix-symbol)
 (file . ac-prefix-file)
 (valid-file . ac-prefix-valid-file)
 (c-dot . ac-prefix-c-dot)
 (c-dot-ref . ac-prefix-c-dot-ref))

ac-prefix-c-dotac-prefix-c-dot-ref似乎是与完成完成.->相匹配的模式。