我正在尝试使用emacsclient
的替代编辑器运行emacs --eval "(setq server-name '\"server1\")"
。我没有运气。
这就是我的尝试:
lispExp="(setq server-name '\"server1\")"
emacsclient -c --alternate-editor="emacs --eval $lispExp"
那么如何为emacsclient
定义带参数的备用编辑器。
背景:
我正在尝试创建一个bash命令(edit
),当我使用它来编辑文件时,它将连接到本地emacs服务器,或创建一个新的。为每个虚拟桌面使用不同的服务器。如果我能够完成上述工作,那么我可以用server1
替换相应的服务器名称。
我的原始别名(对于一个服务器)在此处定义:
alias edit='emacsclient --alternate-editor="" --no-wait $*'
答案 0 :(得分:2)
我做了一个工作:
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
}