xuiDocument 是一个共享句柄的文档对象:事务保证编辑原子性,快照提供不可变视图,修订号驱动撤销与协同。
xui_document pDoc;
xuiDocumentCreate(&tDesc, &pDoc);
xuiDocumentRetain(pDoc); // 编辑器与预览各自持有引用
...
xuiDocumentRelease(pDoc);创建描述可指定 profile 与 Markdown 方言(xuiDocumentGetProfile / GetMarkdownDialect 可回读)。同一份文档可以同时挂富文本编辑器、Markdown 编辑器与只读预览——三个视图共享内容与撤销历史。
xui_document_transaction t;
xuiDocumentBeginTransaction(pDoc, &tTxnDesc, &t);
xuiDocumentTxnInsertFragment(t, ...);
xuiDocumentTxnInsertTable(t, 1, XUI_DOCUMENT_APPEND, 3, 2, 1, &tTable);
xuiDocumentTxnCommit(t, NULL);
xuiDocumentTxnRelease(t);xuiDocumentAcquireSnapshot 取不可变快照,配合 SnapshotRetain / Release 与一族遍历 API(GetNode / GetChild / GetBlockSyntax / GetInlineSyntax / GetSourceSegment / GetSourceLine / GetTableToken…)做导出、搜索或语法着色;xuiDocumentGetRevision 返回单调修订号,是撤销栈与协同合并的基准。
xui_doc_editor_desc_t ed = { 0 };
ed.tView.pDocument = pDoc;
xuiDocumentEditorCreate(pContext, &ed, &pEditor); // 三参数创建模式
xuiDocumentEditorExecute(pEditor, XUI_DOC_EDIT_BOLD); // 结构化命令
xuiDocumentEditorInsertText(pEditor, ...);
xuiDocumentUndo(pDoc, NULL); // 共享撤销