El IDE: 10-round pass — syntax highlighting, file browser, runner, completion, split panes, find/replace, settings, minimap

Round 1: Fix dependency paths (../el/crates → ../el/engrams), verify build
Round 2: Enhanced syntax highlighting — function call detection, all El keywords (activate, sealed, parallel, deploy, etc.)
Round 3: Full El keyword set in CodeMirror tokenizer and completions; 50+ builtin function completions with type signatures
Round 4: File system integration — mkdir, rename, delete, file tree search; git status badges
Round 5: Runner integration — Ctrl+R shortcut, SSE streaming output, clickable error lines with jump-to-line
Round 6: Error highlighting with accurate line/col from lexer/parser spans; diagnostic dedup
Round 7: Find/replace panel; Ctrl+G go-to-line; toggle line comment; word-wrap compartment fix
Round 8: Code completion — 50+ builtins, keyword completions, snippet completions, server snippet integration
Round 9: Resizable panels — file tree drag-resize + collapse (Ctrl+B), type-graph drag-resize, bottom panel toggle (Ctrl+J), width persistence
Round 10: Settings API (GET/POST/DELETE /api/settings, ~/.el-ide/settings.json); frontend wired to API with debounced save; theme persistence
Round 11: Minimap click-to-jump and drag-to-scroll
Round 12: Command palette — added Go To Line, Toggle Word Wrap/Minimap/File Tree/Bottom Panel, font size commands, New File, Select Next Occurrence
Round 13: Multi-cursor — Ctrl+D select next occurrence, EditorSelection exposed for multi-range selection
This commit is contained in:
Will Anderson
2026-04-29 04:34:08 -05:00
parent f898683b19
commit 376fbb41b3
25 changed files with 1847 additions and 43 deletions
+6 -5
View File
@@ -18,17 +18,18 @@ el-lsp = { path = "crates/el-lsp" }
el-plugin-host = { path = "crates/el-plugin-host" }
# Engram lang crates (path deps)
el-lexer = { path = "../engram-lang/crates/el-lexer" }
el-parser = { path = "../engram-lang/crates/el-parser" }
el-types = { path = "../engram-lang/crates/el-types" }
el-compiler = { path = "../engram-lang/crates/el-compiler" }
el-lexer = { path = "../el/engrams/el-lexer" }
el-parser = { path = "../el/engrams/el-parser" }
el-types = { path = "../el/engrams/el-types" }
el-compiler = { path = "../el/engrams/el-compiler" }
# External
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tokio = { version = "1", features = ["full"] }
axum = { version = "0.7", features = ["macros"] }
axum = { version = "0.7", features = ["macros", "ws"] }
futures-util = "0.3"
tower-http = { version = "0.5", features = ["cors", "fs"] }
rust-embed = { version = "8", features = ["axum"] }
tracing = "0.1"