首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将自动完成设置为使用语义

将自动完成设置为使用语义
EN

Stack Overflow用户
提问于 2012-11-04 20:49:36
回答 2查看 4K关注 0票数 2

我对Emacs中的自动补全包有一个问题。目前我已经启动并运行了具有正确自动完成功能的cedet,但是自动完成包有一些奇怪的行为。它不使用语义的(参议员的?)数据库,直到我显式访问包含文件并生成"C-u M-x bovinate“。然后我可以返回到源文件,自动补全的补全列表将与语义补全列表完全相同。

另一点是,如果我编辑我的源文件,例如,在c++模式下,并试图在c模式下"bovinate“头文件,自动完成在它的完成列表中不会得到任何额外的分数。

有什么想法可以让自动完成的工作自动完成吗?

我的.emacs文件是(它的主要部分取自Alex Ott's article)

代码语言:javascript
复制
(load "~/.emacs.d/cedet/cedet-devel-load.el")
(add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode)
(add-to-list 'semantic-default-submodes 'global-cedet-m3-minor-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-mru-bookmark-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-local-symbol-highlight-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-decoration-mode)

(require 'semantic/ia)
(semantic-mode 1)

(require 'semantic/bovine/gcc)

(semantic-add-system-include "/usr/include/mpi/" 'c++-mode)

;; ;; Imenu integration
(defun my-semantic-hook ()
  (imenu-add-to-menubar "TAGS"))
(add-hook 'semantic-init-hooks 'my-semantic-hook)

;; Class suggest improvement
(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)

;;;; Semantic and auto-config integration
(require 'auto-complete-config)
(ac-config-default)
(add-to-list 'ac-dictionary-directories "/home/zvord/.emacs.d/ac-dict")
(define-key ac-mode-map [(meta return)] 'auto-complete)

(defun my-cedet-hook ()
  (add-to-list 'ac-sources 'ac-source-semantic))
(add-hook 'c-mode-common-hook 'my-cedet-hook)

根据我所读到的,这应该足以完成自动完成的工作,但它不是。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-18 05:51:31

试着改变:

(defun my-cedet- () (add-to-list‘ac-source 'ac-source-semantic))

进入:

(defun my-cedet-hook () (add-to-list‘ac-source 'ac-source-semantic-raw))

应该能行得通。

票数 0
EN

Stack Overflow用户

发布于 2012-11-04 21:35:33

您的自动完成配置允许自动开始完成吗?您需要检查以下变量的值:ac-auto-show-menu -等待到显示可能完成的菜单的时间(默认为0.5秒),以及ac-auto-start -何时开始完成(需要键入多少符号-原始值为2)。

自动完成的完整配置可能如下所示(除了my-cedet-hook中的设置之外):

代码语言:javascript
复制
(require 'auto-complete-config)
(ac-config-default)
;; start after 3 characters were typed
(setq ac-auto-start 3)
;; show menu immediately...
(setq ac-auto-show-menu t)
;; explicit call to auto-complete
(define-key ac-mode-map [(meta return)] 'auto-complete)

我使用类似的配置,它对我来说很好,可以显示语义数据的完成。您尝试对哪种语言使用名称完成?例如,对于C++,需要将条目添加到spp-table等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13218664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档