我正在尝试设置一个主题 - 一个仅用于终端,一个仅用于gui。 我读过这个帖子:Run certain Emacs init commands only in GUI mode
并尝试创建一个适合我需要的功能。
(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)
它不起作用。 我正在尝试他加载monokai只有gui,否则加载solarized-dark。 它确实适用于GUI界面,但会导致终端看起来崩溃。
建议?
答案 0 :(得分:11)
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
一样工作的宏,但只在没有GUI的情况下运行Emacs时评估主体
(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中运行,则整个块将被完全忽略,但如果在终端中则将运行。
所有这些代码都来自我的配置中的文件,如果有兴趣,可以在这里查看:
https://github.com/jordonbiondo/Emacs/blob/master/Jorbi/jorbi-util.el
答案 1 :(得分:0)
看起来像主题本身的问题 - 仅此而已。嗯。
答案 2 :(得分:0)
在选择颜色主题时,我也遇到了在终端模式下运行时emacs崩溃的问题。 我想说这不是色彩主题的问题,而是emacs本身。 在撰写本文时,从HEAD更新到最新版本确实对我有用。
答案 3 :(得分:0)
如https://www.emacswiki.org/emacs/CustomizingFaces
所述"如果您想为不同的显示器设置不同的配色方案,您也可以自定义它。在自定义缓冲区中,单击[状态]按钮,然后选择“显示所有显示规格”。现在,您可以为不同的显示器使用不同的规格。"
答案 4 :(得分:0)