我使用的自定义完成符使用jQuery.getJSON
从服务器中提取值。
我的自定义完成功能与local
和snippets
一同显示,我希望自己始终位于顶部。我在想score
会这样做,但不会像这样工作。我给得分值为1000。
var langTools = ace.require("ace/ext/language_tools");
editor = ace.edit("editor");
editor.setOptions({
enableBasicAutocompletion: true,
enableLiveAutocompletion: true,
enableSnippets: true
});
var myCompleter = {
getCompletions: function(editor, session, pos, prefix, callback) {
if (prefix.length === 0) {
callback(null, []);
return;
}
$.getJSON("/server/completions", function(json) {
callback(null, json.map(function(c) {
return {value: c.value, caption: c.caption, meta: c.meta, score:c.score};
}));
})
}
};
langTools.addCompleter(myCompleter);
有什么想法吗?谢谢,/ w
答案 0 :(得分:1)
确保您提供的完成分数高于默认分数。默认完成者都给出得分0,所以类似{..., score:100 + (c.score || 0)};
的工作
答案 1 :(得分:0)
根据距离,对autocomplete.js(https://github.com/ajaxorg/ace/blob/4a55188fdb0eee9e2d3854f175e67408a1e47655/lib/ace/autocomplete.js#L488)中的分数进行了额外处理。一些ace插件所做的事情(例如参见https://github.com/ajaxorg/ace/blob/4a55188fdb0eee9e2d3854f175e67408a1e47655/lib/ace/mode/html_completions.js#L300)将得分设置为Number.MAX_VALUE
,它也适用于我:我的完成位于列表的顶部。