@@ -13,7 +13,7 @@ defmodule ElixirLS.Debugger.Server do
13
13
"""
14
14
15
15
defmodule ServerError do
16
- defexception [ :message , :format , :variables ]
16
+ defexception [ :message , :format , :variables , { :send_telemetry , true } , { :show_user , false } ]
17
17
end
18
18
19
19
alias ElixirLS.Debugger . {
@@ -290,7 +290,14 @@ defmodule ElixirLS.Debugger.Server do
290
290
291
291
case result do
292
292
{ :error , e = % ServerError { } } ->
293
- Output . send_error_response ( packet , e . message , e . format , e . variables )
293
+ Output . send_error_response (
294
+ packet ,
295
+ e . message ,
296
+ e . format ,
297
+ e . variables ,
298
+ e . send_telemetry ,
299
+ e . show_user
300
+ )
294
301
295
302
{ :ok , response_body } ->
296
303
Output . send_response ( packet , response_body )
@@ -354,14 +361,22 @@ defmodule ElixirLS.Debugger.Server do
354
361
end
355
362
rescue
356
363
e in ServerError ->
357
- Output . send_error_response ( packet , e . message , e . format , e . variables )
364
+ Output . send_error_response (
365
+ packet ,
366
+ e . message ,
367
+ e . format ,
368
+ e . variables ,
369
+ e . send_telemetry ,
370
+ e . show_user
371
+ )
372
+
358
373
{ :noreply , state }
359
374
catch
360
375
kind , error ->
361
376
{ payload , stacktrace } = Exception . blame ( kind , error , __STACKTRACE__ )
362
377
message = Exception . format ( kind , payload , stacktrace )
363
378
Output . debugger_console ( message )
364
- Output . send_error_response ( packet , "internalServerError" , message , % { } )
379
+ Output . send_error_response ( packet , "internalServerError" , message , % { } , true , false )
365
380
{ :noreply , state }
366
381
end
367
382
end
@@ -444,7 +459,9 @@ defmodule ElixirLS.Debugger.Server do
444
459
packet ,
445
460
"internalServerError" ,
446
461
"Request handler exited with reason #{ Exception . format_exit ( reason ) } " ,
447
- % { }
462
+ % { } ,
463
+ true ,
464
+ false
448
465
)
449
466
450
467
if MapSet . member? ( state . progresses , request_id ) do
@@ -503,23 +520,26 @@ defmodule ElixirLS.Debugger.Server do
503
520
raise ServerError ,
504
521
message: "invalidRequest" ,
505
522
format: "0-based lines are not supported" ,
506
- variables: % { }
523
+ variables: % { } ,
524
+ show_user: true
507
525
end
508
526
509
527
# columnsStartAt1 is true by default and we only support 1-based indexing
510
528
if client_info [ "columnsStartAt1" ] == false do
511
529
raise ServerError ,
512
530
message: "invalidRequest" ,
513
531
format: "0-based columns are not supported" ,
514
- variables: % { }
532
+ variables: % { } ,
533
+ show_user: true
515
534
end
516
535
517
536
# pathFormat is `path` by default and we do not support other, e.g. `uri`
518
537
if client_info [ "pathFormat" ] not in [ nil , "path" ] do
519
538
raise ServerError ,
520
539
message: "invalidRequest" ,
521
540
format: "pathFormat {pathFormat} is not supported" ,
522
- variables: % { "pathFormat" => client_info [ "pathFormat" ] }
541
+ variables: % { "pathFormat" => client_info [ "pathFormat" ] } ,
542
+ show_user: true
523
543
end
524
544
525
545
{ capabilities ( ) , % { state | client_info: client_info } }
@@ -542,7 +562,7 @@ defmodule ElixirLS.Debugger.Server do
542
562
case requests do
543
563
% { ^ request_or_progress_id => { pid , packet } } ->
544
564
Process . exit ( pid , :cancelled )
545
- Output . send_error_response ( packet , "cancelled" , "cancelled" , % { } )
565
+ Output . send_error_response ( packet , "cancelled" , "cancelled" , % { } , false , false )
546
566
547
567
# send progressEnd if cancelling a progress
548
568
if MapSet . member? ( state . progresses , request_or_progress_id ) do
@@ -610,7 +630,8 @@ defmodule ElixirLS.Debugger.Server do
610
630
raise ServerError ,
611
631
message: "invalidRequest" ,
612
632
format: "Cannot set breakpoints when running with no debug" ,
613
- variables: % { }
633
+ variables: % { } ,
634
+ show_user: true
614
635
end
615
636
616
637
defp handle_request (
@@ -659,7 +680,8 @@ defmodule ElixirLS.Debugger.Server do
659
680
raise ServerError ,
660
681
message: "invalidRequest" ,
661
682
format: "Cannot set function breakpoints when running with no debug" ,
662
- variables: % { }
683
+ variables: % { } ,
684
+ show_user: true
663
685
end
664
686
665
687
defp handle_request (
@@ -807,7 +829,8 @@ defmodule ElixirLS.Debugger.Server do
807
829
raise ServerError ,
808
830
message: "invalidRequest" ,
809
831
format: "Cannot pause process when running with no debug" ,
810
- variables: % { }
832
+ variables: % { } ,
833
+ show_user: true
811
834
end
812
835
813
836
defp handle_request ( pause_req ( _ , thread_id ) , state = % __MODULE__ { } ) do
@@ -821,7 +844,8 @@ defmodule ElixirLS.Debugger.Server do
821
844
format: "threadId not found: {threadId}" ,
822
845
variables: % {
823
846
"threadId" => inspect ( thread_id )
824
- }
847
+ } ,
848
+ show_user: true
825
849
end
826
850
827
851
{ % { } , state }
@@ -1273,7 +1297,12 @@ defmodule ElixirLS.Debugger.Server do
1273
1297
message = Exception . format ( kind , payload , stacktrace )
1274
1298
1275
1299
reraise (
1276
- % ServerError { message: "evaluateError" , format: message , variables: % { } } ,
1300
+ % ServerError {
1301
+ message: "evaluateError" ,
1302
+ format: message ,
1303
+ variables: % { } ,
1304
+ send_telemetry: false
1305
+ } ,
1277
1306
stacktrace
1278
1307
)
1279
1308
end
@@ -1531,7 +1560,8 @@ defmodule ElixirLS.Debugger.Server do
1531
1560
raise ServerError ,
1532
1561
message: "argumentError" ,
1533
1562
format: "stackTraceMode must be `all`, `no_tail`, or `false`" ,
1534
- variables: % { }
1563
+ variables: % { } ,
1564
+ show_user: true
1535
1565
end
1536
1566
1537
1567
defp capabilities do
@@ -1659,7 +1689,8 @@ defmodule ElixirLS.Debugger.Server do
1659
1689
raise ServerError ,
1660
1690
message: "argumentError" ,
1661
1691
format: "Unable to compile file pattern {pattern} into a regex: {error}" ,
1662
- variables: % { "pattern" => inspect ( pattern ) , "error" => inspect ( error ) }
1692
+ variables: % { "pattern" => inspect ( pattern ) , "error" => inspect ( error ) } ,
1693
+ show_user: true
1663
1694
end
1664
1695
end )
1665
1696
@@ -2009,7 +2040,9 @@ defmodule ElixirLS.Debugger.Server do
2009
2040
format: "Kernel.dbg breakpoints do not support {command} command" ,
2010
2041
variables: % {
2011
2042
"command" => command
2012
- }
2043
+ } ,
2044
+ show_user: true ,
2045
+ send_telemetry: false
2013
2046
end
2014
2047
end
2015
2048
0 commit comments