CodeMirror:如何在光标位置之前或之后读取编辑器文本

Def*_*wun 3 javascript plugins codemirror adobe-brackets

我正在尝试找到一种方法来测试光标是否在特定字符串之前,然后触发事件.

我正在尝试做的示例: 用户点击编辑器内的某处,cursorActivity(光标或编辑器已更改)事件被触发,我捕获事件并测试前6个字符是否与字符串匹配'color:'如果是,那么我做什么.

我似乎无法找到任何类型的方法,让您实际上直接从编辑器中读取,除了捕获readInput每次键入字符或粘贴字符串时触发的事件.这适用于某一点但是当用户通过鼠标单击移动光标时失败.

TL; DR如何在特定字符串后立即检测光标何时移动?

Def*_*wun 6

好吧终于找到了解决方案.您可以检索实际文档,使用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>
Run Code Online (Sandbox Code Playgroud)