codelens_engine/lsp/
mod.rs1pub(crate) mod parsers;
2pub(crate) mod protocol;
3pub mod registry;
4pub(crate) mod session;
5pub mod types;
6
7pub use registry::{
8 LSP_RECIPES, LspRecipe, LspStatus, check_lsp_status, default_lsp_args_for_command,
9 default_lsp_command_for_extension, default_lsp_command_for_path, get_lsp_recipe,
10 lsp_binary_exists,
11};
12pub use session::LspSessionPool;
13pub use types::{
14 LspDiagnostic, LspDiagnosticRequest, LspReference, LspRenamePlan, LspRenamePlanRequest,
15 LspRequest, LspTypeHierarchyNode, LspTypeHierarchyRequest, LspWorkspaceSymbol,
16 LspWorkspaceSymbolRequest,
17};
18
19use crate::project::ProjectRoot;
20use anyhow::Result;
21use serde_json::Value;
22use std::collections::HashMap;
23
24pub fn find_referencing_symbols_via_lsp(
25 project: &ProjectRoot,
26 request: &LspRequest,
27) -> Result<Vec<LspReference>> {
28 let pool = LspSessionPool::new(project.clone());
29 pool.find_referencing_symbols(request)
30}
31
32pub fn get_diagnostics_via_lsp(
33 project: &ProjectRoot,
34 request: &LspDiagnosticRequest,
35) -> Result<Vec<LspDiagnostic>> {
36 let pool = LspSessionPool::new(project.clone());
37 pool.get_diagnostics(request)
38}
39
40pub fn search_workspace_symbols_via_lsp(
41 project: &ProjectRoot,
42 request: &LspWorkspaceSymbolRequest,
43) -> Result<Vec<LspWorkspaceSymbol>> {
44 let pool = LspSessionPool::new(project.clone());
45 pool.search_workspace_symbols(request)
46}
47
48pub fn get_type_hierarchy_via_lsp(
49 project: &ProjectRoot,
50 request: &LspTypeHierarchyRequest,
51) -> Result<HashMap<String, Value>> {
52 let pool = LspSessionPool::new(project.clone());
53 pool.get_type_hierarchy(request)
54}
55
56pub fn get_rename_plan_via_lsp(
57 project: &ProjectRoot,
58 request: &LspRenamePlanRequest,
59) -> Result<LspRenamePlan> {
60 let pool = LspSessionPool::new(project.clone());
61 pool.get_rename_plan(request)
62}
63
64pub fn is_allowed_lsp_command(command: &str) -> bool {
66 session::is_allowed_lsp_command(command)
67}
68
69pub const ALLOWED_COMMANDS: &[&str] = session::ALLOWED_COMMANDS;
71
72#[cfg(test)]
73mod tests;