我想将代码完成功能集成到基于 CodeMirror 的 xml 编辑器中。它主要解析 xml 文件的模式,并根据模式及其结构提供代码完成。但是有些事情我无法做到。例如,当光标移动到 xml 标记内部的位置时,代码完成必须相应地执行。它应该知道光标在标签内,等等。我该怎么做?
我认为代码镜像的 XML 解析器可能会提供有关光标位置语义位置的一些改变的线索。那可能吗?
或者是否有任何通用的方法来分析光标位置并相应地表现?
提前致谢。
我想将代码完成功能集成到基于 CodeMirror 的 xml 编辑器中。它主要解析 xml 文件的模式,并根据模式及其结构提供代码完成。但是有些事情我无法做到。例如,当光标移动到 xml 标记内部的位置时,代码完成必须相应地执行。它应该知道光标在标签内,等等。我该怎么做?
我认为代码镜像的 XML 解析器可能会提供有关光标位置语义位置的一些改变的线索。那可能吗?
或者是否有任何通用的方法来分析光标位置并相应地表现?
提前致谢。
如果您使用 CodeMirror 2,则有一个 getTokenAt 方法可让您分析给定位置的解析器状态。您可以在http://codemirror.net/2/demo/complete.html中看到它用于自动完成本地 JavaScript 变量。对于 XML 解析器,您可以检查状态的 context 属性,它是一个对象的链接列表,每个对象都包含一个 tagName 属性和一个链接到它上面的上下文的 prev 属性。