wip: refactor parameters in UI start
This commit is contained in:
parent
af657ef2ec
commit
2d42766a71
4 changed files with 58 additions and 34 deletions
|
@ -7,7 +7,7 @@ use std::{collections::HashMap, path::PathBuf};
|
|||
pub struct DebugTemplate {
|
||||
pub name: String,
|
||||
pub request: String,
|
||||
pub completion: Option<Vec<String>>,
|
||||
pub completion: Vec<String>,
|
||||
pub args: HashMap<String, String>,
|
||||
}
|
||||
|
||||
|
|
|
@ -709,6 +709,54 @@ impl EditorView {
|
|||
);
|
||||
}
|
||||
|
||||
fn request_parameter(
|
||||
completions: Vec<String>,
|
||||
config_name: String,
|
||||
cxt: &mut commands::Context,
|
||||
mut params: Vec<String>,
|
||||
) {
|
||||
let noop = |_input: &str| Vec::new();
|
||||
let completer = match completions.get(0).map(|x| x.as_str()) {
|
||||
Some("filename") => super::completers::filename,
|
||||
Some("directory") => super::completers::directory,
|
||||
Some(complete) => {
|
||||
warn!("Unknown debug config autocompleter: {}", complete);
|
||||
noop
|
||||
}
|
||||
None => noop,
|
||||
};
|
||||
let prompt = Prompt::new(
|
||||
"arg: ".to_owned(),
|
||||
None,
|
||||
completer,
|
||||
move |cx: &mut crate::compositor::Context, input: &str, event: PromptEvent| {
|
||||
if event != PromptEvent::Validate {
|
||||
return;
|
||||
}
|
||||
|
||||
params.push(input.to_owned());
|
||||
|
||||
if params.len() < completions.len() {
|
||||
todo!();
|
||||
// Self::request_parameter(
|
||||
// completions.clone(),
|
||||
// config_name.clone(),
|
||||
// cxt,
|
||||
// params.clone(),
|
||||
// );
|
||||
} else {
|
||||
commands::dap_start_impl(
|
||||
cx.editor,
|
||||
Some(&config_name),
|
||||
None,
|
||||
Some(params.iter().map(|x| x.as_str()).collect()),
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
cxt.push_layer(Box::new(prompt));
|
||||
}
|
||||
|
||||
/// Handle events by looking them up in `self.keymaps`. Returns None
|
||||
/// if event was handled (a command was executed or a subkeymap was
|
||||
/// activated). Only KeymapResult::{NotFound, Cancelled} is returned
|
||||
|
@ -735,38 +783,10 @@ impl EditorView {
|
|||
None => return None,
|
||||
};
|
||||
let completions = cxt.editor.debug_config_completions.clone().unwrap();
|
||||
let noop = |_input: &str| Vec::new();
|
||||
let completer = match completions.get(i) {
|
||||
Some(Some(completion)) => match completion.get(0).map(|x| x.as_str()) {
|
||||
Some("filename") => super::completers::filename,
|
||||
Some("directory") => super::completers::directory,
|
||||
Some(complete) => {
|
||||
warn!("Unknown debug config autocompleter: {}", complete);
|
||||
noop
|
||||
}
|
||||
None => noop,
|
||||
},
|
||||
_ => noop,
|
||||
};
|
||||
let prompt = Prompt::new(
|
||||
"arg:".to_owned(),
|
||||
None,
|
||||
completer,
|
||||
move |cx: &mut crate::compositor::Context,
|
||||
input: &str,
|
||||
event: PromptEvent| {
|
||||
if event != PromptEvent::Validate {
|
||||
return;
|
||||
}
|
||||
commands::dap_start_impl(
|
||||
cx.editor,
|
||||
Some(&name),
|
||||
None,
|
||||
Some(vec![input]),
|
||||
);
|
||||
},
|
||||
);
|
||||
cxt.push_layer(Box::new(prompt));
|
||||
let completion = completions.get(i).unwrap().clone();
|
||||
if !completion.is_empty() {
|
||||
Self::request_parameter(completion, name, cxt, Vec::new());
|
||||
}
|
||||
}
|
||||
_ => return None,
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ pub struct Editor {
|
|||
pub debugger: Option<helix_dap::Client>,
|
||||
pub debugger_events: SelectAll<UnboundedReceiverStream<helix_dap::Payload>>,
|
||||
pub debug_config_picker: Option<Vec<String>>,
|
||||
pub debug_config_completions: Option<Vec<Option<Vec<String>>>>,
|
||||
pub debug_config_completions: Option<Vec<Vec<String>>>,
|
||||
pub variables: Option<Vec<String>>,
|
||||
pub variables_page: usize,
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ args = { console = "internalConsole", program = "{0}" }
|
|||
[[language.debugger.templates]]
|
||||
name = "attach"
|
||||
request = "attach"
|
||||
completion = [ "none" ]
|
||||
args = { console = "internalConsole", pid = "{0}" }
|
||||
|
||||
[[language]]
|
||||
|
@ -104,6 +105,7 @@ args = { console = "internalConsole", program = "{0}" }
|
|||
[[language.debugger.templates]]
|
||||
name = "attach"
|
||||
request = "attach"
|
||||
completion = [ "none" ]
|
||||
args = { console = "internalConsole", pid = "{0}" }
|
||||
|
||||
[[language]]
|
||||
|
@ -133,6 +135,7 @@ args = { console = "internalConsole", program = "{0}" }
|
|||
[[language.debugger.templates]]
|
||||
name = "attach"
|
||||
request = "attach"
|
||||
completion = [ "none" ]
|
||||
args = { console = "internalConsole", pid = "{0}" }
|
||||
|
||||
[[language]]
|
||||
|
@ -176,6 +179,7 @@ args = { mode = "test", program = "{0}" }
|
|||
[[language.debugger.templates]]
|
||||
name = "attach"
|
||||
request = "attach"
|
||||
completion = [ "none" ]
|
||||
args = { mode = "local", processId = "{0}" }
|
||||
|
||||
[[language]]
|
||||
|
|
Loading…
Add table
Reference in a new issue