【问题标题】:Emacs auto-completion modeEmacs 自动完成模式
【发布时间】:2012-02-06 00:10:12
【问题描述】:

emacs 的新功能。我无法为 Gtk+3 实现自动完成。我使用 CEDET 和自动完成模式作为 UI。 Semantic 无法找到包含文件 ( ),但它可以解析打开缓冲区中代码的标签。

这是我的 .emacs 配置文件

;;----------------------------------------------------------------------------------
(load-file "~/.emacs.d/cedet-1.0/common/cedet.el")
(global-ede-mode 1)
(semantic-load-enable-excessive-code-helpers)
;;(semantic-load-enable-semantic-debugging-helpers)
;; ede customization
(require 'semantic-lex-spp)
(ede-enable-generic-projects)
(setq senator-minor-mode-name "SN")
(setq semantic-imenu-auto-rebuild-directory-indexes nil)
(global-srecode-minor-mode 1)
(global-semantic-mru-bookmark-mode 1)
(require 'semantic-decorate-include)
;; gcc setup
(require 'semantic-gcc)
;; smart completions
(require 'semantic-ia)
(setq-mode-local c-mode semanticdb-find-default-throttle
             '(project unloaded system recursive))
(setq-mode-local c++-mode semanticdb-find-default-throttle
             '(project unloaded system recursive))
(setq-mode-local erlang-mode semanticdb-find-default-throttle
             '(project unloaded system recursive))
(require 'eassist)
(require 'semanticdb)
(global-semanticdb-minor-mode 1)
;; gnu global support
(require 'semanticdb-global)
(semanticdb-enable-gnu-global-databases 'c-mode)
(semanticdb-enable-gnu-global-databases 'c++-mode)
;; ctags
(require 'semanticdb-ectag)
;;(semantic-load-enable-primary-exuberent-ctags-support)
(global-semantic-tag-folding-mode)

(defun my-cedet-hook ()
(local-set-key [(control return)] 'semantic-ia-complete-symbol)
(local-set-key "\C-c?" 'semantic-ia-complete-symbol-menu)
(local-set-key "\C-c>" 'semantic-complete-analyze-inline)
(local-set-key "\C-cp" 'semantic-analyze-proto-impl-toggle))
(add-hook 'c-mode-common-hook 'my-cedet-hook)

;;semantic gtk gdk
(defun my-semantic-hook ()
(semantic-add-system-include "/usr/include/gtk-3.0/gtk/" 'c-mode)
(semantic-add-system-include "/usr/include/gtk-3.0/gdk/" 'c-mode))
(add-hook 'semantic-init-hooks 'my-semantic-hook)

;; END CEDET
;;----------------------------------------------------------------------------

有什么建议吗?谢谢。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    我觉得你的设置没问题;我想知道 add-system-includes 中额外的“gtk/”和“gdk/”是否是问题所在。我刚刚使用 gtk-3.0 完成了这项工作:

    (semantic-add-system-include "/usr/include/gtk-3.0" 'c-mode)
    

    然后在你的源文件中,

    #include <gtk/gtk.h>
    

    接着是:

    gtk_[C-c ?] 
    

    花一分钟左右的时间处理所有头文件,但它确实按预期返回了完成菜单。

    如果这对您不起作用,我注意到您可能使用的是旧版本的 CEDET。我使用来自 bazaar 存储库的最新开发版本;我强烈建议您也这样做。

    【讨论】:

    • 谢谢。在我更新 CEDET 并消除了额外的“gtk gdk”之后,语义正在工作并读取包含的文件。拥有emacswiki.org/emacs AutoComplete UI 而不是默认用户界面会很好。任何提示:)。再次感谢
    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 2023-03-12
    • 2015-02-13
    • 1970-01-01
    • 2012-12-10
    • 2010-09-14
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多