Emacs: 在 .emacs 文件中检查是否禁用窗口系统

20

.emacs文件中,有没有可能检查emacs是否在--no-window-system-nw)模式下运行?我想只有当Emacs处于窗口模式(或者不是)时才启用/包含某些扩展。

顺祝商祺, mefiX


类似于emacs stackexchange:有没有办法检测emacs是否在终端中运行? - Joshua Goldberg
2个回答

23

如果所选帧位于仅支持文本的终端上,则变量window-systemnil


3
我使用(when window-system ... stuff ...)来评估我只想在窗口模式下运行的所有内容。 - mefiX
14
请注意,window-system 的值是针对当前的窗口而言的。如果你以 GUI 模式启动 Emacs,则 window-system 将为 t,但如果你从终端使用 emacsclient -t 连接到同一个 Emacs 实例,则该终端窗口中的 window-system 将为 nil。因此,在 .emacs 文件中基于 window-system 做决定并不是一个好的实践方法,相反,应将相应的条件代码嵌入到钩子或其他稍后将被调用的函数中。 - sanityinc
我以前从未使用过emacsclient。老实说,我甚至不知道它是什么或者它的作用是什么。所以对于我来说,评估窗口系统运行良好...至少现在是这样。不过,非常感谢您的提示! - mefiX

9

如果您想在Emacs运行于窗口环境中时执行代码,请将其放在when块内,并使用display-graphic-p谓词,例如:

(when (display-graphic-p)
  (do something)
  (do-another-thing))

或者反转

2
根据手册,此答案代表最佳实践,请参见 https://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Systems.html 上的最后一句话。 - Rob Kielty
1
不是针对像我这样的新手的Lisp代码:你不必写'do'。 - user6547518

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接