@@ -13,6 +13,7 @@ import { LanguageStatusSeverity } from "vscode";
1313import { TestControllerManager } from "./testcontrollermanager" ;
1414
1515const NOT_INSTALLED = "not installed" ;
16+
1617type QuickPickActionItem = {
1718 label ?: string ;
1819 getLabel ?( folder ?: vscode . WorkspaceFolder ) : string | undefined ;
@@ -117,7 +118,7 @@ export class LanguageToolsManager {
117118 description : "Restarts the language server" ,
118119 async action ( folder ?: vscode . WorkspaceFolder ) : Promise < void > {
119120 if ( folder !== undefined ) {
120- await vscode . commands . executeCommand ( "robotcode.restartLanguageServers" ) ;
121+ await vscode . commands . executeCommand ( "robotcode.restartLanguageServers" , folder ?. uri ) ;
121122 }
122123 } ,
123124 } ,
@@ -126,7 +127,7 @@ export class LanguageToolsManager {
126127 description : "Clears the cache and restarts the language server" ,
127128 async action ( folder ?: vscode . WorkspaceFolder ) : Promise < void > {
128129 if ( folder !== undefined ) {
129- await vscode . commands . executeCommand ( "robotcode.clearCacheRestartLanguageServers" ) ;
130+ await vscode . commands . executeCommand ( "robotcode.clearCacheRestartLanguageServers" , folder ?. uri ) ;
130131 }
131132 } ,
132133 } ,
@@ -220,6 +221,38 @@ export class LanguageToolsManager {
220221 ) ,
221222
222223 vscode . commands . registerCommand ( "robotcode.showToolMenu" , async ( folder ?: vscode . WorkspaceFolder ) => {
224+ let f = folder ;
225+
226+ if ( f === undefined ) {
227+ if ( vscode . window . activeTextEditor !== undefined ) {
228+ f = vscode . workspace . getWorkspaceFolder ( vscode . window . activeTextEditor . document . uri ) ;
229+ if ( f === undefined ) {
230+ vscode . window . showErrorMessage ( "Active document does not belong to a workspace folder." ) ;
231+ return ;
232+ }
233+ } else {
234+ if ( vscode . workspace . workspaceFolders !== undefined && vscode . workspace . workspaceFolders . length === 1 ) {
235+ f = vscode . workspace . workspaceFolders [ 0 ] ;
236+ } else {
237+ if ( vscode . workspace . workspaceFolders !== undefined && vscode . workspace . workspaceFolders . length > 1 ) {
238+ f = await vscode . window . showWorkspaceFolderPick ( {
239+ placeHolder : "Select a workspace folder" ,
240+ } ) ;
241+ }
242+ }
243+ }
244+ }
245+
246+ if ( f !== undefined && this . languageClientsManager . hasClientForResource ( f . uri ) ) {
247+ folder = f ;
248+ } else {
249+ vscode . window . showErrorMessage ( "No RobotCode Language Server running for this workspace folder." ) ;
250+ }
251+
252+ if ( folder === undefined ) {
253+ return ;
254+ }
255+
223256 const result = await vscode . window . showQuickPick (
224257 this . toolMenu . map ( ( v ) => {
225258 return {
0 commit comments