Skip to content

Commit 1a100bd

Browse files
fix missing update
1 parent c947b06 commit 1a100bd

File tree

14 files changed

+112
-58
lines changed

14 files changed

+112
-58
lines changed

packages/core/index.d.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,9 @@ export declare class DiffLine {
318318
plainTemplate?: string;
319319
plainTemplateMode?: "fast-diff" | "relative";
320320
syntaxTemplate?: string;
321+
syntaxTemplateName?: string;
321322
syntaxTemplateMode?: "fast-diff" | "relative";
322-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
323+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateName?: string, syntaxTemplateMode?: "fast-diff" | "relative");
323324
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
324325
isIncludeableLine(): boolean;
325326
equals(other: DiffLine): boolean;
@@ -485,12 +486,14 @@ export declare const getPlainDiffTemplateByFastDiff: ({ diffLine, rawLine, opera
485486
export declare const getPlainLineTemplate: (line: string) => string;
486487
export declare const getSplitContentLines: (diffFile: DiffFile) => DiffSplitContentLineItem[];
487488
export declare const getSplitLines: (diffFile: DiffFile) => DiffSplitLineItem[];
488-
export declare const getSyntaxDiffTemplate: ({ diffLine, syntaxLine, operator, }: {
489+
export declare const getSyntaxDiffTemplate: ({ diffFile, diffLine, syntaxLine, operator, }: {
490+
diffFile: DiffFile;
489491
diffLine: DiffLine;
490492
syntaxLine: SyntaxLine;
491493
operator: "add" | "del";
492494
}) => void;
493-
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffLine, syntaxLine, operator, }: {
495+
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffFile, diffLine, syntaxLine, operator, }: {
496+
diffFile: DiffFile;
494497
diffLine: DiffLine;
495498
syntaxLine: SyntaxLine;
496499
operator: "add" | "del";

packages/core/src/diff-file.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ export class DiffFile {
524524
this.deletionLength++;
525525
} else {
526526
getDiffRange(additions, deletions, {
527+
diffFile: this,
527528
getAdditionRaw,
528529
getDeletionRaw,
529530
getAdditionSyntax,
@@ -534,7 +535,13 @@ export class DiffFile {
534535
}
535536
tmp.push(line);
536537
});
537-
getDiffRange(additions, deletions, { getAdditionRaw, getDeletionRaw, getAdditionSyntax, getDeletionSyntax });
538+
getDiffRange(additions, deletions, {
539+
diffFile: this,
540+
getAdditionRaw,
541+
getDeletionRaw,
542+
getAdditionSyntax,
543+
getDeletionSyntax,
544+
});
538545
});
539546
});
540547

packages/core/src/parse/diff-line.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export class DiffLine {
2525
public plainTemplate?: string,
2626
public plainTemplateMode?: "fast-diff" | "relative",
2727
public syntaxTemplate?: string,
28+
public syntaxTemplateName?: string,
2829
public syntaxTemplateMode?: "fast-diff" | "relative"
2930
) {}
3031

packages/core/src/parse/diff-tool.ts

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
getSyntaxDiffTemplateByFastDiff,
1010
} from "./template";
1111

12+
import type { DiffFile } from "../diff-file";
1213
import type { DiffHunk, DiffHunkHeader } from "./raw-diff";
1314
import type { SyntaxLine } from "@git-diff-view/lowlight";
1415

