本文主要是介绍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. Java配置jdk图文教程

    1.计算机 ==>右键属性 2.高级系统设置 3.环境变量 4.找path变量 5.找到jdk的bin目录并复制路径到path环境变量里(jdk5.0以后就可以只配path路径了). 6.pat ...

  2. 「Django」rest_framework学习系列-API访问跨域问题

    #以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin ...

  3. java project转变成java web project

    首先,你的eclipse必须得装有web插件 1.找到项目工作空间目录,打开.project文件,并修改文件, 修改如下:      找到:<natures> </natures&g ...

  4. centos7 mysql5.7.17源码安装

    **安装前准备 操作系统环境:Centos 7.2 1.解决依赖包并下载源码包至/home/soft/目录下 1 2 3 4 5 6 7 [root@node03 ~]# yum -y install ...

  5. [Wc2007]剪刀石头布

    [Wc2007]剪刀石头布 http://www.lydsy.com/JudgeOnline/problem.php?id=2597 Time Limit: 20 Sec  Memory Limit: ...

  6. CF821 C. Okabe and Boxes 栈模拟

    Link 题意:给出操作,如果当前出栈操作使得出栈序列非顺序,可以在此之前自由排序栈中所有数,问最少排几次. 思路:已经出栈到第x个元素时,每次需要排序的操作后,能够保证前x元素出栈有序,否则说明该操 ...

  7. Unsupervised learning, attention, and other mysteries

    Unsupervised learning, attention, and other mysteries Get notified when our free report “Future of M ...

  8. Struts2版本更新报错:>>> ActionContextCleanUp <<< is deprecated! Please use the new filters!

    因低版本Struts2存在漏洞,更新为较新的版本.启动时,报如下警告信息: ************************************************************** ...

  9. mysql 修改密码的几种方式

    第一种方式: 最简单的方法就是借助第三方工具Navicat for MySQL来修改,方法如下: 1.登录mysql到指定库,如:登录到test库. 2.然后点击上方“用户”按钮. 3.选择要更改的用 ...

  10. 《JavaScript 实战》:实现拖放(Drag & Drop)效果

    拖放效果,也叫拖拽.拖动,学名Drag-and-drop ,是最常见的js特效之一.如果忽略很多细节,实现起来很简单,但往往细节才是难点所在.这个程序的原型是在做图片切割效果的时候做出来的,那时参考了 ...