在Emacs 24中使用Emacs Starter Kit安装ECB

6
我已经安装了Emacs Starter Kit。当我尝试安装和运行ECB时,它无法工作。
出了什么问题?怎样才能让ECB与Emacs Starter Kit一起工作?

ECB安装

我尝试了两种方式:

  1. 按照这里的描述,将ecb添加到my-packages列表中
  2. 使用list-packages命令安装ecb

两种方式都得到了相同的结果。在安装过程中,我收到了很多警告,比如

In ecb-test-with-original-advice-set:
ecb-advice-test.el:122:16:Warning: reference to free variable `ecb-version'

In ecb-analyse-jump-to-tag:
ecb-analyse.el:443:24:Warning: `interactive-p' is an obsolete function (as of
23.2); use `called-interactively-p' instead.

文件的总大小为807行,我不知道如何将其添加到此处以保持帖子的可读性 :)

ECB使用

当我尝试通过在~/.emacs.d/$USER.el中添加(require 'ecb)来启动ECB时,在Emacs启动时会出现以下错误:

File error: Cannot open load file, ecb

变量load-path不包含ecb文件的路径。当我在Emacs中没有使用(require 'ecb)启动时,没有错误,并且load-path包含字符串"/home/maksim/.emacs.d/elpa/ecb-2.40"。添加以下行:
(add-to-list 'load-path (expand-file-name "~/.emacs.d/elpa/ecb-2.40"))

使Emacs启动不出错,但ECB仍然无法工作,并且ecb-activate的行为如下所述。

如果我尝试通过调用ecb-activate来启动ECB,我会在*Messages*缓冲区中看到以下内容:

ECB 2.40 uses CEDET 1.0 (contains semantic 2.0, eieio 1.3, speedbar <unknown
version>).
ecb-activate-internal: Symbol's value as variable is void: stack-trace-on-error

如果我在~/.emacs.d/$USER.el中添加以下行:
(setq stack-trace-on-error t)

然后,ecb-activate会响应以下内容。
ECB 2.40 uses CEDET 1.0 (contains semantic 2.0, eieio 1.3, speedbar <unknown
version>).
All requirements for ECB 2.40 fulfilled - Enjoy it!
The ECB is now deactivated.
ecb-clean-up-after-activation-failure: ECB 2.40: Errors during the basic setup
of ECB. (error-type: void-function, error-data:
(ecb-enable-own-temp-buffer-show-futition))

版本信息

  • GNU Emacs 24.0.92.1(x86_64-pc-linux-gnu,GTK+ 2.22.0版)
    2011年12月06日在pluot上修改的Debian版本
  • emacs-starter-kit 2.0.3
  • ecb 2.40
6个回答

3
我遇到了和你一样的问题,我已经解决了,以下是我的配置规格:
  • GNU Emacs 24.0.93.1(我在Ubuntu 11.10上使用快照gtk版本)
  • starter-kit 2.0.3
  • CEDET 1.0pre7(内置)
  • 最新的ECB来自CVS仓库(http://ecb.cvs.sourceforge.net/ecb/ecb/)
另外,我像@user1150335说的那样更改了版本号 我不需要像@user1150335说的那样更改版本号。如果我漏掉了什么或者您需要更多关于配置的信息,请让我知道。

3
这个方法有效!谢谢!下载新版本的 ECB 解决了问题。但是我不得不在我的配置文件中添加 (setq stack-trace-on-error t)(可能是因为我使用了不同版本的 Emacs)。 - Maksim Zholudev
很高兴能帮到你,是的,我忘了提到那个setq语句。 - Alberto Zaccagni
在Ubuntu 12.10上,使用Emacs24,我刚刚更新了ECB,并像Maksim Zholudev建议的那样将stack-on-error命令添加到init.el中。效果非常好!谢谢。 - wintondeshong

2
  1. 在 ecb-upgrade.el 中添加 (setq version-error nil),表示不进行 cedet 版本检查。

  2. 在 ecb.el 中将 (ecb-enable-own-temp-buffer-show-futition) 改为 (ecb-enable-own-temp-buffer-show-function)。

  3. 删除 ecb.elc 和 ecb-upgrade.elc。

  4. 执行 M-x byte-compile-file ecb.el 和 ecb-upgrade.el。

  5. 在 .emacs 或 .emacs.d/init.el 中添加 (setq stack-trace-on-error t)。

  6. 执行 M-x ecb-active。


2
尝试编辑 ecb-cedet-required-version-max 变量(在 ecb-cedet-wrapper.el 文件中)。这对我有用。 更新: 我不知道您使用的 cedet 版本。但是,以下是我一步一步执行的示例:
  1. (setq stack-trace-on-error t)(将其添加到您的 .emacs 文件中)
  2. 接下来,您应该找到一个名为 ecb-cedet-required-version-max 的变量。在我的 cedet 版本中,它位于 ecb-cedet-wrapper.el:83。
  3. 为了绕过版本检查,它应该大于当前安装的 cedet。 (defconst ecb-cedet-required-version-max'(1 2 4 9) 将适用于所有当前可用版本。
  4. 就这样。重新启动 emacs 进行测试。
由于某种原因,在更正后,stack-trace-on-error 必须为 true。 我在 GNU Emacs 24.0.92.1、CEDET 版本:1.1beta(从 bzr 中最后一次检出)以及从 cvs 中最后一次检出的 ecb 中进行了测试。 我现在不怎么使用 ecb,但我尝试了 ecb-byte-compile、ecb-activate、ecb-deactivate,跳转到 ecb 窗口(方法、目录、源),打开 cpp 和 elisp 文件。一切都很好。

我的实验结果只是让 ECB 在每个命令后都响应“您使用了错误版本的 CEDET”,这使得取消我的编辑变得不可能,因为 ecb-byte-compile 无法工作。ECB 仍然需要 stack-trace-on-error 变量。看起来 ECB 不支持 Emacs 24,也不打算支持 :( - Maksim Zholudev

2

你应该在 ecb.el 中将

(ecb-enable-own-temp-buffer-show-futition)

更正为

(ecb-enable-own-temp-buffer-show-function)


2

这对我来说解决了问题(我正在使用最新的bzr emacs,elpa安装的ecb对我大喊大叫),谢谢Arne! - yPhil
似乎是一个 Github 的问题。请稍后再试。 - Arne

1
安装 ecb-snapshot
M-x package-list-packages

从中选择ecb-snapshot。同时将其放置在~/.emacs.d/$USER.el中。

(require 'ecb)
(setq stack-trace-on-error t)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接