-
配置功能W.I.P.
配置功能让我纠结了好些天,现在基本上思路是确定下来了,也已经做了一部分了。 首先想说的是出乎意料的事,当时总以为用XML存储内容会比sqlite3存储内容占用空间大,经过实际测试100KB左右的数据用XML占用空间反而更小,大概是因为用sqlite3的话还会有一些用于索引之类的数据。 接着发现用sqlite3中那种二维表格来存储我想要的那种数据格式不是很方便,还是用XML那种树形结构方便,而且XML可以在同一级层次存入不同含义的节点,这也增强了表达能力。 后来我还是决定有boos...…
-
准备实现配置功能
今天粗略考察了一下Code::Blocks/CodeLite/notepad++的配置功能,发现需要做不少工作。 和外部工具特性一样,配置功能也需要一个用户界面,但这用户界面却更复杂,因为配置选项有各种不同的应用场景。总体上看来,我比较喜欢Code::Blocks的那种配置对话框,最上边是一个static text控件,中间是一个listbook,最下边是几个标准按钮。查了下wxLua的文档,这种界面效果用wxLua基本上可以实现。从代码中可以看到,Code::Blocks是用XRC...…
-
实现外部工具菜单
这个特性以前就实现过一遍,那是在MFC+Xtreme Toolkit Pro下做的,想起当时的情形,完全没有任何规划和设计,真正的quick & dirty。这回是用wxWidgets实现,总的说来要比上次方便一点,但也方便得有限。 此特性分为两部分,一部分是配置用户界面,用户可以实现添加,删除,修改等操作。另一部分便是菜单项以及响应。 配置用户界面是一个对话框,我这里用wxLua实现,代码量不大也不小,总之最近总是觉得用wxLua不是个好选择,一方面似乎不稳定,另一方面开发效率不...…
-
回家了
昨天跟小师妹约好的一起回去,今天早上8点半到了她楼下等她,结果居然电话都关机了,幸亏知道她同屋的室友的电话!原来小师妹还睡着,囧,睡过头了。幸亏我买早点的时候也买了她的份,等她下楼下已经9点半了。 不知道是不是因为放假的第一天,在上海的第一个收费站那里就慢慢吞吞地堵了大半个小时,真是烦躁。我们是要去杭州市三医院的,不过很郁闷的是,在高速杭州北路口拐出去后,就找不到方向了,导航也太蠢了,老是指向不知道什么地方。问了收费站的工作人员市区怎么走,好不容易到了市区,但又不知道怎么往市三医院方...…
-
寻找同类?
看到小师妹在日志中说寻找同类好难、心头一阵酸楚,使得我也感觉很难受,还有心疼。 回头看一下自己有比较清晰记忆的过去的十几二十年,确实也一直在不知不觉地寻找同类,只不过小些时候追求很少,有一起玩的小伙伴就觉得很满足。稍微大点了,有了一些自己想要的东西时,烦恼就渐渐增加。 那是非常孤独的日子,却又是非常希望能找到依赖的日子,但是一却找寻不到。我也不知道是从什么时候起,开始对寻找同类不抱有信心,甚至于绝望。直到昨天看到小师妹的日志,我才发现,其实我不再试图寻找同类,是因为我已经自以为找到...…
-
做个源代码浏览工具
Source Insight有大半年没更新了,我觉得以前一个同事说的没错,Source Insight可算是最不思进取的软件了,最后的几次小版本更新,都不知道到底有什么变动,反正我们最关心的一些问题都在。包括缺少Tab,缺少代码折叠,中文支持极差。不过总的说来,Source Insight的完成度是很高了,除了这三个缺点外,其他确实很难找出明显的问题来了。 我想做一个类似的源代码浏览工具,有几点Source Insight做得不错的地方,很值得学习。比如快速打开文件,快速查找函数和符...…
-
基本实现ZenHTML
ZenCoding由2部分组成,ZenCSS和ZenHTML。其中ZenCSS只要简单的查表替换就可以实现,而ZenHTML相对要复杂得多。为了比较完整地给CodingStudio添加ZenCoding支持,花费了我一周时间,当然这一周我也是堕落了,工作时间和效率都很不乐观。 本来我已经发现用LPeg实现ZenCoding将是非常合适的解决方案,但看了一两天LPeg的文档后,还是有点迷糊,再看看ZenHTML的规则很少,硬编码实现也不是太复杂。 首先扫描是否当前表中已经有对应的项,...…
-
磨刀也费时
俗话说,磨刀不误砍柴功。对于这句话,我一直都自认为是辩证地看待的,在某些工作前,先做些准备工作可以极大地提高之后的效率,好比Kunth老爹的TeX。不过很多时候,磨刀也是件很费时费力的事情,好比Kunth老爹的TeX。 这几天一直在考虑实现ZenHTML,这是一种极大提高hard coding效率的code snippet方法。其中有一种可以认为是一种“小语言”,呃,这是《UNIX程序设计艺术》中的说法,用GoF的《设计模式》中的说法应该算是interpreter模式。不管怎么说,反...…
-
故事已经开始
我不知道该给这篇文章取个什么题目,半个小时前,是先想好题目,然后决定要写这篇文章的,可是当我开始写的时候,觉得那个题目不合适,不能完全表达出我的心情、我的感受。 昨天从家里出发的时候,我看了一眼时间,那是清晨的8:14,当时只是为了计一下时,看我全程需要多久。最后停在上海的小区楼下时,时间是11点半左右,我没记清,我当时发出两条短信,分别给我当前我以为应该是对我来说最重要的两个女人。一个是我妈,还有一个……是她,因为她,我才决定来上海。 这是一个还没有开始,就已经曲折的故事。 我...…
-
LuaJIT2与Luabind打架了
其实这个问题老早就有了,当时还在Lua的maillist上提过,不过当时我只是发现LuaJIT2在执行Lua脚本时,如果Lua脚本调用了不存在的C函数时会使宿主崩溃,Mike Pall同学(LuaJIT的作者)倒是很爽快地解决了这个问题。后来发现,Mike Pall解决的只是一部分,我这里因为用到了Luabind,通过Luabind来调用执行Lua函数,如果Lua脚本又调用到不存在的C++函数,进程就会无声无息地退出,而如果是官方Lua的话,则是会老老实实地打印那些出错信息出来。 昨...…
-
入沪通行证
刚才有那么一刹那,突然很害怕,不知道今天做了什么,几秒钟后反应过来,今天出门了,去办入沪车辆通行证了,现在这记性,真让人无语。 总的说来是比较顺利的,昨天在网上看过大致的要求,今天先跑去东关派出所,这是离我们家最近的派出所了,顺便试了试前天买的导航,除了我们村认不出来外,其他的都不错。到了东关派出所,结果被告知,因为车主是我妈,而我妈的户口是在百官的,所以得去百官派出所办,而且因为授权给我开,所以我得有临时居住证。有点出乎我的意料的是,临时居住证的办理非常快捷,只要填一张表,交两张一...…
-
增强Code Snippet
本来这是打算在上周五完成的,结果上周五又开小差搞界面去了,周六周日又跑去魔都了,于是就拖到这周了。今天刚开始的时候还有点惧怕的,怕是实现难点有点高,甚至又冒出过放弃的念头的。后来还是硬着头皮做一点是一点,结果还不错,比想像的要容易一些,已经能达到90%的计划中的程度了,剩下的10%么,从个人感情上还是从策略上,都应该放到后面的版本中实现了。 下面先说一下最终的表现吧。 前一个版本,code snippet使用的展开缩写的快捷键是Ctrl+,,这次把这个快捷键换到Ctrl+;了,那是...…
-
新工具栏
昨天偶然发现CodeLite已经升级到2.5版本了,作者还真是孜孜不倦啊。下载下来看了一下,发现最明显的是界面上的变化,工具栏变漂亮了。于是我又好奇心起来了,找来它的源代码看看,原来是用wxAuiToolBar类而不是原来的wxToolBar。于是昨天我先在自己的程序里把主工具栏也换了一下,感觉是很爽。昨天还加了最近打开的历史文件记录和解决方案记录,一直弄到晚上9点才基本搞定,一开始没搞清楚怎么处理2个wxFileHistory对象。 今天开始着手增强Code Snippet。前天已...…
-
两个月计划
想到实现Bundle,是个比较大的挑战,有些部分必然会跟编辑器核心结合得比较紧密,对于我这种直接使用Scintilla控件实现的方式,很有可能需要修改Scintilla的源代码提供必要的支持。今天一想,其实如果基于我现在的Code Snippet的思路做下去,是很难做到TextMate的地步的,因为Bundle能完成的功能很多,输入输出条件也有好几种,而code snippet只是其中的一种而已。如果只是沿着把Code Snippet强化这个方向发展,最多实现到TextMate中Tab...…
-
准备实现Bundles
昨天晚上咬牙把所有的图片都修正了一遍,基本处于可用的状态了,终于撑过这段繁琐枯燥的工作了。今天又添加了几个新建项,上次发布的时候把这个忘掉了,这次补上。不过实现得有点儿问题,在第一次显示的list view中只要是有多个图标的,总是会在最开始留出那个数目的图标的位置,真郁闷,心烦意乱地调了一下午,也没进展,先不管了。 接下来的任务是实现一个类似TextMate的Bundles机制,这需要好好设计一下,实现成什么样,怎么实现。最近在纠结的问题是,快捷键要不要换掉。TextMate和e都...…