我希望emacs能够处理一些耗时的任务,而不会阻止输入。为此,我尝试了(插入意味着被耗时的任务取代)
(call-process "emacs" nil 0 nil "--eval=(insert \"a\")")
这很有效。但是,当我想传递一个帧参数时,它不起作用:
(call-process "emacs" nil 0 nil "--geometry 30x5")
Emacs说“未知选项`--geometry 30x5”。
使用call-process启动另一个精简帧大小的emacs会话的想法?谢谢!
答案 0 :(得分:6)
使用call-process
时,正在启动的程序的每个参数必须位于单独的字符串中 - 空格不算作分隔符。你的第一个例子是有效的,因为它是一个参数,但第二个例子需要两个参数,应该这样写:
(call-process "emacs" nil 0 nil "--geometry" "30x5")
答案 1 :(得分: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)))