Built-in Editor
GenieBuilder includes a full-featured code editor powered by a modern editing component. It provides syntax highlighting, editing capabilities, and integration with the workspace—all without leaving the desktop app.

Supported Languages
The editor provides first-class support for:
Programming Languages
| Language | Syntax Highlighting | Notes |
|---|---|---|
| Java | ✅ Full | JDTLS integration for LSP features |
| TypeScript | ✅ Full | Includes JSX/TSX support |
| JavaScript | ✅ Full | ES2023+ support |
| Python | ✅ Full | Python 3.x syntax |
| Go | ✅ Full | Go 1.21+ support |
| Rust | ✅ Full | Rust 2021 edition |
Markup & Config
| Language | Syntax Highlighting |
|---|---|
| HTML | ✅ Full |
| XML | ✅ Full |
| JSON | ✅ Full |
| YAML | ✅ Full |
| Markdown | ✅ Full |
| CSS/SCSS | ✅ Full |
Fallback
Files with unsupported extensions open as plain text with basic editing capabilities.
Editor Features
Core Editing
- Multi-cursor editing —
Alt/Cmd + Clickto place multiple cursors - Block selection —
Alt/Cmd + Shift + Dragfor column selection - Auto-indentation — Smart indentation based on language
- Bracket matching — Highlight matching brackets
- Code folding — Collapse/expand code blocks
Search & Replace
- Find —
Ctrl/Cmd + F - Replace —
Ctrl/Cmd + H - Find in files —
Ctrl/Cmd + Shift + F(project-wide) - Regex support — Pattern matching in search
Navigation
- Go to line —
Ctrl/Cmd + G - Symbol navigation — Jump to definitions (Java with JDTLS)
Visual
- Line numbers — Toggle in settings
- Active line highlight — Current line indication
- Selection highlight — Occurrence highlighting
- Whitespace rendering — Optional visible whitespace
Workspace Integration
File Operations
Files are opened through workspace-scoped IPC:
- File selected in explorer
- IPC request to main process
- Path validation — Ensure within workspace root
- Size check — Reject files > 1 MiB
- Content loaded and sent to renderer
- Editor tab opened with content
Save Flow
User presses Ctrl+S
↓
Editor content sent via IPC
↓
Main process validates path
↓
File written to disk
↓
Success/error returned
↓
Editor shows save status
Auto-save
Optional auto-save on:
- Focus change
- Delay after typing (configurable)
- Window close
File Explorer Integration
Opening Files
- Click — Open in current tab
- Double-click — Open in new tab
- Right-click — Context menu options
File Tree
- Respects .gitignore — Hidden files filtered
- Folder expansion — Lazy-loaded children
- File icons — Language-based icons
- Active file highlight — Current tab indicated
Limits
For predictable performance:
| Limit | Value | Rationale |
|---|---|---|
| Visible items | 5,000 | Prevent UI freezing |
| File size | 1 MiB | Large files open as unsupported |
| Nesting depth | 20 levels | Prevent stack overflow |
Security Considerations
Path Validation
- Workspace root enforcement — Files outside root rejected
- Symlink rejection — Prevents path escape
- Path normalization — Resolve
..segments
Content Handling
- Binary file detection — Open as unsupported
- Large file protection — Size limits enforced
- Encoding — UTF-8 default, BOM handling
Java Language Server (JDTLS)
For Java projects, optional JDTLS integration provides:
LSP Features
- Go to definition —
F12orCtrl/Cmd + Click - Find references —
Shift + F12 - Hover information — Type information on hover
- Diagnostics — Compile errors and warnings
- Code actions — Quick fixes and refactorings
Setup
- Install JDTLS:
brew install jdtls(macOS) or equivalent - Set path if not in PATH:
DG_JDTLS_COMMAND=/path/to/jdtls - The editor auto-detects and uses JDTLS for Java support
Fallback
Without JDTLS:
- Source scanning for basic navigation
- Basic compiler diagnostics
- Lighter resource usage
Editor Settings
Configurable options:
| Setting | Options | Default |
|---|---|---|
| Theme | Light, Dark, System | System |
| Font size | 10-24px | 14px |
| Font family | Monospace fonts | JetBrains Mono |
| Line numbers | On, Off | On |
| Word wrap | On, Off | Off |
| Tab size | 2, 4, 8 | 4 |
| Insert spaces | Yes, No | Yes |
| Auto-save | On, Off | Off |
Keyboard Shortcuts
The built-in editor supports standard keyboard shortcuts:
| Shortcut | Action |
|---|---|
Ctrl/Cmd + S | Save file |
Ctrl/Cmd + F | Find |
Ctrl/Cmd + H | Replace |
Ctrl/Cmd + G | Go to line |
Ctrl/Cmd + / | Toggle comment |
Ctrl/Cmd + D | Select next occurrence |
Ctrl/Cmd + Shift + K | Delete line |
Alt/Cmd + ↑/↓ | Move line up/down |
F12 | Go to definition (Java with JDTLS) |
Shift + F12 | Find references (Java with JDTLS) |
Go to definition and find references require JDTLS (Java Language Server) to be installed and configured.
Troubleshooting
File Won't Open
If a file fails to open:
- Check file size (must be < 1 MiB)
- Verify file permissions
- Ensure file is within workspace root
- Check for binary content
Syntax Highlighting Missing
If code appears as plain text:
- Verify file extension is recognized
- Check theme settings
- Reload window (Ctrl/Cmd + R)
Java Features Not Working
If Java navigation/diagnostics fail:
- Verify JDTLS is installed
- Check
DG_JDTLS_COMMANDif not in PATH - Ensure Java project has proper structure
- Check the editor logs
Slow Performance
If editing feels sluggish:
- Close unused tabs
- Disable auto-save if not needed
- Reduce file explorer visible items
- Check for large files open in background