wxMEdit
wxMEdit 是一个跨平台的文本编辑器,支持列编辑、十六进制编辑、语法高亮、自动换行、编码识别和转换、字数统计等功能。wxMEdit 是 MadEdit 的后继,这些功能都是从 MadEdit 继承而来。
MadEdit 本是一个我用过的非常不错的文本编辑器,尤其在十六进制编辑、编码识别和转换方面。可惜很久没人维护了,一直有接手它的想法。这些在之前写的《处理编码问题利器之文本编辑器⑴——wxMEdit》中也提到了,还有之前这篇本来的标题和内容都是讲 MadEdit 的。我们需要感谢 MadEdit 作者提供了这么好用的编辑器,向原作者致敬。
源起
虽然早就有接手这个久未维护项目的打算,但没有想到会这么快。
之所以做这个决定,是我自己在使用中发现了一个 bug。而这个 bug 不仅影响它擅长处理编码问题的美誉,还有可能造成数据损失——并且我发现的时候就是这样的情况,N 多 latin1 字母一不留神都被替换成了空格,好在及时撤消了。就是这个bug,我后来调试跟踪:这些字母在忽略大小写查找或替换过程中,会被转小写,MadEdit 转小写是通过调用 towlower() 实现的,而 Windows CRT 的这个函数在当前 locale 是简体中文或者繁体中文时就会把一堆 latin1 字母转换为空格。也许这个应该算是 Windows CRT 的 bug。
这个 bug 的发现,让我开始了 MadEdit 的维护工作,开发环境的搭建比我预想中的顺利。定位 bug 不难,甚至为了修复这个 bug 引入 ICU 也不麻烦。让我觉得比较有挑战的是维护起这个新项目,这也是我之前没想到这么快接手它的原因之一。具体实施上也确实是这样:花在了解 googe code、github 和在两个站点创建项目完善信息、导入版本历史这些事情的工作量不亚于目前 wxMEdit 2.9.2 相对 MadEdit 改善的工作量。
进展现状
从发现上面提到的 bug 到如今,做了以下这些事情:
- 决定 fork 原有 MadEdit 项目,取名 wxMEdit,M 取自 MadEdit,wx 取自所用跨平台框架 wxWidgets。
- 为它设计了个 svg 图标,目前 wxMEdit 程序图标和 google code 项目头像用的都是它导出的位图。这个图标比较简陋不够美观,不过我想表达的含义都有了。三色块由 wxWidgets 图标简化而来,背景的记事本和笔为自绘,XM 两字母用的是 ubuntu-title 的字体。实际上这其中包含了我另外的设想和规划的含义,有机会以后再讲。
- 改善原有编译配置,使 VC Express、MinGW、linux 都能够编译。
- 从项目代码中移除了当年尚未集成到 wxWidgets 和 boost 的 wxAUI 和 xpressive,它们其实不应该存在于版本库中。
- 从项目代码中移除图片转 xpm 的 GUI 小工具,它是独立程序,也不应该存在于版本库中。并且制作 xpm 本可用 GIMP/XnView/IfranView 等图片处理软件的。
- 改善简体中文翻译,原有翻译中用了很多台湾习惯的词汇,改动量还是不小的,参见967f068。
- 修正上面提到的 bug,另外因为原有实现的大小写转换用的是 towlower(),所以在 Windows 下不能支持 non-BMP 字符的大小写转换,实测也是如此。这两个问题都需要替换掉 towlower(),而在这方面做的比较好的是 ICU,于是在 wxMEdit 中引入了 ICU,虽然有点大材小用,不过考虑到以后还可以用它取代既有的很多功能,这样做还是合适的。具体实施时发现原有的大小写转换还不能简单的替换,并且有些重复代码,于是还对原有代码做了重构,具体参见83ee144。
- 在 google code 创建了项目 wxMEdit,并添加了简介、上传了相关下载。
- MadEdit 的版本库中有不少无关的提交纪录,比如 sqrat、jkbind、squirrel,也许当初为了完善 MadEdit 的插件机制为实现脚本语言接口做准备的,但都只是第三方库,跟 MadEdit 主体代码没有任何交互,它们与 wxAUI、xpressive 类似不应该存在于版本库中。并且因为 MadEdit 程序代码从未用到它们,所以实际上可以不要这些版本纪录。导入 git 的时候忽略了这些版本,目前 github 的版本库中包含 MadEdit 的所有历史提交纪录除了这些忽略掉的,具体参见这里。
- 查看原 MadEdit 项目的 bug 纪录,其中十六进制替换为空串导致崩溃 还能重现。解决的同时还发现十六进制查找空白也会导致崩溃,也将其修复了,至此 wxMEdit 相对于 MadEdit 修正了三个严重 bug。
- 相关功能点和 bug 修复都在 github 上创建对应 issue,并在版本提交日志中引用对应 issue 编号,这样在 github 上能够相互引用。
至此,wxMEdit 可以算是正式启航了。
规划展望
- wxMEdit 的 Unicode 支持还可进一步改善,可以更好利用 ICU。包括目前的全半角转换、Unicode字符分类、编码转换。还可引入区域语言相关大小写转换及排序等。
- 改善简繁转换,还可增加其他语言相关转换。
- 修复更多原 MadEdit 项目中用户反馈的 bug。
- 开发部分原 MadEdit 项目中用户提议的功能。
- 改进项目构建系统,改用 bakefile。
- 编译/打包更多平台的二进制。
- 对原有代码进行重构。这在上述工作中可能用到,另外也可改善部分模块/结构。
愿今后发展顺利!
相关推荐
REITs产品发展与投资性价比分析:我国公募REITs正式启航(14页).pdf
- 2021年5月14日,首批9只基础设施公募REITs产品通过上交所和深交所审核,开启国内公募REITs正式启航。 - 国内REITs采用契约型模式,并要求上市交易。 - 国内公募REITs在设立要求、投资比例和杠杆比例方面较美国...
标题“20150610-安信证券-安居宝-300155-智慧云停车场正式启航”所涉及的核心主题是智慧云停车场系统,这是2015年6月10日由安信证券与安居宝公司共同推出的一项技术创新。这个系统融合了现代信息技术和传统停车场...
2020年第18周地产周报:销售复苏趋势明显,公募REITs正式启航
2020年第18周地产周报:销售复苏趋势明显,公募REITs正式启航.pdf
#资源达人分享计划#
动力启航网站管理系统是一款开源的网站管理平台,其源码可供下载使用,具有丰富的学习价值。这个系统在设计上注重通用性、清晰性和安全性,对于IT从业者,尤其是初学者而言,是一个很好的实践和学习资源。 首先,...
"dtsoft动力启航旗舰版"是一款基于ASP.NET技术开发的企业级管理软件,主要用于帮助企业提升运营效率和管理水平。动力启航4.0旗舰版作为该系列的最新版本,集成了多项高级功能,旨在为用户提供全面的业务解决方案。...
【半导体产业概述】 半导体产业是信息技术产业的核心,它在现代科技和经济发展中起着至关重要的作用。近年来,中国的半导体产业发展迅速,特别是在高端领域,多个重大项目相继启动,旨在提升国内的自主研发能力和...
启航号STM32 开发板采用意法半导体( ST ) 公司推出基于ARM CortexM3 内核的 STM32F103 增强型系列芯片STM32F103VC 组成。板上资源丰富,具有以太网(Ethernet)接口、 MP3、USB 主机(Host)、USB 从机(Device)、...
华为鸿蒙启航KP_IOT开发板工具.zip
《人工智能启航》教案主要围绕人工智能这一主题展开,旨在引导学生深入理解这一前沿科技领域。在第一章“绪论”中,教学内容涵盖了人工智能的基本概念、发展历程、相关学派的认知观,以及研究和应用的广泛领域。 ...
2012-启航20天20题(整理打印版)2012-启航20天20题(整理打印版)
创都启航企业网站管理系统3.5更新内容: 1、重新优化微信功能。 2、增加微信群发功能,同步网站发布。 3、完善人才招聘手机应聘。 4、优化网站购物车。 5、增加不用注册会员,订购产品。 6、优化后台界面。 7...
2009启航考研20天20题[1]2009启航考研20天20题[1]
SailingStudio Website Manage System(WMS) 5.0 是由 启航工作室(SailingStudio) 独立开发的一套适合中小型企业使用的动态网站管理系统。该系统主要用于网站的定制,只需通过修改设置来改变网站的内容,真正实现异地...
这是一个设计到哈尔滨工程大学启航杯比赛题目的文档。该文档详细介绍了哈工程启航杯的一切题目
2010启航20天20题PDF,昨天在朋友那里得到的,拿来和大家一起分享