mod context_server; mod dap; mod lsp; mod slash_command; use std::ops::Range; use util::redact::should_redact; pub use context_server::*; pub use dap::*; pub use lsp::*; pub use slash_command::*; /// A list of environment variables. pub type EnvVars = Vec<(String, String)>; /// A command. pub struct Command { /// The command to execute. pub command: String, /// The arguments to pass to the command. pub args: Vec, /// The environment variables to set for the command. pub env: EnvVars, } impl std::fmt::Debug for Command { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let filtered_env = self .env .iter() .map(|(k, v)| (k, if should_redact(k) { "[REDACTED]" } else { v })) .collect::>(); f.debug_struct("Command") .field("command", &self.command) .field("args", &self.args) .field("env", &filtered_env) .finish() } } /// A label containing some code. #[derive(Debug, Clone)] pub struct CodeLabel { /// The source code to parse with Tree-sitter. pub code: String, /// The spans to display in the label. pub spans: Vec, /// The range of the displayed label to include when filtering. pub filter_range: Range, } /// A span within a code label. #[derive(Debug, Clone)] pub enum CodeLabelSpan { /// A range into the parsed code. CodeRange(Range), /// A span containing a code literal. Literal(CodeLabelSpanLiteral), } /// A span containing a code literal. #[derive(Debug, Clone)] pub struct CodeLabelSpanLiteral { /// The literal text. pub text: String, /// The name of the highlight to use for this literal. pub highlight_name: Option, }