自定义自动完成器和句点 (.)
Custom autocompleter and periods (.)
当使用自定义前缀提取正则表达式 identifierRegexps[=12 时,我似乎无法使 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 参数在那种情况下是空的。
设法通过修改 language_tools.js 中的 ID_REGEX var 来解决它。
在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,自动完成现在将在句点 (.)
上触发
修改language_tools.js
文件不是一个好的解决办法,你可以通过调用方法getCompletionRegex
调整正则表达式模式:
editor.getCompletionRegex = () => /[a-zA-Z_0-9.$\-\u00A2-\uFFFF]/;
当使用自定义前缀提取正则表达式 identifierRegexps[=12 时,我似乎无法使 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 参数在那种情况下是空的。
设法通过修改 language_tools.js 中的 ID_REGEX var 来解决它。
在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,自动完成现在将在句点 (.)
上触发修改language_tools.js
文件不是一个好的解决办法,你可以通过调用方法getCompletionRegex
调整正则表达式模式:
editor.getCompletionRegex = () => /[a-zA-Z_0-9.$\-\u00A2-\uFFFF]/;