Javascript CodeMirror使用多个提示源自动完成

Javascript CodeMirror使用多个提示源自动完成,javascript,codemirror,Javascript,Codemirror,是否可以为自动完成包含多个提示源?我试过这个: 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(c

是否可以为自动完成包含多个提示源?我试过这个:

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);
};

但它似乎只包含引用的最后一个源文件,而忽略了其余的源文件。有什么简单的方法可以做到这一点吗?

我在另一个问题中找到了我的问题的答案,所以如果这让这个问题有点多余,请原谅。我需要做的是找出在调用autocomplete时当前处于活动状态的模式(我使用的是混合模式)。要首先执行此操作,我需要以下模式:

var mode = CodeMirror.innerMode(cm.getMode(), cm.getTokenAt(POS).state).mode.name;
我找到了。在我的情况下,每当调用autocomplete时,我都希望这样做,因此我的函数如下所示:

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);
    }
};

现在,每当调用“自动完成”时,它都会检查编辑器在文档中的特定点处于何种模式。

我在另一个问题中找到了我问题的答案,请原谅,如果这使这个问题有点多余。我需要做的是找出在调用autocomplete时当前处于活动状态的模式(我使用的是混合模式)。要首先执行此操作,我需要以下模式:

var mode = CodeMirror.innerMode(cm.getMode(), cm.getTokenAt(POS).state).mode.name;
我找到了。在我的情况下,每当调用autocomplete时,我都希望这样做,因此我的函数如下所示:

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);
    }
};

现在,每当调用autocomplete时,它都会检查编辑器在文档中的特定点处于何种模式。

CodeMirror(最新版本)中已经存在处理此问题的功能,您可以使用defineHelper定义语言特定的帮助器函数,标准的完成器(show hint.js)将,如果您没有给它一个显式的完成函数,请使用为该语言定义的函数。标准的completer插件确实注册为适用于其语言的插件,因此它应该“开箱即用”。

CodeMirror(最新版本)中已经提供了处理此问题的功能,您可以使用defineHelper定义特定于语言的帮助器函数,而标准completer(show hint.js)将,如果您没有给它一个显式的完成函数,请使用为该语言定义的函数。标准的completer插件确实注册了适用于其语言的插件,因此它应该“开箱即用”