javascript - ace-editor 中的自定义自动完成在 "."之后不起作用

标签 javascript ace-editor

我想在 ace 编辑器中使用自动完成功能。在用户键入 foo. 后,我想建议 foo.bar

其实我用了下面的代码:

var langTools = ace.require("ace/ext/language_tools");

var staticWordCompleter = {
    identifierRegexps: [/[\.]/],
    getCompletions: function(editor, session, pos, prefix, callback) {
        console.log(prefix);
        if (prefix == "foo.") {
            var wordList = ["baar", "bar", "baz"];
            callback(null, wordList.map(function(word) {
                return {
                    caption: word,
                    value: word,
                    meta: "static"
                };
        }
        }));

    }
}

langTools.setCompleters([staticWordCompleter])

如果我删除 identifierRegexpsif 子句,自动完成会起作用,但在“.”之后不起作用。

我也阅读了这个解决方案,但它不再有效:Custom autocompleter and periods (.)

最佳答案

您可以绑定(bind)“.”然后建立你的wordList。您可以将 wordList 设为全局并在 getCompletions 中使用,或者在绑定(bind)“.”后使用。使用此代码获取之前的项目即 foo,然后将值插入编辑器。

    self.editor.commands.addCommand({
        name: "dotCommand1",
        bindKey: { win: ".", mac: "." },
        exec: function () {
            var pos = editor.selection.getCursor();
            var session = editor.session;

            var curLine = (session.getDocument().getLine(pos.row)).trim();
            var curTokens = curLine.slice(0, pos.column).split(/\s+/);
            var curCmd = curTokens[0];
            if (!curCmd) return;
            var lastToken = curTokens[curTokens.length - 1];

            editor.insert(".");                

            if (lastToken === "foo") {
                // Add your words to the list or then insert into the editor using editor.insert()
            }
        }
   });

关于javascript - ace-editor 中的自定义自动完成在 "."之后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50452089/

相关文章:

javascript - 如何将 'cut' DOM元素显示在其他地方?

javascript - 如何将 JavaScript 事件处理程序添加到 ASP 控件上动态生成的文本框

javascript - 选择一个单选按钮以显示弹出窗口并保持选中状态

java - 将 <div> 数据传递给 servlet (ACE - EDITOR)

javascript - Ace 编辑器 (javascript) : Triggering a tab press event for Ace Editors event handlers (not just inserting '/t' or spaces)

javascript - 只需单击对象中的 this 按钮

javascript - 访问部分 javascript 数组 (mysqljs)

javascript - 在 Ace 编辑器中自动完成 XML 值和属性

javascript - 智能手机浏览器中的 ACE 编辑器

javascript - ACE Editor : disable syntax validation, 但保持语法突出显示