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

私の質問は、文字列の先頭(行ではない)を基準にしてストリームの現在の値を取得するにはどうすればよいですか?ストリームが149番目の文字を読み取っている場合、この番号を取得するにはどうすればよいですか?「pos」、「start」、「columns」は、現在の行の位置のみを示します。

これはCodeMirrorを使用して可能ですか?

4

1 に答える 1

3

古い質問ですが、純粋に数値から line/ch 値を見つけようとしている場合は、次を使用できます。

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

var obj = editor.posFromIndex(number);
alert(obj.line + ', ' + obj.ch);
于 2013-01-17T12:51:26.943 に答える