我使用的是OS X,主要是终端和emacsclient。
当我做 shell 的东西时,我会用 Control-Z 来备份我的 emacsclient
有时我忘记了我是否这样做了,最终产生了额外的 emacsclient 会话,这是我不想做的。
如果 bash 提示符可以告诉我 emacsclient 是否在jobs
输出中作业,那就太酷
bash 的最小示例,使用 sleep
而不是 emacsclient
。
PS1="`if jobs | grep -q sleep; then echo 'sleep jobs' ; else echo 'no sleep jobs' ; fi`\$ "
您可能希望筛选已停止的作业 ( jobs -s
)。
您可以通过回显转义序列而不是仅仅字符串来着色它来变得更漂亮。
虽然我认为@jpkota提供了一个可行的答案,但我想知道你是否担心太多了。只要 emacsclient 工作正常,那么同时运行多个 emacsclient 会话是没有问题的 - 事实上,它就是为了做到这一点而设计的。emacsclient连接是轻量级的,如果你可能需要再次使用相同的文件/缓冲区,你不妨保留它们,并在需要时打开新的,并删除你认为不需要的那些。emacscleint的全部好处是打开新的窗口/缓冲区非常快,如果你使用GUI版本,它们只会在自己的窗口中弹出。
elpa 中还有一个可能有用的软件包,叫做 osx-pseudo-daemon,它解决了关闭所有 emacsclient 窗口时可能发生的问题,该问题会阻止主 emacs 响应(这是 yu 从 launchctl 运行 emacs 的时候。
我倾向于在GUI模式下运行emacsclient,而不是在终端中运行。当我运行 emacsclient 时,我把它放在后台,这样它就不会阻塞我的终端并使用 -c 标志。(我实际上有一个 shell 脚本,它使这变得容易 - 请参阅 http://emacsformacosx.com/tips 以获取一些想法。我让 emacsclient 窗口保持打开状态,如果我需要做一些 emacs 编辑等,只需切换到它。