Mir*_*vic 17 javascript autocomplete ace-editor
我正在使用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);
Run Code Online (Sandbox Code Playgroud)
这是它的样子:
在添加我的qtag完成符之前,我已尝试删除所有完成符,但这并不会删除局部变量
langTools.completers = [];
Run Code Online (Sandbox Code Playgroud)
任何输入都会受到赞赏,我试图避免在可能的情况下修改ace/ext/language_tools.js,但此时我甚至打开了那个选项.
Sup*_*ova 19
诀窍是在打电话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,
});
Run Code Online (Sandbox Code Playgroud)
您可以使用 langTools.setCompleters
langTools = require("ace/ext/language_tools")
langTools.setCompleters([langTools.snippetCompleter, langTools.textCompleter])
Run Code Online (Sandbox Code Playgroud)
要么 editor.completers = [langTools.snippetCompleter, langTools.textCompleter, qtags]