@@ -114,11 +115,13 @@ export const getDiffRange = (
114115
additions: DiffLine[],
115116
deletions: DiffLine[],
116117
{
118+
diffFile,
117119
getAdditionRaw,
118120
getDeletionRaw,
119121
getAdditionSyntax,
120122
getDeletionSyntax,
121123
}: {
124+
diffFile: DiffFile;
122125
getAdditionRaw: (lineNumber: number) => string;
123126
getDeletionRaw: (lineNumber: number) => string;
124127
getAdditionSyntax: (lineNumber: number) => SyntaxLine;
@@ -146,30 +149,28 @@ export const getDiffRange = (
146149
deletion.changes = delRange;
147150
}
148151
if (!getEnableFastDiffTemplate()) {
149-
if (!addition.plainTemplate || !deletion.plainTemplate) {
150-
getPlainDiffTemplate({
151-
diffLine: addition,
152-
rawLine: getAdditionRaw(addition.newLineNumber),
153-
operator: "add",
154-
});
155-
getPlainDiffTemplate({
156-
diffLine: deletion,
157-
rawLine: getDeletionRaw(deletion.oldLineNumber),
158-
operator: "del",
159-
});
160-
}
161-
if (!addition.syntaxTemplate || !deletion.syntaxTemplate) {
162-
getSyntaxDiffTemplate({
163-
diffLine: addition,
164-
syntaxLine: getAdditionSyntax(addition.newLineNumber),
165-
operator: "add",
166-
});
167-
getSyntaxDiffTemplate({
168-
diffLine: deletion,
169-
syntaxLine: getDeletionSyntax(deletion.oldLineNumber),
170-
operator: "del",
171-
});
172-
}
152+
getPlainDiffTemplate({
153+
diffLine: addition,
154+
rawLine: getAdditionRaw(addition.newLineNumber),
155+
operator: "add",
156+
});
157+
getPlainDiffTemplate({
158+
diffLine: deletion,
159+
rawLine: getDeletionRaw(deletion.oldLineNumber),
160+
operator: "del",
161+
});
162+
getSyntaxDiffTemplate({
163+
diffFile,
164+
diffLine: addition,
165+
syntaxLine: getAdditionSyntax(addition.newLineNumber),
166+
operator: "add",
167+
});
168+
getSyntaxDiffTemplate({
169+
diffFile,
170+
diffLine: deletion,
171+
syntaxLine: getDeletionSyntax(deletion.oldLineNumber),
172+
operator: "del",
173+
});
173174
} else {
174175
const _addition = DiffLine.prototype.clone.call(
175176
addition,
@@ -195,11 +196,13 @@ export const getDiffRange = (
195196
operator: "del",
196197
});
197198
getSyntaxDiffTemplateByFastDiff({
199+
diffFile,
198200
diffLine: addition,
199201
syntaxLine: getAdditionSyntax(addition.newLineNumber),
200202
operator: "add",
201203
});
202204
getSyntaxDiffTemplateByFastDiff({
205+
diffFile,
203206
diffLine: deletion,
204207
syntaxLine: getDeletionSyntax(deletion.oldLineNumber),
205208
operator: "del",

packages/core/src/parse/template.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { escapeHtml } from "../escape-html";
44

55
import { processTransformTemplateContent, isTransformEnabled } from "./transform";
66

7+
import type { DiffFile } from "../diff-file";
78
import type { DiffLine } from "./diff-line";
89
import type { SyntaxLine } from "@git-diff-view/lowlight";
910

@@ -114,17 +115,24 @@ export const getPlainDiffTemplateByFastDiff = ({
114115
};
115116

116117
export const getSyntaxDiffTemplate = ({
118+
diffFile,
117119
diffLine,
118120
syntaxLine,
119121
operator,
120122
}: {
123+
diffFile: DiffFile;
121124
diffLine: DiffLine;
122125
syntaxLine: SyntaxLine;
123126
operator: "add" | "del";
124127
}) => {
125128
if (!syntaxLine) return;
126129

127-
if (diffLine.syntaxTemplate && diffLine.syntaxTemplateMode === "relative") return;
130+
if (
131+
diffLine.syntaxTemplate &&
132+
diffLine.syntaxTemplateMode === "relative" &&
133+
diffLine.syntaxTemplateName === diffFile._getHighlighterName()
134+
)
135+
return;
128136

129137
const changes = diffLine.changes;
130138

@@ -175,20 +183,29 @@ export const getSyntaxDiffTemplate = ({
175183
diffLine.syntaxTemplate = template;
176184

177185
diffLine.syntaxTemplateMode = "relative";
186+
187+
diffLine.syntaxTemplateName = diffFile._getHighlighterName();
178188
};
179189

180190
export const getSyntaxDiffTemplateByFastDiff = ({
191+
diffFile,
181192
diffLine,
182193
syntaxLine,
183194
operator,
184195
}: {
196+
diffFile: DiffFile;
185197
diffLine: DiffLine;
186198
syntaxLine: SyntaxLine;
187199
operator: "add" | "del";
188200
}) => {
189201
if (!syntaxLine) return;
190202

191-
if (diffLine.syntaxTemplate && diffLine.syntaxTemplateMode === "fast-diff") return;
203+
if (
204+
diffLine.syntaxTemplate &&
205+
diffLine.syntaxTemplateMode === "fast-diff" &&
206+
diffLine.syntaxTemplateName === diffFile._getHighlighterName()
207+
)
208+
return;
192209

193210
const changes = diffLine.diffChanges;
194211

@@ -294,6 +311,8 @@ export const getSyntaxDiffTemplateByFastDiff = ({
294311
diffLine.syntaxTemplate = template;
295312

296313
diffLine.syntaxTemplateMode = "fast-diff";
314+
315+
diffLine.syntaxTemplateName = diffFile._getHighlighterName();
297316
};
298317

299318
export const getSyntaxLineTemplate = (line: SyntaxLine) => {

packages/file/index.d.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,9 @@ export declare class DiffLine {
316316
plainTemplate?: string;
317317
plainTemplateMode?: "fast-diff" | "relative";
318318
syntaxTemplate?: string;
319+
syntaxTemplateName?: string;
319320
syntaxTemplateMode?: "fast-diff" | "relative";
320-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
321+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateName?: string, syntaxTemplateMode?: "fast-diff" | "relative");
321322
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
322323
isIncludeableLine(): boolean;
323324
equals(other: DiffLine): boolean;
@@ -483,12 +484,14 @@ export declare const getPlainDiffTemplateByFastDiff: ({ diffLine, rawLine, opera
483484
export declare const getPlainLineTemplate: (line: string) => string;
484485
export declare const getSplitContentLines: (diffFile: DiffFile) => DiffSplitContentLineItem[];
485486
export declare const getSplitLines: (diffFile: DiffFile) => DiffSplitLineItem[];
486-
export declare const getSyntaxDiffTemplate: ({ diffLine, syntaxLine, operator, }: {
487+
export declare const getSyntaxDiffTemplate: ({ diffFile, diffLine, syntaxLine, operator, }: {
488+
diffFile: DiffFile;
487489
diffLine: DiffLine;
488490
syntaxLine: SyntaxLine;
489491
operator: "add" | "del";
490492
}) => void;
491-
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffLine, syntaxLine, operator, }: {
493+
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffFile, diffLine, syntaxLine, operator, }: {
494+
diffFile: DiffFile;
492495
diffLine: DiffLine;
493496
syntaxLine: SyntaxLine;
494497
operator: "add" | "del";

packages/react/index.d.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,9 @@ export declare class DiffLine {
316316
plainTemplate?: string;
317317
plainTemplateMode?: "fast-diff" | "relative";
318318
syntaxTemplate?: string;
319+
syntaxTemplateName?: string;
319320
syntaxTemplateMode?: "fast-diff" | "relative";
320-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
321+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateName?: string, syntaxTemplateMode?: "fast-diff" | "relative");
321322
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
322323
isIncludeableLine(): boolean;
323324
equals(other: DiffLine): boolean;
@@ -483,12 +484,14 @@ export declare const getPlainDiffTemplateByFastDiff: ({ diffLine, rawLine, opera
483484
export declare const getPlainLineTemplate: (line: string) => string;
484485
export declare const getSplitContentLines: (diffFile: DiffFile) => DiffSplitContentLineItem[];
485486
export declare const getSplitLines: (diffFile: DiffFile) => DiffSplitLineItem[];
486-
export declare const getSyntaxDiffTemplate: ({ diffLine, syntaxLine, operator, }: {
487+
export declare const getSyntaxDiffTemplate: ({ diffFile, diffLine, syntaxLine, operator, }: {
488+
diffFile: DiffFile;
487489
diffLine: DiffLine;
488490
syntaxLine: SyntaxLine;
489491
operator: "add" | "del";
490492
}) => void;
491-
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffLine, syntaxLine, operator, }: {
493+
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffFile, diffLine, syntaxLine, operator, }: {
494+
diffFile: DiffFile;
492495
diffLine: DiffLine;
493496
syntaxLine: SyntaxLine;
494497
operator: "add" | "del";

packages/react/src/components/DiffContent.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,14 @@ const DiffString = ({
101101

102102
const DiffSyntax = ({
103103
rawLine,
104+
diffFile,
104105
diffLine,
105106
operator,
106107
syntaxLine,
107108
enableWrap,
108109
}: {
109110
rawLine: string;
111+
diffFile: DiffFile;
110112
diffLine?: DiffLine;
111113
syntaxLine?: File["syntaxFile"][number];
112114
operator?: "add" | "del";
@@ -122,7 +124,7 @@ const DiffSyntax = ({
122124
const isNewLineSymbolChanged = changes.newLineSymbol;
123125

124126
if (!diffLine?.syntaxTemplate && typeof getSyntaxDiffTemplate === "function") {
125-
getSyntaxDiffTemplate({ diffLine, syntaxLine, operator });
127+
getSyntaxDiffTemplate({ diffFile, diffLine, syntaxLine, operator });
126128
}
127129

128130
if (diffLine?.syntaxTemplate) {
@@ -176,6 +178,7 @@ const DiffSyntax = ({
176178
};
177179

178180
export const DiffContent = ({
181+
diffFile,
179182
diffLine,
180183
rawLine,
181184
plainLine,
@@ -216,6 +219,7 @@ export const DiffContent = ({
216219
<DiffSyntax
217220
operator={isAdded ? "add" : isDelete ? "del" : undefined}
218221
rawLine={rawLine}
222+
diffFile={diffFile}
219223
diffLine={diffLine}
220224
syntaxLine={syntaxLine}
221225
enableWrap={enableWrap}

packages/solid/index.d.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,9 @@ export declare class DiffLine {
316316
plainTemplate?: string;
317317
plainTemplateMode?: "fast-diff" | "relative";
318318
syntaxTemplate?: string;
319+
syntaxTemplateName?: string;
319320
syntaxTemplateMode?: "fast-diff" | "relative";
320-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
321+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateName?: string, syntaxTemplateMode?: "fast-diff" | "relative");
321322
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
322323
isIncludeableLine(): boolean;
323324
equals(other: DiffLine): boolean;
@@ -483,12 +484,14 @@ export declare const getPlainDiffTemplateByFastDiff: ({ diffLine, rawLine, opera
483484
export declare const getPlainLineTemplate: (line: string) => string;
484485
export declare const getSplitContentLines: (diffFile: DiffFile) => DiffSplitContentLineItem[];
485486
export declare const getSplitLines: (diffFile: DiffFile) => DiffSplitLineItem[];
486-
export declare const getSyntaxDiffTemplate: ({ diffLine, syntaxLine, operator, }: {
487+
export declare const getSyntaxDiffTemplate: ({ diffFile, diffLine, syntaxLine, operator, }: {
488+
diffFile: DiffFile;
487489
diffLine: DiffLine;
488490
syntaxLine: SyntaxLine;
489491
operator: "add" | "del";
490492
}) => void;
491-
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffLine, syntaxLine, operator, }: {
493+
export declare const getSyntaxDiffTemplateByFastDiff: ({ diffFile, diffLine, syntaxLine, operator, }: {
494+
diffFile: DiffFile;
492495
diffLine: DiffLine;
493496
syntaxLine: SyntaxLine;
494497
operator: "add" | "del";

packages/solid/src/components/DiffContent.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const DiffString = (props: {
7676

7777
const DiffSyntax = (props: {
7878
rawLine: string;
79+
diffFile: DiffFile;
7980
diffLine?: DiffLine;
8081
syntaxLine?: File["syntaxFile"][number];
8182
operator?: "add" | "del";
@@ -91,7 +92,12 @@ const DiffSyntax = (props: {
9192
!props.diffLine?.syntaxTemplate &&
9293
typeof getSyntaxDiffTemplate === "function"
9394
) {
94-
getSyntaxDiffTemplate({ diffLine: props.diffLine, syntaxLine: props.syntaxLine, operator: props.operator });
95+
getSyntaxDiffTemplate({
96+
diffFile: props.diffFile,
97+
diffLine: props.diffLine,
98+
syntaxLine: props.syntaxLine,
99+
operator: props.operator,
100+
});
95101
}
96102

97103
if (props.syntaxLine && !props.syntaxLine?.template) {
@@ -218,6 +224,7 @@ export const DiffContent = (props: {
218224
<DiffSyntax
219225
operator={getIsAdded() ? "add" : getIsDelete() ? "del" : undefined}
220226
rawLine={props.rawLine}
227+
diffFile={props.diffFile}
221228
diffLine={props.diffLine}
222229
syntaxLine={props.syntaxLine}
223230
enableWrap={props.enableWrap}

0 commit comments

Comments
 (0)