Javascript 如何使用show hint插件订阅CodeMirror中的选择事件?

Javascript 如何使用show hint插件订阅CodeMirror中的选择事件?,javascript,autocomplete,codemirror,Javascript,Autocomplete,Codemirror,我想在用户浏览自动完成建议时显示一些其他信息。在中有一些关于select事件的内容,但如果可能的话,我无法找到如何订阅它 有人能建议如何订阅该活动吗?或任何其他方法来检测当前选择的是哪一个,并检测何时更改 关于这一点有几个问题,但我找不到任何解决方案。这些事件不是在内部完成对象上触发的,该对象通常在提示提供程序之外不可用,因此无法直接订阅 无论如何,如果你真的想订阅这些事件,你必须覆盖提示提供者。比如说, // Some other code defined CodeMirror.hint.fo

我想在用户浏览自动完成建议时显示一些其他信息。在中有一些关于select事件的内容,但如果可能的话,我无法找到如何订阅它

有人能建议如何订阅该活动吗?或任何其他方法来检测当前选择的是哪一个,并检测何时更改


关于这一点有几个问题,但我找不到任何解决方案。

这些事件不是在内部完成对象上触发的,该对象通常在提示提供程序之外不可用,因此无法直接订阅

无论如何,如果你真的想订阅这些事件,你必须覆盖提示提供者。比如说,

// Some other code defined CodeMirror.hint.foo

var fooHint = CodeMirror.hint.foo;
CodeMirror.hint.foo = function(cm, options) {
    var result = fooHint(cm, options);
    if (result) CodeMirror.on(result, "pick", function() { /* ... */ });
    return result;
};

看。多亏了marijnh提供的解决方案。

事件是在完成数据对象上激发的,可以像这样附加到该对象

extraKeys: {
    "Ctrl-Space": function(cm) { 
        hintFunction(cm);
        var completion = cm.state.completionActive.data;
        CodeMirror.on(completion, 'select', function(completion, element) {
            console.log('huh');
        })
    }
}

必须省略上述示例代码中的语法错误/typo:last)代码中的错误:它必须是“…函数(a){console.log(a.text)}”;以显示拾取的项语法错误现已修复。另一个问题取决于使用代码的人以及他们想对代码做什么,不?请注意定义中的额外参数。Rest只是一个你能用它做什么的例子。