Theming

主题中的样式由 JLine 中的 AttributedString 的用法提供。遗憾的是,JLine 中的样式几乎没有文档说明,不过我们尝试在这里研究一下其部分功能。

JLine 中,样式规范是一个具有特殊格式的字符串。如果用逗号分隔,规范可以给出多次。规范将为前景色、背景色或其模式定义颜色。如果由于某种原因前者无效,特殊格式 <spec>:=<spec> 允许在后一个规范中定义默认值。

如果规范包含冒号,则其前部分表示前景色或背景色,可能的值包括 foregroundfgfbackgroundbgbforeground-rgbfg-rgbf-rgbbackground-rgbbg-rgbb-rgb。如果没有 rgb,颜色值则从允许的颜色 blackredgreenyellowbluemagentacyanwhite 中进行命名。颜色有简写格式 krgybmcw。如果颜色前缀为 !bright-,则自动应用亮模式。使用 ~ 作为前缀将从 JLine 的内部 bsd 颜色表中解析。

如果预计 rgb 格式且前缀为 x#,则使用正常的十六进制格式。

fg-red
fg-r
fg-rgb:red
fg-rgb:xff3333
fg-rgb:#ff3333

如果规范包含特殊名称 defaultboldfaintitalicunderlineblinkinverseinverse-neginversenegconcealcrossed-outcrossedouthidden,则样式会相应地更改为现有颜色。

bold
bold,fg:red

如果规范是数字或以分号分隔的数字,则格式是 ansiascii 代码中的普通部分。

31
31;1

JLine 特殊映射格式无法解析以点开头的规范,因为我们尚未将其映射到 Spring Shell 样式名称中。