当我们键入" - "时,编辑器的自动完成功能不会出现。

时间:2017-02-08 19:01:09

标签: javascript autocomplete ace-editor

使用" - " ace编辑器自动完成器不显示(破折号或减号运算符)。但是,完成者显示了对其他常见操作符的建议,如+, - ,*。 /

我已经尝试了ctrl + space选项来拉起窗格,但它也没有帮助我。 enter image description here

1 个答案:

答案 0 :(得分:2)

您可以覆盖默认行为

var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/;

在ext-language_tools.js(旧版本)或autocomplete / utils.js中定义。

从下面的代码中可以看到每个完成者都可以拥有自己的标识符(字符串)提供的正则表达式:

exports.getCompletionPrefix = function (editor) {
    var pos = editor.getCursorPosition();
    var line = editor.session.getLine(pos.row);
    var prefix;
    editor.completers.forEach(function(completer) {
        if (completer.identifierRegexps) {
            completer.identifierRegexps.forEach(function(identifierRegex) {
                if (!prefix && identifierRegex)
                    prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);
            }.bind(this));
        }
    }.bind(this));
    return prefix || this.retrievePrecedingIdentifier(line, pos.column);
};

从我的测试中我可以说这不能正常工作,因为如果前缀为空,将使用默认的正则表达式:

return prefix || this.retrievePrecedingIdentifier(line, pos.column);

此外,我在github页面上发现了一个带有相同问题的pull请求: https://github.com/ajaxorg/ace/pull/2905

我还在ace编辑器的github页面上创建了一个问题: https://github.com/ajaxorg/ace/issues/3430

更新(03.04.2018):

这个功能似乎终于进入了项目:

https://github.com/ajaxorg/ace/pull/2905#pullrequestreview-108526630