【问题标题】:How to add my own completer in ace editor如何在 ace 编辑器中添加我自己的完成者
【发布时间】:2017-05-31 05:59:37
【问题描述】:

现在我正在为我的数据库后端开发一个简单的基于 Web 的编辑器。我发现ace自带自动补全功能,如果我只需要用SQL关键字补全,我应该如何添加自己的规则?

【问题讨论】:

    标签: ace-editor


    【解决方案1】:

    首先,激活您提到的 enableLiveAutocompletion,并且您还必须确保已定义 enableBasicAutocompletion 并将其设置为 true(见下文)。

    editor.session.setMode("ace/mode/sql");
    editor.setOptions({
        enableBasicAutocompletion: true,
        enableSnippets: true,
        enableLiveAutocompletion: true
    });
    

    要添加新的完成者,请执行 eemp 在 github (here) 上提到的操作。

    let langTools = ace.require('ace/ext/language_tools');
    

    然后使用addCompleter 方法添加如下定义的补全:

    var customCompleter = {
      getCompletions: function(editor, session, pos, prefix, callback) {
           // your code
           /* for example
            * let TODO = ...;
            * callback(null, [{name: TODO, value: TODO, score: 1, meta: TODO}]);
            */
      }
    
     }
    langTools.addCompleter(customCompleter);
    

    你也可以去看看以下:

    Ace docs on Completers.

    【讨论】:

    • langTools.addCompleter(customCompleter) 大概创建了一个 global 完成者。要将完成者附加到 ace 编辑器本身,请使用 editor.completers = [customCompleter]
    【解决方案2】:

    只需添加:

    editor.session.setMode("ace/mode/sql");
    editor.setOptions({
        enableBasicAutocompletion: true,
        enableSnippets: true,
        enableLiveAutocompletion: true
    });
    

    enableLiveAutocompletion 属性将允许实时弹出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多