跳到主要内容

文本文件格式(TextFileFormat)

用于文本的 FileFormat。声明了扩展名的文件会作为带内文本文档导入,可在编辑器中编辑并跨协作者同步,下方回调会驱动文本编辑器的智能提示。文档导出时为纯 blob,因此脚本在编辑时和运行时都可以通过 context:blob(name) 读取它们。

分析回调是纯函数 (doc, parsed);状态只保存在视图中。parsed 承载 parse 的缓存结果,若未实现 parse 则为 nil。

local format: TextFileFormat = {
name = 'Markdown',
extensions = { 'md' },
}

return function(): TextFileFormat
return format
end

字段(Fields)

name

格式的显示名称,例如 "Markdown"。

extensions

处理的文件扩展名,不带点,例如 {"md", "markdown"}

方法(Methods)

parse

parse(doc: FormatDocument) -> buffer?

可选。每次文档版本变化时调用一次;返回的 buffer 会被 Rive 缓存,键为文档内容,并回传到其他所有回调中。在同一个 VM 内会复用同一个 buffer 对象;跨 VM 时字节只会复制一次。

view

view(doc: FormatDocument, editor: EditorContext, surface: FormatSurface, parsed: buffer?) -> FormatView?

在表面上创建文档的预览。每个表面有自己的视图;一个文档可以同时显示在多个表面上。

highlight

highlight(doc: FormatDocument, parsed: buffer?) -> {FormatToken}

返回文档的高亮标记。

diagnostics

diagnostics(doc: FormatDocument, parsed: buffer?) -> {FormatDiagnostic}

返回文档的问题列表。

completions

completions(doc: FormatDocument, line: number, column: number, parsed: buffer?) -> {FormatCompletion}

返回给定位置的自动完成项。

hover

hover(doc: FormatDocument, line: number, column: number, parsed: buffer?) -> FormatHover?

返回给定位置的悬停文档,没有时返回 nil。

format

format(doc: FormatDocument, parsed: buffer?) -> string?

返回完全格式化后的文本,或返回 nil 以保持文档不变。Rive 会将结果与当前文本做 diff 并应用最小编辑。