@@ -131,6 +131,7 @@ function collectClientOptions(
131
131
outputChannel : WorkspaceChannel ,
132
132
ruby : Ruby ,
133
133
isMainWorkspace : boolean ,
134
+ telemetry : vscode . TelemetryLogger ,
134
135
) : LanguageClientOptions {
135
136
const pullOn : "change" | "save" | "both" =
136
137
configuration . get ( "pullDiagnosticsOn" ) ! ;
@@ -204,7 +205,7 @@ function collectClientOptions(
204
205
outputChannel,
205
206
revealOutputChannelOn : RevealOutputChannelOn . Never ,
206
207
diagnosticPullOptions,
207
- errorHandler : new ClientErrorHandler ( workspaceFolder ) ,
208
+ errorHandler : new ClientErrorHandler ( workspaceFolder , telemetry ) ,
208
209
initializationOptions : {
209
210
enabledFeatures,
210
211
experimentalFeaturesEnabled : configuration . get (
@@ -221,9 +222,14 @@ function collectClientOptions(
221
222
222
223
class ClientErrorHandler implements ErrorHandler {
223
224
private readonly workspaceFolder : vscode . WorkspaceFolder ;
225
+ private readonly telemetry : vscode . TelemetryLogger ;
224
226
225
- constructor ( workspaceFolder : vscode . WorkspaceFolder ) {
227
+ constructor (
228
+ workspaceFolder : vscode . WorkspaceFolder ,
229
+ telemetry : vscode . TelemetryLogger ,
230
+ ) {
226
231
this . workspaceFolder = workspaceFolder ;
232
+ this . telemetry = telemetry ;
227
233
}
228
234
229
235
error (
@@ -235,6 +241,19 @@ class ClientErrorHandler implements ErrorHandler {
235
241
}
236
242
237
243
async closed ( ) : Promise < CloseHandlerResult > {
244
+ const label = vscode . workspace
245
+ . getConfiguration ( "rubyLsp" )
246
+ . get ( "useLauncher" )
247
+ ? "launcher"
248
+ : "direct" ;
249
+
250
+ this . telemetry . logUsage ( "ruby_lsp.launch_failure" , {
251
+ type : "counter" ,
252
+ attributes : {
253
+ label,
254
+ } ,
255
+ } ) ;
256
+
238
257
const answer = await vscode . window . showErrorMessage (
239
258
`Launching the Ruby LSP failed. This typically happens due to an error with version manager
240
259
integration or Bundler issues.
@@ -310,6 +329,7 @@ export default class Client extends LanguageClient implements ClientInterface {
310
329
outputChannel ,
311
330
ruby ,
312
331
isMainWorkspace ,
332
+ telemetry ,
313
333
) ,
314
334
debugMode ,
315
335
) ;
0 commit comments