项目背景
Notepad++ / NotepadNext 是 Windows 上最流行的轻量代码编辑器,基于 Scintilla 编辑引擎。目标是将其核心编辑能力迁移到 HarmonyOS 平台,提供原生体验的代码编辑器。
迁移策略:核心库移植 + UI 重写
与 CrossShellNext(完全重新设计)不同,NotepadNext 的核心编辑引擎 Scintilla 是平台无关的 C++ 库,可以保留并移植。但 UI 层(Qt/Win32)无法复用,需要用 ArkTS 重写。
架构分层
- C++ 层:Scintilla 编辑引擎交叉编译到 ARM64,保留语法高亮、折叠、多光标等核心能力
- NAPI 桥接层:将 Scintilla 的消息接口封装为异步 NAPI 调用
- ArkTS UI 层:原生鸿蒙界面,实现文件管理、标签页、设置等交互
技术要点
Scintilla 移植:剥离 Win32/GTK 平台代码,保留核心编辑模型,编写 OpenHarmony 平台后端(渲染、输入事件、剪贴板)。
渲染适配:Scintilla 原生使用 GDI/Cairo 绘制,需适配到 ArkUI Canvas 渲染路径。
大文件性能:保留 Scintilla 的分段文本存储(piece table),确保打开大文件时不卡顿。
功能
- 语法高亮(50+ 语言)
- 代码折叠
- 多光标编辑
- 查找替换(正则支持)
- 文件标签页管理
- 明暗主题