pub struct InsertRanker;Expand description
Built-in ranker tuned for Insert-mode completion. Sorts by
final_score descending, where:
final_score = base_score // matcher output
+ per_source_priority // CandidateData::Plain → no per-source bias
+ frequency_bonus // 0–50, host-side LRU
+ preselect_bonus // +200 for LSP preselect items
- deprecated_penalty // -100 for deprecated tags4.2.g.1 ships only base_score (the matcher’s tier score).
Per-source priority + frequency + preselect + deprecated
land in 4.2.g.2 (LSP source) and 4.2.g.5 (ranking polish);
the host adds them via the existing RawCandidate.data
payload before calling the ranker.
Implementations§
Source§impl InsertRanker
impl InsertRanker
pub const ID: &'static str = "rank:insert"
Sourcepub const FREQUENCY_BONUS_CAP: u32 = 50
pub const FREQUENCY_BONUS_CAP: u32 = 50
Cap on the per-item frequency bonus, per
docs/dev/architecture/insert-completion.md §3.6.
pub fn new() -> Self
Sourcepub fn rank_with_bonus(
&self,
scored: &mut [ScoredCandidate],
bonus: impl Fn(&RawCandidate) -> u32,
)
pub fn rank_with_bonus( &self, scored: &mut [ScoredCandidate], bonus: impl Fn(&RawCandidate) -> u32, )
Rank by score + bonus(raw), descending. The host
owns the bonus composition: per
docs/dev/architecture/insert-completion.md §3.6,
final_score = base_score
+ per_source_priority
+ frequency_bonus // capped at FREQUENCY_BONUS_CAP
+ preselect_bonus
- deprecated_penaltyEach term has its own clamp; the ranker doesn’t apply
policy because the per-term ranges and signs differ
(frequency is bounded; preselect is a fixed jolt;
deprecated subtracts). Hosts wrap the live lookups
(App::completion_accept_freq,
App::priority_for_source, …) into a single bonus
closure.