如何告诉我的bash提示符,指出是否存在后台的emacsclient会话

时间:2016-01-21 17:46:09

标签: bash emacs daemon background-process emacsclient

我正在使用OS X,主要是终端和emacsclient。

当我做shell的时候,我使用Control-Z

来管理我的emacsclient

某些事情我忘了我是否已经这样做了,并最终产生了额外的emacsclient会话,我不想这样做。

如果bash提示可以告诉我jobs输出中是否有emacsclient作业,那会很酷

2 个答案:

答案 0 :(得分:1)

bash的最小示例,使用sleep代替emacsclient

PS1="\`if jobs | grep -q sleep; then echo 'sleep jobs' ; else echo 'no sleep jobs' ; fi\`\\\$ "

您可能希望过滤已停止的作业(jobs -s)。

你可以通过回显转义序列而不仅仅是字符串来为它着色。

答案 1 :(得分:0)

虽然我认为@jpkota提供了一个可行的答案,但我想知道你是否担心过多。如果emacsclient工作正常,那么同时运行多个emacsclient会话就没有问题 - 事实上,它有点像这样做。 emacsclient连接很轻,如果有可能你可能需要再次使用相同的文件/缓冲区,你可以保留它们并在需要时打开新的连接并删除你不喜欢的连接。认为你需要。 emacscleint的全部好处是打开新的窗口/缓冲区非常快,如果你使用GUI verison,它们只会弹出自己的窗口。

在elpa中还有一个名为osx-pseudo-daemon的软件包,它解决了当你关闭所有emacsclient窗口时可能出现的问题,这会阻止主要的emacs响应(这是当你从launchctl运行emacs时) 。

我倾向于在GUI模式下而不是在终端内运行emacsclient。当我运行emacsclient时,我将它放在后台,这样它就不会阻塞我的终端并使用-c标志。(我实际上有一个shell脚本,这使得这很容易 - 请参阅http://emacsformacosx.com/tips了解一些想法。我打开emacsclient窗口,如果我需要进行一些emacs编辑等,只需切换到它。

相关问题