Ace Editor自动完成,本地代码段/文本的优先级较低

时间:2015-08-19 09:24:54

标签: javascript autocomplete editor ace-editor

我正在使用Ace编辑器进行项目,我遇到了一些问题。

我在函数addCompleter中添加了一些关键字,宏和东西给编辑器。但是一旦写完,本地完成者似乎就会覆盖所有这些。与此示例中一样,第一次键入时,“MOM_Abort”的元标记为“NOT LOCAL”。第二次它已经是“本地”了。

为什么这对我来说如此重要:在真实项目中,我会显示关于它们旁边的关键字的文档,但是当Ace Editor使用局部变量覆盖它们时它们会消失。我尝试了一些东西,但我发现没有任何效果。

我希望局部变量的优先级较低,因为我不想全部删除它们,这可能吗?

这是我的Ace编辑器代码:

http://jsfiddle.net/9eh00xtc/1/

var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
var langTools = ace.require("ace/ext/language_tools");

editor.setOptions({
  enableBasicAutocompletion: true,
  enableLiveAutocompletion: true,
  enableSnippets: true,
});

var completer = {
  getCompletions: function(editor, session, pos, prefix, callback) {
    var completions = [];
    completions.push({
      caption: "MOM_Abort",
      snippet: "MOM_Abort",
      meta: "NOT LOCAL"
    });
    callback(null, completions);
  }
}
langTools.addCompleter(completer);
#editor {
  height: 300px;
}
<script src="http://rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ace.js"></script>
<script src="http://rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ext-language_tools.js"></script>

<pre id="editor" style="font-family: courier;"></pre>

1 个答案:

答案 0 :(得分:1)

完成按其得分排序(参见:issue)。只需在完成时添加score字段并将其设置为1000.这将使它们首先显示。