зеркальное отображение получить текущую позицию символа - PullRequest
1 голос
/ 30 марта 2012

Я пытаюсь использовать CodeMirror для выделения определенного текста. Необычная вещь в этом проекте состоит в том, что то, что я должен выделить, не предопределено, скорее я делаю вызов веб-службы, и ответ веб-службы дает мне индексы того, что должно быть выделено. Это проект НЛП, и веб-сервис дает мне «специфические» знания по контексту, и это то, что я хочу выделить.

Проще говоря, я получаю объекты JSON с атрибутами start и end, которые обозначают позиции символов, которые должны быть выделены

Ниже приведено то, что я имею в качестве определения режима, я отредактировал режим "diff"

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 Ответ

3 голосов
/ 17 января 2013

Старый вопрос, но если вы пытаетесь найти значения строки / ch исключительно из числа, которое вы можете использовать:

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

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