reovim_module_cmdline/
lib.rs1#![cfg_attr(coverage_nightly, allow(unused_features))]
2#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
3mod bridge;
20mod state;
21
22pub use {
23 bridge::CmdlineBridge,
24 state::{CmdlineMessage, CmdlinePrompt, CmdlineState},
25};
26
27use {
28 reovim_driver_session::bridges::BridgeProvider,
29 reovim_kernel::api::v1::{Module, ModuleContext, ModuleError, ModuleId, ProbeResult, Version},
30};
31
32const KIND: &str = "cmdline";
33const MODULE_ID: ModuleId = ModuleId::new("cmdline");
34
35pub struct CmdlineModule;
39
40impl CmdlineModule {
41 #[must_use]
43 pub const fn new() -> Self {
44 Self
45 }
46}
47
48impl Default for CmdlineModule {
49 fn default() -> Self {
50 Self::new()
51 }
52}
53
54impl Module for CmdlineModule {
55 fn id(&self) -> ModuleId {
56 MODULE_ID
57 }
58
59 fn name(&self) -> &'static str {
60 "cmdline"
61 }
62
63 fn version(&self) -> Version {
64 Version::new(0, 1, 0)
65 }
66
67 #[cfg_attr(coverage_nightly, coverage(off))]
68 fn init(&mut self, ctx: &ModuleContext) -> ProbeResult {
69 let provider = ctx.services.get_or_create::<BridgeProvider>();
71 provider.register(CmdlineBridge);
72 ProbeResult::Success
73 }
74
75 fn exit(&mut self) -> Result<(), ModuleError> {
76 Ok(())
77 }
78
79 fn extension_kinds(&self) -> &[&'static str] {
80 &[KIND]
81 }
82}
83
84#[cfg(feature = "dynamic")]
85reovim_module_macros::declare_module!(CmdlineModule);
86
87#[cfg(test)]
88#[path = "lib_tests.rs"]
89mod tests;