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};
11pub use session::LspSessionPool;
12pub use types::{
13 LspDiagnostic, LspDiagnosticRequest, LspReference, LspRenamePlan, LspRenamePlanRequest,
14 LspRequest, LspTypeHierarchyNode, LspTypeHierarchyRequest, LspWorkspaceSymbol,
15 LspWorkspaceSymbolRequest,
16};
17
18use crate::project::ProjectRoot;
19use anyhow::Result;
20use serde_json::Value;
21use std::collections::HashMap;
22
23pub fn find_referencing_symbols_via_lsp(
24 project: &ProjectRoot,
25 request: &LspRequest,
26) -> Result<Vec<LspReference>> {
27 let pool = LspSessionPool::new(project.clone());
28 pool.find_referencing_symbols(request)
29}
30
31pub fn get_diagnostics_via_lsp(
32 project: &ProjectRoot,
33 request: &LspDiagnosticRequest,
34) -> Result<Vec<LspDiagnostic>> {
35 let pool = LspSessionPool::new(project.clone());
36 pool.get_diagnostics(request)
37}
38
39pub fn search_workspace_symbols_via_lsp(
40 project: &ProjectRoot,
41 request: &LspWorkspaceSymbolRequest,
42) -> Result<Vec<LspWorkspaceSymbol>> {
43 let pool = LspSessionPool::new(project.clone());
44 pool.search_workspace_symbols(request)
45}
46
47pub fn get_type_hierarchy_via_lsp(
48 project: &ProjectRoot,
49 request: &LspTypeHierarchyRequest,
50) -> Result<HashMap<String, Value>> {
51 let pool = LspSessionPool::new(project.clone());
52 pool.get_type_hierarchy(request)
53}
54
55pub fn get_rename_plan_via_lsp(
56 project: &ProjectRoot,
57 request: &LspRenamePlanRequest,
58) -> Result<LspRenamePlan> {
59 let pool = LspSessionPool::new(project.clone());
60 pool.get_rename_plan(request)
61}
62
63pub fn is_allowed_lsp_command(command: &str) -> bool {
65 session::is_allowed_lsp_command(command)
66}
67
68pub const ALLOWED_COMMANDS: &[&str] = session::ALLOWED_COMMANDS;
70
71#[cfg(test)]
72mod tests;