2012-03-30 5 views
1

Ich versuche Codemirror zu verwenden für bestimmte Text markieren. Ungewöhnliche Sache in diesem Projekt ist, dass, was ich hervorheben muss, nicht vordefiniert ist, eher mache ich einen Webservice-Anruf und die Antwort von webserivice gibt mir Indizes, was hervorgehoben werden sollte. Dies ist ein NLP Projekt und der Webservice gibt mir kontextspezifisches "Wissen" und das möchte ich hervorheben.Code Spiegelstrom char Position erhalten

Einfach gesagt ich bin immer JSON mit Start- und Ziel Attribute Objekte, die Positionen der Zeichen bezeichnet zu

Nach markiert ist, was ich bisher als Modus Definition haben, habe ich die „diff“ -Modus bearbeitet

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"); 

Meine Frage ist, wie kann ich dem Stream des aktuellen relativen erhalten der Zeichenfolge zu starten (nicht online)? Ich meine, wenn Stream den 149. Char liest, wie kann ich diese Nummer abrufen? "pos", "start" und "columns" geben mir nur die Position in der aktuellen Zeile!

Ist das möglich Codemirror verwenden?

Antwort

1

alte Frage, aber wenn Sie versuchen, die Linie/ch Werte rein von einer Zahl zu finden, die Sie verwenden:

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

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