Skip to content

Commit f3d66ce

Browse files
authored
Merge pull request microsoft#250658 from microsoft/osortega/fix-new-search-editor
Fix for splitting search editor behavior
2 parents a92ae32 + d4b4c9a commit f3d66ce

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,21 +316,40 @@ export class SearchEditorInput extends EditorInput {
316316
}
317317
};
318318
}
319+
320+
override copy(): EditorInput {
321+
// Generate a new modelUri for the split editor
322+
const newModelUri = URI.from({ scheme: SearchEditorScheme, fragment: `${Math.random()}` });
323+
const config = this._cachedConfigurationModel?.config ?? {};
324+
const results = this._cachedResultsModel?.getValue() ?? '';
325+
// Use the 'rawData' variant and pass modelUri
326+
return this.instantiationService.invokeFunction(
327+
getOrMakeSearchEditorInput,
328+
{ from: 'rawData', config, resultsContents: results, modelUri: newModelUri } as any // modelUri is not in the type, but we handle it below
329+
);
330+
}
319331
}
320332

321333
export const getOrMakeSearchEditorInput = (
322334
accessor: ServicesAccessor,
323335
existingData: (
324336
| { from: 'model'; config?: Partial<SearchConfiguration>; modelUri: URI; backupOf?: URI }
325-
| { from: 'rawData'; resultsContents: string | undefined; config: Partial<SearchConfiguration> }
337+
| { from: 'rawData'; resultsContents: string | undefined; config: Partial<SearchConfiguration>; modelUri?: URI }
326338
| { from: 'existingFile'; fileUri: URI })
327339
): SearchEditorInput => {
328340

329341
const storageService = accessor.get(IStorageService);
330342
const configurationService = accessor.get(IConfigurationService);
331343

332344
const instantiationService = accessor.get(IInstantiationService);
333-
const modelUri = existingData.from === 'model' ? existingData.modelUri : URI.from({ scheme: SearchEditorScheme, fragment: `${Math.random()}` });
345+
let modelUri: URI;
346+
if (existingData.from === 'model') {
347+
modelUri = existingData.modelUri;
348+
} else if (existingData.from === 'rawData' && existingData.modelUri) {
349+
modelUri = existingData.modelUri;
350+
} else {
351+
modelUri = URI.from({ scheme: SearchEditorScheme, fragment: `${Math.random()}` });
352+
}
334353

335354
if (!searchEditorModelFactory.models.has(modelUri)) {
336355
if (existingData.from === 'existingFile') {

0 commit comments

Comments
 (0)