escriba-lisp 0.1.9

Tatara-Lisp authoring bridge for escriba — declarative keybindings, options, themes, hooks, commands
//! `defoption` — Lisp-authored editor option.
//!
//! ```lisp
//! (defoption :name "number"          :value "true")
//! (defoption :name "relativenumber"  :value "true")
//! (defoption :name "tabstop"         :value "4")
//! (defoption :name "wrap"            :value "false")
//! ```
//!
//! The value is parsed as a string; consumers coerce to their
//! preferred type (bool / integer / enum).

use serde::{Deserialize, Serialize};
use tatara_lisp::DeriveTataraDomain;

#[derive(DeriveTataraDomain, Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[tatara(keyword = "defoption")]
pub struct OptionSpec {
    /// The option name (e.g., `"number"`, `"tabstop"`, `"wrap"`).
    pub name: String,
    /// The option's string-encoded value (`"true"`, `"4"`, `"unix"`, …).
    pub value: String,
}