是否可以为自动完成包含多个提示源?我试过这个:
CodeMirror.commands.autocomplete = function(cm) {
CodeMirror.showHint(cm, CodeMirror.hint.xml);
CodeMirror.showHint(cm, CodeMirror.hint.html);
CodeMirror.showHint(cm, CodeMirror.hint.css);
CodeMirror.showHint(cm, CodeMirror.hint.javascript);
};
但似乎只包含引用的最后一个源文件而忽略其余的文件。有没有简单的方法呢?
答案 0 :(得分:9)
我在另一个问题中找到了我的问题的答案所以请原谅我,如果这使得这个问题有点多余。我需要做的是在调用自动完成时找出当前活动的模式(我正在使用混合模式)。首先,我需要模式:
var mode = CodeMirror.innerMode(cm.getMode(), cm.getTokenAt(POS).state).mode.name;
我找到了here。对于我的情况,我想在调用自动完成时这样做,所以我的函数看起来像这样:
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);
}
};
现在每当调用自动完成时,它都会检查编辑器在文档中该特定点的模式。
答案 1 :(得分:5)
处理此功能的功能已存在于CodeMirror的(最新版本)中,您可以使用defineHelper定义特定于语言的帮助程序函数,如果不提供,则使用标准完成程序(show-hint.js)它是一个显式的完成函数,使用为语言定义的函数。标准的完成者插件自己注册适用于他们的语言,所以它应该“开箱即用”。