【更新】如用 brew 安装的 emacs-plus 可以直接在命令行输入:
brew services start emacs
优点是不必那么麻烦,缺点是方案没有共通性。
如有错漏,不吝指正,谢谢。
等效于 emasc --daemon
命令,但每次系统启动之后输入这个命令会很烦。我用 Doom Emacs,Emacs 版本 29.4,系统 macOS。
网络上找到一个老外写的方法,实测靠谱,退出 GUI Emacs 之后后台仍然有常驻进程。
他的方法是,将 emacsclient 写进 macOS 的 LaunchAgent,作为系统自启动服务加载。
-
创建文件:~/Library/LaunchAgents/gnu.emacs.plist
-
在文件里添加如下内容:
注:要将 username 替换自己的系统账户名。
<?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>KeepAlive</key>
<true/>
<key>Label</key>
<string>gnu.emacs</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/emacs</string>
<string>--fg-daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/gnu-emacs-daemon.log</string>
<key>StandardOutPath</key>
<string>/tmp/gnu-emacs-daemon.log</string>
<key>UserName</key>
<string>USERNAME</string>
</dict>
</plist>
验证方法:
在终端输入如下命令:
plutil -lint ~/Library/LaunchAgents/gnu.emacs.plist
如果成功会看到成功的消息:
/Users/USERNAME/Library/LaunchAgents/gnu.emacs.plist: OK
如下命令用于启动、关闭服务:
launchctl load -w /Users/USERNAME/Library/LaunchAgents/gnu.emacs.plist
launchctl unload /Users/USERNAME/Library/LaunchAgents/gnu.emacs.plist
launchctl list