diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 0340900a5c44a2e7dedb5470eae46a111f8b31d5..b7dfb8adf9b00b7053d15e72e5df78eb0ee2eafc 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1324,7 +1324,7 @@ export interface WorkspaceEditMetadata { needsConfirmation: boolean; label: string; description?: string; - iconPath?: { id: string } | { light: URI, dark: URI }; + iconPath?: { id: string } | URI | { light: URI, dark: URI }; } export interface WorkspaceFileEditOptions { diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 0216ff21d1d125fab9796cb3be401d0222f56c70..e45120452e4487d4a693318b8fba200334d8056d 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -6044,7 +6044,7 @@ declare namespace monaco.languages { description?: string; iconPath?: { id: string; - } | { + } | Uri | { light: Uri; dark: Uri; }; diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index ee4368dbe33e2161f6fd6578079740657ca5ded9..56f2530c0edfa1b83c8f83f5f279be84f4f3533b 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -50,6 +50,7 @@ import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtens import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService'; import { TunnelOptions } from 'vs/platform/remote/common/tunnel'; import { Timeline, TimelineChangeEvent, TimelineCursor, TimelineProviderDescriptor } from 'vs/workbench/contrib/timeline/common/timeline'; +import { revive } from 'vs/base/common/marshalling'; export interface IEnvironment { isExtensionDevelopmentDebug: boolean; @@ -1093,18 +1094,25 @@ export interface IWorkspaceSymbolsDto extends IdObject { symbols: IWorkspaceSymbolDto[]; } +export interface IWorkspaceEditEntryMetadataDto { + needsConfirmation: boolean; + label: string; + description?: string; + iconPath?: { id: string } | UriComponents | { light: UriComponents, dark: UriComponents }; +} + export interface IWorkspaceFileEditDto { oldUri?: UriComponents; newUri?: UriComponents; options?: modes.WorkspaceFileEditOptions - metadata?: modes.WorkspaceEditMetadata; + metadata?: IWorkspaceEditEntryMetadataDto; } export interface IWorkspaceTextEditDto { resource: UriComponents; edit: modes.TextEdit; modelVersionId?: number; - metadata?: modes.WorkspaceEditMetadata; + metadata?: IWorkspaceEditEntryMetadataDto; } export interface IWorkspaceEditDto { @@ -1123,6 +1131,9 @@ export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): mod (edit).newUri = URI.revive((edit).newUri); (edit).oldUri = URI.revive((edit).oldUri); } + if (edit.metadata && edit.metadata.iconPath) { + edit.metadata = revive(edit.metadata); + } } } return data; diff --git a/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts b/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts index 544fa1027d4d4fe946a1e3ccd7081acd6ec26040..6804221716a65cb514e1b2b2461511e796a3dbf5 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts @@ -25,6 +25,7 @@ import { basename } from 'vs/base/common/resources'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; import { WorkspaceFileEdit } from 'vs/editor/common/modes'; import { compare } from 'vs/base/common/strings'; +import { URI } from 'vs/base/common/uri'; // --- VIEW MODEL @@ -420,6 +421,12 @@ export class CategoryElementRenderer implements ITreeRenderer