如何在ace编辑器中的每个关键事件上启用自动完成功能?

时间:2019-07-01 12:12:08

标签: javascript autocomplete ace-editor autosuggest

我能够在ace编辑器中获取(ctrl + space)键事件的自动完成列表,但是我想在用户键事件上实现相同的行为。有什么办法可以做同样的事情?

1 个答案:

答案 0 :(得分:0)

要添加自定义自动完成功能,您需要使用 addCommand 绑定密钥,然后调用自动完成功能

editor.commands.addCommand({
        name: "myCommand",
        bindKey: { win: "$", mac: "$" },
        exec: function (editor) {
              autocomplete();
        }
 });

一旦用户触发了您可以调用自动完成功能的键,我将在此处添加示例自动完成功能,并根据需要进行更改。

autocomplete: function () {
        staticWordCompleter = {
            var getWordList = function(editor, session, pos, prefix, callback, isRHSEditor) {
            var wordList = ["Java","Javascript","Python"]; // add your words to this list

            callback(null, wordList.map(function(word) {
            return {
                 caption: word,
                value: word
            };
   }));
  editor.completers = [staticWordCompleter];
}

要始终使用自动填充功能,可以尝试以下操作:

editor.commands.on("afterExec", function (e) {
    if (e.command.name == "insertstring" && /^[\w.]$/.test(e.args)) {
        editor.execCommand("startAutocomplete");
    }
});

或者您可以绑定更改事件并调用自动完成功能,这将在每次点击时触发自动完成功能

editor.on("change", function () {
      autocomplete();
});