on master help sign in
editor: add debug session config
commitf55a012fb744b258ac84ac0302cb0b87f7d35173 authorDmitry Sharshakov <d3dx12.xx@gmail.com> dateMon 23 Aug 2021, 16:56 (5 years ago) parentc5b210d
3 files changed+35−3
helix-core/src/syntax.rs+2 helix-term/src/commands.rs+18−3 languages.toml+15
helix-core/src/syntax.rs+2
@@ -58,6 +58,8 @@ pub struct LanguageConfiguration {
5858 pub(crate) indent_query: OnceCell<Option<IndentQuery>>,
5959 #[serde(skip_serializing_if = "Option::is_none")]
6060 pub debug_adapter: Option<DebugAdapterConfig>,
61+ #[serde(skip_serializing_if = "Option::is_none")]
62+ pub debug_configs: Option<Vec<HashMap<String, serde_json::Value>>>,
6163}
6264
6365#[derive(Debug, Serialize, Deserialize)]
helix-term/src/commands.rs+18−3
@@ -4368,9 +4368,24 @@ fn dap_start(cx: &mut Context) {
43684368 let request = debugger.initialize("go".to_owned());
43694369 let _ = block_on(request).unwrap();
43704370
4371− let mut args = HashMap::new();
4372− args.insert("mode", "debug");
4373− args.insert("program", "main.go");
4371+ let sessions = cx
4372+ .editor
4373+ .syn_loader
4374+ .language_config_for_file_name(&path)
4375+ .and_then(|x| x.debug_configs.clone());
4376+
4377+ let sessions = match sessions {
4378+ Some(c) => c,
4379+ None => {
4380+ cx.editor.set_error(
4381+ "Can't start debug: no debug sessions available for language".to_string(),
4382+ );
4383+ return;
4384+ }
4385+ };
4386+
4387+ // TODO: picker
4388+ let args = sessions.get(0);
43744389
43754390 let request = debugger.launch(to_value(args).unwrap());
43764391 let _ = block_on(request).unwrap();
languages.toml+15
@@ -95,6 +95,21 @@ language-server = { command = "gopls" }
9595indent = { tab-width = 4, unit = "\t" }
9696debug-adapter = { command = "dlv", args = ["dap"], port-arg = "-l 127.0.0.1:{}" }
9797
98+[[language.debug-configs]]
99+request = "launch"
100+mode = "debug"
101+program = "main.go"
102+
103+[[language.debug-configs]]
104+request = "launch"
105+mode = "exec"
106+program = "main"
107+
108+[[language.debug-configs]]
109+request = "launch"
110+mode = "test"
111+program = "."
112+
98113[[language]]
99114name = "javascript"
100115scope = "source.js"