From a84b27289265c87435e933d0b2dbfb9ed2b8f5a4 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 23 Aug 2016 12:02:43 +0200 Subject: [PATCH] icons - add classes for each extension --- .../files/browser/views/explorerViewer.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/browser/views/explorerViewer.ts index 520603d437a..5dde7e23878 100644 --- a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/browser/views/explorerViewer.ts @@ -397,21 +397,24 @@ export class FileRenderer extends ActionsRenderer implements IRenderer { } private fileIconClasses(fsPath: string): string[] { - const ext = paths.extname(fsPath); - const basename = paths.basename(fsPath); - const name = basename.substring(0, basename.length - ext.length); - const langId = this.modeService.getModeIdByFilenameOrFirstLine(fsPath); - const classes = ['file-icon']; - if (ext && ext.length > 1) { - classes.push(`${this.cssEscape(ext.substr(1).toLowerCase())}-ext-file-icon`); - } + const basename = paths.basename(fsPath); + const dotSegments = basename.split('.'); + const name = dotSegments[0]; // file.txt => "file", .dockerfile => "", file.some.txt => "file" if (name) { classes.push(`${this.cssEscape(name.toLowerCase())}-name-file-icon`); } + const extensions = dotSegments.splice(1); + if (extensions.length > 0) { + for (let i = 0; i < extensions.length; i++) { + classes.push(`${this.cssEscape(extensions.slice(i).join('.').toLowerCase())}-ext-file-icon`); // add each combination of all found extensions if more than one + } + } + + const langId = this.modeService.getModeIdByFilenameOrFirstLine(fsPath); if (langId) { classes.push(`${this.cssEscape(langId)}-lang-file-icon`); } -- GitLab