语言能力
本页说明 Kode 在 .def 文件上的语言能力,包括高亮、补全、悬停、跳转和诊断。
支持范围
当前重点支持:
.def文件entities.xml- 生成后的 Python 实体文件与
.def的双向关联
语法高亮
.def 按 KBEngine 语义做高亮,不套用普通 XML 的着色规则。
当前高亮重点
- 区块标签
PropertiesParentBaseMethodsCellMethodsClientMethods
- 字段标签
TypeFlagsDefaultDatabaseLengthIdentifierDetailLevelArg
- 类型值
UINT32VECTOR3ARRAYFIXED_DICTTUPLE
- 标志值
BASE_AND_CLIENTCELL_PUBLICALL_CLIENTS
- 自定义属性名和方法名
设计目标
- 让
.def看起来像 KBEngine DSL,而不是“套了颜色的 XML” - 让结构标签、值和业务定义有明显层次
- 给后续诊断和跳转打基础
智能提示
类型补全
在 <Type> 或 <Arg> 的值语境中会提供常见类型补全。
Flags 补全
在 <Flags> 中会提供 Flags 建议。
DetailLevel 补全
在 <DetailLevel> 中会提供:
NEARMEDIUMFAR
标签补全
输入 < 时会提示常见结构标签。
Hover
当前 Hover 分为三类,可以单独开关。
标签说明
例如悬停:
TypeFlagsPropertiesFIXED_DICT
会显示该标签的用途说明。
配置项:
kbengine.hover.showTagDocs
值说明
例如悬停:
UINT32BASE_AND_CLIENTFAR
会显示值的含义、用途和说明。
配置项:
kbengine.hover.showValueDocs
自定义符号摘要
例如悬停自定义属性或方法:
xml
<HP>
<Type> UINT32 </Type>
<Flags> BASE_AND_CLIENT </Flags>
</HP>会显示当前定义的摘要信息,例如:
TypeFlagsDefaultDetailLevelArg
配置项:
kbengine.hover.showSymbolDocs
跳转定义
当前支持
- 从
entities.xml跳转到对应的.def - 从
.def中Type/Arg里的实体引用跳转到对应实体定义 - 从生成的 Python 文件跳转回
.def中的属性和方法
典型示例
xml
<Target>
<Type> Avatar </Type>
<Flags> BASE_AND_CLIENT </Flags>
</Target>把光标放到 Avatar 上,可以跳到 Avatar.def。
重命名
在 .def 文件里把光标放到顶层属性名或方法名上(开标签或闭标签均可),按 F2 即可重命名。
更新范围
- 同文件内同名声明:属性的全部 Flags 作用域变体、方法所属段内的同名方法
- 后代实体定义中的同名复述:
Parent链与Interfaces混入的传递闭包覆盖到的.def(传播边对齐引擎装载路径:Parent/接口名取元素的首个子节点——文本取文本、元素取标签名,同引擎getKey语义,紧凑的<Parent><Hero/></Parent>与文本写法都认,但标签间换行缩进会使首子节点成为空白文本、引擎拼不出父类文件,此时不产生边;实体父类解析到定义根平铺位置、组件 def 的Parent在components/内解析、接口固定解析到interfaces/子目录;接口文件装载时不读Parent;<Interfaces>只认interface/Interface/type/Type四种包裹拼写,以接口名直接命名的子元素(如<MoveIface/>)引擎不装载、不产生传播边) - 开标签与闭标签上的名字同步更新
边界
- 只更新
.def面;Python 侧self.x访问与方法调用、entities.xml、types.xml、数据库 schema 视图不参与 - 在复述处发起重命名只向下传播(该文件与其后代),不会回改祖先源头声明
BaseMethods/CellMethods/ClientMethods是三个独立命名空间,同名方法互不影响- 新名必须是合法标识符(字母或下划线开头);目录里找不到
entities.xml定位定义根时只更新当前文件 - 新名与既有方法/属性/组件同名不做装载校验(引擎侧同名属装载错误,可由「性能分析」命令的同名检查项提示)
- 文件枚举覆盖定义根整树(含未在
entities.xml登记的.def),面向"会被编辑的文件"而非"本轮被装载的文件"
诊断
诊断分成“总开关”和“规则子开关”。
当前规则
- 未知类型
- 未知 Flags
- 未知 DetailLevel
- 重复属性或方法
- 属性缺少
Type/Flags
推荐使用方式
如果你觉得过于频繁,不要直接关掉全部诊断,优先关闭这些更吵的规则:
kbengine.diagnostics.checkDuplicateDefinitionskbengine.diagnostics.checkMissingPropertyFields
完整配置说明见 配置说明。
当前边界
目前还没有完整做到:
- 重命名只覆盖
.def定义与引用面,Python 侧引用同步与实体本身的更名属于下一阶段 - 默认值与类型的严格匹配检查
- 跨全部项目实体引用的深度静态分析
这些属于下一阶段增强。