mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 02:58:56 +01:00
Tolerate minor edit session identity differences (#163804)
Also add basic support for partial edit session identity matches
This commit is contained in:
@@ -21,6 +21,7 @@ import { FileSystemProviderCapabilities } from 'vs/platform/files/common/files';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { Severity } from 'vs/platform/notification/common/notification';
|
||||
import { EditSessionIdentityMatch } from 'vs/platform/workspace/common/editSessions';
|
||||
import { Workspace, WorkspaceFolder } from 'vs/platform/workspace/common/workspace';
|
||||
import { IExtHostFileSystemInfo } from 'vs/workbench/api/common/extHostFileSystemInfo';
|
||||
import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService';
|
||||
@@ -627,6 +628,31 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape, IExtHostWorkspac
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
async $provideEditSessionIdentityMatch(workspaceFolder: UriComponents, identity1: string, identity2: string, cancellationToken: CancellationToken): Promise<EditSessionIdentityMatch | undefined> {
|
||||
this._logService.info('Getting edit session identifier for workspaceFolder', workspaceFolder);
|
||||
const folder = await this.resolveWorkspaceFolder(URI.revive(workspaceFolder));
|
||||
if (!folder) {
|
||||
this._logService.warn('Unable to resolve workspace folder');
|
||||
return undefined;
|
||||
}
|
||||
|
||||
this._logService.info('Invoking #provideEditSessionIdentity for workspaceFolder', folder);
|
||||
|
||||
const provider = this._editSessionIdentityProviders.get(folder.uri.scheme);
|
||||
this._logService.info(`Provider for scheme ${folder.uri.scheme} is defined: `, !!provider);
|
||||
if (!provider) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const result = await provider.provideEditSessionIdentityMatch?.(identity1, identity2, cancellationToken);
|
||||
this._logService.info('Provider returned edit session identifier match result: ', result);
|
||||
if (!result) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const IExtHostWorkspace = createDecorator<IExtHostWorkspace>('IExtHostWorkspace');
|
||||
|
||||
Reference in New Issue
Block a user