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

  • 本文关键字:1个 Emacs 进程 守护 emacs
  • 更新时间 :
  • 英文 :


如果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")。

最新更新