Expand description
Pluggable completion pipeline (DESIGN.md §5.11.3).
Powers :-line completion and (eventually) any minibuffer-shaped
prompt the editor surfaces. Architecturally vertico-shaped:
generators, matchers, rankers, annotators are independent
pluggable stages registered against a CompletionRegistry.
Plugin authors target the public traits to extend any stage.
- Generators (
CandidateGenerator) produce raw candidates. - The matcher (
CandidateMatcher) filters + scores them against a query. - The ranker (
CandidateRanker) reorders the matched set. - Annotators (
CandidateAnnotator) add display metadata.
The host (the editor crate, not this one) wires the pipeline into the cmdline and the renderer. This crate stays pure-traits + types + reusable built-ins; tests run without any UI dependency.
Source provenance for every registered stage is captured via
#[track_caller] (DESIGN.md §5.11.1) so
:describe-completion-source <name> resolves to the registration
site.
Re-exports§
pub use crate::builtins::annotators::DocSnippetAnnotator;pub use crate::builtins::annotators::KeybindingAnnotator;pub use crate::builtins::annotators::KeybindingSource;pub use crate::builtins::annotators::KeymapReverseLookup;pub use crate::builtins::annotators::KindLabelAnnotator;pub use crate::builtins::matchers::FuzzyDisplayMatcher;pub use crate::builtins::matchers::FuzzyMatcher;pub use crate::builtins::matchers::OrderlessDisplayMatcher;pub use crate::builtins::matchers::PrefixMatcher;pub use crate::builtins::matchers::SubstringMatcher;pub use crate::builtins::rankers::AlphabeticalRanker;pub use crate::builtins::rankers::MruRanker;pub use crate::builtins::rankers::ScoreRanker;pub use crate::builtins::CompletionBuiltins;pub use crate::builtins::populate;pub use crate::cache::GeneratorCache;pub use crate::candidate::Annotation;pub use crate::candidate::AnnotationColumns;pub use crate::candidate::AnnotationSegment;pub use crate::candidate::CacheKey;pub use crate::candidate::CandidateData;pub use crate::candidate::CandidateKind;pub use crate::candidate::DisplaySpan;pub use crate::candidate::MatchScore;pub use crate::candidate::RawCandidate;pub use crate::candidate::RenderedCandidate;pub use crate::candidate::ScoredCandidate;pub use crate::insert::BufferWordsSource;pub use crate::insert::CompletionTrigger;pub use crate::insert::DocPopupState;pub use crate::insert::FuzzyInsertMatcher;pub use crate::insert::InsertCompletionState;pub use crate::insert::InsertContext;pub use crate::insert::InsertRanker;pub use crate::insert::InsertSource;pub use crate::insert::LSP_COMPLETION_SOURCE_ID;pub use crate::insert::PATH_SOURCE_ID;pub use crate::insert::PerLanguageOverrides;pub use crate::insert::SNIPPET_SOURCE_ID;pub use crate::insert::SourceId;pub use crate::insert::TREE_SITTER_SYMBOL_SOURCE_ID;pub use crate::insert::canonical_source_id;pub use crate::insert::fuzzy_match;pub use crate::insert::per_language_defaults;pub use crate::orderless::ORDER_BONUS;pub use crate::orderless::OrderlessComponent;pub use crate::orderless::orderless_match;pub use crate::orderless::parse_orderless_query;pub use crate::path::PathCompletionSource;pub use crate::pipeline::CompletionPipeline;pub use crate::registry::AnnotatorId;pub use crate::registry::CompletionRegistry;pub use crate::registry::GeneratorId;pub use crate::registry::MatcherId;pub use crate::registry::RankerId;pub use crate::registry::RegisteredAnnotator;pub use crate::registry::RegisteredGenerator;pub use crate::registry::RegisteredMatcher;pub use crate::registry::RegisteredRanker;pub use crate::slot::CommandLineSlot;pub use crate::slot::current_slot;pub use crate::source::AsyncCompletionOutcome;pub use crate::source::AsyncCompletionSource;pub use crate::source::CandidateSink;pub use crate::source::CompletionSourceContribution;pub use crate::source::CompletionSourceKind;pub use crate::source::InsertContextSnapshot;pub use crate::source::SyncCompletionSource;pub use crate::source::line_before_cursor;pub use crate::source_registration::AcceptAction;pub use crate::source_registration::AcceptHandler;pub use crate::source_registration::AcceptToken;pub use crate::source_registration::ArgsSchema;pub use crate::source_registration::CandidateSourceKind;pub use crate::source_registration::CustomAcceptPayload;pub use crate::source_registration::DefaultAcceptHandler;pub use crate::source_registration::SourceRegistration;pub use crate::source_registration::SourceSpec;pub use crate::traits::CandidateAnnotator;pub use crate::traits::CandidateGenerator;pub use crate::traits::CandidateMatcher;pub use crate::traits::CandidateRanker;pub use crate::traits::GenerateContext;
Modules§
- builtins
- Built-in pluggable stage implementations shipped with the
editor. Plugin-defined alternatives register through the same
crate::CompletionRegistryand replace these defaults viadefault_matcher/default_ranker/default_annotators. - cache
- Cache for generator output (DESIGN.md §5.11.3, Q13).
- candidate
- Candidate value types that flow through the completion pipeline (DESIGN.md §5.11.3).
- insert
- Insert-mode completion – the editor surface that turns the existing pipeline (cmdline today) into a buffer-level input flow.
- orderless
- Orderless matching — a query is a set of independent components, not one string.
- path
- Path-completion source (CSM.7).
- pipeline
CompletionPipeline::run– the executor that walks generators -> matcher -> ranker -> annotators and produces the list the popup renders.- registry
- Where pluggable completion stages register themselves.
- slot
- Command-line slot detection (DESIGN.md §5.11.3).
- source
- Mode-driven completion sources (insert-completion.md §12).
- source_
registration - Unified source registration — slice
3c.unify.picker-generator-trait-unify(7a). - traits
- The four pluggable traits the pipeline composes.