Skip to content

Latest commit

 

History

History
271 lines (216 loc) · 7.25 KB

File metadata and controls

271 lines (216 loc) · 7.25 KB

CS Code Editor - 开发任务文档

一个使用 Go + Flutter 构建的现代化 Linux 代码编辑器

项目概述

项目名称 cs-code-editor
目标平台 Linux 桌面
UI风格 现代化设计
应用类型 代码编辑器
运行模式 单机独立运行

技术栈

组件 技术 说明
前端UI Flutter 3.x 跨平台UI框架,Dart语言
后端核心 Go 编译为共享库(.so),通过FFI调用
编辑器组件 re_editor / flutter_code_editor Flutter原生代码编辑器
通信方式 FFI (Foreign Function Interface) Flutter直接调用Go函数

项目结构

cs-code-editor/
├── go_core/                    # Go后端核心
│   ├── core.go                 # 导出给Flutter的API
│   ├── internal/
│   │   ├── fs/                 # 文件系统操作
│   │   │   ├── watcher.go      # 文件监控
│   │   │   └── operations.go   # 文件CRUD
│   │   ├── editor/             # 编辑器核心逻辑
│   │   │   ├── buffer.go       # 文本缓冲区
│   │   │   └── syntax.go       # 语法解析
│   │   ├── terminal/           # 终端支持
│   │   │   └── pty.go          # PTY处理
│   │   ├── search/             # 搜索引擎
│   │   │   └── ripgrep.go      # 集成ripgrep
│   │   └── config/             # 配置管理
│   │       └── settings.go
│   ├── go.mod
│   └── go.sum
├── lib/                        # Flutter前端
│   ├── main.dart
│   ├── app.dart
│   ├── screens/
│   │   ├── home/
│   │   │   └── home_screen.dart
│   │   └── settings/
│   │       └── settings_screen.dart
│   ├── widgets/
│   │   ├── editor/
│   │   │   ├── code_editor.dart
│   │   │   ├── line_numbers.dart
│   │   │   └── minimap.dart
│   │   ├── sidebar/
│   │   │   ├── file_tree.dart
│   │   │   └── search_panel.dart
│   │   ├── terminal/
│   │   │   └── terminal_widget.dart
│   │   └── common/
│   │       ├── tabs.dart
│   │       └── status_bar.dart
│   ├── services/
│   │   ├── ffi_bridge.dart      # FFI绑定层
│   │   └── file_service.dart
│   ├── models/
│   │   ├── file_item.dart
│   │   └── editor_state.dart
│   ├── providers/               # 状态管理
│   │   ├── editor_provider.dart
│   │   └── theme_provider.dart
│   └── theme/
│       ├── app_theme.dart
│       └── syntax_themes.dart
├── linux/                      # Linux平台配置
│   └── CMakeLists.txt
├── pubspec.yaml                # Flutter依赖
├── build.yaml                  # 构建配置
└── README.md

架构设计

┌─────────────────────────────────────────────────┐
│                   Flutter UI                     │
│  (Dart - 编辑器界面、文件树、终端、设置面板)        │
└─────────────────────┬───────────────────────────┘
                      │ FFI调用
                      ▼
┌─────────────────────────────────────────────────┐
│              Go Core (libcore.so)               │
│  - 文件系统操作                                   │
│  - 文本搜索 (ripgrep)                            │
│  - 终端PTY管理                                    │
│  - 配置持久化                                     │
└─────────────────────────────────────────────────┘

核心API设计 (Go端)

// go_core/core.go
package main

import "C"

// 文件操作
//export OpenFile
func OpenFile(path *C.char) *C.char

//export SaveFile
func SaveFile(path *C.char, content *C.char) C.int

//export DeleteFile
func DeleteFile(path *C.char) C.int

// 目录操作
//export ListDirectory
func ListDirectory(path *C.char) *C.char

//export CreateDirectory
func CreateDirectory(path *C.char) C.int

// 搜索
//export SearchInDirectory
func SearchInDirectory(dir *C.char, pattern *C.char) *C.char

// 文件监控
//export WatchDirectory
func WatchDirectory(path *C.char)

//export StopWatch
func StopWatch()

func main() {}

Flutter端 FFI绑定

// lib/services/ffi_bridge.dart
import 'dart:ffi' as ffi;
import 'dart:io';

class FfiBridge {
  static final ffi.DynamicLibrary _lib = ffi.DynamicLibrary.open(
    Platform.isLinux ? 'libcore.so' : 'libcore.dylib',
  );

  // 文件操作
  static String openFile(String path);
  static int saveFile(String path, String content);

  // 目录操作
  static String listDirectory(String path);

  // 搜索
  static String searchInDirectory(String dir, String pattern);
}

开发路线图

Phase 1: 基础框架 (v0.1)

  • 项目初始化
    • 创建 Flutter 项目结构
    • 创建 Go 模块结构
    • 配置 FFI 构建流程
  • 基础UI
    • 主窗口布局
    • 侧边栏文件树
    • 编辑器标签页
  • 核心功能
    • 文件打开/保存
    • 基础文本编辑
    • 行号显示

Phase 2: 编辑增强 (v0.2)

  • 语法高亮
    • 基础语言支持 (Go, Dart, Python, JS)
    • 主题系统
  • 文件树增强
    • 目录展开/折叠
    • 右键菜单
    • 文件图标
  • 多标签编辑
    • 标签页管理
    • 未保存提示

Phase 3: 搜索与终端 (v0.3)

  • 搜索功能
    • 文件内搜索
    • 全局搜索 (ripgrep)
    • 替换功能
  • 集成终端
    • PTY终端
    • 多终端标签

Phase 4: Git集成 (v0.4)

  • Git状态显示
    • 文件状态标记
    • 分支显示
  • 基础Git操作
    • Stage/Unstage
    • Commit
    • Push/Pull

Phase 5: LSP支持 (v1.0)

  • LSP客户端
    • 代码补全
    • 跳转定义
    • 错误诊断
    • 悬停文档

构建命令

# 开发环境
cd go_core && go build -buildmode=c-shared -o libcore.so
cd .. && flutter run -d linux

# 发布构建
flutter build linux --release

依赖清单

Go 依赖

  • github.com/creack/pty - PTY终端支持
  • github.com/fsnotify/fsnotify - 文件监控
  • github.com/samber/lo - 工具函数

Flutter 依赖

  • flutter_riverpod - 状态管理
  • re_editorflutter_code_editor - 代码编辑器
  • flutter_highlight - 语法高亮
  • file_selector - 文件选择对话框
  • window_manager - 窗口管理

参考资料