如果我正在运行带有一堆缓冲区的emacs --daemon,有没有办法启动emacsclient所以它只是打开我上次工作时的顶级缓冲区?如果我使用emacsclient -t或emacsclient -c它会创建一个新框架并将其置于顶部,我该如何避免这种行为并恢复我正在做的事情?
答案 0 :(得分:1)
您可以尝试以下方式:
emacsclient -e '(raise-frame)'
或
emacsclient -e '(other-frame 0)'
如果这些解决方案都不起作用(取决于您的窗口管理器),您还可以尝试以下解决方案(来自此SO answer):
emacsclient -e "(select-frame-set-input-focus (selected-frame))"
答案 1 :(得分:0)
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))"