首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上面的ACE编辑器自动完成关键字

问上面的ACE编辑器自动完成关键字
EN

Stack Overflow用户
提问于 2016-02-03 17:05:17
回答 2查看 1.6K关注 0票数 3

我有一个基于sql模式的带有自定义突出显示模式的ACE编辑器,所有这些都很好,但是我在大写中定义关键字,当autocompleter显示可用的选项时,它们都是小写的。

我已经检查了旧的sql模式(在修改之前),并且行为完全相同。

有没有办法将此选项转换为大写?

我已经回顾了这个question,但是我一直无法找到方法来实现它。我还尝试将所有toLowerCase()函数删除到ext-language-tools.js中,但仍然显示了小写选项。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-24 16:35:19

这是一个非常脏的解决方法,但是您可以尝试通过添加以下内容来调整ext-language_tools.js。

守则内容如下:

代码语言:javascript
复制
this.filterCompletions = function(items, needle) {
    var results = [];
    var upper = needle.toUpperCase();
    var lower = needle.toLowerCase();
    loop: for (var i = 0, item; item = items[i]; i++) {       
        var caption = item.value || item.caption || item.snippet;
        if (!caption) continue;

将其更改为以下内容,其中'keyword'和'builtinFunctions'是要大写的完成组:

代码语言:javascript
复制
this.filterCompletions = function(items, needle) {
    var results = [];
    var upper = needle.toUpperCase();
    var lower = needle.toLowerCase();
    loop: for (var i = 0, item; item = items[i]; i++) {
        if (item.meta === 'keyword' || item.meta === 'builtinFunctions'){
            items[i].name = items[i].name.toUpperCase();
            items[i].value = items[i].value.toUpperCase();
        }
        var caption = item.value || item.caption || item.snippet;
        if (!caption) continue;
票数 1
EN

Stack Overflow用户

发布于 2017-05-15 06:35:23

下面是使用自定义完成器的干净解决方案:

代码语言:javascript
复制
const customKeyWordCompleter = {
  getCompletions(editor, session, pos, prefix, callback) {
    if (session.$mode.completer) {
      return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);
    }
    const state = editor.session.getState(pos.row);
    let keywordCompletions;
    if (prefix === prefix.toUpperCase()) {
      keywordCompletions = session.$mode.getCompletions(state, session, pos, prefix);
      keywordCompletions = keywordCompletions.map((obj) => {
        const copy = obj;
        copy.value = obj.value.toUpperCase();
        return copy;
      });
    } else {
      keywordCompletions = session.$mode.getCompletions(state, session, pos, prefix);
    }
    return callback(null, keywordCompletions);
  },
};

this.editor.completers = [
  customKeyWordCompleter,
  customCompleter,
];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35183311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档