///|
/// Backend-neutral view-model options derived from browser layout settings.
pub struct ViewModelOptions {
/// The measured font facts (Monaco threads `fontInfo` into the view model
/// the same way): the line-breaks computer derives
/// `columnsForFullWidthChar` from the typical advance widths.
font_info : @config.FontInfo
soft_wrap_column : Int32
tab_size : Int32
wrapping_indent : @editor_api.WrappingIndent
/// The owning editor's id — the `ownerId` filter for decoration queries
/// (Monaco's `editorId` handed to `ViewModelDecorations`). `0` means "no
/// editor": only ownerId-0 decorations match.
editor_id : Int32
/// `renderValidationDecorations`. Monaco defaults to `Editable` (which
/// hides validation decorations in readonly editors); the `Viewer` passes
/// `On` — see `filter_validation_decorations`.
render_validation_decorations : @editor_api.RenderValidationDecorations
} derive(Eq, Debug)
///|
/// Builds options while clamping wrapping column and tab size.
/// `wrapping_indent` defaults to `Same`, Monaco's default.
pub fn ViewModelOptions::ViewModelOptions(
font_info~ : @config.FontInfo = @config.FontInfo::default(),
soft_wrap_column~ : Int32 = 0,
tab_size~ : Int32 = 2,
wrapping_indent~ : @editor_api.WrappingIndent = Same,
editor_id~ : Int32 = 0,
render_validation_decorations~ : @editor_api.RenderValidationDecorations = Editable,
) -> ViewModelOptions {
{
font_info,
soft_wrap_column: soft_wrap_column.max(0),
tab_size: tab_size.max(1),
wrapping_indent,
editor_id,
render_validation_decorations,
}
}
///|
/// Options with soft wrapping disabled.
pub fn ViewModelOptions::no_wrap() -> ViewModelOptions {
ViewModelOptions(soft_wrap_column=0)
}
///|
/// Options with soft wrapping enabled at the given column.
pub fn ViewModelOptions::soft_wrap(
column : Int32,
tab_size~ : Int32 = 2,
wrapping_indent~ : @editor_api.WrappingIndent = Same,
) -> ViewModelOptions {
ViewModelOptions(soft_wrap_column=column, tab_size~, wrapping_indent~)
}
///|
/// Whether wrapping should produce projected view lines.
pub fn ViewModelOptions::is_soft_wrap_enabled(self : ViewModelOptions) -> Bool {
self.soft_wrap_column > 0
}
///|
pub extend ViewModelOptions with Debug::{to_repr}
///|
pub extend ViewModelOptions with Eq::{equal, not_equal}