为Ulipad作小小的贡献

最先我是在学python的过程中,想找一个项目练练手,最后我找到了Boa Constructor.后来一发不可收拾,我觉得有些地方,要改改,就不断地增强了它,把我所看到python实现的editor中好代码都加了进去。Ulipad当然也不能例外,当它实现了强大的自动完成的功能时,给了我很深的印象,我就把它的mixin技术移植到了Boa Constructor。我发现的一些关于自动完成的bug及我所做的增强,最先是在Boa Constructor中实现的,后来又把这些提交到了Ulipad的作者:limodou。在Ulipad的邮件列表中,我说focus lost的bug在那里,他说在别处,紧跟着他又说我是对的,接着为了修复此处的bug和另外某处的bug,他重新实现了一小段代码,这段代码他以前用过,是在程序空闲时调用处理bug,这样一来这段代码会反复运行。他要重起用这段代段时,我说了自己的意见,我说是notebook的控件吞吃了kill focus的消息的传递。按“ctrl+tab”键时,focus lost传递的问题在Boa中不存在,这些我也说了,他还是起用了那段代码,为了验证我的想法,修复这个bug,我在Ulipad的源代码插入了5行代码,这个bug就不再出现了。我想我的方案简单的多而且有效,修复了 focus lost的传递的问题。关于函数及class参数的自动完成功能,我所做的增强patch,起先他要想一想更好的,后来我强调说只要5行代码就能用了,是的,它简单得不能再简单了,后来就加入到svn中了。当然他的想法可能更好(见邮件列表),但毕竟还未实现。后来相互交流了一下,我说了一些关于Ulipad的看法,他问了我一些patch的原由,最后是什么样子,对新功能感兴趣的直接去svn  r2013 中看吧。两个各自有不同想法的人,否定,肯定,再否定......,想要把一件事情作好,就是这样一个过程。

  至今Ulipad的源代码有些部分没看懂,我想是我能力有限,另外我要说的是,在源代码的注释及doc_string相对较少,很精练,有些地方恰到好处,有些就没有了,有种惜“注释”如金的感觉。这对于后来者及二次开发者都相对不利,不看完全部的代码,贸然下手,很不利。比如我正在实现的reload mixins的功能就是这样。有一行开关代码,我以为不重要,因为程序没有强调何时调用,我也没有仔细看,结果后来bug就找到此处了。

  有了reload mixins的功能,Ulipad以前的缺点,现在可以说是一种优点了,要重载类就不太容易,但分而治之重载部分功能,那就容易了,而且只要是应用了mixin技术的代码,天生就有了源代码改变,就自动应用它。由于后来Ulipad的一些功能,全都是建立在mixin中的,所以好处不言而喻,现在开发Ulipad,就相当有趣了,不再是重启动再启动,你只需保存,触发,瞬间就可看到结果。甚至你只需写好其本的框架代码(就是Mxxxxx.py文件),实现部分只需等待填入、保存、再写、再保存.....,写完了,功能就出来了。

你可能感兴趣的:(框架,SVN,python)