LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1438|回复: 5

Semantic 2.0 beta2 for Emacs

[复制链接]
发表于 2005-11-1 20:25:02 | 显示全部楼层 |阅读模式
2.0 beta2 以后版本的 Semantic 对代码补全提供了比较好的支持。只要在同一个文件中包含了结构的定义,它就可以提供完美的代码补全。可以到 http://cedet.sourceforge.net/ 下载 cedet 1.0 pre3,并按照 INSTALL 文件中的说明安装(请仔细阅读 INSTALL 并完成每个步骤)。完成后,在 ~/.emacs 中加入如下的代码(注意:其他已经在 INSTALL 中说明的代码并没有被列在这里):
  1. (add-hook 'semantic-init-hooks 'semantic-idle-completions-mode)
复制代码

就可以加入这个特性。重新启动 Emacs 或执行 M-x semantic-idle-completions-mode 即可。

下面是一个例子。图中显示了输入程序后 Semantic 的提示内容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2005-11-1 20:26:37 | 显示全部楼层
这时可以输入一个字母,Semantic 会自动过滤掉不以这个字母开头的成员。这个过程可以重复。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-1 20:29:11 | 显示全部楼层
或者,可以按一下 Tab 键,Semantic 会自动将最长的匹配补上。这里只有 next 一个,所以 next 出现在编辑区域。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2005-11-1 20:31:48 | 显示全部楼层
哎,这正是俺喜欢的东东,多谢阿。
回复 支持 反对

使用道具 举报

发表于 2005-11-1 20:41:46 | 显示全部楼层
不错。不过等待时间可不可以缩短一点。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-2 16:04:03 | 显示全部楼层
本想写个完美一些的函数,可我没时间阅读 Semantic 的源代码。所以现在只有用下面这个凑合了,虽然在许多情况下会产生一些无用的提示,但速度确实是可以增加的。像下面这样修改 ~/.emacs:

  1. (defun my-c-mode-complete (character)
  2.   (insert character)
  3.   (condition-case nil
  4.       (progn (semantic-complete-analyze-inline)
  5.              (when (semantic-completion-inline-active-p)
  6.                (semantic-complete-inline-force-display)))
  7.     (error nil)))

  8. (defun my-c-mode-common-hook ()
  9.   (local-set-key (kbd ".") '(lambda () (interactive) (my-c-mode-complete ?.)))
  10.   (local-set-key (kbd ">") '(lambda () (interactive) (my-c-mode-complete ?>))))

  11. (add-hook 'c-mode-common-hook
  12.        '(lambda ()
  13.           (my-c-mode-common-hook)))
复制代码


这样,只要按下 . 或者 > 就会立即得到提示。但它只对与 C 相像的语言有效,并且由于我只会 C,没有加入 :: 这样的运算符的内容(因为我不知道它们是否应该补全)。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表