用参数定义替代编辑器,以示为emacsclient



我正在尝试使用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
}

最新更新