cocos2dx-lua绑定之代码编辑器
转自:http://blog.csdn.net/wtyqm/article/details/9346863
享受脚本语言灵活、更新方便、免于编译的好处,但也不能忍受离开那些方便的IDE特性(跳转、自动完成)。
搜集整理了一些使用Sublime Text编辑cocos2dx-lua工程的资料,希望能给大家带来帮助。
一、自动完成(auto-completion)
A.输入过的单词
本文件内输入过的单词,ST(sublime text)均会给出补全提示。这点甚至比大多数IDE都要强(一般只给出符号提示,对于字符串这类纯文本不提示)
B.跨文件函数调用
跨文件的文本提示,ST需要插件支持。目前使用的一个插件MySignaturePlugin,支持跨文件的函数补全,提示参数信息。这个插件只有一个python源文件,100多行代码。原本只支持js。我对它进行了一些lua支持的小修改cocos2dx-lua-tools / mysign.py
C.cocos2dx api,自定义API
脚本中经常会调用一些导出的cocos2dx api,或者我们自定义的一些c++扩展API
cocos2d_lua_snippets,这个插件通过cocos2dx的tolua++ pkg文件,生成了一堆ST snippet(代码片段),达到了自动提示API的目的
生成脚本 我对它也进行了一些修改:a.导出pkg文件里的枚举定义 b.非static函数,自动补全时,不补全类名
D.ST补全机制简介
以上的几种补全方法,充分利用了ST提供的补全扩展机制。ST补全时,会按以下次序考虑补全选项
a.snippet(代码片段):指定关键字到一大段代码的映射,每个snippet要存储为一个单独的文件。cocos2d_lua_snippets采用的是这种方式
b.API-injected completions:python插件里可以注册回调函数,返回可能的补全选项,可以有逻辑,更灵活一些。MySignaturePlugin采用的是这种方式
c.completion file:我理解就是用一个文件存储大量简短的snippet。我写的cocos2dx枚举值补全采用的是这种方式
d.buffer:就是ST自带的本文件单词补全
E.缺憾
以上的补全方法,都只是简单的文本级的匹配,无法像IDE对静态语言那样,进行语法分析后,根据当前上下文限制补全的内容。似乎动态语言的智能感知,本就比较困难,一个变量的类型,往往是运行时才可以知道,并且是可以变化的。
在一个讨论lua编辑器补全的帖子里,我看到一个Glider(一款商业lua IDE)员工的回帖。好像他们采用编辑器内置lua虚拟机的方式,可以实现更加强大的补全功能。
ST方面,更有潜力,更加强大的重量级插件有:
但是这两个插件目前都不支持lua,代码量也比较大,不太便于修改
同样是动态语言的js,这方面的支持就好得多,除了上面提到的SublimeCodeIntel,就连Visual Studio都提供了对js的智能感知。相比大量应用js的web开发,大量应用lua的游戏开发只能说是小弟弟了。若不是对精心设计的lua语言有好感,放不下它的coroutine机制,我想在cocos2dx里直接使用js绑定更加方便呢(几个zynga的老外全力搞js绑定,导致后起的js绑定在很多方面都已经领先lua绑定了)
二、跳转
这里推荐Sublime Text 3的跳转功能。除了继承二代的文件内符号跳转,三代更是加入了文件间符号跳转
感觉ST的符号跳转,比IDE的功能还要好用,全程键盘操作,预览-返回,谁用谁知道
不过ST3的文件间跳转似乎还不支持预览-返回
求助:
在github上看到好用的仓库,自己不确定会不会修改,一般会选择clone操作。但是这样万一以后修改了,不像fork那样,可以pull request,很难贡献代码。不管是否修改,直接fork的话,感觉又有些重度了。不知有没有其它的操作流程?
===========================================
lua love能够提示lua自带方法
方法的注释能够写上就更好了
===============================================
quikgotoanything
===================================
quickxdev
cocos2dx-lua绑定之代码编辑器的更多相关文章
- cocos2d-x lua绑定解析
花了几天时间看了下cocos2d-x lua绑定那块,总算是基本搞明白了,下面分三部分解析lua绑定: 一.lua绑定主要用到的底层函数 lua绑定其本质就是有一个公用的lua_Stack来进行C和L ...
- cocos2dx lua 绑定之二:手动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...
- cocos2dx lua 绑定之一:自动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先定义C++类Student 在cocos2d-x\cocos文件夹下新建一个user_define的文件夹放置两个文件. 注 ...
- cocos2d-x+lua开发模式下编辑器的选择
原本打算直接用CocosIDE的,毕竟是官方出品,并且支持Android远程调试,windows下的调试也非常方便,调试的信息也非常全,智能提示也不错.好了,一切看上去非常完美,可是它有一个致命缺陷, ...
- 开源基于lua gc管理c++对象的cocos2dx lua绑定方案
cocos2dx目前lua对应的c++对象的生命周期管理,是基于c++析构函数的,也就是生命周期可能存在不一致,比如c++对象已经释放,而lua对象还存在,如果这时候再使用,会有宕机的风险,为此我开发 ...
- Cocos2dx lua 3D实例代码
用cocoside 创建一个项目 cocos2dx lua 项目即可 ,然后替换掉gamescene 就可以,具体效果还有函数的参数,相信大家一看就明白.简单说下ide 创建的 cocos lua 项 ...
- cocos2dx的lua绑定
一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...
- Cocos2d-x v3.3 lua绑定c++类方法总结
网上有很多cocos2d-x lua绑定c++类的接口教程,这篇文章也是总结他们的经验. 其中重点参考了 http://cn.cocos2d-x.org/tutorial/show?id=1295, ...
- cocos2dx lua binding ,cocos2dx 绑定lua测试
前面2篇分别简单介绍 手动bind C++ 类和lua:http://blog.csdn.net/chenee543216/article/details/12074771 使用tolua++简化工作 ...
随机推荐
- linux快捷键及主要命令(转载)
作者:幻影快递Linux小组 翻译 2004-10-05 22:03:01 来自:Linux新手管理员指南(中文版) 5.1 Linux基本的键盘输入快捷键和一些常用命令 5.2 帮助命令 5.3 系 ...
- 深入理解Java:注解(Annotation)自定义注解入门(转载)
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5. ...
- 一段经典的 Java 风格程序 ( 类,包 )
前言 本文给出一段经典的 Java 风格程序,请读者初步体会 Java 和 C++ 程序的不同. 第一步:编写一个类 // 将这个类打包至 testpackage 包中 package testpac ...
- ipa验证错误问题总结
The following issues were found during validation.这个error的产生原因是因为代码中写的标示符或者方法名,与系统的命名空间冲突. 具体是哪个标示符或 ...
- 解决用EasyDarwin开源流媒体服务器做HLS直播时Flash Player卡住的问题
最近在开发EasyDarwin开源流媒体服务器HLS直播的时候发现一个现象:在PC上用flash player播放HLS和在ios上面播放HLS时,效果明显不同,在ios上播放非常稳定,而在flash ...
- 九度OJ 1128:求平均年龄 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2080 解决:1084 题目描述: 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位. 输入: 第 ...
- Error: EACCES: permission denied, mkdir '/root/.nvm/versions/node/......
当我执行npm install -g node-inspector的时候报错. 所以就去网上搜索了一下答案. 有这么几种答案.请看完再执行相关命令 有说需要在前面加上sudo命令的. 不能解决我出现的 ...
- [IR课程笔记]概率检索模型
几个符号意义: R:相关文档集 NR:不相关文档集 q:用户查询 dj:文档j 1/0风险情况 PRP(probability ranking principle):概率排序原理,利用概率模型来估计每 ...
- Long转换为date
public static void main(String[] args) { Long time = System.currentTimeMillis(); System.out.println( ...
- Bestcoder BestCoder Round #28 A Missing number(查找缺失的合法数字)
Problem Description There is a permutation without two numbers in it, and now you know what numbers ...