emacs 控制台模式 Org-mode 删除线未按预期显示

标签 emacs terminal console org-mode strikethrough

我正在使用组织模式。在文本周围使用“+”,它在 GUI 中正确显示为删除线文本(例如:+删除线+)。

但这在 emacs 控制台模式下不起作用,文本不显示删除线:与默认面没有区别。

我的术语知道如何显示删除线,因为它通过此测试正确显示删除线文本:

echo -e "\e[9mtest\e[0m"

所以这似乎是 emacs 没有使用 SGR 代码将文本呈现为删除线。

你知道有什么方法可以告诉 emacs 在控制台中使用删除线吗?或者是我没有设置什么?

最佳答案

(Linux) 虚拟控制台不实现删除线。一些终端仿真器会这样做,但通常不将它们称为“控制台”。最多,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 的限制),驱动程序不包含任何可以删除的内容。

进一步阅读:
  • console_codes - Linux console escape and control sequences
  • Why doesn't xterm support italics? ( since 2014 , xterm)
  • [vte/vte-next] emulation: Support italic text (自 2012 年起,vte)
  • 关于emacs 控制台模式 Org-mode 删除线未按预期显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185102/

    相关文章:

    version-control - Emacs VCS 界面只提交一个文件

    emacs:如何在不切换窗口和不升高帧的情况下显示缓冲区?

    heroku - 如何查看没有时间戳/额外信息的 Heroku 日志?

    php - symfony doctrine 数据转储和重新加载不起作用

    php - Symfony2 生成的实体错误和控制台中的时区错误

    emacs - 运行已编译的 Lisp 程序

    emacs - Emacs 中 LaTeX 的代码折叠

    linux - 为什么权限表达式653的意思是rw-r-x-wx

    linux - UTF-8 文件名在 linux 终端中返回 Not Found

    c# - 如何在执行 MSTest 测试期间写入 Console.Out