我正在使用org-mode。在文本周围使用“+”,它在GUI中正确显示为删除线文本(例如: + striked-through + )。
但是这在emacs控制台模式下不起作用,文本没有显示出来:与默认面没有区别。
我的术语知道如何显示透视效果,因为它通过此测试正确显示了标记:
echo -e "\e[9mtest\e[0m"
所以这似乎是emacs没有使用SGR代码将文本呈现为删除。
你知道告诉emacs在控制台中使用删除的方法吗?或者我最终还没有确定某些内容?
答案 0 :(得分:3)
(Linux)虚拟控制台未实现删除。一些终端仿真器可以做到这一点,但通常这些仿真器不会被称为" console"。最多,emacs可以显示一些其他类型的突出显示,例如颜色。
透视逃逸序列的参考是ECMA-48。但是,请记住,它是由委员会创建的,并不代表现有的实践。相反,它是现有和提议的实现的框架。其中描述的许多功能(30年后)尚未实施。您不会发现删除作为标准的terminfo(或termcap)功能,因为很少(如果有的话)终端实现了该功能。阅读terminfo(5)
:没有为此目的定义任何功能。
如果您阅读了emacs的源代码,很容易看出它不支持删除。的emacs'终端term.c
的驱动程序使用termcap并在bitmask中列出支持的视频属性:
enum no_color_bit
{
NC_STANDOUT = 1 << 0,
NC_UNDERLINE = 1 << 1,
NC_REVERSE = 1 << 2,
NC_ITALIC = 1 << 3,
NC_DIM = 1 << 4,
NC_BOLD = 1 << 5,
NC_INVIS = 1 << 6,
NC_PROTECT = 1 << 7
};
它还使用tgetstr
(see code)检索许多字符串功能。那里没有罢工。虽然emacs hardcodes some of the color转义(以解决termcap的限制),但驱动程序不包含任何可以执行删除操作的内容。
进一步阅读: