diff options
| author | sigoden <sigoden@gmail.com> | 2025-01-23 09:46:25 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-23 09:46:25 +0800 |
| commit | 7567478754bfbc4b103b692c6b1574f80a8b453f (patch) | |
| tree | 9cd9d2665710d26d1a0b957ac2d74dfd10dd0498 /src/config/mod.rs | |
| parent | 5defd0bdb0e68ca26da575c88116313cd48e290d (diff) | |
| download | aichat-7567478754bfbc4b103b692c6b1574f80a8b453f.tar.gz | |
refactor: sort repl autocompletion items by fuzzy-match score (#1119)
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 98bcab3..ec6a930 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -1850,10 +1850,15 @@ impl Config { } values.extend(complete_agent_variables(args[0])); }; - values + let mut values_with_score: Vec<_> = values .into_iter() - .filter(|(value, _)| fuzzy_match(value, filter)) - .collect() + .filter_map(|v| { + let score = fuzzy_match(&v.0, filter)?; + Some((v, score)) + }) + .collect(); + values_with_score.sort_unstable_by(|a, b| b.1.cmp(&a.1)); + values_with_score.into_iter().map(|v| v.0).collect() } pub fn sync_models_url(&self) -> String { |
