本来准备 学习 Lime, Lime 是 由 go + python+界面工具 写的一个 sublime 的开源实现。但是这个配置比较复杂,所以我决定先研究一下它的兄弟产品notepad++。
notepad++的实现已经有10年了,已经是一款非常成熟的软件了。我现在 需要做的就是慢慢 把它的代码啃一遍,把它的架构理出来。由于是自主学习,所有我有更多的精力去去学习它的方方面。由点及面发散开来,夯实基础。
为了促进学习,同时又检验学习的目标,我给自己设定的一个目标是给 notepad++开发一个插件工具。这个插件类似 eclipse 的 format 功能,用户可以设置一些 sample formated code, 之后可以对代码format。
具体来说,例如:可以给 *.java 文件设置 sample code,可以指定Tab缩进或者 4个空格缩进,可以指定设置{处于行末,或者另起一行格式,设置完成之后,然后对 *.java文件可以按照这个模式format。当然每种文件我都提供一个默认的format格式。我重点处理c++代码和 xml 的format。
这段日子业余的重点就是notepad++了,对go语言,以及其他开源代码及工具的学习要相对减少了。希望自己能够集中精力完成。
暂定学习计划如下:
1.tinyXML代码理解,tinyXML2代码理解,并且重构
2.理清Scintilla库的使用,完整理清notepad++界面框架
3.理清notepad++消息循环。
4.再造一遍轮子,自己用win32仿照简单写一个notepad++。
5.了解一些细节,如:关键字高亮匹配,编码管理,开启多个窗口,内容暂存,
6. 学习和参考插件的实现过程。
7.完成插件的制作