|
117 | 117 | Seq = Seq0 |
118 | 118 | ). |
119 | 119 |
|
| 120 | +:- det(da_server_handled_debugee_message/7). |
120 | 121 | da_server_handled_debugee_message(_DebugeeThreadId, |
121 | 122 | loaded_source(Reason, SourcePath), |
122 | 123 | Out, State, State, Seq0, Seq) :- |
| 124 | + !, |
123 | 125 | file_base_name(SourcePath, BaseName), |
124 | 126 | dap_event(Out, Seq0, "loadedSource", _{ reason : Reason, |
125 | 127 | source : _{ name : BaseName, |
|
131 | 133 | da_server_handled_debugee_message(DebugeeThreadId, |
132 | 134 | stopped(Reason, Description, Text, BreakpointIds), |
133 | 135 | Out, State, State, Seq0, Seq) :- |
| 136 | + !, |
134 | 137 | dap_event(Out, Seq0, "stopped", _{ threadId : DebugeeThreadId, |
135 | 138 | reason : Reason, |
136 | 139 | description : Description, |
|
142 | 145 | da_server_handled_debugee_message(_DebugeeThreadId, |
143 | 146 | stack_trace(RequestSeq, StackFrames0), |
144 | 147 | Out, State, State, Seq0, Seq) :- |
| 148 | + !, |
145 | 149 | maplist(prolog_dap_stack_frame, StackFrames0, StackFrames), |
146 | 150 | dap_response(Out, Seq0, RequestSeq, "stackTrace", _{stackFrames:StackFrames}), |
147 | 151 | succ(Seq0, Seq). |
148 | 152 | da_server_handled_debugee_message(_DebugeeThreadId, |
149 | 153 | exception_info(RequestSeq, ExceptionTerm), |
150 | 154 | Out, State, State, Seq0, Seq) :- |
| 155 | + !, |
151 | 156 | prolog_dap_exception(ExceptionTerm, ExceptionId), |
152 | 157 | dap_response(Out, Seq0, RequestSeq, "exceptionInfo", _{exceptionId:ExceptionId, description:ExceptionId}), |
153 | 158 | succ(Seq0, Seq). |
154 | 159 | da_server_handled_debugee_message(_DebugeeThreadId, |
155 | 160 | scopes(RequestSeq, Scopes0), |
156 | 161 | Out, State, State, Seq0, Seq) :- |
| 162 | + !, |
157 | 163 | maplist(prolog_dap_scope, Scopes0, Scopes), |
158 | 164 | dap_response(Out, Seq0, RequestSeq, "scopes", _{scopes:Scopes}), |
159 | 165 | succ(Seq0, Seq). |
160 | 166 | da_server_handled_debugee_message(_DebugeeThreadId, |
161 | 167 | variables(RequestSeq, Variables0), |
162 | 168 | Out, State, State, Seq0, Seq) :- |
| 169 | + !, |
163 | 170 | maplist(prolog_dap_variable, Variables0, Variables), |
164 | 171 | dap_response(Out, Seq0, RequestSeq, "variables", _{variables:Variables}), |
165 | 172 | succ(Seq0, Seq). |
| 173 | +da_server_handled_debugee_message(_DebugeeThreadId, |
| 174 | + evaluate(RequestSeq, Result, Bindings), |
| 175 | + Out, State, State, Seq0, Seq) :- |
| 176 | + !, |
| 177 | + format(string(Res), "~w~n~w.", [Bindings, Result]), |
| 178 | + dap_response(Out, Seq0, RequestSeq, "evaluate", _{result:Res, variablesReference:0}), |
| 179 | + succ(Seq0, Seq). |
166 | 180 | da_server_handled_debugee_message(_DebugeeThreadId, |
167 | 181 | exited(_ExitCode), |
168 | | - _Out, State, State, Seq, Seq). |
| 182 | + _Out, State, State, Seq, Seq) :- !. |
169 | 183 | % dap_event(Out, Seq0, "exited", _{exitCode:ExitCode}), |
170 | 184 | % succ(Seq0, Seq). |
171 | 185 | da_server_handled_debugee_message(DebugeeThreadId, |
172 | 186 | thread_exited, |
173 | 187 | Out, State0, State, Seq0, Seq) :- |
| 188 | + !, |
174 | 189 | dap_event(Out, Seq0, "thread", _{ reason : "exited", |
175 | 190 | threadId : DebugeeThreadId |
176 | 191 | }), |
|
337 | 352 | _{ arguments:Args } :< Message, |
338 | 353 | _{ variablesReference:VariablesRef } :< Args, |
339 | 354 | maplist({RequestSeq, VariablesRef}/[debugee(PrologThreadId, _, _)]>>thread_send_message(PrologThreadId, variables(RequestSeq, VariablesRef)), State). |
| 355 | +da_server_command("evaluate", RequestSeq, Message, _Out, _W, State, State, Seq, Seq) :- |
| 356 | + _{ arguments : Args } :< Message, |
| 357 | + _{ expression : SourceTerm, |
| 358 | + frameId : FrameId, |
| 359 | + context : Context |
| 360 | + } :< Args, |
| 361 | + debug(dap(tracer), "handling evaluate request arguments with ~w ~w ~w", [FrameId, SourceTerm, Context]), |
| 362 | + maplist({RequestSeq, FrameId, SourceTerm}/[debugee(PrologThreadId, _, _)]>>thread_send_message(PrologThreadId, evaluate(RequestSeq, FrameId, SourceTerm)), State). |
340 | 363 | da_server_command("setBreakpoints", RequestSeq, Message, Out, _W, State, State, Seq0, Seq) :- |
341 | 364 | _{ arguments : Args } :< Message, |
342 | 365 | _{ source : DAPSource, |
|
394 | 417 |
|
395 | 418 | da_server_capabilities(_{ supportsConfigurationDoneRequest : true, |
396 | 419 | supportsExceptionInfoRequest : true, |
397 | | - supportsRestartFrame : true |
| 420 | + supportsRestartFrame : true, |
| 421 | + supportsEvaluateForHovers : true |
398 | 422 | } |
399 | 423 | ). |
400 | 424 |
|
|
0 commit comments