///|
/// 选择行编辑器使用的编辑命令集。
pub(all) enum EditingMode {
/// 使用 Emacs 风格的编辑命令。
Emacs
/// 使用 Vi 风格的编辑命令。
Vi
} derive(@debug.Debug)
///|
/// 决定是否读取 editrc 命令,以及从何处读取。
pub(all) enum Editrc {
/// 不读取 editrc。
Disabled
/// 按照 `EDITRC` 和 `HOME` 的标准查找规则读取 editrc;默认文件不存在时按空配置处理。
Default
/// 从指定路径读取 editrc;无法打开或解析文件时,`LineEditor::open` 会报告错误。
File(String)
} derive(@debug.Debug)
///|
/// 保存用于构造 `LineEditor` 的不可变选项。
///
/// 配置中只包含由 MoonBit 持有的值,因此可以安全复制,也可以重复用于创建彼此独立的
/// 编辑器。
///
/// **Construction:**
///
/// 请使用 `LineEditorConfig::new` 构造;所有字段均有意保持私有。
pub struct LineEditorConfig {
priv application_name : String
priv editing_mode : EditingMode?
priv editrc : Editrc
}
///|
/// 创建用于构造行编辑器的不可变选项。
///
/// **Parameters:**
///
/// - `application_name`:标识当前应用,并供 editrc 条件命令匹配。
/// - `editing_mode`:在读取 editrc 后显式选择 Emacs 或 Vi 命令集;省略时由默认配置或
/// editrc 决定。
/// - `editrc`:控制是否以及如何读取 editrc;默认按照 `EDITRC` 和 `HOME` 的标准规则
/// 查找。
///
/// **Examples:**
///
/// ```mbt check
/// test {
/// let config = LineEditorConfig::new(
/// application_name="example-repl",
/// editing_mode=Vi,
/// editrc=Disabled,
/// )
/// config |> ignore
/// }
/// ```
pub fn LineEditorConfig::new(
application_name? : StringView = "readline.mbt",
editing_mode? : EditingMode,
editrc? : Editrc = Default,
) -> LineEditorConfig {
{ application_name: application_name.to_owned(), editing_mode, editrc }
}