【问题标题】:Enable "." and "->" in emacs autocomplete使能够 ”。”和 emacs 自动完成中的“->”
【发布时间】:2014-05-17 17:04:12
【问题描述】:

有没有办法在输入“.”后自动完成弹出窗口?还是“->”?

我认为这个代码是

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

但这似乎已被弃用。

我看到的最接近的是 Alex Ott 的回复 here 使用:

(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->”引用类的成员函数时,自动完成会弹出建议。知道这是否可以实现吗?

【问题讨论】:

  • 我现在没有带自动完成功能的 Emacs 来测试,所以请谨慎对待。您可以将键定义为 'ac-expand 而不是 'semantic-complete-self-insert
  • @lilbill39,看起来不像预期的那样工作。我使用了 (global-set-key (kbd ".") 'ac-expand),当我按下 "." 时会导致展开。但是,编辑器不会输入“.”,只会进行 ac-expand。

标签: c++ emacs autocomplete


【解决方案1】:

对不起,我的评论有很大的疏忽。我有点不知所措。在具有自动完成功能的 Emacs 24.3.1 1.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 似乎是匹配 .-&gt; 的模式来完成。

【讨论】:

  • 非常感谢!!!我一直在寻找解决方案这么久。看来我需要添加 defun ac-common-setup()
  • @foboi1122,我很高兴听到它对你有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2013-11-11
  • 2010-10-14
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多