2012-04-23 29 views
9

我需要一个命令来在Emacs中创建新框架时运行。到目前为止,我一直在使用after-make-frame-functions,但这个钩子只能在由make-frame创建的帧上调用。 我实际上需要一些东西,只要emacsclient -c命令创建一个新窗口就会运行。用于新框架的Emacs钩子

有没有办法做到这一点?

回答

9

我在理解你的问题时有些困难。 Emacs服务器在需要创建新帧时调用make-frame,所以after-make-frame-functions也应该在这种情况下工作。那么你的实际问题是什么?

即使Emacs服务器不是创建新框架,您是否希望您的功能运行?如果是这样,请尝试将您的功能添加到server-switch-hook以及after-make-frame-functions

server-switch-hook是在server.el中定义的变量。

文档:吊钩运行切换到缓冲器Emacs的 服务器时。

+3

是的,你的第一段是正确的。当我执行'make-frame'时,我想要运行的命令完美工作,但当使用'emacsclient -c'创建新框架时,它不起作用。所以我只是假设当我运行'emacsclient -c'时服务器没有调用该钩子。我现在做了更多的测试,结果发现我的命令有问题。对于无意义的问题抱歉。 – Malabarba 2012-04-23 16:13:31

+3

没问题。 [橡皮鸭调试](http://en.wikipedia.org/wiki/Rubber_duck_debugging)在行动! – 2012-04-23 16:19:10

+2

令人惊叹!我向你介绍通过代理进行元橡皮鸭调试的概念,其中有人 - 例如我自己 - 找到与SO完全相同的问题的人,发现问题实际上并不存在。我很感激你们俩。 – leoger 2013-03-13 19:01:08