|
|
|
@ -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();
|
|
|
|
|