代码镜像获取当前的char位置

时间:2012-03-30 14:54:13

标签: javascript highlighting codemirror

我正在尝试使用CodeMirror突出显示某些文本。 这个项目中不寻常的事情是,我必须突出显示的不是预定义的,而是我进行Web服务调用,webserivice的响应为我提供了应该突出显示的内容的索引。这是一个NLP项目,网络服务给了我特定于上下文的“知识”,这就是我想要强调的内容。

简单地说我正在获得具有开始和结束属性的JSON对象,这些属性表示要突出显示的字符的位置

以下是我所拥有的模式定义,我编辑了“差异”模式

CodeMirror.defineMode("diff", function() {
    var i=-1;
    return {
        token: function(stream) {
            i++;
            //      stream.skipToEnd();
            var ch = stream.next();
            if ( bufferedResponse != null && bufferedResponse != "" && bufferedResponse.allergies != null ){
                $.each( bufferedResponse.allergies, function( key, value )
                {
                    if ( key != null && value != null && value != "" )
                    {
                        if(i<value.start && i>value.end){
                            return "minus";
                        }
                    }
                });

            }
        }
    };
});

CodeMirror.defineMIME("text/x-diff", "diff");

我的问题是如何才能获得流的当前相对于字符串的开头(不是行)?我的意思是如果流正在读取第149个字符,我该如何检索这个数字? “pos”,“start”和“columns”只给我当前行中的位置!

使用CodeMirror可以实现吗?

1 个答案:

答案 0 :(得分:2)

旧问题,但如果您尝试纯粹从您可以使用的数字中找到行/ ch值:

var editor = CodeMirror.fromTextArea(...
...);

var obj = editor.posFromIndex(number);
alert(obj.line + ', ' + obj.ch);