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

Ser*_*gey 5 emacs

如果Emacs以"--damon"启动,(frame-list)则只打开1时返回2帧

(frame-list)
(#<frame  *Minibuf-1* - Emacs 24.3.50.1 0x11c7270> #<frame F1 0xb94ac8>)
Run Code Online (Sandbox Code Playgroud)

如果你启动没有守护进程标志的Emacs - 那里就没有"F1"缓冲区.

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

Ant*_*nko 6

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

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

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

可能会有更好的测试,但据我所知,这个测试足够可靠:terminal-name返回类似于"/dev/tty"tty帧的内容和X11显示名称,例如":0"X11帧(我不记得它在其他平台上返回的内容,比如在Windows中控制台窗口,但我相信它不可能是 "initial_terminal"偶然的).