use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct ShellCompletionConfig {
pub command_names: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct RCompletionConfig {
pub fuzzy: bool,
#[serde(default = "default_package_functions")]
pub package_functions: Vec<String>,
#[serde(default)]
pub r#static: StaticCompletionConfig,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct StaticCompletionConfig {
pub formals: StaticFormalsConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct StaticFormalsConfig {
pub mode: StaticFormalsMode,
pub exclusions: StaticFormalsExclusions,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Default)]
#[serde(rename_all = "kebab-case")]
pub enum StaticFormalsMode {
#[default]
Off,
PreferStatic,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct StaticFormalsExclusions {
pub packages: Vec<String>,
pub functions: Vec<String>,
}
impl Default for StaticFormalsConfig {
fn default() -> Self {
Self {
mode: StaticFormalsMode::Off,
exclusions: StaticFormalsExclusions::default(),
}
}
}
fn default_package_functions() -> Vec<String> {
vec!["library".to_string(), "require".to_string()]
}
impl Default for RCompletionConfig {
fn default() -> Self {
Self {
fuzzy: false,
package_functions: default_package_functions(),
r#static: StaticCompletionConfig::default(),
}
}
}