如何使用参数调用进程来启动emacs内的emacs

时间:2014-01-10 11:19:28

标签: emacs elisp

我希望emacs能够处理一些耗时的任务,而不会阻止输入。为此,我尝试了(插入意味着被耗时的任务取代)

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

这很有效。但是,当我想传递一个帧参数时,它不起作用:

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

Emacs说“未知选项`--geometry 30x5”。

使用call-process启动另一个精简帧大小的emacs会话的想法?谢谢!

2 个答案:

答案 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)))