From 5f29eb75239761f1dda03bb6e04832aec3c67527 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 14 Sep 2016 16:16:06 +0200 Subject: [PATCH] Explorer: files with spaces produces bad CSS classes (fixes #12024) --- .../parts/files/browser/views/explorerViewer.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/browser/views/explorerViewer.ts index 70e41699ed8..24758a21ce8 100644 --- a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/browser/views/explorerViewer.ts @@ -398,19 +398,19 @@ export class FileRenderer extends ActionsRenderer implements IRenderer { const name = dotSegments[0]; // file.txt => "file", .dockerfile => "", file.some.txt => "file" if (name) { - classes.push(`${name.toLowerCase()}-name-file-icon`); + 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(`${extensions.slice(i).join('.').toLowerCase()}-ext-file-icon`); // add each combination of all found extensions if more than one + 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(`${langId}-lang-file-icon`); + classes.push(`${this.cssEscape(langId)}-lang-file-icon`); } return classes; @@ -422,11 +422,15 @@ export class FileRenderer extends ActionsRenderer implements IRenderer { const classes = ['folder-icon']; if (basename) { - classes.push(`${basename.toLowerCase()}-name-folder-icon`); + classes.push(`${this.cssEscape(basename.toLowerCase())}-name-folder-icon`); } return classes; } + + private cssEscape(val: string): string { + return val.replace(/ /g, '\\ '); // make sure to not introduce CSS classes from files that contain whitespace + } } // Explorer Accessibility Provider