【问题标题】:using a specific emacs server使用特定的 emacs 服务器
【发布时间】:2013-04-09 17:38:36
【问题描述】:

我通常会打开 3 或 4 个 emacs,因为我在不同工作区的 3 或 4 个不同项目中工作。现在,当我尝试使用 emacsclient 打开一个新文件时,我无法控制它转到哪个 emacs。通常它会转到其他工作区中的 emacs。有没有办法指定将它打开到哪个 emacs 中?

一种方法是重新启动我希望该文件所在的服务器,但它不是我正在寻找的解决方案。

【问题讨论】:

    标签: emacs


    【解决方案1】:

    Burton 的解决方案在正确的轨道上,但过于复杂,因为您不应该使用临时目录的名称来解决问题。你可以这样做:

    (defun start-named-server (name)
      (let ((server-name name))
        (server-start)))
    

    然后使用

    emacsclient -s <name> "$@"
    

    【讨论】:

      【解决方案2】:

      您可以为服务器套接字文件指定一个特定的名称,然后调用 emacsclient 来使用该套接字:

      (defun get-tmpdir ()
          (or (getenv "TMPDIR") "/tmp"))
      
      (defun start-named-server (name)
          (let ((server-name (format "%s/emacs-%s" (get-tmpdir) name))
              (server-start))
      

      现在定义一个 shell 脚本“ec”,它允许您指定服务器名称:

      emacsclient -s ${TMPDIR-/tmp}/emacs-${1?"usage: ec [emacs server name] ..."} "$@"
      

      所以现在您可以在您的 emacs 中运行 M-: (start-named-server "1") 后转到“ec 1 myfile”,然后使用 2、3、4 对所有其他 emacs 重复此操作。 .

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 2017-10-28
        • 2015-02-18
        • 2011-02-23
        • 1970-01-01
        • 2021-04-29
        • 2011-04-23
        相关资源
        最近更新 更多