前端代码编辑器ace 语法提示 代码提示

Posted 点滴人生 legu2009

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端代码编辑器ace 语法提示 代码提示相关的知识,希望对你有一定的参考价值。

本文主要是介绍ace编辑器的语法提示,自动完成。其实没什么可特别介绍的,有始有终吧,把项目中使用到的ace的功能都介绍下。

{
    enableBasicAutocompletion: false, //boolea 或 completer数组,
    enableLiveAutocompletion: false, //boolean 或 completer数组,
    enableSnippets: false, // boolean
}

  completer,就是拥有一个getCompletions(editor, session, pos, prefix, callback)方法的object

  相关的配置逻辑,可以看下源代码https://github.com/ajaxorg/ace/blob/v1.1.4/lib/ace/ext/language_tools.js

  如果enableBasicAutocompletion, enableLiveAutocompletion的值为数组,就会覆盖编辑器默认的completers,不推荐使用。

  enableBasicAutocompletion 

  设置enableBasicAutocompletion = true,就会增加Autocomplete.startCommand命令。但是快捷键默认是如下配置,和现在的输入法存在冲突。

startCommand.bindKey = "Ctrl-Space|Ctrl-Shift-Space|Alt-Space"

  enableLiveAutocompletion 

  设置enableLiveAutocompletion = true,就会在输入内容时,弹出语法提示框,但是逻辑代码中忽略了一些情况,如删除。
  所以如果交互要求变动就弹出提示的话,可以editor绑定change事件,触发命令

editor.on("change", function(e){
  editor.execCommand("startAutocomplete");
})

  项目中还有可能,变量在别的地方预设的,也希望能自动完成,需要通过language_tools,增加自定义的completer

var langTools = ace.acequire("ace/ext/language_tools");
langTools.addCompleter({
    getCompletions: function(editor, session, pos, prefix, callback) {
        console.log(editor, session, pos, prefix, callback);
        if (prefix.length === 0) { callback(null, []); return }
        callback(null, [{
            name: word, //显示的名称,‘奖金’
            value: word, //插入的值,‘100’
            score: 1000, //分数,越大的排在越上面
            meta: type //描述,‘我的常量’
        }]);
    }
});                

  enableSnippets 

  设置enableSnippets = true;启用代码块提示的功能。
  如果是给自己新增的mode增加snippets,参照下面的文件配置下。

ace.define("ace/snippets/modeName",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="modeName"})

  snippets配置说明: https://cloud9-sdk.readme.io/docs/snippets
  snippets在线调试:https://ace.c9.io/build/kitchen-sink.html

  通过[TAB]在定义的${1},${2},${3}。。。跳转,最后回到${0},详细的就参照《snippets配置说明》配置,提到的Triggers & Guards,试了几种情况,也没搞明白具体有什么限制。

  

以上是关于前端代码编辑器ace 语法提示 代码提示的主要内容,如果未能解决你的问题,请参考以下文章

前端代码编辑器ace 语法验证

ACE代码编辑器,代码提示,添加自定义数据

ace富文本编辑器

最好用的web端代码文本编辑器ACE

PCB 规则引擎之编辑器(语法着色,错误提示,代码格式化)

web端代码文本编辑器ACE