fwiw,这是我的解决方案:
步骤 1:在 /usr/local/bin/emacs 创建一个脚本,其内容如下:
#!/usr/bin/bash
emacsclient -c --alternate-editor='/Applications/Emacs.app/Contents/MacOS/Emacs' "$@" 2>/dev/null
步骤 2. 通过以下方式使其可执行: chmod +x /usr/local/bin/emacs
步骤 3. 在您的 ~/.emacs 文件中添加以下内容:
(server-start)
(defun ns-raise-emacs ()
(ns-do-applescript "tell application \"Emacs\" to activate"))
(ns-raise-emacs)
(add-hook 'server-visit-hook 'raise-frame)
;;(add-hook 'server-visit-hook 'ns-raise-emacs)
解释:
如果调用 /usr/local/bin/emacs 的 emacs 脚本并且当前没有运行 emacs 服务器,则 emacsclient 将调用备用编辑器,在这种情况下是 Emacs 编辑器 (/Applications/Emacs.app/Contents/MacOS /Emacs)。
在第 3 步中,初始调用(ns-raise-emacs)
似乎对于将初始 Emacs 窗口显示在其他所有内容之前是必要的。
这样(add-hook 'server-visit-hook 'raise-frame)
做是为了使后续帧显示在其他所有内容之前。
或者,如果您希望每次从命令行调用 emacs 时所有 Emacs 框架都显示在其他所有内容的前面,您可以取消注释该(add-hook 'server-visit-hook 'ns-raise-emacs)
行。