diff --git a/packages/cli/src/ui/components/messages/DiffRenderer.tsx b/packages/cli/src/ui/components/messages/DiffRenderer.tsx index 3670be34b..9bae38394 100644 --- a/packages/cli/src/ui/components/messages/DiffRenderer.tsx +++ b/packages/cli/src/ui/components/messages/DiffRenderer.tsx @@ -157,6 +157,7 @@ export const DiffRenderer: React.FC = ({ renderedOutput = colorizeCode( addedContent, language, + tabWidth, availableTerminalHeight, contentWidth, theme, diff --git a/packages/cli/src/ui/utils/CodeColorizer.tsx b/packages/cli/src/ui/utils/CodeColorizer.tsx index 0dabddb22..ec9e27244 100644 --- a/packages/cli/src/ui/utils/CodeColorizer.tsx +++ b/packages/cli/src/ui/utils/CodeColorizer.tsx @@ -125,17 +125,21 @@ export function colorizeLine( * * @param code The code string to highlight. * @param language The language identifier (e.g., 'javascript', 'css', 'html') + * @param tabWidth The tabWidth of the language, default is 4 * @returns A React.ReactNode containing Ink elements for the highlighted code. */ export function colorizeCode( code: string, language: string | null, + tabWidth = 4, availableHeight?: number, maxWidth?: number, theme?: Theme, settings?: LoadedSettings, ): React.ReactNode { - const codeToHighlight = code.replace(/\n$/, ''); + const codeToHighlight = code + .replace(/\n$/, '') + .replace(/\t/g, ' '.repeat(tabWidth)); const activeTheme = theme || themeManager.getActiveTheme(); const showLineNumbers = settings?.merged.ui?.showLineNumbers ?? true; diff --git a/packages/cli/src/ui/utils/MarkdownDisplay.tsx b/packages/cli/src/ui/utils/MarkdownDisplay.tsx index b67b8fd61..50595fc32 100644 --- a/packages/cli/src/ui/utils/MarkdownDisplay.tsx +++ b/packages/cli/src/ui/utils/MarkdownDisplay.tsx @@ -328,6 +328,7 @@ const RenderCodeBlockInternal: React.FC = ({ const colorizedTruncatedCode = colorizeCode( truncatedContent.join('\n'), lang, + 4, availableTerminalHeight, contentWidth - CODE_BLOCK_PREFIX_PADDING, undefined, @@ -346,6 +347,7 @@ const RenderCodeBlockInternal: React.FC = ({ const colorizedCode = colorizeCode( fullContent, lang, + 4, availableTerminalHeight, contentWidth - CODE_BLOCK_PREFIX_PADDING, undefined,