在使用自定义前缀提取正则表达式 identifierRegexps
时,我似乎无法在我的自定义完成符中触发 getCompletions 函数基本上我正在尝试创建一个自动完成器,它将触发句点(。)前面的字母。例如。在“foo”中。当输入句号时,我想提出我的自定义建议。
var lang = ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.getSession().setMode("ace/mode/javascript");
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: true
});
var compl = {
identifierRegexps: [/[a-zA-Z_0-9\.\$\-\u00A2-\uFFFF]/],
getCompletions: function (editor, session, pos, prefix, callback) {
alert(prefix);
callback(null, []);
return;
}
}
lang.addCompleter(compl);
使用上面的代码段,在键入点时会显示建议弹出窗口但 getCompletions 不会触发。但是,它会触发任何其他角色。
更新
在使用
添加自定义完成符之前删除默认完成符lang.setCompleters();
使 getCompletion 函数触发。但是, prefix 参数在这种情况下为空。
答案 0 :(得分:2)
通过修改language_tools.js中的ID_REGEX var来管理解决它。
答案 1 :(得分:0)
在ext-language-tools.js文件中,
替换
var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/;
到
var ID_REGEX = /[a-zA-Z_0-9\.\$\-\u00A2-\uFFFF]/;
使用上述ID_REGEX,自动完成功能现在将触发句点(。)
答案 2 :(得分:0)
修改language_tools.js
文件不是一个好的解决方案,您可以通过调用方法getCompletionRegex
来调整正则表达式模式:
editor.getCompletionRegex = () => /[a-zA-Z_0-9.\$\-\u00A2-\uFFFF]/;