gpt4 book ai didi

emacs - 仅针对GUI/终端emacs的设置

转载 作者:行者123 更新时间:2023-12-04 17:10:38 24 4
gpt4 key购买 nike

我正在尝试设置一个主题-一个仅用于终端,一个仅用于gui。
我已阅读此线程:Run certain Emacs init commands only in GUI mode

这导致我在这里:https://superuser.com/questions/165335/how-can-i-show-the-emacs-menu-in-gui-emacs-frames-but-not-in-tty-frames-when-usi

并尝试创建一个适合我需要的功能。

(defun set-frame-theme (frame)
(let ((want-theme (memq (framep frame) '(x w32 ns))))
(set-frame-parameter frame '(load-theme '(if want-theme monokai solarized-dark) t))))
(add-hook 'after-make-frame-functions 'set-frame-theme)

它不起作用。
我正在尝试让他仅在gui时加载monokai,否则将加载solarized-dark。
它确实适用于GUI界面,但似乎导致终端崩溃。

有什么建议吗?

最佳答案

emacs lisp函数,
(显示图形-p)
如果emacs在GUI中运行,则将返回true。

在您的.emacs中,添加以下内容以在GUI和终端主题之间切换

(if (display-graphic-p)
(load-GUI-theme)
(load-Terminal-theme))

为了简化配置,我有一个简单的函数,称为is-in-terminal
(defun is-in-terminal()
(not (display-graphic-p)))

您可以使用它来编写易于阅读的功能
(if (is-in-terminal)
(load-Terminal-theme)
(load-GUI-theme))

对于“仅终端”配置的更完整方法,我有一个宏,其作用类似于 progn,但仅当Emacs在没有GUI的情况下运行时才评估主体。
(defmacro when-term (&rest body)
"Works just like `progn' but will only evaluate expressions in VAR when Emacs is running in a terminal else just nil."
`(when (is-in-terminal) ,@body))

用法示例:
(when-term
(load-my-term-theme)
(set-some-keybindings)
(foo-bar))

如果在GUI中运行,则整个块将被完全忽略,而在Terminal中运行。

所有这些代码都是从我的配置文件中获取的,如果有兴趣,您可以在这里查看:

https://github.com/jordonbiondo/Emacs/blob/master/Jorbi/jorbi-util.el

关于emacs - 仅针对GUI/终端emacs的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com