如何在elisp中判断Emacs是否正在使用X?

14
我在我的.emacs文件中有一些项目,如果我运行了emacs -nw命令,就不想让它们运行。如何在elisp中判断这种情况?
3个回答

15

您上面的回答是正确的,但是如果您想区分其他窗口系统,并且仅在实际使用X时才想运行代码,那么您必须继续进行操作。

(if (eq window-system 'X) (foo))

虽然我不需要那种特定的答案,但那比我的答案更好。谢谢! - JasonFruit
2
当我试图弄清如何在窗口模式下禁用主题时,最终采用了JasonFruit的初始答案,但他们实际上是在讲同一件事。(if (eq window-system 'X) (foo))(if window-system (foo))(when window-system (foo))都没有什么区别。对于那些对细节感兴趣的人,让我告诉你,“C-h a”是你的好朋友。使用它,我搜索了“variable”,找到了'describe-variable,并使用它加上tab-completion找到了window-system变量。然后我只需将window-system键入scratch缓冲区,然后进行测试。 - Jeremy Grozavescu
3
如果你只关心窗口系统是否为X,那么它们的效果将是相同的,但window-system的值可以是除'X'之外的其他值。 - Nathaniel Flath

14

我想我找到了自己的答案:

(when window-system
    (foo))

只有在X中运行时才会执行foo。


请不要给我自己的答案投票,我上面接受的那个答案基本相同,但更完整! - JasonFruit
@JasonFruit,这可能是人们寻找更一般的窗口系统检测解决方案。然而,根据文档:“将此变量[window-system]用作布尔值已被弃用。相反,请使用display-graphic-p或任何其他报告帧特定UI相关功能的display-*-p谓词。” - Nick Frezynski

3
请注意,这个问题有点不太合理:Emacs可以同时运行tty框架和GUI框架。
"window-system"变量是“终端本地”的,这意味着它的值取决于当前选择的框架是tty框架还是GUI框架。

我甚至没有意识到那是可以做的。真是有趣! - JasonFruit

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