Merge branch 'synis/better-path-autocomplete' into 'master'

path-autocomplete

See merge request veloren/veloren!4342
This commit is contained in:
Isse 2024-02-28 16:36:06 +00:00
commit e002ed2a84
2 changed files with 18 additions and 9 deletions

View File

@ -49,6 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added reworked dungeon: Haniwa Catacombs
- Added dungeon: Terracotta Ruins
- Sand and crystal cave biome
- In commands that reference assets you can now use `#name` and press tab to cycle through assets with that name.
### Changed

View File

@ -597,15 +597,23 @@ impl TabComplete for ArgumentSpec {
.map(|c| c.to_string())
.collect(),
ArgumentSpec::AssetPath(_, prefix, paths, _) => {
let part_with_prefix = prefix.to_string() + part;
let depth = part_with_prefix.split('.').count();
paths
.iter()
.map(|path| path.as_str().split('.').take(depth).join("."))
.dedup()
.filter(|string| string.starts_with(&part_with_prefix))
.filter_map(|c| Some(c.strip_prefix(prefix)?.to_string()))
.collect()
if let Some(part_stripped) = part.strip_prefix('#') {
paths
.iter()
.filter(|string| string.contains(part_stripped))
.filter_map(|c| Some(c.strip_prefix(prefix)?.to_string()))
.collect()
} else {
let part_with_prefix = prefix.to_string() + part;
let depth = part_with_prefix.split('.').count();
paths
.iter()
.map(|path| path.as_str().split('.').take(depth).join("."))
.dedup()
.filter(|string| string.starts_with(&part_with_prefix))
.filter_map(|c| Some(c.strip_prefix(prefix)?.to_string()))
.collect()
}
},
ArgumentSpec::Boolean(_, part, _) => ["true", "false"]
.iter()