perl_lsp_navigation/lib.rs
1//! LSP navigation providers for Perl
2//!
3//! This crate provides navigation functionality for Perl code.
4//!
5//! ## Features
6//!
7//! - Go to definition
8//! - Find references
9//! - Go to implementation
10//! - Go to type definition
11//! - Type hierarchy
12//! - Call hierarchy
13//! - Document links
14//!
15//! ## Usage
16//!
17//! ```rust,ignore
18//! use perl_lsp_navigation::{TypeHierarchyProvider, WorkspaceSymbolsProvider};
19//!
20//! let type_hierarchy = TypeHierarchyProvider::new(workspace_index);
21//! let workspace_symbols = WorkspaceSymbolsProvider::new(workspace_index);
22//! ```
23
24#![deny(unsafe_code)]
25#![warn(rust_2018_idioms)]
26#![warn(missing_docs)]
27#![warn(clippy::all)]
28
29// Declare modules
30mod references;
31mod type_definition;
32
33// Re-export key types and functions
34pub use self::references::find_references_single_file;
35pub use self::type_definition::TypeDefinitionProvider;
36pub use perl_lsp_document_links::compute_links;
37pub use perl_lsp_type_hierarchy::{
38 TypeHierarchyItem, TypeHierarchyProvider, TypeHierarchySymbolKind,
39};
40pub use perl_lsp_workspace_symbols::{WorkspaceSymbol, WorkspaceSymbolsProvider};
41
42// Re-export Location type for convenience
43pub use lsp_types::Location;