假设 Emacs 服务器正在运行,我想要 emacsclient <file>
要么在没有现有框架时创建一个新框架(如 -c
),要么在有框架时重用现有框架。换句话说,我想要 -c
仅当没有现有框架时。那可能吗?
最佳答案
我用一组 shell 脚本解决了我的问题。
my_emacs
#!/bin/sh
emacs24-x $@ 1> /dev/null 2> /dev/null &
您可能需要将 emacs24-x 更改为指向您的 X11 emacs 的内容。
my_emacsclient
#!/bin/sh
emacsclient $@ 1> /dev/null 2> /dev/null || my_emacs
通过 ~/bin 等将这两个文件添加到您的 PATH 中。
在我的 .emacs 中,我还添加了以下几行
(load "server")
(unless (server-running-p) (server-start))
还要更改一些环境变量并可选择添加别名
export ALTERNATE_EDITOR="my_emacs"
export EDITOR="my_emacsclient -n"
export SUDO_EDITOR="my_emacsclient"
...
alias e="$EDITOR"
当您运行时
e
在您的 shell 中,它应该创建或重用现有的 GUI 框架。另外,正在运行 e <filename>
在框架中打开该文件;您还可以传递其他标志,例如 -n
至 e
.对于其他应用程序中的相同行为(比如您的文件管理器),您还应该将 Emacs .desktop 文件(对我来说是
/usr/share/applications/emacs24.desktop
)更改为运行 my_emacs
.更改
emacs
也可能是个好主意至 my_emacsclient
通过基于 Debian (?) 发行版中的替代系统。
关于emacs - 创建或重用现有的 Emacs GUI 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968740/