Skip to main content

perl_lsp_providers/
lib.rs

1//! LSP provider shims and tooling integrations for Perl.
2//!
3//! This crate provides Language Server Protocol feature implementations and
4//! integrations with external Perl tooling (perltidy, perlcritic) for the
5//! Perl LSP ecosystem.
6//!
7//! # Overview
8//!
9//! The providers crate offers:
10//! - IDE integration shims for LSP/DAP runtime support
11//! - Tooling integrations for formatting (perltidy) and linting (perlcritic)
12//! - Performance utilities for LSP feature optimization
13//!
14//! # Example
15//!
16//! Provider usage depends on specific IDE and tooling module implementations.
17
18#![deny(unsafe_code)]
19#![warn(rust_2018_idioms)]
20#![warn(missing_docs)]
21#![warn(clippy::all)]
22#![allow(
23    clippy::too_many_lines,
24    clippy::module_name_repetitions,
25    clippy::cast_possible_truncation,
26    clippy::cast_sign_loss,
27    clippy::cast_precision_loss,
28    clippy::cast_possible_wrap,
29    clippy::must_use_candidate,
30    clippy::missing_errors_doc,
31    clippy::missing_panics_doc,
32    clippy::wildcard_imports,
33    clippy::enum_glob_use,
34    clippy::match_same_arms,
35    clippy::if_not_else,
36    clippy::struct_excessive_bools,
37    clippy::items_after_statements,
38    clippy::return_self_not_must_use,
39    clippy::unused_self,
40    clippy::collapsible_match,
41    clippy::collapsible_if,
42    clippy::only_used_in_recursion,
43    clippy::items_after_test_module,
44    clippy::while_let_loop,
45    clippy::single_range_in_vec_init,
46    clippy::arc_with_non_send_sync,
47    clippy::needless_range_loop,
48    clippy::result_large_err,
49    clippy::if_same_then_else,
50    clippy::should_implement_trait,
51    clippy::manual_flatten,
52    clippy::needless_raw_string_hashes,
53    clippy::single_char_pattern,
54    clippy::uninlined_format_args
55)]
56
57pub use perl_parser_core::{Node, NodeKind, SourceLocation};
58pub use perl_parser_core::{Parser, ast, position};
59
60/// IDE integration helpers (LSP/DAP runtime support).
61pub mod ide;
62
63/// Re-exports from `perl_lsp_tooling` for backward compatibility.
64pub mod tooling {
65    pub use perl_lsp_tooling::*;
66}
67
68/// Deprecated alias for [`tooling`].
69///
70/// Use `perl_lsp_providers::tooling` instead.
71#[deprecated(since = "0.9.0", note = "Use perl_lsp_providers::tooling instead")]
72pub mod tooling_export {
73    pub use super::tooling::*;
74}
75
76/// Re-exports from `perl_lsp_diagnostics` for backward compatibility.
77pub mod diagnostics {
78    pub use perl_lsp_diagnostics::*;
79}
80
81/// Re-exports from `perl_lsp_formatting` for backward compatibility.
82pub mod formatting {
83    pub use perl_lsp_formatting::*;
84}
85
86/// Re-exports from `perl_lsp_semantic_tokens` for backward compatibility.
87pub mod semantic_tokens {
88    pub use perl_lsp_semantic_tokens::*;
89}
90
91/// Re-exports from `perl_lsp_inlay_hints` for backward compatibility.
92pub mod inlay_hints {
93    pub use perl_lsp_inlay_hints::*;
94}
95
96/// Re-exports from `perl_lsp_rename` for backward compatibility.
97pub mod rename {
98    pub use perl_lsp_rename::*;
99}
100
101/// Re-exports from `perl_lsp_completion` for backward compatibility.
102pub mod completion {
103    pub use perl_lsp_completion::*;
104}
105
106/// Re-exports from `perl_lsp_code_actions` for backward compatibility.
107pub mod code_actions {
108    pub use perl_lsp_code_actions::*;
109}
110
111/// Re-exports from `perl_lsp_navigation` for backward compatibility.
112pub mod navigation {
113    pub use perl_lsp_navigation::*;
114}
115
116/// Re-exports from `perl_lsp_folding` for backward compatibility.
117pub mod folding {
118    pub use perl_lsp_folding::*;
119}