本文主要是介绍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 语法提示 代码提示的更多相关文章

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

    本文主要是介绍实际项目中如何加入语法检测功能.官方文档链接https://github.com/ajaxorg/ace/wiki/Syntax-validation 代码编辑器ace,使用webwor ...

  2. 前端代码编辑器ace 语法高亮

    代码编辑器codemirror和ace,都有接触过,主要是简单的api使用下.现在项目选用的ace.主要结合官网的文档,加入些自己的理解.官方原文链接https://ace.c9.io/#nav=hi ...

  3. 集成代码编辑器ACE的经验

    ACE是最流行的在线代码编辑器之一,在CanTK的集成开发环境GameBuilder里也使用了ACE.ACE的功能非常强大,但是由于使用方法不当,大家反映GameBuilder的代码编辑器不好用.最近 ...

  4. Android平台上最好的几款免费的代码编辑器

    使用正确的开发工具能够快速有效地完成源代码的编写和测试,使编程事半功倍.在网络信息高速发展的今天,移动设备的方便快捷已经深入人心,越来越多的程序员会选择在任何感觉舒适的地方使用移动设备查看或者编辑源代 ...

  5. HelloDjango 第 09 篇:让博客支持 Markdown 语法和代码高亮

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 为了让博客文章具有良好的排版,显示更加丰富的格式,我们使用 Markdown 语法来书 ...

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

    对于一个规则引擎中的脚本代码编辑器是非常关键的,因为UI控件直接使用对象是规则维护者,关系到用户体验,在选用脚本编辑器的功能时除了满足代码的编辑的基本编辑要求外,功能还需要包含;语法着色,错误提示,代 ...

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

    //设置自动提示代码 var setCompleteData = function(data) { var langTools = ace.require("ace/ext/language ...

  8. 【前端】ACE Editor(代码编辑器) 简易使用示例

    身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...

  9. Xcode解决代码高亮、语法提示、错误警告等功能失效的解决方法

    在编写xcode的项目的时候出现过代码不高亮的症状,而且所有的warning都不再提示,include的内容也显示symbol not found,非常奇怪,解决方案如下: 方法一: 1.把.pch里 ...

随机推荐

  1. 手脱ASPack v2.12

    1.PEID查壳提示为: ASPack 2.12 -> Alexey Solodovnikov 2.载入OD,程序入口点是一个pushad,在他的下一行就可以进行ESP定律,下硬件访问断点然后s ...

  2. dfs.datanode.du.reserved 预留空间不生效的问题

    生产环境(cdh5.5.1)遇到一个问题:已经设置 dfs.datanode.du.reserved预留空间为20G,但是磁盘仍然被写满了. 当挂载磁盘作为datanode的存储空间,如果磁盘大小为2 ...

  3. nodejs express框架一个工程中同时使用ejs模版和jade模版

    在某些项目中,比如你接手了一个别人的项目然后你不想用蛋疼的ejs,或者你不想用蛋疼的jade.你有不想重写之前的页面,那么你现在可能需要新引入ejs或者jade模块,你仅仅需要做下面两步也许就能完成使 ...

  4. discuz uc_server 配置登录

    新运行uc_server环境,先配置好ucenter链接-----这部很重要,我从新环境中安装下载的discuz代码,这部没配置,密码又不知道,怎么更改调试,都不起作用,在框架中,跳转到了原来线上的u ...

  5. 「Python」字符串操作内置函数

    目录: capitalize casefold center count encode decode endswith expandtabs find format format_map index ...

  6. [吴恩达机器学习笔记]13聚类K-means

    13.聚类 觉得有用的话,欢迎一起讨论相互学习~Follow Me 13.1无监督学习简介 从监督学习到无监督学习 在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负 ...

  7. JS零碎小知识

    filter()方法对数组进行过滤,生成新数组 var aqiNewData = aqiData.filter(function(data){ return data[1]>60; }); // ...

  8. python列表排序方法reverse、sort、sorted

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  9. javascript中各类的prototype属性

    prototype 作用:获取调用对象的对象原型引用 应用:可以为某对象原型添加方法 例: function getMax() { var max = this[0]; for(var x=0; x& ...

  10. 【BZOJ】1485: [HNOI2009]有趣的数列

    [算法]Catalan数 [题解] 学了卡特兰数就会啦>_<! 因为奇偶各自递增,所以确定了奇偶各自的数字后排列唯一. 那么就是给2n个数分奇偶了,是不是有点像入栈出栈序呢. 将做偶数标为 ...