2015-09-17 4 views
0

Я пытаюсь найти способ проверить, предшествует ли курсор определенной строкой, а затем вызывает событие.CodeMirror: как читать текст редактора до или после позиции курсора

Пример того, что я пытаюсь сделать: Пользователь щелкает где-то внутри редактора, cursorActivity (курсор или редактор изменен) событие вызывается, Ловля события и проверить, действительно ли предыдущие 6 символов соответствует строке 'color:' Если так, то сделайте что-нибудь.

Я не могу найти какой-либо метод, который позволяет вам фактически читать непосредственно из редактора, но, кроме того, чтобы поймать событие readInput, которое запускается каждый раз, когда набирается символ или наклеивается строка. Это работает до точки, но не удается, когда пользователь перемещает курсор с помощью мыши.

TL; DR Как определить, когда курсор перемещается где-то сразу после определенной строки?

ответ

2

Хорошо, наконец, нашли решение. Вы можете получить фактический документ с помощью editor.doc, который позволяет получить строку курсора &. Затем вы можете получить нужную строку с editor.doc.getLine(n) и сравнить вашу подстроку

Вот мой тест:

<!-- Create a simple CodeMirror instance --> 
<link rel="stylesheet" href="lib/codemirror.css"> 
<script src="lib/codemirror.js"></script> 
<textarea id="myTextarea"></textarea> 
<script> 

    var editor = CodeMirror.fromTextArea(myTextarea, { 
    lineNumbers: true 
    }); 

    //Catch cursor change event 
    editor.on('cursorActivity',function(e){ 
    var line = e.doc.getCursor().line, //Cursor line 
     ch = e.doc.getCursor().ch,  //Cursor character 
     stringToMatch = "color:", 
     n = stringToMatch.length, 
     stringToTest = e.doc.getLine(line).substr(Math.max(ch - n,0),n); 

    if (stringToTest == stringToMatch) console.log("SUCCESS!!!"); 
    }); 

</script> 
+0

HI @Deftwun кто-то задать вопрос, как ваш вопрос может помочь ему? эта ссылка: http: //stackoverflow.com/questions/39917590/how-to-read-editor-text-before-cursor-position-to-match-specific-words – sam

Смежные вопросы