diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 8910d82a625..c0c31735783 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -757,38 +757,74 @@ "command": "codeQLDatabases.displayAllLanguages", "title": "All languages" }, + { + "command": "codeQLDatabases.displayAllLanguagesSelected", + "title": "All languages (selected)" + }, { "command": "codeQLDatabases.displayCpp", "title": "C/C++" }, + { + "command": "codeQLDatabases.displayCppSelected", + "title": "C/C++ (selected)" + }, { "command": "codeQLDatabases.displayCsharp", "title": "C#" }, + { + "command": "codeQLDatabases.displayCsharpSelected", + "title": "C# (selected)" + }, { "command": "codeQLDatabases.displayGo", "title": "Go" }, + { + "command": "codeQLDatabases.displayGoSelected", + "title": "Go (selected)" + }, { "command": "codeQLDatabases.displayJava", "title": "Java/Kotlin" }, + { + "command": "codeQLDatabases.displayJavaSelected", + "title": "Java/Kotlin (selected)" + }, { "command": "codeQLDatabases.displayJavascript", "title": "JavaScript/TypeScript" }, + { + "command": "codeQLDatabases.displayJavascriptSelected", + "title": "JavaScript/TypeScript (selected)" + }, { "command": "codeQLDatabases.displayPython", "title": "Python" }, + { + "command": "codeQLDatabases.displayPythonSelected", + "title": "Python (selected)" + }, { "command": "codeQLDatabases.displayRuby", "title": "Ruby" }, + { + "command": "codeQLDatabases.displayRubySelected", + "title": "Ruby (selected)" + }, { "command": "codeQLDatabases.displaySwift", "title": "Swift" }, + { + "command": "codeQLDatabases.displaySwiftSelected", + "title": "Swift (selected)" + }, { "command": "codeQL.chooseDatabaseFolder", "title": "CodeQL: Choose Database from Folder" @@ -1568,38 +1604,74 @@ "command": "codeQLDatabases.displayAllLanguages", "when": "false" }, + { + "command": "codeQLDatabases.displayAllLanguagesSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayCpp", "when": "false" }, + { + "command": "codeQLDatabases.displayCppSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayCsharp", "when": "false" }, + { + "command": "codeQLDatabases.displayCsharpSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayGo", "when": "false" }, + { + "command": "codeQLDatabases.displayGoSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayJava", "when": "false" }, + { + "command": "codeQLDatabases.displayJavaSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayJavascript", "when": "false" }, + { + "command": "codeQLDatabases.displayJavascriptSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayPython", "when": "false" }, + { + "command": "codeQLDatabases.displayPythonSelected", + "when": "false" + }, { "command": "codeQLDatabases.displayRuby", "when": "false" }, + { + "command": "codeQLDatabases.displayRubySelected", + "when": "false" + }, { "command": "codeQLDatabases.displaySwift", "when": "false" }, + { + "command": "codeQLDatabases.displaySwiftSelected", + "when": "false" + }, { "command": "codeQLQueryHistory.openQueryContextMenu", "when": "false" @@ -1797,31 +1869,76 @@ ], "codeQLDatabases.languages": [ { - "command": "codeQLDatabases.displayAllLanguages" + "command": "codeQLDatabases.displayAllLanguages", + "when": "codeQLDatabases.languageFilter != All" + }, + { + "command": "codeQLDatabases.displayAllLanguagesSelected", + "when": "codeQLDatabases.languageFilter == All" + }, + { + "command": "codeQLDatabases.displayCpp", + "when": "codeQLDatabases.languageFilter != cpp" + }, + { + "command": "codeQLDatabases.displayCppSelected", + "when": "codeQLDatabases.languageFilter == cpp" + }, + { + "command": "codeQLDatabases.displayCsharp", + "when": "codeQLDatabases.languageFilter != csharp" + }, + { + "command": "codeQLDatabases.displayCsharpSelected", + "when": "codeQLDatabases.languageFilter == csharp" + }, + { + "command": "codeQLDatabases.displayGo", + "when": "codeQLDatabases.languageFilter != go" + }, + { + "command": "codeQLDatabases.displayGoSelected", + "when": "codeQLDatabases.languageFilter == go" }, { - "command": "codeQLDatabases.displayCpp" + "command": "codeQLDatabases.displayJava", + "when": "codeQLDatabases.languageFilter != java" }, { - "command": "codeQLDatabases.displayCsharp" + "command": "codeQLDatabases.displayJavaSelected", + "when": "codeQLDatabases.languageFilter == java" }, { - "command": "codeQLDatabases.displayGo" + "command": "codeQLDatabases.displayJavascript", + "when": "codeQLDatabases.languageFilter != javascript" }, { - "command": "codeQLDatabases.displayJava" + "command": "codeQLDatabases.displayJavascriptSelected", + "when": "codeQLDatabases.languageFilter == javascript" }, { - "command": "codeQLDatabases.displayJavascript" + "command": "codeQLDatabases.displayPython", + "when": "codeQLDatabases.languageFilter != python" }, { - "command": "codeQLDatabases.displayPython" + "command": "codeQLDatabases.displayPythonSelected", + "when": "codeQLDatabases.languageFilter == python" }, { - "command": "codeQLDatabases.displayRuby" + "command": "codeQLDatabases.displayRuby", + "when": "codeQLDatabases.languageFilter != ruby" + }, + { + "command": "codeQLDatabases.displayRubySelected", + "when": "codeQLDatabases.languageFilter == ruby" + }, + { + "command": "codeQLDatabases.displaySwift", + "when": "codeQLDatabases.languageFilter != swift" }, { - "command": "codeQLDatabases.displaySwift" + "command": "codeQLDatabases.displaySwiftSelected", + "when": "codeQLDatabases.languageFilter == swift" } ] }, diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 0d330afa9bd..d5e9a6a3011 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -228,6 +228,15 @@ export type LocalDatabasesCommands = { "codeQLDatabases.displayPython": () => Promise; "codeQLDatabases.displayRuby": () => Promise; "codeQLDatabases.displaySwift": () => Promise; + "codeQLDatabases.displayAllLanguagesSelected": () => Promise; + "codeQLDatabases.displayCppSelected": () => Promise; + "codeQLDatabases.displayCsharpSelected": () => Promise; + "codeQLDatabases.displayGoSelected": () => Promise; + "codeQLDatabases.displayJavaSelected": () => Promise; + "codeQLDatabases.displayJavascriptSelected": () => Promise; + "codeQLDatabases.displayPythonSelected": () => Promise; + "codeQLDatabases.displayRubySelected": () => Promise; + "codeQLDatabases.displaySwiftSelected": () => Promise; // Database panel context menu "codeQLDatabases.setCurrentDatabase": ( diff --git a/extensions/ql-vscode/src/databases/local-databases-ui.ts b/extensions/ql-vscode/src/databases/local-databases-ui.ts index c0bf418840f..8c85e4788a1 100644 --- a/extensions/ql-vscode/src/databases/local-databases-ui.ts +++ b/extensions/ql-vscode/src/databases/local-databases-ui.ts @@ -302,6 +302,26 @@ export class DatabaseUI extends DisposableObject { this, QueryLanguage.Swift, ), + "codeQLDatabases.displayAllLanguagesSelected": + this.handleChangeLanguageFilter.bind(this, "All"), + "codeQLDatabases.displayCppSelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.Cpp), + "codeQLDatabases.displayCsharpSelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.CSharp), + "codeQLDatabases.displayGoSelected": this.handleChangeLanguageFilter.bind( + this, + QueryLanguage.Go, + ), + "codeQLDatabases.displayJavaSelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.Java), + "codeQLDatabases.displayJavascriptSelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.Javascript), + "codeQLDatabases.displayPythonSelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.Python), + "codeQLDatabases.displayRubySelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.Ruby), + "codeQLDatabases.displaySwiftSelected": + this.handleChangeLanguageFilter.bind(this, QueryLanguage.Swift), "codeQLDatabases.removeDatabase": createMultiSelectionCommand( this.handleRemoveDatabase.bind(this), ), @@ -594,6 +614,11 @@ export class DatabaseUI extends DisposableObject { private async handleChangeLanguageFilter(languageFilter: LanguageFilter) { this.treeDataProvider.languageFilter = languageFilter; + await this.app.commands.execute( + "setContext", + "codeQLDatabases.languageFilter", + languageFilter, + ); } private async handleUpgradeCurrentDatabase(): Promise {