我正在尝试使用emacs --eval "(setq server-name '"server1")"
的备用编辑器运行emacsclient
。我没有运气。
这是我尝试的:
lispExp="(setq server-name '"server1")"
emacsclient -c --alternate-editor="emacs --eval $lispExp"
那么,如何为emacsclient
定义带有参数的替代编辑器。
背景:我正在尝试制作一个bash命令(edit
),即当我使用它来编辑文件时,它将连接到本地emacs服务器,或创建新文件。每个虚拟桌面都有不同的服务器。如果我可以让上述工作工作,那么我可以用server1
代替适当的服务器名称。
此处定义了我的原始别名(对于一台服务器):
alias edit='emacsclient --alternate-editor="" --no-wait $*'
我做了一个工作:
emacsclient -s "${server}" $*
if test "z$PIPESTATUS" != "z0"
then
lispExp="(setq server-name '"${server}")"
emacs --daemon --eval "$lispExp"
emacsclient -s "${server}" $*
fi
我问题的完整代码 - 为KDE(可能是GNOME)中的每个虚拟桌面运行另一个Emacs服务器 - 在这里:
unalias edit #this line only needed if you have an alias, you could just remove the alias.
function edit {
#this method gives a differant emacs server to each X11 virtual desktop
desktop=$(xprop -id $WINDOWID | sed -rn -e 's/_NET_WM_DESKTOP(CARDINAL) = ([^)]+)/1/pg')
if test "z${desktop}" != "z"
then
server="desktop${desktop}"
else
server="server" #use this server if can't find virtual desktop
fi
emacsclient -s "${server}" $*
if test "z$PIPESTATUS" != "z0"
then
lispExp="(setq server-name '"${server}")"
emacs --daemon --eval "$lispExp"
emacsclient -s "${server}" $*
fi
}