diff --git a/frontend/src/lib/components/copilot/chat/ToolCodeDiffView.svelte b/frontend/src/lib/components/copilot/chat/ToolCodeDiffView.svelte index 6f74ff7a80..2a63c58308 100644 --- a/frontend/src/lib/components/copilot/chat/ToolCodeDiffView.svelte +++ b/frontend/src/lib/components/copilot/chat/ToolCodeDiffView.svelte @@ -24,6 +24,7 @@ const diffRows = $derived(diffLines ?? toolDiffLines(diff, streaming)) const visibleRows = $derived(visibleToolDiffRows(diffRows, expansions)) const language = $derived(toolCodeDiffLanguage(diff.lang)) + const beforeLanguage = $derived(toolCodeDiffLanguage(diff.beforeLang ?? diff.lang)) const lastLines = $derived.by(() => { let old = 0 let current = 0 @@ -38,10 +39,12 @@ `max(0.875rem, ${String(Math.max(lastLines.old, lastLines.current)).length}ch)` ) const highlighted = $derived.by(() => { - if (!hljs.getLanguage(language.name)) hljs.registerLanguage(language.name, language.register) + for (const { name, register } of [language, beforeLanguage]) { + if (!hljs.getLanguage(name)) hljs.registerLanguage(name, register) + } return { - original: highlightedSourceLines(diff.before, language.name, lastLines.old), + original: highlightedSourceLines(diff.before, beforeLanguage.name, lastLines.old), modified: highlightedSourceLines(diff.after, language.name, lastLines.current) } }) @@ -82,50 +85,54 @@ class="tool-code-diff max-h-[400px] overflow-auto bg-surface-tertiary text-xs leading-[18px] text-primary" style="--line-number: {lineNumberWidth}" > - {#each visibleRows as row, index ('key' in row ? `${row.kind}:${row.key}` : `line:${row.oldLine}:${row.newLine}:${index}`)} - {#if row.kind === 'collapsed' || row.kind === 'omitted'} - - {:else} -
- {row.oldLine ?? ''} - - {row.newLine ?? ''}{row.kind === 'added' ? '+' : row.kind === 'removed' ? '-' : ''} - - +
+ {#each visibleRows as row, index ('key' in row ? `${row.kind}:${row.key}` : `line:${row.oldLine}:${row.newLine}:${index}`)} + {#if row.kind === 'collapsed' || row.kind === 'omitted'} +
- {/if} - {/each} + ... + + ...... + + {row.count} {row.kind === 'collapsed' ? 'unchanged lines' : 'more lines'} + + {:else} +
+ {row.oldLine ?? ''} + + {row.newLine ?? ''}{row.kind === 'added' ? '+' : row.kind === 'removed' ? '-' : ''} + + + {#each row.changedRanges ?? [] as range} + + {/each} + {@html highlightedLine(row) || ' '} + +
+ {/if} + {/each} +