gpt4 book ai didi

emacs - 如何从 shell 获取正在运行的 emacs 服务器的列表?

转载 作者:行者123 更新时间:2023-12-01 09:48:19 34 4
gpt4 key购买 nike

我想编写一个脚本,将 emacs 服务器“链接”到某个目录。
为此,我需要检查所有现有服务器,以确定具有特定名称的服务器是否正在运行。然后,在使用 emacsclient 从该目录打开文件之前,脚本可以决定是否启动新服务器。

我一直在四处寻找如何列出运行服务器的现有 emacs,但没有成功。

有没有类似 emacs --list-servers我可以用吗?

干杯。

最佳答案

Emacs 将所有正在运行的服务器的套接字文件存储在 ${TMPDIR}/emacs$(id -u) 中。 , 其中 $TMPDIR默认为 /tmp如果未设置。查找所有正在运行的服务器就像列出该目录中的所有套接字一样简单。

在 Bash 中,这看起来大致像

local serverdir="${TMPDIR:-/tmp}/emacs${UID}"
local -a servers
for file in ${serverdir}/*; do
if [[ -S ${file} ]]; then
servers+=("${file##*/}")
fi
done

echo "${servers[@]}"
servers数组现在包含所有正在运行的 Emacs 服务器的名称,用于 emacslcient -s .

编辑:由于您显然在使用 Python,因此在 Python 中也是如此:

import os
from stat import S_ISSOCK

serverdir = os.path.join(os.environ.get('TMPDIR', '/tmp'),
'emacs{0}'.format(os.geteuid()))
servers = [s for s in os.listdir(serverdir)
if S_ISSOCK(os.stat(os.path.join(serverdir, s)).st_mode)]

关于emacs - 如何从 shell 获取正在运行的 emacs 服务器的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22521440/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com