2014-01-10 49 views
2

在emacs中啓動emacs的呼叫過程我希望emacs能夠在不阻止輸入的情況下處理一些耗時的任務。爲此,我嘗試過(其中插入意圖由耗時的任務取代)如何通過參數

(call-process "emacs" nil 0 nil "--eval=(insert \"a\")") 

這是有效的。然而,當我想通過一幀參數,它不工作:

(call-process "emacs" nil 0 nil "--geometry 30x5") 

Emacs的說:「未知的選項'--geometry 30x5」。

任何想法使用調用過程來啓動另一個精煉幀大小的emacs會話?謝謝!

回答

6

使用call-process時,啓動的程序的每個參數必須位於單獨的字符串中 - 空格不會被視爲分隔符。你的第一個例子中的作品,因爲它是一個參數,但第二個例子需要兩個參數,應該這樣寫:

(call-process "emacs" nil 0 nil "--geometry" "30x5") 
6

這聽起來像你可能想async.el,這確實運行的Emacs的其他實例來進行超出指定的處理。

(雖然我不確定你的可見幀的要求。)

按照鏈接的所提供的所有其他功能的詳細信息,但最簡單的用法示例給出(這似乎像它可能適用)是:

(async-start 
    ;; What to do in the child process 
    (lambda() 
    (message "This is a test") 
    (sleep-for 3) 
    222) 

    ;; What to do when it finishes 
    (lambda (result) 
    (message "Async process done, result should be 222: %s" result))) 
+0

非常感謝!知道這個包是非常有趣的!我會試一試。 –