为什么Emacs(作为守护进程)提供的帧比打开的多1个?

时间:2014-01-16 01:50:08

标签: emacs

如果Emacs以“--damon”启动,那么(frame-list)仅在打开1时返回2帧

(frame-list)
(#<frame  *Minibuf-1* - Emacs 24.3.50.1 0x11c7270> #<frame F1 0xb94ac8>)

如果启动没有守护程序标志的Emacs - 那里不会有“F1”缓冲区。

如何可靠地确定用户打开了哪些帧?有没有具体的属性?

1 个答案:

答案 0 :(得分:6)

这是一个“物理上不可见”的框架(尽管frame-visible-p另有说明)与启动守护程序的初始终端相关联。我怀疑它存在的唯一原因是emacs还没有准备好在没有帧的情况下运行,并且很难修复它。

为了过滤掉我会使用这个测试:

(string-equal "initial_terminal" (terminal-name <frame>)) 
;;; => t for the "pseudo-"frame created by emacs -daemon

可能有更好的测试,但据我所知,这个测试足够可靠:terminal-name为tty帧返回类似"/dev/tty"的内容,为X11返回类似":0"的X11显示名称框架(我无法想起它在其他平台上返回的内容,例如在Windows控制台窗口中,但我认为它不会"initial_terminal"意外)。