2010-03-30 72 views
2

基本上我有我的Emacs设置,所以它有一个特定于GUI的elisp,但是当它在守护进程模式下启动时,这不会评估。该代码是这样的:当框架被引发时,如何让Emacs评估文件?

;; gui.el 
(when window-system 
    (progn 
    ;; do stuff here 
    )) 

我想这个文件(或至少在它 - 也许代码函数)来进行重新评估,当我在命令行中运行emacsclient -c,因为我错过了我所有的字体锁定和颜色主题的优点(因为我有那些在GUI存在的情况下运行的东西)。

emacsclient -c --eval "(your-gui-init-function)" 
+0

它引发了一个问题,为什么在'(当window-system ...)'守护进程模式应该处理得很好时,所以我会尝试删除支票。另外,在'when'里面''(progn ...)'是不必要的。 – 2010-03-30 21:23:26

回答

3

你可以把你的代码在一个钩子之前创建一个框架

(add-hook 'before-make-frame-hook 'my-gui-initialization-stuff) 

在你可能要那个勾被称为:

+0

在这种情况下使用框架钩子可能不是好主意,因为它们也被称为基于文本的框架......应该至少添加一些额外的检查,即使这样,如果同时使用X和基于文本的客户端混淆可能随之而来例如像color-theme这样的东西。 – 2010-03-31 08:05:26

+0

我已经在验证它是否是一个窗口系统,所以我认为这是可以的。 – 2010-04-01 20:10:28

+0

谢谢Trey,这太棒了! – 2010-04-01 20:10:55

0

开始emacsclient时,您应该评估您的GUI功能有一条线

(remove-hook 'before-make-frame-hook 'my-gui-initialization-stuff) 

所以你不要做一遍又一遍的初始化。