我正在尝试设置Emacs(我通过brew install emacs --cocoa
安装),我可以通过以下方式使用它:
emacsclient file.txt
创建一个新的GUI框架(如果还没有)emacsclient file2.txt
会替换现有框架的内容(如果有)emacsclient
应该始终立即返回,而不是阻止从emacs --daemon
进程正如我所说,我通过自制软件安装了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:
/usr/local/Cellar/emacs/HEAD/bin/emacsclient file.txt
这会在我的终端中打开emacs /usr/local/Cellar/emacs/HEAD/bin/emacsclient -c file.txt
这会打开一个新的Emacs GUI框架(好!)但它不知道具有相同的字体大小/字体设置。此外,当我关闭该帧并使用emacsclient -c
打开另一个文件时,Emacs进程似乎崩溃。/usr/local/Cellar/emacs/HEAD/bin/emacsclient -n file.txt
马上退出我不确定我应该做什么。我已经找到了很多这方面的教程,但很多人不清楚目标是让守护进程只是为了emacs等的终端使用而工作。
我非常有兴趣了解如何在OS X上使用Emacs,特别是如何设置Emacs守护程序以及如何使用GUI变体。
答案 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。