2012-03-30 23 views
1

我试图使用CodeMirror来突出显示某些文本。 这个项目中的不寻常的事情是,我不得不强调的是,我没有预先定义,而是我做了一个web服务调用,webserivice的响应给了我应该突出显示的索引。这是一个NLP项目,Web服务为我提供了特定于上下文的“知识”,这就是我想强调的。代码镜像获取当前字符位置

简单地说我得到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"); 

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

这可能使用CodeMirror?

回答

1

老问题,但如果你是从一些尝试纯粹是为了找到行/ CH值可以使用:

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

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