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

时间:2015-02-17 17:35:18

标签: javascript autocomplete codemirror

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

有人可以建议如何订阅该活动吗?或任何其他方法来检测当前选择哪一个并检测何时发生变化?

有几个问题,但我找不到任何解决方案。

2 个答案:

答案 0 :(得分:2)

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

无论如何,如果您真的想订阅这些事件,则必须覆盖提示提供程序。例如,

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

https://github.com/codemirror/CodeMirror/issues/3092。感谢marijnh的解决方案。

答案 1 :(得分:0)

事件在完成数据对象上触发,可以像这样附加。

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