使用emacsclient打开文件时,在OS X上使用GUI Emacs

时间:2014-07-30 18:47:30

标签: macos emacs

我正在尝试设置Emacs(我通过brew install emacs --cocoa安装),我可以通过以下方式使用它:

  1. emacsclient file.txt创建一个新的GUI框架(如果还没有)
  2. emacsclient file2.txt会替换现有框架的内容(如果有)
  3. emacsclient应该始终立即返回,而不是阻止从
  4. 调用的shell
  5. 在任何给定的时间点,基本上应该有一个Emacs窗口和一个emacs --daemon进程
  6. 正如我所说,我通过自制软件安装了Emacs。要在我登录时启动守护程序,我添加了~/Library/LaunchAgents/org.gnu.emacs.plist以及以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>Label</key>
        <string>org.gnu.emacs</string>
        <key>ProgramArguments</key>
        <array>
          <string>/usr/local/Cellar/emacs/HEAD/bin/emacs</string>
          <string>--daemon</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
      </dict>
    </plist>
    

    我确认这开始了这个过程。到目前为止,我尝试了各种变体来调用emacsclient:

    1. /usr/local/Cellar/emacs/HEAD/bin/emacsclient file.txt这会在我的终端中打开emacs
    2. /usr/local/Cellar/emacs/HEAD/bin/emacsclient -c file.txt这会打开一个新的Emacs GUI框架(好!)但它不知道具有相同的字体大小/字体设置。此外,当我关闭该帧并使用emacsclient -c打开另一个文件时,Emacs进程似乎崩溃。
    3. /usr/local/Cellar/emacs/HEAD/bin/emacsclient -n file.txt马上退出
    4. 我不确定我应该做什么。我已经找到了很多这方面的教程,但很多人不清楚目标是让守护进程只是为了emacs等的终端使用而工作。

      我非常有兴趣了解如何在OS X上使用Emacs,特别是如何设置Emacs守护程序以及如何使用GUI变体。

2 个答案:

答案 0 :(得分:7)

正如经常发生的那样,我在写这篇文章时找到了解决方案。将以下内容放入init.el允许我在现有GUI框架中打开文件。

(require 'server)
(unless (server-running-p)
  (server-start))

我认为这是有效的,因为服务器进程绑定到Emacs的GUI实例,但我仍然对其他人开放我很开明。

答案 1 :(得分:0)

就2019年而言,这个答案确实对我有用。这是我在emacs-mac v.26.2的macos Mojave中使用emacsclient和emacs守护程序的配置:

1)首先,将这一行放入我的init文件中:

(server-start)

正如EmacsWiki和Martin所解释的,此行对于将GUI Emacs链接到它创建的服务器是必需的。

2)然后,我将Emacs GUI设置为在mac会话的开始处启动(这里没有任何魔术,它被设置为其他任何应用程序)。

3)最后,我使用自动化器为此终端命令创建一个shortcut

/usr/local/Cellar/emacs-mac/emacs-26.2-z-mac-7.6/bin/emacsclient -c -a ""

并使用我的mac偏好设置的键盘菜单将其绑定到我的偏好设置的任何键绑定(我将我的设置为shift + super + e)。

在此之后,您就可以开始了。 Emacs GUI将在会话开始时启动,并且仅通过快速快捷键即可快速打开emacsclient框架。

PD:请不要关闭emacs GUI,因为emacsclient需要它来创建新的图形框架,因此必须使其保持运行状态。参见documentation