当前位置:  开发笔记 > 编程语言 > 正文

如何从shell提示符中检测到emacs-server正在运行?

如何解决《如何从shell提示符中检测到emacs-server正在运行?》经验,为你挑选了3个好方法。

我想让我的.bashrc检测运行emacsclient是否可以代替运行emacs.基本上:

if emacs_server_is_running; then
    EDITOR=emacsclient
    VISUAL=emacsclient
else
    EDITOR=emacs
    VISUAL=emacs
fi

我将在emacs_server_is_running实现这一目标的功能中加入什么?



1> Kirk Strause..:

你这太难了.从emacsclient(1)手册页:

-a, - alternate-editor = EDITOR如果Emacs服务器未运行,则改为运行指定的编辑器.这也可以通过`ALTERNATE_EDITOR'环境变量来指定.如果EDITOR的值是空字符串,则Emacs以守护进程模式启动,emacsclient将尝试连接到它.



2> madumlao..:

从shell脚本中,您可以执行以下操作:

emacsclient -ca false -e '(delete-frame)'

这将打开一个新的emacs窗口,然后快速关闭它,成功时返回true.如果不存在emacs服务器,则备用编辑器为/ bin/false,返回false.



3> Markus1189..:

我读了答案,但这些都没有适合我的用例,我不想在没有运行的情况下启动服务器,也想避免永远阻塞.

查看server-force-stopemacs 中的函数,它只是删除服务器文件中的任何一个server-auth-dirserver-socket-dir在我的情况下是/tmp/emacs1000/server~/.emacs.d/server.

知道这一点,要测试服务器是否正在运行,我们可以简单地做:

test -e "/tmp/emacs1000/server" || test -e "~/.emacs.d/server"

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有