@@ -249,8 +249,6 @@ def process
249249 end
250250 }
251251 send_response req , breakpoints : ( bps . map do |bp | { verified : true , } end )
252- when 'setFunctionBreakpoints'
253- send_response req
254252 when 'setExceptionBreakpoints'
255253 process_filter = -> ( filter_id ) {
256254 case filter_id
@@ -354,7 +352,8 @@ def process
354352 'variables' ,
355353 'evaluate' ,
356354 'source' ,
357- 'completions'
355+ 'completions' ,
356+ 'setFunctionBreakpoints'
358357 @q_msg << req
359358
360359 else
@@ -430,6 +429,8 @@ def fail_response req, **kw
430429
431430 def process_protocol_request req
432431 case req [ 'command' ]
432+ when 'setFunctionBreakpoints'
433+ @tc << [ :dap , :breakpoints , req ]
433434 when 'stepBack'
434435 if @tc . recorder &.can_step_back?
435436 @tc << [ :step , :back ]
@@ -559,6 +560,17 @@ def dap_event args
559560 end
560561 }
561562 @ui . respond req , result
563+ when :breakpoints
564+ breakpoints = result [ :breakpoints ] . map do |bp |
565+ if bp
566+ add_bp ( bp )
567+ { verified : true , message : bp . inspect }
568+ else
569+ { verified : false , message : nil }
570+ end
571+ end
572+
573+ @ui . respond req , breakpoints : breakpoints
562574 when :scopes
563575 frame_id = req . dig ( 'arguments' , 'frameId' )
564576 local_scope = result [ :scopes ] . first
@@ -613,6 +625,17 @@ def process_dap args
613625 req = args . shift
614626
615627 case type
628+ when :breakpoints
629+ bps = req . dig ( "arguments" , "breakpoints" )
630+ SESSION . clear_method_breakpoints
631+
632+ breakpoints = bps . map do |bp |
633+ if bp [ "name" ] &.match ( Session ::METHOD_SIGNATURE_REGEXP )
634+ make_breakpoint [ :method , $1, $2, $3]
635+ end
636+ end
637+
638+ event! :dap_result , :breakpoints , req , { breakpoints : breakpoints }
616639 when :backtrace
617640 event! :dap_result , :backtrace , req , {
618641 stackFrames : @target_frames . map { |frame |
0 commit comments