on master help sign in
dap: add missing fields to structs
e11b67bDmitry Sharshakov
helix-dap/examples/dap-basic.rs+3
@@ -30,6 +30,9 @@ pub async fn main() -> Result<()> {
30 vec![SourceBreakpoint {
30 vec![SourceBreakpoint {
31 line: 8,
31 line: 8,
32 column: Some(2),
32 column: Some(2),
33+ condition: None,
34+ hit_condition: None,
35+ log_message: None,
33 }]
36 }]
34 )
37 )
35 .await
38 .await
helix-dap/src/client.rs+40−13
@@ -15,12 +15,13 @@ use tokio::{
15#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
15#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
16#[serde(rename_all = "camelCase")]
16#[serde(rename_all = "camelCase")]
17pub struct DebuggerCapabilities {
17pub struct DebuggerCapabilities {
18− supports_configuration_done_request: bool,
18+ pub supports_configuration_done_request: Option<bool>,
19− supports_function_breakpoints: bool,
19+ pub supports_function_breakpoints: Option<bool>,
20− supports_conditional_breakpoints: bool,
20+ pub supports_conditional_breakpoints: Option<bool>,
21− supports_exception_info_request: bool,
21+ pub supports_exception_info_request: Option<bool>,
22− support_terminate_debuggee: bool,
22+ pub support_terminate_debuggee: Option<bool>,
23− supports_delayed_stack_trace_loading: bool,
23+ pub supports_delayed_stack_trace_loading: Option<bool>,
24+ // TODO: complete this
24}
25}
25
26
26#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
27#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -43,7 +44,7 @@ struct InitializeArguments {
43 supports_invalidated_event: bool,
44 supports_invalidated_event: bool,
44}
45}
45
46
46−// TODO: split out
47+// TODO: split out, as it's a debugger-specific payload not covered by standard
47#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
48#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
48#[serde(rename_all = "camelCase")]
49#[serde(rename_all = "camelCase")]
49struct LaunchArguments {
50struct LaunchArguments {
@@ -51,10 +52,24 @@ struct LaunchArguments {
51 program: String,
52 program: String,
52}
53}
53
54
55+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
56+#[serde(rename_all = "camelCase")]
57+pub struct Checksum {
58+ pub algorithm: String,
59+ pub checksum: String,
60+}
61+
54#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
62#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
55#[serde(rename_all = "camelCase")]
63#[serde(rename_all = "camelCase")]
56pub struct Source {
64pub struct Source {
65+ pub name: Option<String>,
57− path: Option<String>,
66+ pub path: Option<String>,
67+ pub source_reference: Option<usize>,
68+ pub presentation_hint: Option<String>,
69+ pub origin: Option<String>,
70+ pub sources: Option<Vec<Source>>,
71+ pub adapter_data: Option<Value>,
72+ pub checksums: Option<Vec<Checksum>>,
58}
73}
59
74
60#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
75#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -62,6 +77,9 @@ pub struct Source {
62pub struct SourceBreakpoint {
77pub struct SourceBreakpoint {
63 pub line: usize,
78 pub line: usize,
64 pub column: Option<usize>,
79 pub column: Option<usize>,
80+ pub condition: Option<String>,
81+ pub hit_condition: Option<String>,
82+ pub log_message: Option<String>,
65}
83}
66
84
67#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
85#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -69,6 +87,8 @@ pub struct SourceBreakpoint {
69struct SetBreakpointsArguments {
87struct SetBreakpointsArguments {
70 source: Source,
88 source: Source,
71 breakpoints: Option<Vec<SourceBreakpoint>>,
89 breakpoints: Option<Vec<SourceBreakpoint>>,
90+ // lines is deprecated
91+ source_modified: Option<bool>,
72}
92}
73
93
74#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
94#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -137,7 +157,7 @@ pub struct StackFrame {
137 pub end_column: Option<usize>,
157 pub end_column: Option<usize>,
138 pub can_restart: Option<bool>,
158 pub can_restart: Option<bool>,
139 pub instruction_pointer_reference: Option<String>,
159 pub instruction_pointer_reference: Option<String>,
140− // module_id
160+ pub module_id: Option<Value>,
141 pub presentation_hint: Option<String>,
161 pub presentation_hint: Option<String>,
142}
162}
143
163
@@ -271,9 +291,6 @@ impl Client {
271 capabilities: None,
291 capabilities: None,
272 };
292 };
273
293
274− // TODO: async client.initialize()
275− // maybe use an arc<atomic> flag
276−
277 Ok(client)
294 Ok(client)
278 }
295 }
279
296
@@ -374,8 +391,18 @@ impl Client {
374 breakpoints: Vec<SourceBreakpoint>,
391 breakpoints: Vec<SourceBreakpoint>,
375 ) -> Result<Option<Vec<Breakpoint>>> {
392 ) -> Result<Option<Vec<Breakpoint>>> {
376 let args = SetBreakpointsArguments {
393 let args = SetBreakpointsArguments {
377− source: Source { path: Some(file) },
394+ source: Source {
395+ path: Some(file),
396+ name: None,
397+ source_reference: None,
398+ presentation_hint: None,
399+ origin: None,
400+ sources: None,
401+ adapter_data: None,
402+ checksums: None,
403+ },
378 breakpoints: Some(breakpoints),
404 breakpoints: Some(breakpoints),
405+ source_modified: Some(false),
379 };
406 };
380
407
381 let response = self
408 let response = self