【问题标题】:How to call-process to start emacs inside emacs, with parameters如何使用参数调用进程以在 emacs 中启动 emacs
【发布时间】:2014-01-10 19:41:41
【问题描述】:

我希望 emacs 处理一些耗时的任务,而不会阻塞输入。为此,我尝试了(插入是为了替换耗时的任务)

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

这行得通。但是,当我想传递一个框架参数时,它不起作用:

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

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

有什么想法可以使用 call-process 来启动另一个具有精细帧大小的 emacs 会话吗?谢谢!

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      听起来您可能想要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)))
      

      【讨论】:

      • 非常感谢!知道这个包很有趣!我会试一试的。
      猜你喜欢
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 2011-09-03
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      相关资源
      最近更新 更多