我试图找到一种方法来测试光标前面是否有特定字符串,然后触发事件。
我尝试做的例子:
用户点击编辑器内的某处,触发cursorActivity
(游标或编辑器已更改)事件,我捕获事件并测试前6个字符是否与字符串'color:'
匹配如果是,那么做点什么。
除了捕获每次键入字符或字符串时触发的readInput
事件外,我似乎无法找到任何直接从编辑器中读取的方法。粘贴。这适用于某一点,但是当用户通过鼠标单击移动光标时会失败。
TL; DR 如何检测光标何时在特定字符串后立即移动?
答案 0 :(得分: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>