如何使用 ace 编辑器动态触发自动完成:输入命令和完成选项
How to trigger autocomplete dynamically with ace editor: input commands and complete options
- 我知道如何在网页中使用ace编辑器
- 我知道如何添加完成器
我想这样做,输入一个命令,一个空格,然后按-
(破折号(,让王牌编辑器自动完成选项(参数(,我该怎么办?
例如,下面是一个带有选项-a|-b|-c|-d
的命令Print
,当我输入Print -
时,如何触发自动完成,并让您选择 -a
或-b
或-c
或-d
?
我自己解决。代码如下:
var langTools = ace.require("ace/ext/language_tools");
var editor = ace.edit("stepEditor");
editor.setTheme("ace/theme/chrome");
editor.getSession().setMode("ace/mode/tcl");
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: false,
enableLiveAutocompletion: true
});
var wordList = [];
var icc2Commands = null;
jQuery.getJSON("auto_completion.json",function(obj){
icc2Commands = obj;
for(var name in obj){
wordList.push(name);
}
for(var i = 0; i < 5; i++)
{
console.log(wordList[i]);
}
});
var icc2Completer = {
getCompletions: function(editor, session, pos, prefix, callback) {
var curLine = session.getDocument().getLine(pos.row);
var curTokens = curLine.slice(0, pos.column).split(/'s+/);
var curCmd = curTokens[0];
if (!curCmd) return;
var lastToken = curTokens[curTokens.length-1];
var candidates = [];
if (lastToken && lastToken.match(/^-/)) {
for (var option of icc2Commands[curCmd]) {
if (option.startsWith(lastToken.slice(1))) {
candidates.push("-"+option);
}
}
callback(null, candidates.map(function(ea) {
return {name: ea, value: ea, score: 300, meta: "ICC2Option"};
}));
}
else{
callback(null, wordList.map(function(word) {
return {
caption: word,
value: word,
meta: "ICC2Command"
};
}));
}
}
}
langTools.addCompleter(icc2Completer);
enableLiveAutocompletion
似乎在许多情况下都有效,但我发现由于某种原因,如果您键入一个单词,后跟一个空格,然后是另一个单词,它不会显示弹出窗口。对我有用的是打电话:
sourceEditor.execCommand('startAutocomplete');
这是触发ctrl + space操作的编程方式,该操作似乎在某些情况下显示弹出窗口,而enableLiveAutocompletion
未涵盖。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- MySQL INSERT 命令正在将输入转换为不同的格式/值
- 命令行上的输入在什么时候解析为 node.js 中的 process.argv
- 在innerHTML命令之后,将JQuery函数重新绑定到输入字段
- 已输入文本的文本字段的 Javascript 命令
- 使用 Javascript 在命令提示符下提示用户输入
- 将命令行输入转换为节点Fluent ffmpeg
- 当输入文本中写入内容时,如何通过jquery在jsf中启用命令按钮
- 我如何通过命令行获得用户输入
- 如何使用 ace 编辑器动态触发自动完成:输入命令和完成选项
- 如何在带有用户输入字段的HTML页面上执行SQL命令,并在同一页面上显示结果
- 如何将用户输入发送到php,执行SQL命令并显示php的输出
- 如何在文本输入上只允许数字,但允许使用JavaScript命令
- 将两个变量相乘,并将total插入到输入的JavaScript中.点击命令
- 从命令行输入、命令行参数 NPM 模块、node.js/javascript 获取值
- 从命令行输入获取完整的iframe url,并从python变量解析为HTML