我正在使用 OS X,主要是终端和 emacsclient。
当我做 shell 的事情时,我用 Control-Z 作为后台我的 emacsclient
有些时候我忘记了我是否已经这样做了,并最终产生了额外的 emacsclient 会话,我不想这样做。
如果 bash 提示可以告诉我 emacsclient 是否在jobs
输出中工作,那就太酷了
我正在使用 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 响应(这是当你从 launchctl.run 运行 emacs 时)。
我倾向于做的是在 GUI 模式下而不是在终端内运行 emacsclient。当我运行 emacsclient 时,我将它放在后台,这样它就不会阻塞我的终端并使用 -c 标志。(我实际上有一个 shell 脚本可以让这很容易 - 请参阅http://emacsformacosx.com/tips了解一些想法。我将 emacsclient 窗口保持打开状态,如果需要进行一些 emacs 编辑等,只需切换到它即可。