javascript - CodeMirror:使 token 的原子范围

标签 javascript codemirror

我正在实现 CodeMirror 以用作需要某些语法突出显示的特殊文件的编辑器。我为它编写了自己的解析器,但现在我面临以下问题:有一种特定类型的 token 我总是喜欢标记为原子范围(使用doc.markText)。

我原以为当 token 被解析时会有一些事件处理程序,包含用于其开始和结束位置的 {line, ch} 对象。阅读文档,这似乎不存在,所以我会自己写,但问题是似乎没有办法获得与解析器相关的任何类型的位置数据。

解决此问题的最佳方法是什么?确实有一些粗略的方法,例如注册一个更改处理程序或每隔几秒迭代一次整个内容,但当然应该避免这种情况。

最佳答案

我已经 fork 了 CodeMirror github 存储库并制作了一个在解析 token 时触发的事件。

语法是这样的:

"tokenParsed" (instance: CodeMirror, start: {ch, line}, end: {ch, line}, style: String, text: String)

然后我处理如下:

myCodeMirror.on("tokenParsed", function(instance, start, end, style, text) {
    if(!instance.findMarksAt(end).length) { //check if the mark doesn't exist yet
        if(style && style.indexOf("param") > -1) {
            instance.markText(start, end, {atomic: true});
        }
    }
});

如果有人想要这个,see my repository .

关于javascript - CodeMirror:使 token 的原子范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274039/

相关文章:

javascript - $.ajax() 成功不会运行函数

javascript - 在 Flask Web 应用程序中使用 JS 地理定位 (Python 3.6.6)

javascript - 使用 Cheerio 选择 sibling 和 parent

c - 如何为类C语言配置codemirror?

javascript - 如何在 HTM 文件中集成 Codemirror 库?

javascript - 将 CSS 元素映射到 D3

javascript - 使用 javascript/ajax 将密码值传递到 php 页面

javascript - 向代码镜像添加动态提示

Codemirror 为语法高亮动态添加关键字

Javascript 使用 Code Mirror 中的 HTML 更新 div