在没有新框架的情况下启动emacsclient

时间:2013-08-06 01:14:16

标签: emacs emacsclient

如果我正在运行带有一堆缓冲区的emacs --daemon,有没有办法启动emacsclient所以它只是打开我上次工作时的顶级缓冲区?如果我使用emacsclient -t或emacsclient -c它会创建一个新框架并将其置于顶部,我该如何避免这种行为并恢复我正在做的事情?

4 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

emacsclient -e '(raise-frame)'

emacsclient -e '(other-frame 0)'

如果这些解决方案都不起作用(取决于您的窗口管理器),您还可以尝试以下解决方案(来自此SO answer):

emacsclient -e  "(select-frame-set-input-focus (selected-frame))"

答案 1 :(得分:0)

似乎我找到了答案,虽然它有些不雅。在我的.bash_profile中,我把

alias emacs='emacsclient -a "" -t -e \(kill-buffer\)'

所以,如果一个守护进程不存在,它就会启动,emacs客户端连接它,创建一个新缓冲区并立即杀死它,从而留下任何缓冲区之前(我使用emacs桌面保存)现在显示在最上面。

答案 2 :(得分:0)

您似乎对emacs概念有点困惑。 框架在emacs中,其他人称之为窗口,而emacs 窗口缓冲区(您的文本)显示。

选项-c-t应该创建一个新的框架(图形或tty),如果你不想要它,那就不要把它们留下来。

如果仍有一个打开的(图形)框架,则最后一个活动框架将被聚焦(可能取决于您的窗口管理器)并显示一个缓冲区,访问最后一个活动窗口中的给定文件。如果没有图形框架,则打开当前tty上的新框架。

如果没有文件或目录 emacsclient-t,则无法调用{p> -c。因此,请使用窗口管理器显示所需的帧。

但是,如果您真正想要的是,使用列表顶部(list-buffers)的缓冲区打开一个新的框架,那么您运气不好,因为新框架始终显示临时缓冲区(如果未配置)。您可以使用C-x b手动更改,也可以使用变量initial-buffer-choice修补。

答案 3 :(得分:0)

没有

.remove_field{
    position: absolute;
    right: 0;
}

emacsclient -e '(raise-frame)'

emacsclient -e '(other-frame 0)'

为我工作。他们确实导致emacs最初显示除* scratch *之外的缓冲区,但它不是我正在处理的最后一个缓冲区。我必须编写自己的机制才能使其工作 - 它假设您使用C-x C-c断开emacsclient与服务器的连接:

emacsclient -e  "(select-frame-set-input-focus (selected-frame))"