集成代码编辑器ACE的经验

ACE是最流行的在线代码编辑器之一,在CanTK的集成开发环境GameBuilder里也使用了ACE。ACE的功能非常强大,但是由于使用方法不当,大家反映GameBuilder的代码编辑器不好用。最近花了点时间去完善它,这里把遇到的问题写出来,供有需要的朋友参考。

1.Linux下代码显示与输入不一致。

Fedora下代码显示与输入不一致,水平方向上,输入位置是代码显示的一倍。这个问题困扰了我很久,它让代码编辑器根本没法使用。升级操作系统和ACE到最新版本,也无法解决这个问题,而且大部分使用ACE的网站都有这个问题。后来发现是字体的问题,使用edgefonts的字体就OK了。但是国内访问use.edgefonts.net经常超时,需要把https://use.edgefonts.net/source-code-pro.js及字体取到本地服务器上。

2.代码自动补全。

ACE支持代码自动补全,网上也有文章介绍。但是实际使用时,有两点值得注意:

1.数据格式 下面的代码注册一个Completer,回调函数把准备的数据传递给ACE,ACE会自动根据当前的输入进行匹配,所以这里不需要预先过滤。
var tangideCompleter = {
    getCompletions: function(editor, session, pos, prefix, callback) {
        if (prefix.length === 0) {
            return callback(null, []);
        }else {
            return callback(null, autoCompleteData);
        }
    }
}
editor.setOptions({enableBasicAutocompletion: true, enableSnippets: true, enableLiveAutocompletion: true});
var langTools = ace.require("ace/ext/language_tools");
langTools.addCompleter(tangideCompleter);

autoCompleteData是一个数组,每一项都类似于下面这个结构:

{“meta”:”function”, “caption”:”addShape”, “value”:”addShape”,”score”:1},

meta:显示在提示框的右边(如下图)。

caption:显示在提示框的左边(如下图)。

value:是实际插入的数据。

score:表示优先级,高的排在前面。

1.快捷键 启用补全的快捷键是Ctrl+Space,在中文Windows下,与开关输入法的快捷键冲突。这个可以开启enableLiveAutocompletion选项,或者修改一下ext-language_tools.js:
Autocomplete.startCommand = {
name: "startAutocomplete",
exec: function(editor) {
    if (!editor.completer)
        editor.completer = new Autocomplete();
    editor.completer.autoInsert = false;
    editor.completer.autoSelect = true;
    editor.completer.showPopup(editor);
    editor.completer.cancelContextMenu();
},
bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space|Ctrl-P"

};

3.全屏编辑

ACE的全屏编辑需要自己处理,这里全屏并非真正的全屏,只是占满浏览器的窗口。通过Ctrl+Enter进行全屏和非全盘切换。

    editor.commands.addCommand({
    name: "fullscreen",
    bindKey: {win: "Ctrl-Enter", mac: "Command-Enter"},
    exec: function(editor) {
        var vp = cantkGetViewPort();
        if(editor.isFullScreen) {
            div.style.width = editorW + "px";
            div.style.height = editorH + "px";
            div.style.position = "absolute";
            div.style.left = editorX + "px";
            div.style.top = (scrollTop + editorY) + "px";
            editor.resize();
            editor.isFullScreen = false;
            document.body.style.overflow = "auto";
        }
        else {
            div.style.width = vp.width+ "px";
            div.style.height = vp.height+ "px";
            div.style.position = "absolute";
            div.style.left = 0 + "px";
            div.style.top = (scrollTop + 0) + "px";
            editor.resize();
            editor.isFullScreen = true;
            document.body.style.overflow = "hidden";
        }
    }
});

以上代码是GameBuilder里的实现,需要根据实际情况修改。

时间: 2024-08-28 22:32:18

集成代码编辑器ACE的经验的相关文章

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

本文主要是介绍实际项目中如何加入语法检测功能.官方文档链接https://github.com/ajaxorg/ace/wiki/Syntax-validation 代码编辑器ace,使用webworker进行实时语法检查.目前支持JavaScript,json,php,coffeescript,css,xquery模式.      根据官方https://ace.c9.io/#nav=higlighter的例子,在项目开发中,新增了Formula的语法高亮,下面是定义Mode并增加语法高亮的部

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

本文主要是介绍ace编辑器的语法提示,自动完成.其实没什么可特别介绍的,有始有终吧,把项目中使用到的ace的功能都介绍下. { enableBasicAutocompletion: false, //boolea 或 completer数组, enableLiveAutocompletion: false, //boolean 或 completer数组, enableSnippets: false, // boolean } completer,就是拥有一个getCompletions(edi

最火爆10大集成开发环境和代码编辑器!总有一款是最适合你的!

什么是集成开发环境和代码编辑器 进群:125240963   即可获取数十套PDF或者零基础入门教程一套哦! 保存和重载代码文件 如果一款集成开发环境或者编辑器不允许你保存现有工作,并在之后重新打开时不能保持你离开时的相同状态,那么它就不是什么集成开发环境. 在环境内运行代码 类似的是,如果你必须退出编辑器来运行Python代码,那么它也就是一个普通的文本编辑器. 支持调试 在程序运行时支持逐步运行代码是所有集成开发环境和大多数优秀代码编辑器必备的核心功能. 语法高亮 支持对代码中的关键词.变量

JS代码高亮编辑器 ace.js

JS代码高亮编辑器 ace.js 字数254 阅读2 评论0 喜欢0 瞎扯 ace 是 js 实现的代码编辑器 编译打包之后的 ACE 代码 官网,未提供编译好的文件 ACE 拥有的特点 语法高亮超过110种语言 超过20个主题 自动缩进 减少缩进 一个可选的命令行处理庞大的文件(400万线似乎是极限!) 完全自定义的键绑定,包括vim和Emacs模式 用正则表达式的搜索和替换 突出显示匹配的括号 软标签和实际标签之间切换 显示隐藏字符 使用鼠标拖放文本 换行 代码折叠 多个光标和选择 现场语法

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

使用足够简单,功能足够强大,体验足够优秀 之前有一个系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,总共发了四篇文章介绍了三个非常棒的插件,分别是bootstrap-duallistbox.select2和datatables,今天再更此系列,让好东西让更多的人知道,受益! 本次介绍ace.js,这是一个用JavaScript编写的独立代码编辑器.支持超过120种语言的语法高亮,超过20个不同风格的主题,同时还支持实时语法检查,自定义快捷键绑定,代码折叠,搜索替换,自动缩进等等功能

[HTML5]网页代码编辑器

本文介绍18款极具价值的网页代码编辑器.过两天筹备好了开始我的那个小项目,其中要用到下面的东东,觉得特别不错,特此记录下! 1.Codeanywhere Codeanywhere是运行在浏览器上的代码编辑器,内嵌一个强大的FTP客户端.目前支持多数流行的网页格式(HTML.PHP.JavaScript.CSS和XML). Codeanywhere支持编辑多种类型的文件,集成了桌面编辑器中所有好的特征:高亮显示语法.自动填充代码.智能缩进.支持无限次的撤销和重做.无数个tabs. 2.CodeRu

java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯

A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势 D 集成安全权限框架shiro   Shiro 是一个用 Jav

Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Windows.Linux 以及 OS X 平台. Brackets 的特点是简约.优雅.快捷!它没有很多的视图或者面板,也没太多花哨的功能,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等.和 Sublime Text.Everedit 等通用代码编辑器

CodeMirror:基于JavaScript的代码编辑器

官方网站定义: http://codemirror.net/ CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionalit