文本文件格式(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 并应用最小编辑。