相关的 patch/fork 早就有了,我试过几次都没成功(可能跟当时使用的终端和终端配置有关),于是放弃了治疗。
刚才看到这个回复:https://github.com/bbatsov/solarized-emacs/issues/18#issuecomment-294374266
here’s how i went around the problem.
code supporting 24bit colors is already in emacs’ development version: e463e57
on osx this can easily be installed via the emacs-plus brew formula, using the --HEAD option.
this version of emacs requires a custom terminfo description xterm-24bit, which needs to be compiled manually:
$ cat terminfo-24bit.src
# Use semicolon separators.
xterm-24bits|xterm with 24-bit direct color mode,
use=xterm-256color,
Tc,
setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
$ tic -x -o ~/.terminfo terminfo-24bit.src
this will also work for tmux, provided that true color is also setup tmux side.
source: Re: Black and white emacs -nw (WAS: Re: [PATCH v3 0/4] Support 24-bit te
more on how to setup tmux true color here .
TERM=xterm-24bits emacs -nw and the theme works flawlessly.
跟着试了一下,果然在终端下看到了平滑过度的灰色:
macOS 10.11.6
iTerm2 v3.0.15 + Solarized-dark
1 个赞
字都认识,但是读的懵懵懂懂
http://lists.gnu.org/archive/html/emacs-devel/2017-02/msg00635.html
这个链接说是要重新编译tmux,然后tmux下运行emacs,但是实在看不懂这段代码怎么用
$ cat terminfo-24bit.src
# Use semicolon separators.
xterm-24bits|xterm with 24-bit direct color mode,
use=xterm-256color,
Tc,
setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
$ tic -x -o ~/.terminfo terminfo-24bit.src
tomato:
实在看不懂这段代码怎么用
就是创建一个名为 terminfo-24bit.src
,内容为中间那一段,然后用最后一行的命令去执行。这是常用的表达方式,要习惯。代码比文字描述更清晰、准确、可靠 。
你不着急编译/配置 tmux,先在 iTerm2 下实验成功再说。
emacs-plus 在没打补丁的 tmux ( stable v2.3) 下是这样的,明显看到灰色过渡不连贯 。我平时没在 tmux 里运行 emacs,暂时不管它。
我用的linux,solarized这个主题在终端显示不正常,所以一直但是放弃的,
Tmux 2.4 发布了,支持 True Color,不过它的 vi 模式有点问题,影响不大。
另外要说明一下,Emacs 支持终端真彩的 patch 早就进 master 分支了,跟前面提到的 Emacs Plus 没关系。
终端 emacs 的烦恼事又少了一件,可喜可贺,现在就剩下快捷键了。
看了一下,需要安装emacs-snapshot,我来试试看是否支持solarized
终端与emacs带的gui颜色显示已经没区别了,然而突然发现不怎么喜欢solarized
根据这里(https://www.gnu.org/software/emacs/manual/html_node/efaq/Colors-on-a-TTY.html ), emacs 27.1支持真彩色, 但是实际没有生效, TERM变量值是xterm-direct
, list-colors-display
仅显示500多种颜色
设置了环境变量export COLORTERM=truecolor
, 情况依旧.
终端是mintty(运行在windows上, mintty配置中选择终端类型xterm-direct), 通过ssh连接到linux, TERM变量的值也确实是xterm-direct
文档中第一个命令有输出:
$ infocmp|grep "seta[bf]"
setab=\E[%?%p1%{8}%<%t4%p1%d%e48:2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
setaf=\E[%?%p1%{8}%<%t3%p1%d%e38:2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
第二个命令没有输出:
$ toe | grep '\-direct'
但是看了下/usr/share/terminfo/x
里面有xterm-direct
是哪里的问题呢?
看了一下确实 list-colors-display 只有 500 多种颜色,但是终端的 theme 显示和 GUI theme 显示已经完全一样没任何区别了,不觉得这有什么问题。而且你哪怕用 GUI 来 list-colors-display,也就是 500 多种颜色,是一样的。
我加载了solarized主题, 和GUI不一样, 差别较大
另外, emacs -Q
刚起来, 颜色也和GUI不一样.
emacs有没有更明确的方法判断当前是不是真彩色模式? 或者更准确的, 当前处于几色模式?
500多色就是真彩了,你只要看灰色过渡是不是平滑,或者对照GUI看看有什么差别。
不一样可能不一定是真彩显示的问题;我知道终端显示颜色有一个非常 hack 的情况,但不确定是不是你的 case。就是在终端里 #000000 和 #FFFFFF显示的并不是纯白色和纯黑色 ,而是你的用的 terminal (alacrity/wezterm啥的) 的主题定义的纯白色和纯黑色。但是其他的 hex code 的颜色显示都是准的,就是纯黑色和纯白色比较奇怪。
具体情况可以看这个邮件列表的讨论:The background for modus-vivendi in terminal is lighter than in GUI, and "hl-line-mode" is different? — sourcehut lists
灰色看着有过渡,
不过加载同样颜色主题, 差别较大, 目测主要是背景色. 左边窗口是GUI, 右边是终端
solarized主题背景色倒不是纯白或纯黑, 楼上有截图, 粗看是背景色不一样, 其他颜色差不多
难道背景色做了特殊处理? 或者是这个颜色主题有问题?
又测试了下emacs内置主题, 好像正常.
估计是刚才那个主题的原因了
有一个方法可以粗略判断: 就是在终端的配置页面, 切换终端自己的颜色主题, 如果切换后emacs的颜色有变, 说明用的是16色或256色, 不是真彩色. 如果颜色没变, 说明是真彩色, 不受终端颜色主题影响.
emacs有没有更明确的方法判断当前是不是真彩色模式?
有一个方法可以判断: 就是在终端的配置页面, 切换终端自己的颜色主题, 如果切换后emacs的颜色有变, 说明用的是16色或256色, 不是真彩色. 如果颜色没变, 说明是真彩色, 不受终端颜色主题影响.
这个不太对。即使你的终端是真彩的,只要你的 emacs 的主题的背景是纯黑或者纯白,那么背景色还是会跟着你的终端的主题走,但是只要你把 emacs 的背景色换成一个很接近纯黑/纯白,但是又不是纯色的背景色,那么就能够正常的显示了。
具体地说可以尝试一下
(set-background-color "#0F0000")
(set-background-color "#000000")
看看会有什么样的显著变化。
只是粗略判断, 一方面我用的主题没有纯黑和纯白, 眼睛不舒服. 另一方面, 还有背景色之外的其他(文本)颜色可以对比
可能受到了你终端本身的配色干扰。你试试终端和Emacs设置同一套配色。