pub struct OptionSpec {
pub name: Cow<'static, str>,
pub short_form: Option<Cow<'static, str>>,
pub description: Cow<'static, str>,
pub default: OptionValue,
pub constraint: OptionConstraint,
pub scope: OptionScope,
pub owner: Option<ModuleId>,
}Expand description
Complete specification for an editor option.
This is the MECHANISM type - it defines the structure of options. POLICY (which options exist and what they do) is in modules.
§Example
ⓘ
use reovim_kernel::api::v1::*;
let spec = OptionSpec::new("tabwidth", "Tab width in spaces", OptionValue::int(4))
.with_short("tw")
.with_constraint(OptionConstraint::range(1, 32))
.with_scope(OptionScope::Buffer);Fields§
§name: Cow<'static, str>Full option name (e.g., “number”, “tabwidth”).
short_form: Option<Cow<'static, str>>Short alias (e.g., “nu” for “number”).
description: Cow<'static, str>Human-readable description.
default: OptionValueDefault value (also defines the type).
constraint: OptionConstraintConstraints for validation.
scope: OptionScopeScope (global, buffer-local, window-local).
owner: Option<ModuleId>Module that registered this option (for lifecycle cleanup).
Implementations§
Source§impl OptionSpec
impl OptionSpec
Sourcepub fn new(
name: impl Into<Cow<'static, str>>,
description: impl Into<Cow<'static, str>>,
default: OptionValue,
) -> Self
pub fn new( name: impl Into<Cow<'static, str>>, description: impl Into<Cow<'static, str>>, default: OptionValue, ) -> Self
Create a new option specification.
Sourcepub fn with_short(self, short: impl Into<Cow<'static, str>>) -> Self
pub fn with_short(self, short: impl Into<Cow<'static, str>>) -> Self
Add a short alias.
Sourcepub const fn with_constraint(self, constraint: OptionConstraint) -> Self
pub const fn with_constraint(self, constraint: OptionConstraint) -> Self
Add validation constraints.
Sourcepub const fn with_scope(self, scope: OptionScope) -> Self
pub const fn with_scope(self, scope: OptionScope) -> Self
Set the scope.
Sourcepub fn with_owner(self, owner: ModuleId) -> Self
pub fn with_owner(self, owner: ModuleId) -> Self
Set the owning module.
Sourcepub fn matches_name(&self, query: &str) -> bool
pub fn matches_name(&self, query: &str) -> bool
Check if this option matches a name (full name or alias).
Sourcepub fn validate(&self, value: &OptionValue) -> Result<(), OptionError>
pub fn validate(&self, value: &OptionValue) -> Result<(), OptionError>
Validate a value against this option’s type and constraints.
§Errors
Returns error if value type doesn’t match or violates constraints.
Trait Implementations§
Source§impl Clone for OptionSpec
impl Clone for OptionSpec
Source§fn clone(&self) -> OptionSpec
fn clone(&self) -> OptionSpec
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for OptionSpec
impl RefUnwindSafe for OptionSpec
impl Send for OptionSpec
impl Sync for OptionSpec
impl Unpin for OptionSpec
impl UnsafeUnpin for OptionSpec
impl UnwindSafe for OptionSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more