From 1b6fd47b5005ad542e8d459510c6fd99155db2a0 Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 15 Sep 2017 16:34:59 +0200 Subject: [PATCH] introduce resource.ts --- src/vs/base/common/resources.ts | 16 ++++++++++++++++ src/vs/workbench/browser/labels.ts | 17 +++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 src/vs/base/common/resources.ts diff --git a/src/vs/base/common/resources.ts b/src/vs/base/common/resources.ts new file mode 100644 index 00000000000..49840f9c960 --- /dev/null +++ b/src/vs/base/common/resources.ts @@ -0,0 +1,16 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +import * as paths from 'vs/base/common/paths'; +import uri from 'vs/base/common/uri'; + +export function basename(resource: uri): string { + if (resource.scheme === 'file' || resource.scheme === 'untitled') { + return paths.basename(resource.fsPath); + } + + return paths.basename(resource.authority + resource.path); +} diff --git a/src/vs/workbench/browser/labels.ts b/src/vs/workbench/browser/labels.ts index ffbe2622a3b..6e571b517f7 100644 --- a/src/vs/workbench/browser/labels.ts +++ b/src/vs/workbench/browser/labels.ts @@ -7,6 +7,7 @@ import uri from 'vs/base/common/uri'; import paths = require('vs/base/common/paths'); +import resources = require('vs/base/common/resources'); import { IconLabel, IIconLabelOptions, IIconLabelCreationOptions } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { IExtensionService } from 'vs/platform/extensions/common/extensions'; import { IModeService } from 'vs/editor/common/services/modeService'; @@ -216,11 +217,11 @@ export class FileLabel extends ResourceLabel { getWorkspace(): { folders: uri[]; } { return { folders: [options.root] }; }, } : this.contextService; - const name = resource.fsPath.length > 1 ? paths.basename(resource.fsPath) : resource.authority; - const description = resource.fsPath.length > 1 ? getPathLabel(paths.dirname(resource.fsPath), rootProvider, this.environmentService) : resource.authority; + const description = resource.scheme === 'file' ? getPathLabel(paths.dirname(resource.fsPath), rootProvider, this.environmentService) : resource.authority; + this.setLabel({ resource, - name: (options && options.hideLabel) ? void 0 : name, + name: (options && options.hideLabel) ? void 0 : resources.basename(resource), description: !hidePath ? description : void 0 }, options); } @@ -231,13 +232,9 @@ export function getIconClasses(modelService: IModelService, modeService: IModeSe // we always set these base classes even if we do not have a path const classes = fileKind === FileKind.ROOT_FOLDER ? ['rootfolder-icon'] : fileKind === FileKind.FOLDER ? ['folder-icon'] : ['file-icon']; - let path: string; - if (resource) { - path = resource.fsPath; - } - if (path) { - const basename = cssEscape(paths.basename(path).toLowerCase()); + if (resource) { + const basename = cssEscape(resources.basename(resource).toLowerCase()); // Folders if (fileKind === FileKind.FOLDER) { @@ -258,7 +255,7 @@ export function getIconClasses(modelService: IModelService, modeService: IModeSe // Configured Language let configuredLangId = getConfiguredLangId(modelService, resource); - configuredLangId = configuredLangId || modeService.getModeIdByFilenameOrFirstLine(path); + configuredLangId = configuredLangId || modeService.getModeIdByFilenameOrFirstLine(basename); if (configuredLangId) { classes.push(`${cssEscape(configuredLangId)}-lang-file-icon`); } -- GitLab