基于 $TERM 环境变量的 emacs 颜色

ALi*_*LiX 9 colors gnu-screen terminal emacs tmux

我想知道是否可以制作 emacs,在 gnu 屏幕或 tmux 会话中运行时,使用与 when 相同的颜色TERM=xterm。在 gnu 屏幕或 tmux 会话中, TERM=screenTERM=xterm.

例如,当 时TERM=xterm-256color, 的前景色font-lock-comment-face为“Firebrick”。但是当TERM=screen-256color,它被设置为'chocolate1'。

要使 tmux 正常工作,必须将TERM 变量设置为 screen 或某些派生对象,因此重置 TERM 对我来说不是一个选项。

Chr*_*sen 4

的定义font-lock-comment-face包括针对不同颜色支持情况的许多变体。

\n\n
    \n
  • chocolate1当至少有 88 种可用颜色且 \xe2\x80\x9cbackground\xe2\x80\x9d 为 \xe2\x80\x9cdark\xe2\x80\x9d 时,使用该变体。
  • \n
  • Firebrick当至少有 88 种可用颜色且 \xe2\x80\x9cbackground\xe2\x80\x9d 为 \xe2\x80\x9clight\xe2\x80\x9d 时,使用该变体。
  • \n
\n\n

差异是由一些代码引起的,这些代码赋予以xtermrxvtdtterm和开头的 TERM 值特殊含义eterm:它认为它们具有 \xe2\x80\x9clight\xe2\x80\x9d 背景。

\n\n

您应该能够将frame-background-mode*自定义为其light值,以始终使用 \xe2\x80\x9clight\xe2\x80\x9d 颜色变体。

\n\n

如果您的 Emacs 还不够新,无法拥有自己的term/screen.el,那么您还需要为自己调整一个,以进行适当的颜色调整调用。您可以使用Emacs trunk中的一个,或者我有一个要点,其中包括 a (带有一些额外的位来识别tmux \xe2\x80\x99s选项.emacs.d/lisp/term/screen.el提供的修饰符+箭头/Home/End 序列),以及xterm-keys.emacs所需的修改让它自动加载。

\n\n

当然,仍然可能有其他代码直接检查 TERM 值并对screen- 和 -xterm类似值\xe2\x80\xa6执行不同的操作

\n\n

* Mx自定义变量框架背景模式

\n