如果Emacs是用"--daemon"启动的,则(frame-list)
在仅打开1个时返回2帧
(frame-list)
(#<frame *Minibuf-1* - Emacs 24.3.50.1 0x11c7270> #<frame F1 0xb94ac8>)
如果您在没有守护进程标志的情况下启动Emacs,则不会有"F1"缓冲区。
如何可靠地确定用户打开了哪些框架?有什么具体的属性吗?
它是一个"物理上不可见"的帧(即使frame-visible-p
另有说明),与启动守护进程的初始终端关联。我怀疑它存在的唯一原因是emacs还没有准备好在没有帧的情况下运行,而且很难修复它
为了过滤掉它,我会使用这个测试:
(string-equal "initial_terminal" (terminal-name <frame>))
;;; => t for the "pseudo-"frame created by emacs -daemon
可能还有更好的测试,但据我所知,这个测试足够可靠:对于tty帧,terminal-name
返回类似"/dev/tty"
的东西,对于X11帧,X11显示名称返回类似":0"
的东西(我记不起它在其他平台上返回了什么,比如在Windows控制台窗口中,但我相信它不可能是偶然的"initial_terminal"
)。