如何关闭emacsclient gui框架而不杀死服务器

时间:2013-09-28 17:16:09

标签: emacs emacsclient

如何关闭emacsclient框架而不杀死服务器/守护程序

在gui中执行C-x C-cC-x 5 0将退出帧和服务器(以及其他客户端),而这只是从终端完成后退出当前帧。

(Ps:我的emacs版本是24.2,gtk。我已经尝试过没有init-file来查看它是否来自我的配置,但结果是一样的)

5 个答案:

答案 0 :(得分:7)

emacsclient启动时,它会在迷你缓冲区中说“当使用缓冲区时,输入C-x#”。

答案 1 :(得分:6)

我认为这里的关键点是你需要以守护进程模式启动服务器。如果服务器在现有的emacs进程中运行 - 例如,如果你的init文件中有(server-start) - 服务器就会以emacs进程终止。

有几种方法可以在守护进程模式下启动服务器:

  • 使用emacs命令行选项
  • 调用--daemon
  • 使用emacsclient命令行选项调用--alternate-editor="",该选项实际上会为您运行emacs --daemon,然后尝试连接到它

一旦你的服务器处于守护进程模式,你应该能够关闭任何帧,守护进程将继续坐下来等待进一步的连接。

答案 2 :(得分:4)

使用emacsclient / -n标志开始--no-wait

  

不要等待服务器返回

在这种情况下,您无需关闭客户端。

如果你必须关闭emacsclient只是杀死缓冲区,服务器将保持不变。

答案 3 :(得分:2)

因为你从现有的框架中运行了(server-start),所以该框架不是emacsclient框架,关闭最后一个这样的框架显然会得到与C-x C-c相同的处理:它将退出Emacs。

如果您使用emacs --daemon,可能使用ALTERNATE_EDITOR=''技巧,则不会出现此问题;您只需使用emacsclient -n -c打开一个GUI框架,关闭它后,守护程序就会等待您打开一个新的框架,无论是图形还是基于终端。

答案 4 :(得分:0)

我正在使用Debian和i3以及OSX。我通常通过窗口管理器的关闭窗口快捷方式退出emacsclient GUI框架。例如,在OSX中,我使用“Command + w”关闭客户端GUI框架而不杀死服务器,在i3中,我使用“Super + Shift + q”(i3的默认关闭窗口)退出客户端框架