use settings::{RegisterSetting, Settings}; /// Settings for configuring REPL display and behavior. #[derive(Clone, Debug, RegisterSetting)] pub struct ReplSettings { /// Maximum number of lines to keep in REPL's scrollback buffer. /// Clamped with [4, 256] range. /// /// Default: 32 pub max_lines: usize, /// Maximum number of columns to keep in REPL's scrollback buffer. /// Clamped with [20, 512] range. /// /// Default: 128 pub max_columns: usize, /// Whether to show small single-line outputs inline instead of in a block. /// /// Default: true pub inline_output: bool, /// Maximum number of characters for an output to be shown inline. /// Only applies when `inline_output` is true. /// /// Default: 50 pub inline_output_max_length: usize, /// Maximum number of lines of output to display before scrolling. /// Set to 0 to disable output height limits. /// /// Default: 0 pub output_max_height_lines: usize, /// Maximum number of columns of output to display before scaling images. /// Set to 0 to disable output width limits. /// /// Default: 0 pub output_max_width_columns: usize, } impl Settings for ReplSettings { fn from_settings(content: &settings::SettingsContent) -> Self { let repl = content.repl.as_ref().unwrap(); Self { max_lines: repl.max_lines.unwrap(), max_columns: repl.max_columns.unwrap(), inline_output: repl.inline_output.unwrap_or(true), inline_output_max_length: repl.inline_output_max_length.unwrap_or(50), output_max_height_lines: repl.output_max_height_lines.unwrap_or(0), output_max_width_columns: repl.output_max_width_columns.unwrap_or(0), } } }