Skip to content

Commit 59fb723

Browse files
authored
nes: allow using relative paths in diff patches (#410)
1 parent 70f1672 commit 59fb723

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

src/extension/xtab/common/promptCrafting.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,10 @@ function getEditDiffHistory(
207207
request: StatelessNextEditRequest,
208208
docsInPrompt: Set<DocumentId>,
209209
computeTokens: (s: string) => number,
210-
{ onlyForDocsInPrompt, maxTokens, nEntries }: DiffHistoryOptions
210+
{ onlyForDocsInPrompt, maxTokens, nEntries, useRelativePaths }: DiffHistoryOptions
211211
) {
212+
const workspacePath = useRelativePaths ? request.getActiveDocument().workspaceRoot?.path : undefined;
213+
212214
let tokenBudget = maxTokens;
213215

214216
const allDiffs: string[] = [];
@@ -227,7 +229,7 @@ function getEditDiffHistory(
227229
continue;
228230
}
229231

230-
const docDiff = generateDocDiff(entry);
232+
const docDiff = generateDocDiff(entry, workspacePath);
231233
if (docDiff === null) {
232234
continue;
233235
}
@@ -255,7 +257,7 @@ function getEditDiffHistory(
255257
return promptPiece;
256258
}
257259

258-
function generateDocDiff(entry: IXtabHistoryEditEntry): string | null {
260+
function generateDocDiff(entry: IXtabHistoryEditEntry, workspacePath: string | undefined): string | null {
259261
const docDiffLines: string[] = [];
260262

261263
const lineEdit = RootedEdit.toLineEdit(entry.edit);
@@ -280,7 +282,7 @@ function generateDocDiff(entry: IXtabHistoryEditEntry): string | null {
280282
return null;
281283
}
282284

283-
const uniquePath = toUniquePath(entry.docId, undefined);
285+
const uniquePath = toUniquePath(entry.docId, workspacePath);
284286

285287
const docDiff = [
286288
`--- ${uniquePath}`,

src/extension/xtab/node/xtabProvider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ export class XtabProvider extends ChainedStatelessNextEditProvider {
245245
nEntries: this.configService.getExperimentBasedConfig(ConfigKey.Internal.InlineEditsXtabDiffNEntries, this.expService),
246246
maxTokens: this.configService.getExperimentBasedConfig(ConfigKey.Internal.InlineEditsXtabDiffMaxTokens, this.expService),
247247
onlyForDocsInPrompt: this.configService.getExperimentBasedConfig(ConfigKey.Internal.InlineEditsXtabDiffOnlyForDocsInPrompt, this.expService),
248+
useRelativePaths: this.configService.getExperimentBasedConfig(ConfigKey.Internal.InlineEditsXtabDiffUseRelativePaths, this.expService),
248249
}
249250
};
250251
}

src/platform/configuration/common/configurationService.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,7 @@ export namespace ConfigKey {
679679
export const InlineEditsXtabCurrentFileMaxTokens = defineExpSetting<number>('chat.advanced.inlineEdits.xtabProvider.currentFileMaxTokens', xtabPromptOptions.DEFAULT_OPTIONS.currentFile.maxTokens, INTERNAL_RESTRICTED);
680680
export const InlineEditsXtabPrioritizeAboveCursor = defineExpSetting<boolean>('chat.advanced.inlineEdits.xtabProvider.currentFile.prioritizeAboveCursor', xtabPromptOptions.DEFAULT_OPTIONS.currentFile.prioritizeAboveCursor, INTERNAL_RESTRICTED);
681681
export const InlineEditsXtabDiffOnlyForDocsInPrompt = defineExpSetting<boolean>('chat.advanced.inlineEdits.xtabProvider.diffOnlyForDocsInPrompt', xtabPromptOptions.DEFAULT_OPTIONS.diffHistory.onlyForDocsInPrompt, INTERNAL_RESTRICTED);
682+
export const InlineEditsXtabDiffUseRelativePaths = defineExpSetting<boolean>('chat.advanced.inlineEdits.xtabProvider.diffUseRelativePaths', xtabPromptOptions.DEFAULT_OPTIONS.diffHistory.useRelativePaths, INTERNAL_RESTRICTED);
682683
export const InlineEditsXtabNNonSignificantLinesToConverge = defineExpSetting<number>('chat.advanced.inlineEdits.xtabProvider.nNonSignificantLinesToConverge', ResponseProcessor.DEFAULT_DIFF_PARAMS.nLinesToConverge, INTERNAL_RESTRICTED);
683684
export const InlineEditsXtabNSignificantLinesToConverge = defineExpSetting<number>('chat.advanced.inlineEdits.xtabProvider.nSignificantLinesToConverge', ResponseProcessor.DEFAULT_DIFF_PARAMS.nSignificantLinesToConverge, INTERNAL_RESTRICTED);
684685
export const InlineEditsXtabLanguageContextEnabled = defineExpSetting<boolean>('chat.advanced.inlineEdits.xtabProvider.languageContext.enabled', xtabPromptOptions.DEFAULT_OPTIONS.languageContext.enabled, INTERNAL_RESTRICTED);

src/platform/inlineEdits/common/dataTypes/xtabPromptOptions.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export type DiffHistoryOptions = {
1818
readonly nEntries: number;
1919
readonly maxTokens: number;
2020
readonly onlyForDocsInPrompt: boolean;
21+
readonly useRelativePaths: boolean;
2122
}
2223

2324
export type PagedClipping = { pageSize: number };
@@ -74,5 +75,6 @@ export const DEFAULT_OPTIONS: PromptOptions = {
7475
nEntries: 25,
7576
maxTokens: 1000,
7677
onlyForDocsInPrompt: false,
78+
useRelativePaths: false,
7779
},
7880
};

0 commit comments

Comments
 (0)