1mod build;
2mod completion;
3mod cursor;
4mod definition;
5mod execute_command;
6mod folding;
7mod formatting;
8mod forward_search;
9mod highlight;
10mod hover;
11mod inlay_hint;
12mod link;
13mod lsp_kinds;
14mod reference;
15mod rename;
16mod symbol;
17
18use std::sync::Arc;
19
20use lsp_types::Url;
21
22use crate::{Document, Workspace};
23
24pub use self::{
25 build::{BuildEngine, BuildParams, BuildResult, BuildStatus},
26 completion::{complete, CompletionItemData, COMPLETION_LIMIT},
27 definition::goto_definition,
28 execute_command::execute_command,
29 folding::find_foldings,
30 formatting::format_source_code,
31 forward_search::{ForwardSearch, ForwardSearchResult, ForwardSearchStatus},
32 highlight::find_document_highlights,
33 hover::find_hover,
34 inlay_hint::find_inlay_hints,
35 link::find_document_links,
36 reference::find_all_references,
37 rename::{prepare_rename_all, rename_all},
38 symbol::{find_document_symbols, find_workspace_symbols},
39};
40
41#[derive(Clone)]
42pub struct FeatureRequest<P> {
43 pub params: P,
44 pub workspace: Workspace,
45 pub uri: Arc<Url>,
46}
47
48impl<P> FeatureRequest<P> {
49 pub fn main_document(&self) -> Document {
50 self.workspace.get(&self.uri).unwrap()
51 }
52}