我正在使用ace编辑器,我启用了basicautocompletion,我从另一台服务器提取数据以获取建议。一切正常,但我想从建议框中删除本地建议。
以下是我的相关代码:
var langTools = ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.setTheme("ace/theme/xcode");
var TextMode = require("ace/mode/text").Mode;
editor.getSession().setUseWrapMode(true);
editor.setOptions({
enableBasicAutocompletion: true,
});
var qtags = {
getCompletions: function(editor, session, pos, prefix, callback) {
$.getJSON(jsonURL,
function(tagList) {
callback(null, tagList.map(function(qtag) {
return {name: qtag.name, value: "#"+qtag.name+"() ", meta: "qtag"}
}));
})
}
}
langTools.addCompleter(qtags);
以下是它的样子:
在添加我的qtag完成符之前,我已尝试删除所有完成符,但这并未删除局部变量
langTools.completers = [];
任何输入都会受到赞赏,我试图避免在可能的情况下修改ace / ext / language_tools.js,但此时我甚至打开那个选项。
答案 0 :(得分:17)
诀窍是在致电langTools.setCompleters([])
之前致电editor.setOptions({enableBasicAutocompletion: true});
。在设置或添加完成程序之前,最好将此选项显式设置为false
。无需更改language_tools的源代码。
示例:
var langTools = ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.setTheme("ace/theme/xcode");
var TextMode = require("ace/mode/text").Mode;
editor.getSession().setUseWrapMode(true);
var qtags = {
getCompletions: function(editor, session, pos, prefix, callback) {
$.getJSON(jsonURL,
function(tagList) {
callback(null, tagList.map(function(qtag) {
return {name: qtag.name, value: "#"+qtag.name+"() ", meta: "qtag"}
}));
})
}
}
langTools.setCompleters([qtags]);
editor.setOptions({
enableBasicAutocompletion: true,
});
答案 1 :(得分:8)
您可以使用langTools.setCompleters
langTools = require("ace/ext/language_tools")
langTools.setCompleters([langTools.snippetCompleter, langTools.textCompleter])
或editor.completers = [langTools.snippetCompleter, langTools.textCompleter, qtags]