Ace 编辑器自动完成中的值和标题
Values and captions in Ace Editor autocomplete
我正在使用带有ext-language_tools的Ace Editor v.1.1.8。我想通过自动完成实现以下行为:
用户开始键入,按 Ctrl+空格键,我向他显示找到的标题列表,当他选择其中一个时,将插入值。
我的代码:
var completions = [
{id: 'id1', 'value': 'value1'},
{id: 'id2', 'value': 'value2'}
];
var autoCompleter = {
getCompletions: function(editor, session, pos, prefix, callback) {
if (prefix.length === 0) {
callback(null, []);
return;
}
callback(
null,
completions.map(function(c) {
return {value: c.id, caption: c.value};
})
);
}
};
editor.setOptions({
enableBasicAutocompletion: [autoCompleter],
enableLiveAutocompletion: false,
enableSnippets: false
});
所以我需要从上面是用户输入"val",看到带有"value1"和"value2"的列表,选择其中一个并将"id1"或"id2"插入编辑器。
此时:
- 编辑器总是按值搜索(我需要按标题搜索)
- 如果我设置了"值"= c.value,那么编辑器将正确搜索,但在我需要插入时会插入 c.value c.id。
这是工作代码:http://plnkr.co/edit/8zAZaLpZVhocHmI4GWhd?p=preview
上级:
能够通过向数据添加 insertMatch 方法来实现此行为:
completions.map(function(c) {
return {
value: c.name,
meta: c.id,
completer: {
insertMatch: function(editor, data) {
if (editor.completer.completions.filterText) {
var ranges = editor.selection.getAllRanges();
for (var i = 0, range; range = ranges[i]; i++) {
range.start.column -= editor.completer.completions.filterText.length;
editor.session.remove(range);
}
}
editor.execCommand("insertstring", data.meta);
}
}
};
})
你可以改变
var caption = item.value || item.caption || item.snippet;
行在 https://github.com/ajaxorg/ace/blob/v1.1.8/lib/ace/autocomplete.js#L449 到
var caption = item.caption || item.value || item.snippet;
您还可以在完成器 https://github.com/ajaxorg/ace/blob/v1.1.8/lib/ace/autocomplete.js#L181 上实现自定义 insertMatch 方法,但使用第一个选项发出拉取请求会更好
相关文章:
- ExtJS网格单元格编辑器,防止焦点松动问题
- 可以't使用PHP使用Froala编辑器上传图像URL
- 如何在corona sdk中从CK编辑器中检索数据
- Eclipse编辑器中无法访问的代码
- 如何将拼写检查集成到密文编辑器
- 一个页面上有多个Ace编辑器,没有预先设置元素
- ACE编辑器正在删除模块,因为define是't一根绳子
- 如何从DOM中删除Aloha编辑器
- 用于用户内容的简单代码编辑器/文本格式化程序(在Rails中)
- 在plone 5中将自定义的灵活性内容类型插入到tinymce编辑器中
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 扩展 ACE 编辑器,如何导入自定义文件
- dhtmlx添加新行并启动单元格编辑器
- 为现有Roslyn语言lexer/parser选择基于javascript的代码编辑器
- THRE.js编辑器中的鼠标问题
- 用于 Eclipse 的 JavaScript 编辑器插件
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- Ace 编辑器自动完成中的值和标题
- 标题元素在UIKit HTML编辑器
- 编辑器的图片标题不能删除,除非添加新的段落