在ace编辑器中,可以通过使用.
触发两个不同的自定义自动补全程序。下面是一种实现方式:
setCompleters
方法来实现,该方法接受一个包含自动补全程序的数组作为参数。var editor = ace.edit("editor");
// 自定义自动补全程序1
var completer1 = {
getCompletions: function(editor, session, pos, prefix, callback) {
// 自定义自动补全逻辑1
// ...
// 返回自动补全结果
callback(null, completions);
}
};
// 自定义自动补全程序2
var completer2 = {
getCompletions: function(editor, session, pos, prefix, callback) {
// 自定义自动补全逻辑2
// ...
// 返回自动补全结果
callback(null, completions);
}
};
// 注册自动补全程序
editor.completers = [completer1, completer2];
.
键的按下事件,并根据光标位置判断触发哪个自动补全程序。可以使用on("keydown")
方法来实现。editor.on("keydown", function(e) {
if (e.keyCode === 190 && e.getCompletions() === null) {
var cursorPos = editor.getCursorPosition();
var line = editor.session.getLine(cursorPos.row);
var prefix = line.slice(0, cursorPos.column).split(/[^\w.$]+/).pop();
// 根据光标位置判断触发哪个自动补全程序
if (prefix === ".") {
editor.execCommand("startAutocomplete");
} else {
editor.execCommand("startAutocomplete");
}
}
});
以上代码中,通过监听键盘按下事件,当按下.
键时,获取光标位置和当前行的内容,提取出.
之前的字符串作为前缀。然后根据前缀判断触发哪个自动补全程序,调用execCommand("startAutocomplete")
方法触发自动补全。
需要注意的是,以上代码只是一种实现方式,具体的自动补全逻辑和触发方式可以根据实际需求进行调整。
领取专属 10元无门槛券
手把手带您无忧上云