emacs - 检查当前帧是否不是 X 窗口的函数

标签 emacs elisp

是否可以在 elisp 函数中检查当前 emacs 框架是 X 窗口还是终端?

我有一个最大化窗口的函数,并且它设置为在创建新框架时运行。但是,当我打开仅终端 session 时,每当创建新框架时,我都会收到错误消息。

我希望该函数检查它是否是 X 窗口,否则不执行任何操作。这可能吗?

郑重声明,以下是当前函数:

(defun fullscreen (&optional f)     
  (interactive)                      ;if called interactively, use current frame
  (if f (select-frame f))            ;if called as hook, use new frame
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                    '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                    '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
  )

最佳答案

您可以查看window-system函数。它接受一个帧可选参数(默认为当前帧)。或者,display-graphic-p 是更新的(根据文档),并且允许检查包含多个帧的整个显示。在您的示例中,您可以只写:

(if (display-graphic-p) ...)

关于emacs - 检查当前帧是否不是 X 窗口的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195621/

相关文章:

recursion - 为什么Emacs lisp中没有尾递归优化,而不是像其他方案一样?

emacs - 有没有办法让子任务在 org-mode 中继承截止日期?

emacs - Lisp : creating a macro to cycle through a created list per document

emacs - 图阿雷格模式找不到 ocaml?

Emacs:设置文本属性时如何智能处理缓冲区修改?

scala - 重新定义 emacs 的 ENSIME scala 模式中的键

emacs - 如何通过函数在 imenu 中强制重新扫描?

emacs - js2 模式下的高锁损坏

Emacs -- 如何删除覆盖(列表形式)

emacs - 在elisp中,如何将一个 "var=value\n..."的字符串求值成同名的lisp变量?