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
DiffRenderablefor now.
Properties
| Property | Type | Default | Description |
|---|---|---|---|
diff | string | "" | Unified diff string |
view | "unified" or "split" | "unified" | Layout style |
filetype | string | - | Syntax highlighting language |
syntaxStyle | SyntaxStyle | - | Syntax style for code |
wrapMode | "word", "char", or "none" | - | Code wrapping mode |
conceal | boolean | false | Conceal markup when highlighting |
treeSitterClient | TreeSitterClient | - | Custom Tree-sitter client |
showLineNumbers | boolean | true | Show line numbers |
lineNumberFg | string or RGBA | #888888 | Line number text color |
lineNumberBg | string or RGBA | transparent | Line number background |
addedLineNumberBg | string or RGBA | transparent | Line number background for added |
removedLineNumberBg | string or RGBA | transparent | Line number background for removed |
addedBg | string or RGBA | #1a4d1a | Background for added lines |
removedBg | string or RGBA | #4d1a1a | Background for removed lines |
contextBg | string or RGBA | transparent | Background for context lines |
addedContentBg | string or RGBA | - | Optional content background (added) |
removedContentBg | string or RGBA | - | Optional content background (removed) |
contextContentBg | string or RGBA | - | Optional content background (context) |
addedSignColor | string or RGBA | #22c55e | Sign color for added lines |
removedSignColor | string or RGBA | #ef4444 | Sign color for removed lines |