@@ -13,6 +13,7 @@ import { LanguageStatusSeverity } from "vscode";
13
13
import { TestControllerManager } from "./testcontrollermanager" ;
14
14
15
15
const NOT_INSTALLED = "not installed" ;
16
+
16
17
type QuickPickActionItem = {
17
18
label ?: string ;
18
19
getLabel ?( folder ?: vscode . WorkspaceFolder ) : string | undefined ;
@@ -117,7 +118,7 @@ export class LanguageToolsManager {
117
118
description : "Restarts the language server" ,
118
119
async action ( folder ?: vscode . WorkspaceFolder ) : Promise < void > {
119
120
if ( folder !== undefined ) {
120
- await vscode . commands . executeCommand ( "robotcode.restartLanguageServers" ) ;
121
+ await vscode . commands . executeCommand ( "robotcode.restartLanguageServers" , folder ?. uri ) ;
121
122
}
122
123
} ,
123
124
} ,
@@ -126,7 +127,7 @@ export class LanguageToolsManager {
126
127
description : "Clears the cache and restarts the language server" ,
127
128
async action ( folder ?: vscode . WorkspaceFolder ) : Promise < void > {
128
129
if ( folder !== undefined ) {
129
- await vscode . commands . executeCommand ( "robotcode.clearCacheRestartLanguageServers" ) ;
130
+ await vscode . commands . executeCommand ( "robotcode.clearCacheRestartLanguageServers" , folder ?. uri ) ;
130
131
}
131
132
} ,
132
133
} ,
@@ -220,6 +221,38 @@ export class LanguageToolsManager {
220
221
) ,
221
222
222
223
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
+
223
256
const result = await vscode . window . showQuickPick (
224
257
this . toolMenu . map ( ( v ) => {
225
258
return {
0 commit comments