@@ -4,66 +4,59 @@ local M = {}
44
55--- @param expression string
66--- @param default_expanded boolean
7- --- @param co thread ?
8- M .evaluate_expression = function (expression , default_expanded , co )
7+ M .evaluate_expression = function (expression , default_expanded )
98 local session = assert (require (" dap" ).session (), " has active session" )
109
11- coroutine.wrap (function ()
12- local frame_id = session .current_frame and session .current_frame .id
13-
14- local err , response =
15- session :request (" evaluate" , { expression = expression , context = " watch" , frameId = frame_id })
10+ local frame_id = session .current_frame and session .current_frame .id
1611
17- local previous_expression_view = state .watched_expressions [expression ]
12+ local err , response =
13+ session :request (" evaluate" , { expression = expression , context = " watch" , frameId = frame_id })
1814
19- local previous_result = previous_expression_view
20- and previous_expression_view .response
21- and previous_expression_view .response .result
15+ local previous_expression_view = state .watched_expressions [expression ]
2216
23- if previous_expression_view and response then
24- previous_expression_view .updated = previous_result ~= response . result
25- end
17+ local previous_result = previous_expression_view
18+ and previous_expression_view .response
19+ and previous_expression_view . response . result
2620
27- if previous_expression_view and err then
28- previous_expression_view .children = nil
29- previous_expression_view .updated = false
30- previous_expression_view .expanded = false
31- end
21+ if previous_expression_view and response then
22+ previous_expression_view .updated = previous_result ~= response .result
23+ end
3224
33- --- @type dapview.ExpressionView
34- local default_expression_view = {
35- id = state .expr_count ,
36- response = response ,
37- err = err ,
38- updated = false ,
39- expanded = default_expanded ,
40- children = nil ,
41- }
25+ if previous_expression_view and err then
26+ previous_expression_view .children = nil
27+ previous_expression_view .updated = false
28+ previous_expression_view .expanded = false
29+ end
4230
43- if previous_expression_view then
44- previous_expression_view .response = response
45- previous_expression_view .err = err
46- end
31+ --- @type dapview.ExpressionView
32+ local default_expression_view = {
33+ id = state .expr_count ,
34+ response = response ,
35+ err = err ,
36+ updated = false ,
37+ expanded = default_expanded ,
38+ children = nil ,
39+ }
40+
41+ if previous_expression_view then
42+ previous_expression_view .response = response
43+ previous_expression_view .err = err
44+ end
4745
48- --- @type dapview.ExpressionView
49- local new_expression_view = previous_expression_view or default_expression_view
46+ --- @type dapview.ExpressionView
47+ local new_expression_view = previous_expression_view or default_expression_view
5048
51- if new_expression_view .expanded then
52- local variables_reference = response and response .variablesReference
49+ if new_expression_view .expanded then
50+ local variables_reference = response and response .variablesReference
5351
54- if variables_reference and variables_reference > 0 then
55- new_expression_view .children = M .expand_variable (variables_reference , new_expression_view .children )
56- else
57- new_expression_view .children = nil
58- end
52+ if variables_reference and variables_reference > 0 then
53+ new_expression_view .children = M .expand_variable (variables_reference , new_expression_view .children )
54+ else
55+ new_expression_view .children = nil
5956 end
57+ end
6058
61- state .watched_expressions [expression ] = new_expression_view
62-
63- if co then
64- coroutine.resume (co )
65- end
66- end )()
59+ state .watched_expressions [expression ] = new_expression_view
6760end
6861
6962--- @param expr string
9184
9285--- @param variables_reference number
9386--- @param previous_expansion_result dapview.VariableView[] ?
94- --- @param co thread ?
95- M .expand_variable = function (variables_reference , previous_expansion_result , co )
87+ M .expand_variable = function (variables_reference , previous_expansion_result )
9688 local session = assert (require (" dap" ).session (), " has active session" )
9789
9890 local frame_id = session .current_frame and session .current_frame .id
@@ -152,34 +144,15 @@ M.expand_variable = function(variables_reference, previous_expansion_result, co)
152144 new_variable_view .children , new_variable_view .err =
153145 M .expand_variable (variables_reference_ , new_variable_view .children )
154146 else
155- -- We have to reset the children if the variable is no longer, otherwise it retains the old value indefinely
147+ -- We have to reset the children if the variable is no longer, otherwise it retains the old value indefinitely
156148 new_variable_view .children = nil
157149 end
158150 end
159151
160152 varible_views [k ] = new_variable_view
161153 end
162154
163- if co then
164- coroutine.resume (co )
165- end
166-
167155 return # varible_views > 0 and varible_views or nil , err
168156end
169157
170- --- @param co thread ?
171- M .reevaluate_all_expressions = function (co )
172- local i = 0
173- local size = vim .tbl_count (state .watched_expressions )
174-
175- for expr , _ in pairs (state .watched_expressions ) do
176- i = i + 1
177-
178- -- This assumes that the last evaluation will be the last one to fnish, but I'm not sure that's the case?
179- M .evaluate_expression (expr , true , i == size and co or nil )
180- end
181-
182- coroutine.yield (co )
183- end
184-
185158return M
0 commit comments