[{"data":1,"prerenderedAt":530},["ShallowReactive",2],{"msfe-doc:\u002Fapi\u002Fcommands":3},{"id":4,"title":5,"body":6,"description":519,"extension":520,"keywords":521,"locale":522,"meta":523,"navigation":524,"order":515,"path":525,"section":526,"seo":527,"stem":528,"__hash__":529},"docs\u002Fapi\u002Fcommands.zh-CN.md","命令与目标 API",{"type":7,"value":8,"toc":498},"minimark",[9,13,17,26,30,33,36,39,42,45,48,51,70,84,87,90,93,96,99,102,105,108,111,114,117,120,123,126,133,136,139,142,145,148,154,157,160,163,166,169,172,182,185,188,191,194,197,200,203,234,238,263,348,378,381,384,387,397,403,421,424,427,430,452,455,457,460,475,478,481,484,487,490,493,496],[10,11,12],"p",{},"本页签名从公共包导出生成，中文说明与当前 JSDoc 同步校验。代码标识保持原名。",[14,15,16],"h2",{"id":16},"命令上下文",[10,18,19,20,25],{},"命令必须纯粹、同步；嵌套操作使用 props.commands，见 ",[21,22,24],"a",{"href":23},"\u002Fguide\u002Fcommands","命令教程","。",[27,28],"msfe-api",{"name":29},"CommandProps",[14,31,32],{"id":32},"源码事务",[10,34,35],{},"每一步坐标属于当前草稿，不能使用原始文档的过期偏移。",[27,37],{"name":38},"SourceTransaction",[14,40,41],{"id":41},"适配规划函数",[10,43,44],{},"把现有 CodeMirror 纯规划函数接入相同的命令链。",[27,46],{"name":47},"sourceCommand",[14,49,50],{"id":50},"语义格式命令",[10,52,53,57,58,61,62,65,66,69],{},[54,55,56],"code",{},"toggleSourceMark({ node: 'StrongEmphasis', marker: '**', markerNode: 'EmphasisMark' })","\n返回可交给 ",[54,59,60],{},"editor.run()"," 或 ",[54,63,64],{},"sourceCommand()"," 的纯规划函数。功能包声明语法，Core 统一处理\n成对标记、方向选区和完整外壳；一次执行同时确认新增格式和原有成对语义仍能解析。\n完整正文选区可以扩展到隐藏外壳；没有可证明无损的方案就返回 ",[54,67,68],{},"null","，不改源码或历史。\n局部移除格式和交错范围暂不自动拆分。空选区保留插入成对标记的输入方式，后续输入仍是自由源码。",[10,71,72,75,76,79,80,83],{},[54,73,74],{},"querySourceInline(state, range)"," 只读端点祖先，不启动解析、遍历全文或执行格式命令，适合界面可用性。\n",[54,77,78],{},"reason === null"," 仅表示结构允许，不能预先保证具体样式组合可行；空白正文可没有节点。\n显式规划限制在一个不超过 20,000 字符的行内容器，解析验证预算为 12ms；无法及时验证也拒绝。\n所有多选区先规划，再原子提交。低层 ",[54,81,82],{},"toggleDelimiter"," 仍只是字面源码工具。",[27,85],{"name":86},"SourceMarkFormat",[27,88],{"name":89},"SourceInlineQuery",[27,91],{"name":92},"querySourceInline",[27,94],{"name":95},"toggleSourceMark",[14,97,98],{"id":98},"结果分支",[10,100,101],{},"具名命令返回 boolean；详细结果读取 lastCommandResult。",[27,103],{"name":104},"MsfeResult",[14,106,107],{"id":107},"外部增量",[10,109,110],{},"baseRevision 是本地源码版本，不是服务器 ETag。",[27,112],{"name":113},"MsfeExternalChange",[14,115,116],{"id":116},"精确目标",[10,118,119],{},"适合短暂菜单；源码版本变化后可能失效。",[27,121],{"name":122},"MsfeTarget",[14,124,125],{"id":125},"映射目标",[10,127,128,129,25],{},"异步处理完整示例见 ",[21,130,132],{"href":131},"\u002Fguide\u002Fselection","选区与异步目标",[27,134],{"name":135},"SourceAnchor",[14,137,138],{"id":138},"映射策略",[10,140,141],{},"按功能选择边界亲和性和删除策略，不改变视觉结构。",[27,143],{"name":144},"RangePolicy",[14,146,147],{"id":147},"源码块命令",[10,149,150,151,153],{},"定位完整语法块，并通过捕获的 ",[54,152,122],{}," 运行命令。规划器保留源码片段、一次撤销，拒绝跨子流移动。",[27,155],{"name":156},"SourceBlock",[27,158],{"name":159},"SourceBlockSide",[27,161],{"name":162},"sourceBlockAt",[27,164],{"name":165},"sourceBlockSibling",[27,167],{"name":168},"sameSourceBlockScope",[27,170],{"name":171},"insertSourceBlock",[10,173,174,177,178,181],{},[54,175,176],{},"replaceSourceBlock(block, markdown)"," 用新 Markdown 一次替换完整块，保留必要的相邻分隔符，\n并校验外层容器边界。通过 ",[54,179,180],{},"editor.run(command, capturedTarget)"," 执行，以拒绝过时菜单意图。",[27,183],{"name":184},"replaceSourceBlock",[27,186],{"name":187},"SourceBlankLine",[27,189],{"name":190},"sourceBlankLineAt",[27,192],{"name":193},"insertAtSourceBlankLine",[27,195],{"name":196},"removeSourceBlock",[27,198],{"name":199},"moveSourceBlock",[14,201,202],{"id":202},"编辑边界",[10,204,205,206,209,210,213,214,217,218,217,221,224,225,229,230,233],{},"插件用 ",[54,207,208],{},"addEditingBoundaries()","（或 descriptor 的 ",[54,211,212],{},"editingBoundaries","）声明隐藏源码的\n语义范围。宿主 ",[54,215,216],{},"MdEditor"," \u002F ",[54,219,220],{},"createMdEditor",[54,222,223],{},"createMdEditorExtensions"," 的同名选项可\n按节点覆盖默认规则；完整接入示例见 ",[21,226,228],{"href":227},"\u002Fguide\u002Fmd-editor#%E5%85%89%E6%A0%87%E4%B8%8E%E7%BC%96%E8%BE%91%E8%BE%B9%E7%95%8C","光标与编辑边界","。\n这份声明用于导航、选区和正文输入保护；Enter、Shift-Enter 和 Mod-Enter 的结构操作由\n下面的 ",[54,231,232],{},"addBlockInput()"," 合同承担。",[235,236,237],"h3",{"id":237},"范围和策略",[10,239,240,241,244,245,248,249,252,253,256,257,260,261,25],{},"所有偏移属于当前 ",[54,242,243],{},"state.doc","。必须满足\n",[54,246,247],{},"0 ≤ from ≤ contentFrom ≤ contentTo ≤ to ≤ state.doc.length","；可选的\n",[54,250,251],{},"selectFrom\u002FselectTo"," 必须覆盖 ",[54,254,255],{},"from\u002Fto"," 且在文档内。非法范围在解析规则时抛出\n",[54,258,259],{},"invalid-editing-boundary"," 错误；无法确认语法时应返回 ",[54,262,68],{},[264,265,266,281],"table",{},[267,268,269],"thead",{},[270,271,272,278],"tr",{},[273,274,275],"th",{},[54,276,277],{},"kind",[273,279,280],{},"语义与常见用法",[282,283,284,295,305,315,325,338],"tbody",{},[270,285,286,292],{},[287,288,289],"td",{},[54,290,291],{},"style",[287,293,294],{},"加粗、斜体、代码、链接等行内格式，正文在成对外壳内部",[270,296,297,302],{},[287,298,299],{},[54,300,301],{},"block",[287,303,304],{},"代码、容器等块，外壳保护包含保持结构所需的相邻换行",[270,306,307,312],{},[287,308,309],{},[54,310,311],{},"prefix",[287,313,314],{},"标题、列表、引用等结构前缀，光标进入前缀后的正文",[270,316,317,322],{},[287,318,319],{},[54,320,321],{},"separator",[287,323,324],{},"压缩的结构间隔，导航跳过；产品允许原生删除以合并正文",[270,326,327,332],{},[287,328,329],{},[54,330,331],{},"syntax",[287,333,334,335,337],{},"表格竖线或对齐行等结构字符，",[54,336,251],{}," 可指向完整表格",[270,339,340,345],{},[287,341,342],{},[54,343,344],{},"atom",[287,346,347],{},"整体组件或空围栏，光标不进入内部，边缘删除先选中整体",[10,349,350,353,354,357,358,361,362,365,366,369,370,373,374,377],{},[54,351,352],{},"navigation: 'content'"," 是默认的行内进入策略，",[54,355,356],{},"split"," 保留样式内外两侧。\n块显式声明 ",[54,359,360],{},"content"," 时，原生行首、行尾端点收敛到块内内容，适用于表格行的外侧竖线；\n左右键仍通过公共导航越过重复端点，删除保护不变。未声明时保留块的默认跨外壳导航。\n当前 ",[54,363,364],{},"navigation: 'native'"," 使整条语法规则退出公共运行时，包括它的编辑保护。\n",[54,367,368],{},"deletion: 'unwrap'"," 在对应边缘移除完整样式或前缀；",[54,371,372],{},"protect"," 保留外壳；\n",[54,375,376],{},"deletion: 'native'"," 仅委托编辑处理，仍保留导航规则。建议显式声明删除策略。\n完整选中所属结构允许整体删除，部分选区保留其外壳。",[27,379],{"name":380},"EditingBoundary",[27,382],{"name":383},"EditingBoundaryKind",[235,385,386],{"id":386},"查询和优先级",[10,388,389,392,393,396],{},[54,390,391],{},"nodes"," 使用解析器节点名称。",[54,394,395],{},"resolve"," 是当前源码上的纯查询，不能 dispatch、保留旧\n节点偏移或按显示行数猜测位置。普通导航只查询端点与祖先，编辑查询本次变更覆盖的\n语法；自定义查询也应保持对应的工作范围。",[10,398,399,400,402],{},"同一节点只采用按扩展优先级排序后的第一条规则，宿主覆盖在功能默认规则之前。\n规则整体替换，不逐字段合并；返回 ",[54,401,68],{}," 会退出该语法规则，不回退到下一条。\n已物化的块组件独立贡献整体对象范围，并覆盖其内部语法规则。",[10,404,405,406,409,410,413,414,417,418,420],{},"默认 ",[54,407,408],{},"when: 'hidden'"," 仅在整体隐藏语法的呈现中启用。",[54,411,412],{},"when: 'prose'"," 扩展到 Markdown\n编辑呈现；需要保护未显露代码等结构时，先用 ",[54,415,416],{},"isSourceRevealed(state, node)"," 检查\n具体范围，显露时返回 ",[54,419,68],{},"。源码模式与组合输入期间不执行边界归一化。",[27,422],{"name":423},"EditingBoundaryRule",[27,425],{"name":426},"EditingBoundaryContext",[235,428,429],{"id":429},"安装与生命周期",[10,431,432,433,435,436,439,440,443,444,447,448,451],{},"一般插件使用 ",[54,434,208],{}," 自动接入。高级 CM 集成可在\n",[54,437,438],{},"addCodeMirrorExtensions()"," 中安装 ",[54,441,442],{},"editingBoundaries(rules)","；重复安装共享同一执行层。\n",[54,445,446],{},"rules"," 为空时返回空扩展，不卸载其他插件的规则。MD Editor 的 ",[54,449,450],{},"editingBoundaries: []","\n也保留默认规则；配置只在创建时读取，Vue prop 更新不自动重装规则。",[10,453,454],{},"输入保护在接受事务前生成完整变更，保留 annotations 并映射 effects；移动光标不写源码\n或增加历史。显式结构命令、外部文档更新与历史恢复保持自身权限；绕过过滤器的事务\n只在需要时恢复合法选区，并检查当前状态身份和实例是否已销毁。只读不接受正文写入。",[27,456],{"name":212},[14,458,459],{"id":459},"块级回车",[10,461,462,463,465,466,25,468,471,472,474],{},"扩展通过 ",[54,464,232],{}," 声明语法块的输入归属；参见 ",[21,467,24],{"href":23},[54,469,470],{},"planBlockInput"," 是纯规划入口，返回 ",[54,473,68],{}," 时由调用方保留原生处理。",[27,476],{"name":477},"BlockInputRule",[27,479],{"name":480},"BlockInputContext",[27,482],{"name":483},"BlockInputTarget",[27,485],{"name":486},"BlockInputIntent",[27,488],{"name":489},"BlockInputResult",[27,491],{"name":492},"BlockInputHandler",[27,494],{"name":495},"BlockInputBehavior",[27,497],{"name":470},{"title":499,"searchDepth":500,"depth":500,"links":501},"",2,[502,503,504,505,506,507,508,509,510,511,512,518],{"id":16,"depth":500,"text":16},{"id":32,"depth":500,"text":32},{"id":41,"depth":500,"text":41},{"id":50,"depth":500,"text":50},{"id":98,"depth":500,"text":98},{"id":107,"depth":500,"text":107},{"id":116,"depth":500,"text":116},{"id":125,"depth":500,"text":125},{"id":138,"depth":500,"text":138},{"id":147,"depth":500,"text":147},{"id":202,"depth":500,"text":202,"children":513},[514,516,517],{"id":237,"depth":515,"text":237},3,{"id":386,"depth":515,"text":386},{"id":429,"depth":515,"text":429},{"id":459,"depth":500,"text":459},"命令草稿、失败结果、外部修改与异步范围协议。","md",[29,38,47,104,113,122,135,144],"zh-CN",{},true,"\u002Fapi\u002Fcommands","API 参考",{"title":5,"description":519},"api\u002Fcommands.zh-CN","iQJSPKDD7mQrFgd5mWfbtCOqX_zRXTsDkNqDqbYZi-k",1793046311421]