正在开发中的NetBeans 6.0新近增加了一个模块叫GLF(Generic Language Framework),俺在这个基础上写了一个Erlang的编辑器模块,项目名称叫ErlyBird,目前支持的功能有:


    语法检查;
    语法高亮;
    代码折叠;
    函数导航(在Navigator窗口中);
    缩进


附件中解压后有两个NetBeans的nbm文件,从Tools->Update Center中选Install Manually Downloaded Modules(.nbm Files),将这两个文件添加进去,重新启动NetBeans。(要求NetBeans 6.0 M7以上)

因为GLF还不稳定,所以目前的版本仅提供编译后的文件供测试。待稳定后将正式发布源码。
  • 34b29f4a-5d54-4e79-b7f1-001de0e6c684-thumb
  • 大小: 89.3 KB
评论
dennis_zane 2007-09-21   回复
very cool

格式化代码的功能期待了许久,感谢。
dcaoyuan 2007-09-21   回复
ErlyBird 0.15.0,  大小17.6M

CHANGELOG:

* 重新格式化代码 (Ctrl+Shift+F).
* 标示某个变量或函数的使用位置.
* 更好的配对高亮,支持'try-catch-end', 'if-end' 等.
* "-import" 语法现在可以被正确解析,象RabbitMQ的代码现在能正确显示.
* Bug fixes

下栽
http://sourceforge.net/project/showfiles.php?group_id=192439
dcaoyuan 2007-08-12   回复
今天正好有时间,改好了,下载附件后Update,有问题请及时告知。
dcaoyuan 2007-08-12   回复
Arbow 写道
Erlybird的语法解析跟Eclipse不太相同,Eclipse中一部分代码语法出错,一般不会导致后面所有代码解析出问题,但是在Erlybird里面,由于import这里出错,后面的代码除了关键字,变量等可以正确显示颜色,函数和宏都无法识别了。


关于这个问题,我看过Erlide的代码,它把Erlang语法定义稍做改动后可以做到。ErlyBird下一步也要做到这一点,不过因为与Erlide用LALR语法定义不同,ErlyBird现在用的是LL(k),可能需要一些tricks
dcaoyuan 2007-08-12   回复
我可以给你一个quick patch,等下周吧。
Arbow 2007-08-12   回复
是的,在《Program Development Using Erlang -
Programming Rules and Conventions》里面就有 “6.6 Don’t use import”。
问题在于很多现成的代码里面,都使用了import,我现在正在用Erlybird来看Rabbitmq的代码就有这个问题。Erlybird的语法解析跟Eclipse不太相同,Eclipse中一部分代码语法出错,一般不会导致后面所有代码解析出问题,但是在Erlybird里面,由于import这里出错,后面的代码除了关键字,变量等可以正确显示颜色,函数和宏都无法识别了。
dcaoyuan 2007-08-12   回复
Arbow 写道
hi, caoyuan

在解析
-import(application).
-import(gen_server).
-import(mnesia).

这样的语法时会提示出错


我依据的是Erlang Specification 它对import attribute的定义是:
- Import ( ModuleName, FunctionNameList ) FullStop
没有提到FunctionNameList是可选项。

我再核实一下。

不过我不建议使用import,因为不像Java里的import,Java里import后,至少你还要在先申明对象类型,然后方法调用前都会有个对象名或类型名。Erlang里import进来的函数直接调,有时靠模块名一起界定函数名的意思的那些函数就会意思不明了。比如:session:get_value(Key, Props)变成get_value(Key, Props)就没那么清楚的含义了。

好像Joe还是谁也曾有过这个观点。
Arbow 2007-08-12   回复
hi, caoyuan

在解析
-import(application).
-import(gen_server).
-import(mnesia).

这样的语法时会提示出错
dcaoyuan 2007-08-12   回复
刚更新到0.12.1,性能有了进一步提高,索引整个OTP库的时间减少到一半。

这个版本在我的机器上运行起来总算足够顺畅了。
dcaoyuan 2007-08-09   回复
ErlyBird 0.12.0 发布,这个版本主要是改Bug和提高性能。

这个版本只以单独的IDE形式提供,不提供插件包。

下载请到:
http://sourceforge.net/project/showfiles.php?group_id=192439

安装:
1、解压erlybird-bin-0.12.0.zip到某处。Windows用户:'bin\erlybird.exe',*nix用户,"\bin\erlybird";
2、检查OTP安装路径:菜单:[Tools]->[Options]->"Miscellanous"->"Erlang Installation",设成erl或erl.exe的全路径,比如:"C:\erl\bin\erl.exe"
3、默认JVM的-Xmx设成了256M,如果你想增加,编辑etc\erlybird.conf的行"default_options="之"-J-Xmx"项,

