on master help sign in
compat: add all possible debugger caps
e388079Dmitry Sharshakov
helix-dap/examples/dap-basic.rs+1−1
@@ -41,7 +41,7 @@ pub async fn main() -> Result<()> {
41 tokio::spawn(output(output_event));
41 tokio::spawn(output(output_event));
42
42
43 println!("init: {:?}", client.initialize("go".to_owned()).await);
43 println!("init: {:?}", client.initialize("go".to_owned()).await);
44− println!("caps: {:#?}", client.capabilities());
44+ println!("caps: {:?}", client.capabilities());
45
45
46 let args = LaunchArguments {
46 let args = LaunchArguments {
47 mode: "exec".to_owned(),
47 mode: "exec".to_owned(),
helix-dap/src/client.rs+62−1
@@ -20,16 +20,77 @@ use tokio::{
20 },
20 },
21};
21};
22
22
23+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
24+#[serde(rename_all = "camelCase")]
25+pub struct ColumnDescriptor {
26+ pub attribute_name: String,
27+ pub label: String,
28+ pub format: Option<String>,
29+ #[serde(rename = "type")]
30+ pub col_type: Option<String>,
31+ pub width: Option<usize>,
32+}
33+
34+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
35+#[serde(rename_all = "camelCase")]
36+pub struct ExceptionBreakpointsFilter {
37+ pub filter: String,
38+ pub label: String,
39+ pub description: Option<String>,
40+ pub default: Option<bool>,
41+ pub supports_condition: Option<bool>,
42+ pub condition_description: Option<String>,
43+}
44+
23#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
45#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
24#[serde(rename_all = "camelCase")]
46#[serde(rename_all = "camelCase")]
25pub struct DebuggerCapabilities {
47pub struct DebuggerCapabilities {
26 pub supports_configuration_done_request: Option<bool>,
48 pub supports_configuration_done_request: Option<bool>,
27 pub supports_function_breakpoints: Option<bool>,
49 pub supports_function_breakpoints: Option<bool>,
28 pub supports_conditional_breakpoints: Option<bool>,
50 pub supports_conditional_breakpoints: Option<bool>,
51+ pub supports_hit_conditional_breakpoints: Option<bool>,
52+ pub supports_evaluate_for_hovers: Option<bool>,
53+ pub supports_step_back: Option<bool>,
54+ pub supports_set_variable: Option<bool>,
55+ pub supports_restart_frame: Option<bool>,
56+ pub supports_goto_targets_request: Option<bool>,
57+ pub supports_step_in_targets_request: Option<bool>,
58+ pub supports_completions_request: Option<bool>,
59+ pub supports_modules_request: Option<bool>,
60+ pub supports_restart_request: Option<bool>,
61+ pub supports_exception_options: Option<bool>,
62+ pub supports_value_formatting_options: Option<bool>,
29 pub supports_exception_info_request: Option<bool>,
63 pub supports_exception_info_request: Option<bool>,
30 pub support_terminate_debuggee: Option<bool>,
64 pub support_terminate_debuggee: Option<bool>,
65+ pub support_suspend_debuggee: Option<bool>,
31 pub supports_delayed_stack_trace_loading: Option<bool>,
66 pub supports_delayed_stack_trace_loading: Option<bool>,
32− // TODO: complete this
67+ pub supports_loaded_sources_request: Option<bool>,
68+ pub supports_log_points: Option<bool>,
69+ pub supports_terminate_threads_request: Option<bool>,
70+ pub supports_set_expression: Option<bool>,
71+ pub supports_terminate_request: Option<bool>,
72+ pub supports_data_breakpoints: Option<bool>,
73+ pub supports_read_memory_request: Option<bool>,
74+ pub supports_write_memory_request: Option<bool>,
75+ pub supports_disassemble_request: Option<bool>,
76+ pub supports_cancel_request: Option<bool>,
77+ pub supports_breakpoint_locations_request: Option<bool>,
78+ pub supports_clipboard_context: Option<bool>,
79+ pub supports_stepping_granularity: Option<bool>,
80+ pub supports_instruction_breakpoints: Option<bool>,
81+ pub supports_exception_filter_options: Option<bool>,
82+ pub exception_breakpoint_filters: Option<Vec<ExceptionBreakpointsFilter>>,
83+ pub completion_trigger_characters: Option<Vec<String>>,
84+ pub additional_module_columns: Option<Vec<ColumnDescriptor>>,
85+ pub supported_checksum_algorithms: Option<Vec<String>>,
86+}
87+
88+impl std::ops::Deref for DebuggerCapabilities {
89+ type Target = Option<bool>;
90+
91+ fn deref(&self) -> &Self::Target {
92+ &self.supports_exception_options
93+ }
33}
94}
34
95
35#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
96#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]