行号
为提供行信息的 Renderable(如 CodeRenderable 和文本编辑器组件)添加行号栏。
基本用法
Renderable API
import {
CodeRenderable,
LineNumberRenderable,
ScrollBoxRenderable,
SyntaxStyle,
RGBA,
createCliRenderer,
} from "@opentui/core"
const renderer = await createCliRenderer()
const syntaxStyle = SyntaxStyle.fromStyles({
default: { fg: RGBA.fromHex("#E6EDF3") },
})
const code = new CodeRenderable(renderer, {
id: "code",
content: "const x = 1\nconst y = 2\n",
filetype: "typescript",
syntaxStyle,
width: "100%",
})
const lineNumbers = new LineNumberRenderable(renderer, {
id: "code-lines",
target: code,
minWidth: 3,
paddingRight: 1,
fg: "#6b7280",
bg: "#161b22",
})
const scrollbox = new ScrollBoxRenderable(renderer, {
id: "scrollbox",
width: 70,
height: 18,
})
scrollbox.add(lineNumbers)
renderer.root.add(scrollbox)
行标记与颜色
为某一行设置统一的背景色,或通过 LineColorConfig 对象分别设置行号栏和内容区域的颜色:
// 简写:同时应用于行号栏和内容区域
lineNumbers.setLineColor(3, "#2b6cb0")
// 分别配置:行号栏和内容区域使用不同的背景色
lineNumbers.setLineColor(3, {
gutter: "#2b6cb0",
content: "#1f2937",
})
lineNumbers.setLineSign(3, { before: ">", beforeColor: "#2b6cb0" })
// 清除
lineNumbers.clearLineColor(3)
lineNumbers.clearLineSign(3)
行号栏主题定制
行号栏的文本颜色和背景颜色支持在构建后进行赋值:
lineNumbers.fg = "#6b7280"
lineNumbers.bg = "#161b22"
赋值 undefined 可恢复为默认值(#888888 前景色,透明背景)。
Construct API
暂未提供。目前请使用
LineNumberRenderable。
属性
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
target | Renderable & LineInfoProvider | - | 要添加行号的目标 Renderable |
fg | string 或 RGBA | #888888 | 行号栏文本颜色 |
bg | string 或 RGBA | transparent | 行号栏背景颜色 |
minWidth | number | 3 | 行号栏最小宽度 |
paddingRight | number | 1 | 行号栏右侧内边距 |
lineColors | Map<number, string | RGBA | LineColorConfig> | - | 每行的背景颜色 |
lineSigns | Map<number, LineSign> | - | 每行的标记(前缀/后缀) |
lineNumberOffset | number | 0 | 行号偏移量 |
hideLineNumbers | Set<number> | - | 要隐藏行号的行集合 |
lineNumbers | Map<number, number> | - | 按行覆盖行号 |
showLineNumbers | boolean | true | 切换行号栏可见性 |
方法
| 方法 | 描述 |
|---|---|
setLineColor() | 设置某一行的背景颜色 |
clearLineColor() | 清除某一行的背景颜色 |
setLineSign() | 设置行号前/后的标记 |
clearLineSign() | 清除行标记 |
setLineNumbers() | 批量覆盖行号 |
setHideLineNumbers() | 隐藏指定行的行号 |