Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

版权申明
查看: 22422|回复: 21

惊喜!Lazarus的IDE扩展居然比Delphi的OTA设计的还好!

[复制链接]

该用户从未签到

发表于 2009-5-9 17:14:17 | 显示全部楼层 |阅读模式
在CnWizards 论坛上看到有人提议CnWizards的开发组考虑一下对Lazarus的支持,结果论坛老大们说现在不打算支持,一个是它没有提供Open Tools API,二是它的用户太少,像橙子的意见就比较典型:

------------------------------------------------------------------
不知gold8有没有了解过lazarus的插件模式
那可是要重新编译IDE的活,lazarus的架构与delphi不同
它是完全没有所谓的“OTA”的
已经超过了二次开发的范围了。。。
一个IDE,若是只开放了控件的接口,那么必然只能够开发控件
lazarus现在就是这种情况

关于工作量的问题,也许没有必要讨论了
如果lazarus啥时把IDE的接口全部开放出来,或许cw还有可能写得上去
但是现在连个可用的接口都没有,巧妇难为无米之炊啊
我们也完全不可能自己直接去改lazarus的源码的
-----------------------------------------------------------------

于是橙子得出一个结论:Lazarus没有OTA,所以不能支持IDE扩展。事实证明,老大们也有看走眼的时候,Lazarus不仅有自己的OTA,而且有的地方做的比Delphi更好!也许是Lazarus比Delphi年纪小,它充分吸取Delphi的成功之处,还加以改进,以更加清晰的对象层次来构筑自己的OTA,Lazarus中的包CodeTools和IDEInft就是用于支持IDE扩展的基础,阅读SrcEditorIntf、CodeToolManager、CodeTree、CodeCache、CodeAtom、CustomCodeTool、IdeCommands等单元,我们可以发现类的组织和层次关联非常清晰,支持的方法更加人性化,虽然没有OTA那么博大精深,但也还算是组织得相当好了。

试看这样一个例子:
用户在代码编辑器中输入一个文字串(过程或者函数中的关键字),然后按快捷键,助手检测当前位置之前是否有分号,如果有,则取分号之后到当前位置间的所有字符为查询关键字,否则取当前位置向前的第一空格到当前位置间的所有字符为查询关键字,弹出查询窗口,在数据库中查询该关键字或关键字组合,每一个结果都有函数名、单元名、函数解释等内容,找到合适的过程或者函数,点击引用按钮,助手用被引用的函数代替刚才在代码编辑器中输入的那串文字,判断Uses节是否已经包含单元名,如未包含,则添加单元名。

效果如下图所示:(在新窗口中查看动画


代码用Delphi编写完成后,尝试转换到Lazarus下,一番摸索之后,对Lazarus顿生好感,比如下面这句代码:
if not CodeTool.FindUnitInAllUsesSections(UpperCase(CodeHelperDlg.UsesUnitEdit.Text), NamePos, InPos) then
    CodeTool.AddUnitToMainUsesSection(CodeHelperDlg.UsesUnitEdit.Text, '', CodeToolBoss.SourceChangeCache);
判断单元是否已经包含在Uses节中,如果没有,则在接口部分的Uses节中添加该单元,如果添加该单元后代码行超过了行长80列的限制,还会自动换行。代码之简洁让人为之一振,在Delphi中实现同样的功能,我可是写了好几十行呢。类似于FindUnitInAllUsesSections、AddUnitToMainUsesSection这样的高度抽象、体贴开发者的过程和函数在Lazarus中随处可见,试问这样的支持环境和开发接口,我们还有理由视而不见吗?

不可否认,Lazarus还有很多不足,但是,事物都是发展变化的,Lazarus已经吸引了越来越多的关注,相信在众多开发者的参与下,必将快速走向成熟。。。

评分

参与人数 1威望 +5 收起 理由
猫工 + 5 优秀文章

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2009-5-10 02:09:29 | 显示全部楼层
不错
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-10 02:22:45 | 显示全部楼层
这个助手能否共享?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-10 11:07:36 | 显示全部楼层
好文章
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2009-5-11 10:49:56 | 显示全部楼层
to 果子:
我打算把这个助手的数据库整理好了就发布出来,希望能最大限度的收录Delphi自带的组件说明以及过程函数说明,同时把JCL和JEDI的Win32API Headesr也包含进来,工程有点浩大,一个人整理,进度很慢,你有兴趣一起来做吗?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-11 21:22:53 | 显示全部楼层
引用第4楼xychen于2009-05-11 10:49发表的  :
to 果子:
我打算把这个助手的数据库整理好了就发布出来,希望能最大限度的收录Delphi自带的组件说明以及过程函数说明,同时把JCL和JEDI的Win32API Headesr也包含进来,工程有点浩大,一个人整理,进度很慢,你有兴趣一起来做吗?

我可以当苦力
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-16 11:22:18 | 显示全部楼层
支持一下。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-20 13:11:26 | 显示全部楼层
  支持一下~做不上什么,心存感激!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-21 09:58:03 | 显示全部楼层
支持一下。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-21 15:10:06 | 显示全部楼层
好东西阿,这个ide扩展助手是什么东西写的呢
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-8-27 19:36 , Processed in 0.143305 second(s), 13 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表