Diff

Render unified or split diffs with syntax highlighting and optional line numbers.

Basic usage

Renderable API

import { DiffRenderable, SyntaxStyle, RGBA, createCliRenderer } from "@opentui/core"

const renderer = await createCliRenderer()

const syntaxStyle = SyntaxStyle.fromStyles({
  default: { fg: RGBA.fromHex("#E6EDF3") },
  string: { fg: RGBA.fromHex("#A5D6FF") },
  keyword: { fg: RGBA.fromHex("#FF7B72"), bold: true },
})

const diff = new DiffRenderable(renderer, {
  id: "diff",
  width: "100%",
  height: 16,
  diff: `diff --git a/app.ts b/app.ts\nindex 1111111..2222222 100644\n--- a/app.ts\n+++ b/app.ts\n@@ -1,3 +1,3 @@\n-const a = 1\n+const a = 2\n`,
  view: "split",
  filetype: "typescript",
  syntaxStyle,
  showLineNumbers: true,
})

renderer.root.add(diff)

Construct API

Not available yet. Use DiffRenderable for now.

Properties

PropertyTypeDefaultDescription
diffstring""Unified diff string
view"unified" or "split""unified"Layout style
filetypestring-Syntax highlighting language
syntaxStyleSyntaxStyle-Syntax style for code
wrapMode"word", "char", or "none"-Code wrapping mode
concealbooleanfalseConceal markup when highlighting
treeSitterClientTreeSitterClient-Custom Tree-sitter client
showLineNumbersbooleantrueShow line numbers
lineNumberFgstring or RGBA#888888Line number text color
lineNumberBgstring or RGBAtransparentLine number background
addedLineNumberBgstring or RGBAtransparentLine number background for added
removedLineNumberBgstring or RGBAtransparentLine number background for removed
addedBgstring or RGBA#1a4d1aBackground for added lines
removedBgstring or RGBA#4d1a1aBackground for removed lines
contextBgstring or RGBAtransparentBackground for context lines
addedContentBgstring or RGBA-Optional content background (added)
removedContentBgstring or RGBA-Optional content background (removed)
contextContentBgstring or RGBA-Optional content background (context)
addedSignColorstring or RGBA#22c55eSign color for added lines
removedSignColorstring or RGBA#ef4444Sign color for removed lines