第一次运行时照例会索引OTP库,需时从30到60钟不等。

注意:如果你安装了以前的版本,请先将用户目录删除,位置在:
    * *nix: "${HOME}/.erlybird/dev"
    * mac os x: "${HOME}/Library/Application Support/erlybird/dev"
    * windows: "C:\Documents and Settings\yourusername\.erlybird\dev"

ChangeLog:

    # 显示性能提高
    # unbound和unused变量会显示为灰色.
    # macros and records的自动补齐.
    # 跳转到-include 和 -include_lib的源文件.
    # Mac OS X 下的Erlang shell可以了
    # Bugs修订.
dcaoyuan 2007-08-08   回复
dcaoyuan 写道
Arbow 写道
提个意见,貌似ErlyBird即时解析的频率比Erlide大的多。经常只打了几个字符,语法解析开始了,关键字颜色之类变化,打了几个字符又恢复。在程序比较大的时候感觉编码很卡


是有这个问题。主要是Generic Language Framework是这样做的,这个框架现在根本还没开始做优化,希望他们在6.0正式出来前能够做一些。我看过GLF的代码,也提交过一个相关的issue,工作量应该不是太大。


GLF最近开始作优化,他们昨天的改进不错,显示的性能大幅提高,这个问题可能解决了不少。

顺利的话周末发新版本。
dcaoyuan 2007-07-15   回复
coderplay 写道
很奇怪为什么没有comment&comment block功能?  我觉得这个对于开发人员来说是挺实用的说, 而且实现起来应该不难. emacs的erlang-mode这方面以及gen_fsm, gen_server各种模板做得不错的说


我不太记得了:-) 我现在的版本是有这个功能,但0.11.2呢?如果没有的话就等最近要发的版本吧。
coderplay 2007-07-15   回复
很奇怪为什么没有comment&comment block功能?  我觉得这个对于开发人员来说是挺实用的说, 而且实现起来应该不难. emacs的erlang-mode这方面以及gen_fsm, gen_server各种模板做得不错的说
dcaoyuan 2007-07-15   回复
song8159 写道
在SourceForge.net上还是0.11.2版本的(2007-5-18).
尽快放出来吧!


等前面提到的那个内存泄露问题解决掉就可以先发布一个版本,这个泄露问题他们已经开始查。
song8159 2007-07-14   回复
在SourceForge.net上还是0.11.2版本的(2007-5-18).
尽快放出来吧!
dcaoyuan 2007-07-14   回复
song8159 写道
你的ErlyBird进展如何?


最近完成了:
1、跳转到include/include_lib文件;
2、对各种语句的详细语义解析,这样可以根据语句的scope判断一个变量是否从未使用或者是unbound,然后显示为灰色;
3、已经索引了define和record,下一步加上对使用的跟踪和自动补齐;
4、帮Generic Languages Framework修订了一个bug,这样索引时对源文件的解析可以到99%以上(剩下的1%是由于Macro对语法的影响,这种情况在OTP库中很少,如果出现在你的程序中,正好提醒你最好不要用太复杂的 Macro)
5、刚找到一个Common Scripting Framework的bug,可以让索引时间减少到一半左右(包括Ruby模块也应该可以受益)。
song8159 2007-07-14   回复
你的ErlyBird进展如何?
dcaoyuan 2007-07-13   回复
dcaoyuan 写道

2、NetBeans中的Generic Language Framework有一个bug,如果源文件没有在编辑器中打开,有些token居然会被不处理,这导致在索引时有些库文件不能被完整解析。

第二个问题我还没向NetBeans反映,所以一时半会解决不了。不过以我现在天天用ErlyBird的经验看,大部分OTP库还是会给我提示的。


昨天给他们发了一个 patch,今天已经加进trunk里,这个问题算是解决了,当然,因为解析正确的内容比原来多了,做索引的时间也长了,在我现在的机器上要40分钟。

GLF框架该开始做优化了。
dcaoyuan 2007-06-23   回复
Arbow 写道
提个意见,貌似ErlyBird即时解析的频率比Erlide大的多。经常只打了几个字符,语法解析开始了,关键字颜色之类变化,打了几个字符又恢复。在程序比较大的时候感觉编码很卡


是有这个问题。主要是Generic Language Framework是这样做的,这个框架现在根本还没开始做优化,希望他们在6.0正式出来前能够做一些。我看过GLF的代码,也提交过一个相关的issue,工作量应该不是太大。
Arbow 2007-06-23   回复
提个意见,貌似ErlyBird即时解析的频率比Erlide大的多。经常只打了几个字符,语法解析开始了,关键字颜色之类变化,打了几个字符又恢复。在程序比较大的时候感觉编码很卡
发表评论

该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子

dcaoyuan
搜索本博客
最近加入圈子
存档
最新评论