Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CodeMirror:生成令牌的原子范围_Javascript_Codemirror - Fatal编程技术网

Javascript CodeMirror:生成令牌的原子范围

Javascript CodeMirror:生成令牌的原子范围,javascript,codemirror,Javascript,Codemirror,我正在实现CodeMirror,用作需要一些语法突出显示的特殊文件的编辑器。我为它编写了自己的解析器,但现在我面临以下问题:有一种特定类型的令牌,我总是想标记为原子范围(使用doc.markText) 我原以为在解析令牌时会存在一些事件处理程序,包含{line,ch}对象作为其开始和结束位置。通过阅读文档,这似乎不存在,因此我将编写自己的文档,但问题是似乎没有办法获得与解析器相关的任何类型的位置数据 最好的办法是什么?有一些非常粗糙的方法,比如注册更改处理程序或每隔几秒钟迭代整个内容,但当然应该

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

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


最好的办法是什么?有一些非常粗糙的方法,比如注册更改处理程序或每隔几秒钟迭代整个内容,但当然应该避免这种情况。

我已经分叉了CodeMirror github repo,并创建了一个事件,在解析令牌时触发该事件

语法如下:

"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});
        }
    }
});
如果有人想要这个