我在另一个问题中找到了我的问题的答案,所以如果这让这个问题有点多余,请原谅。我需要做的是在调用自动完成时找出当前处于活动状态的模式(我正在使用混合模式)。为此,我首先需要以下模式:
var mode = CodeMirror.innerMode(cm.getMode(), cm.getTokenAt(POS).state).mode.name;
我在这里找到的。对于我的情况,每当调用自动完成功能时,我都想这样做,所以我的函数如下所示:
CodeMirror.commands.autocomplete = function(cm) {
var doc = cm.getDoc();
var POS = doc.getCursor();
var mode = CodeMirror.innerMode(cm.getMode(), cm.getTokenAt(POS).state).mode.name;
if (mode == 'xml') { //html depends on xml
CodeMirror.showHint(cm, CodeMirror.hint.html);
} else if (mode == 'javascript') {
CodeMirror.showHint(cm, CodeMirror.hint.javascript);
} else if (mode == 'css') {
CodeMirror.showHint(cm, CodeMirror.hint.css);
}
};
现在,每当调用自动完成功能时,它都会检查编辑器在文档中的特定点处于什么模式。