顺便提一下,这是我的解决方案:
步骤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)
说明:
如果在 /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)
这一行。