From 61416238eafceb219c8ba2cc31d02ddecbb9e3a6 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 13 May 2020 09:29:43 +0200 Subject: [PATCH] Missing saveAs csv file type in file saveAs dialog (fix #96283) --- .../browser/abstractFileDialogService.ts | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts b/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts index a9ffd0323a4..49469bdf2a6 100644 --- a/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts +++ b/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts @@ -279,21 +279,25 @@ export abstract class AbstractFileDialogService implements IFileDialogService { return filter; })); - // Filters are a bit weird on Windows, based on having a match or not: - // Match: we put the matching filter first so that it shows up selected and the all files last - // No match: we put the all files filter first - const allFilesFilter = { name: nls.localize('allFiles', "All Files"), extensions: ['*'] }; - if (matchingFilter) { - filters.unshift(matchingFilter); - filters.unshift(allFilesFilter); - } else { - filters.unshift(allFilesFilter); + // We have no matching filter, e.g. because the language + // is unknown. We still add the extension to the list of + // filters though so that it can be picked + // (https://github.com/microsoft/vscode/issues/96283) + if (!matchingFilter && ext) { + matchingFilter = { name: nls.localize('fileExt', "{0} File", ext), extensions: [trim(ext, '.')] }; } - // Allow to save file without extension - filters.push({ name: nls.localize('noExt', "No Extension"), extensions: [''] }); - - options.filters = filters; + // Order of filters is + // - File Extension Match + // - All Files + // - All Languages + // - No Extension + options.filters = coalesce([ + matchingFilter, + { name: nls.localize('allFiles', "All Files"), extensions: ['*'] }, + ...filters, + { name: nls.localize('noExt', "No Extension"), extensions: [''] } + ]); return options; } -- GitLab