From acbe297fbd10250e0d99d1e3e98751dd6ef77adc Mon Sep 17 00:00:00 2001 From: Josh Mcguigan Date: Fri, 12 Mar 2021 06:08:07 -0800 Subject: update relevance score u8 -> u32 --- crates/ide_completion/src/item.rs | 4 ++-- crates/rust-analyzer/src/to_proto.rs | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'crates') diff --git a/crates/ide_completion/src/item.rs b/crates/ide_completion/src/item.rs index 352640e3b..3febab32b 100644 --- a/crates/ide_completion/src/item.rs +++ b/crates/ide_completion/src/item.rs @@ -156,7 +156,7 @@ impl CompletionRelevance { /// /// See is_relevant if you need to make some judgement about score /// in an absolute sense. - pub fn score(&self) -> u8 { + pub fn score(&self) -> u32 { let mut score = 0; if self.exact_name_match { @@ -525,7 +525,7 @@ mod tests { .map(|r| (r.score(), r)) .sorted_by_key(|(score, _r)| *score) .fold( - (u8::MIN, vec![vec![]]), + (u32::MIN, vec![vec![]]), |(mut currently_collecting_score, mut out), (score, r)| { if currently_collecting_score == score { out.last_mut().unwrap().push(r); diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index a467bc685..1a8cdadad 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -220,12 +220,12 @@ pub(crate) fn completion_item( } // The relevance needs to be inverted to come up with a sort score // because the client will sort ascending. - let sort_score = relevance.score() ^ 0xFF; - // Zero pad the string to ensure values are sorted numerically - // even though the client is sorting alphabetically. Three - // characters is enough to fit the largest u8, which is the - // type of the relevance score. - res.sort_text = Some(format!("{:03}", sort_score)); + let sort_score = relevance.score() ^ 0xFF_FF_FF_FF; + // Zero pad the string to ensure values can be properly sorted + // by the client. Hex format is used because it is easier to + // visually compare very large values, which the sort text + // tends to be since it is the opposite of the score. + res.sort_text = Some(format!("{:08x}", sort_score)); } set_score(&mut lsp_item, item.relevance()); @@ -1117,13 +1117,13 @@ mod tests { ( "&arg", Some( - "253", + "fffffffd", ), ), ( "arg", Some( - "254", + "fffffffe", ), ), ] -- cgit v1.2.3