如何引发/聚焦任何emacs框架时如何编写钩子来激活?

时间:2010-09-23 15:00:01

标签: emacs elisp frames

在Win32下,每个emacs框架在Alt-tabbing时显示为不同的窗口,这是有道理的。但是,当我选择主编辑窗口时,我也喜欢我的速度条框架随之自动抬起。

编写一个函数来提升所有帧(或者甚至是所有当前不可见的帧)都是相对微不足道的,但我无法弄清楚要使用的钩子,或者确实甚至可以使用一个钩子。

所以,如果我点击或alt-tab到我的任何emacs帧,应该运行一个钩子来调用我的函数来提升所有帧。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

GNU emacs似乎没有任何此类功能。

Xemacs有select-frame-hook和map-frame-hook。还有变量auto-raise-frame,但不是在GNU emacs中。

如果您想要改进emacs,请参阅http://www.xemacs.org/Documentation/beta/html/lispref_40.html#SEC526了解一些想法。

答案 1 :(得分:1)

我在GNU Emacs中最接近的是switch-frame事件,但它仅在聚焦不同的Emacs帧时生成,而不是在切换到非Emacs窗口然后返回到同一帧时生成。

这是一个足够好的窗口管理器应该做的事情,与Emacs的一些合作(例如使用窗口标题来确定速度条框架是什么)。

在Windows下,您应该可以使用AutoHotKeyWinWaitActive命令。

答案 2 :(得分:0)

我找到了一个可以使用的钩子。

server-visit-hook is a variable defined in `server.el'.
Original value was nil

Documentation:
Hook run when visiting a file for the Emacs server.

You can customize this variable.

当您找到包含Emacs服务器或emacsclient的文件时, 这个钩子会被调用。你可以使用这个钩子做一些需要的东西。