Line numbers

Add a line number gutter to renderables that provide line info, such as CodeRenderable and text editor components.

Basic usage

Renderable API

import { CodeRenderable, LineNumberRenderable, ScrollBoxRenderable, SyntaxStyle, RGBA } from "@opentui/core"

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)

Line signs and colors

lineNumbers.setLineColor(3, "#2b6cb0")
lineNumbers.setLineSign(3, { before: ">", beforeColor: "#2b6cb0" })

Construct API

Not available yet. Use LineNumberRenderable for now.

Properties

PropertyTypeDefaultDescription
targetRenderable & LineInfoProvider-Target renderable to number
fgstring or RGBA#888888Gutter text color
bgstring or RGBAtransparentGutter background color
minWidthnumber3Minimum gutter width
paddingRightnumber1Right padding for gutter
lineColorsMap<number, string or RGBA or LineColorConfig>-Per-line background colors
lineSignsMap<number, LineSign>-Per-line signs (before/after)
lineNumberOffsetnumber0Offset for line numbering
hideLineNumbersSet<number>-Lines to hide numbers for
lineNumbersMap<number, number>-Override line numbers per line
showLineNumbersbooleantrueToggle gutter visibility

Methods

MethodDescription
setLineColor()Set a background color for a line
clearLineColor()Clear a line background color
setLineSign()Set a sign before/after a line number
clearLineSign()Clear a line sign
setLineNumbers()Override multiple line numbers
setHideLineNumbers()Hide line numbers for specific lines