2009-05-17 81 views
2

我想弄清楚如何使用Emacs代码浏览器(ECB),你可以用它做的事情之一是设置ecb-windows-width来决定ecb窗口有多宽。问题是这个序列:如何在emacs框架渲染后立即运行命令?

  1. 框架弹出在屏幕上。
  2. ecb-activate被调用,根据ecb-windows-width缩放。
  3. default-frame-alist参数踢入,帧被调整大小。

问题是由于这个顺序,ecb窗口的宽度在帧被调整大小之前被设置,然后没有被缩放。

所以我想运行的ECB重绘布局(或理想只是ECB激活),但它发生后,#3。否则,某种ecb-dynamic-width-scale选项也会起作用。

对于它的价值,ECB-自动激活不工作,所以我不能查出是否会解决这个问题。

+0

听起来像一个错误,你应该给ecb的维护者发邮件。 – justinhj 2009-05-18 16:50:03

回答

2

它看起来像我找到了解决方法。

  1. 将ecb-fix-window-size设置为true。
  2. 当框架加载时,ecb-activate被调用,ecb窗口按比例缩放到框架大小。
  3. 然后默认帧-ALIST在踢和框架得到调整,但欧洲央行的窗口有一个固定的大小,并没有得到缩小。

很危险,因为您根据首先出现的默认帧大小设置宽度,而不是实际使用的大小。但是,好吧。

1

我不熟悉欧洲央行,但after-make-frame-functions可能会有助于运行你想要的功能(或运行一些钩子功能,你想用ecb框架做特别的事情)。

after-make-frame-functions是一个参数一个参数(新创建的帧)并在帧创建后运行的功能列表。这不适用于初始emacs框架(启动时),因为您的.emacs在之后被读取为,该框架已被创建。

+0

是的,我试过这个钩子,但它似乎没有实际调用函数,没有任何反应。 事实上,如果我只是这样做: (添加钩“化妆帧功能后”(拉姆达()(setq XX 1))) ,然后尝试评估XX的emacs启动后它变成变量尚未设置。 – numerodix 2009-05-17 23:20:05

+0

钩子函数必须采用单个框架参数。所以,我这样做,并调用后(使帧),变量XX不会获取设置为1。我还没有尝试过主Emacs框架(即发动的emacs后): (添加 - hook'after-make-frame-functions(lambda(the-frame)(setq xx 1))) – 2009-05-17 23:40:08