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

如何在elisp中判断Emacs是否使用X?,emacs,elisp,Emacs,Elisp,如果运行emacs-nw,我的.emacs中有一些项目不想运行。我如何在elisp中判断情况是否如此 (编辑后将-nox改为-nw--我的大脑在哪里?我想我找到了自己的答案: (when window-system (foo)) 当我在X中运行时,将只运行foo。您上面的答案是正确的,尽管如果您想区分其他窗口系统,并且只想在实际使用X时运行代码,您必须去 (if (eq window-system 'X) (foo)) 请注意,这个问题有点欠考虑:Emacs可以同时使用tty框架和G

如果运行
emacs-nw
,我的.emacs中有一些项目不想运行。我如何在elisp中判断情况是否如此


(编辑后将-nox改为-nw--我的大脑在哪里?

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

(when window-system
    (foo))

当我在X中运行时,将只运行foo。

您上面的答案是正确的,尽管如果您想区分其他窗口系统,并且只想在实际使用X时运行代码,您必须去

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

请注意,这个问题有点欠考虑:Emacs可以同时使用tty框架和GUI框架运行


窗口系统
变量是“terminal local”,这意味着它的值将取决于当前选择的帧是tty帧还是GUI帧。

虽然我不需要那种特殊性,但这是一个比我更好的答案。谢谢当我试图找出如何在仅窗口模式下禁用主题时,我最终选择了JasonFruit的初始答案,但他们的想法是一样的<代码>(如果(eq窗口系统'X)(foo))或
(如果窗口系统(foo))
(当窗口系统(foo))
这并没有真正的区别。对于那些对细节感兴趣的人,让我告诉你,“C-HA”是你的朋友。使用它,我搜索了“变量”,找到了“描述变量”,并使用它加上制表符完成,我找到了窗口系统变量。然后我只是在scratch缓冲区中输入了
windowsystem
,然后对它进行了测试。如果你关心的只是windowsystem是否为X,那么它们的工作原理是一样的,但是windowsystem的值可以是除“X”之外的值。请停止投票表决我自己对我的问题的答案——我上面接受的答案基本相同,但更完整@JasonFruit可能是人们在寻找更通用的窗口系统检测解决方案。然而,根据文档:“不推荐使用此变量[window system]作为布尔值。相反,使用
display-graphic-p
或任何其他
display-*-p
谓词来报告框架的特定UI相关功能。”我甚至没有意识到这是可以做到的。迷人的!