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

Yi *_*ang 2 emacs elisp

我希望emacs能够处理一些耗时的任务,而不会阻止输入.出于这个目的,我试过(插入意味着被耗时的任务取代)

(call-process "emacs" nil 0 nil "--eval=(insert \"a\")")
Run Code Online (Sandbox Code Playgroud)

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

(call-process "emacs" nil 0 nil "--geometry 30x5")
Run Code Online (Sandbox Code Playgroud)

Emacs说"未知选项`--geometry 30x5".

是否有任何想法使用call-process来启动精确帧大小的另一个emacs会话?谢谢!

leg*_*cia 6

使用时call-process,正在启动的程序的每个参数必须在一个单独的字符串中 - 空格不算作分隔符.你的第一个例子是有效的,因为它是一个参数,但第二个例子需要两个参数,应该像这样写:

(call-process "emacs" nil 0 nil "--geometry" "30x5")
Run Code Online (Sandbox Code Playgroud)


phi*_*ils 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)))
Run Code Online (Sandbox Code Playgroud)