2010-03-30 44 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) 

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