# current-editor **Repository Path**: chengzi404-byte/current-editor-new ## Basic Information - **Project Name**: current-editor - **Description**: No description available - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-25 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Current-editor > 全新的开始,新的起点 正在重构中的现代化代码编辑器,目前处于核心子系统开发阶段。 ## 项目定位 Current-editor 致力于构建轻量、可扩展的桌面端代码编辑器,当前重心放在底层基础设施的建设上,已完成以下核心子系统: - **语法高亮框架** — 支持 13+ 种语言的语法高亮,具备 AST 解析、主题系统、自动缩进与括号补全能力 - **代码检查系统** — 基于 flake8 的代码检查集成,提供可扩展的检查器抽象基类 - **Git 集成** — `git log` 解析模块,为后续编辑器内 Git 功能提供底层支持 - **自检流水线** — 预启动环境自检,确保运行时环境完整性 ## 已完成功能 ### 语法高亮 (`library/highlighter/`) 基于 Tkinter `Text` 部件的语法高亮框架,支持以下语言: | 语言 | 文件 | 状态 | |------|------|------| | Python | `python.py` | 已完成(含 AST 解析、导入追踪) | | C | `c.py` | 已完成 | | C++ | `cpp.py` | 已完成 | | Java | `java.py` | 已完成 | | Rust | `rust.py` | 已完成 | | Bash | `bash.py` | 已完成 | | JavaScript | `javascript.py` | 已完成 | | CSS | `css.py` | 已完成 | | HTML | `html.py` | 已完成 | | JSON | `json.py` | 已完成 | | Markdown | `markdown.py` | 已完成 | | Log | `log.py` | 已完成 | | Ruby / ObjC / Dart / Scala / TypeScript / Go / Kotlin / PHP / SQL / Swift / Lua | — | 计划中 | 核心特性: - 基于 AST 的精准高亮(Python)与正则表达式高亮(其他语言) - 标签批处理机制以优化大量文本的渲染性能 - 事件驱动的自动重高亮 - 主题系统支持 - 自动大括号补全与自动缩进 ### 代码检查 (`library/checker/`) - `BaseChecker` 抽象基类,统一检查结果格式 - `Flake8Checker` — 通过子进程调用 flake8 并解析输出 ### Git 集成 (`library/git/`) - `GitLogParser` — 解析 `git log` 输出,使用 NUL 分隔格式避免文本解析的脆弱性 - 提供 `parse_git_log()` 便捷函数 - 数据结构:`GitCommit`、`GitLogResult`、`CommitStats` ### 自检流水线 (`library/selfcheck.py`) 预启动时执行 7 项环境检查: 1. Python 版本检查 2. 配置文件完整性 3. 依赖包完整性 4. 文件权限 5. 外部服务连通性 6. GUI 依赖检查 7. 项目结构完整性 ### 滚动更新 (`utils/fetch.py`) 支持从远程仓库拉取更新,使用 `git archive` 实现文件级更新。 ### 文件类型猜测 能够根据文件的内容自动更换代码高亮,避免了每一次都要先保存才能高亮的烦恼。 ## 快速开始 ### 环境要求 - Python 3.12+ - Tkinter(通常随 Python 一同安装) ### 安装 ```bash # 克隆仓库 git clone git@gitee.com:chengzi404-byte/current-editor-new.git cd current-editor-new # 安装依赖 pip install -r requirements.txt ``` ### 运行 ```bash # 启动编辑器(当前为 Tkinter 窗口占位) python app.py # 运行自检流水线 python library/selfcheck.py ``` ### 运行测试 ```bash # 安装测试依赖 pip install pytest # 运行全部测试 pytest # 运行单元测试 pytest tests/unit/ -v # 运行集成测试 pytest tests/integration/ -v # 运行特定测试 pytest tests/unit/test_git_parse.py -v pytest tests/integration/test_01_highlighter.py -v ``` ## 项目结构 ``` ├── app.py # 应用入口 ├── settings.json # 配置文件 ├── lang/ # 国际化资源 │ └── zh-CN.json # 简体中文 ├── library/ │ ├── highlighter/ # 语法高亮子系统 │ │ ├── base.py # 基础高亮器(~1100 行) │ │ ├── python.py # Python 高亮器 │ │ ├── cpp.py / c.py / ... # 其他语言高亮器 │ │ └── __init__.py │ ├── highlighter_factory.py # 高亮器工厂(扩展名路由) │ ├── checker/ # 代码检查子系统 │ │ ├── base.py │ │ └── flake8.py │ ├── git/ # Git 集成 │ │ ├── parse.py │ │ └── __init__.py │ └── selfcheck.py # 自检流水线 ├── utils/ │ └── fetch.py # 滚动更新 └── tests/ ├── unit/ │ └── test_git_parse.py # Git 解析单元测试 └── integration/ └── test_01_highlighter.py # 高亮器集成测试 ``` ## 配置 编辑 `settings.json`: ```json { "lang": "zh-CN.json" } ``` 当前支持切换语言文件(位于 `lang/` 目录)。 ## 架构设计 ``` ┌────────────────────────────────────────────────┐ │ app.py │ │ Tkinter 主窗口入口 │ └──────┬────────────┬──────────────┬─────────────┘ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ 高亮器 │ │ 代码检查 │ │ Git 集成 │ │ Factory │ │ Checker │ │ Parser │ │ ──────── │ │ ──────── │ │ ──────────── │ │ Python │ │ Flake8 │ │ 解析 git log │ │ C++/... │ │ (可扩展) │ │ 提交数据结构 │ └──────────┘ └──────────┘ └──────────────┘ ``` 各子系统通过标准接口解耦,高亮器工厂根据文件扩展名自动路由到对应的高亮器实现。 ## 开发计划 - [x] 编辑器 GUI 主体开发 - [x] 补齐剩余语言高亮器 - [ ] LSP 集成(依赖已就绪:`pygls`、`lsprotocol`、`lsp-client`) - [ ] 基于 `basedpyright` 的类型检查增强 - [ ] 编辑器内 Git 操作(diff、blame、commit) ## 键盘快捷键 #### Find & Replace - Ctrl+F — 显示查找栏 - Ctrl+H — 显示替换栏 - Esc — 关闭查找栏 - Enter — 显示下一个匹配项 - Shift+Enter — 显示上一个匹配项 ## 许可 本项目基于 Apache 2.0 许可证开源,详见 [LICENSE](LICENSE)。