mirror of https://github.com/helix-editor/helix
Add completion for nested settings (#3183)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>pull/3348/head
parent
973c51c3e9
commit
6b84344e20
|
@ -283,14 +283,28 @@ pub mod completers {
|
|||
names
|
||||
}
|
||||
|
||||
/// Recursive function to get all keys from this value and add them to vec
|
||||
fn get_keys(value: &serde_json::Value, vec: &mut Vec<String>, scope: Option<&str>) {
|
||||
if let Some(map) = value.as_object() {
|
||||
for (key, value) in map.iter() {
|
||||
let key = match scope {
|
||||
Some(scope) => format!("{}.{}", scope, key),
|
||||
None => key.clone(),
|
||||
};
|
||||
get_keys(value, vec, Some(&key));
|
||||
if !value.is_object() {
|
||||
vec.push(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setting(_editor: &Editor, input: &str) -> Vec<Completion> {
|
||||
static KEYS: Lazy<Vec<String>> = Lazy::new(|| {
|
||||
serde_json::json!(Config::default())
|
||||
.as_object()
|
||||
.unwrap()
|
||||
.keys()
|
||||
.cloned()
|
||||
.collect()
|
||||
let mut keys = Vec::new();
|
||||
let json = serde_json::json!(Config::default());
|
||||
get_keys(&json, &mut keys, None);
|
||||
keys
|
||||
});
|
||||
|
||||
let matcher = Matcher::default();
|
||||
|
|
Loading…
Reference in New Issue