ace-editor 中的自定义自动完成功能在“.”之后不起作用。
Custom autocomplete in ace-editor does not work after "."
我想在 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])
如果我删除 identifierRegexps
和 if
子句,自动完成会起作用,但在“.”之后不起作用。
我也阅读了这个解决方案,但它不再有效:
您可以绑定“.”然后建立你的wordList。您可以将 wordList 设为全局并在 getCompletions 中使用,或者在绑定“.”后使用。使用此代码获取前面的项目即 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()
}
}
});
我想在 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])
如果我删除 identifierRegexps
和 if
子句,自动完成会起作用,但在“.”之后不起作用。
我也阅读了这个解决方案,但它不再有效:
您可以绑定“.”然后建立你的wordList。您可以将 wordList 设为全局并在 getCompletions 中使用,或者在绑定“.”后使用。使用此代码获取前面的项目即 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()
}
}
});