Language support (Phase 1)
ACE is not a full LSP IDE yet. Phase 1 adds practical intelligence beyond JS/TS.
What you get
| Language | Highlighting | Completions | Diagnostics |
|---|---|---|---|
| JavaScript / TypeScript | Yes | Monaco TS + workspace words | Monaco semantic + syntax |
| JSON | Yes | Workspace words | Local JSON.parse + disk lint → squiggles |
| HTML / CSS / SCSS / Less | Yes | Workspace words | Local CSS/HTML syntax checks → squiggles |
| PHP | Yes | Workspace words | php -l on open/save → editor squiggles |
| Python | Yes | Workspace words | python3 -m py_compile on open/save |
| JS (disk) | Yes | (as above) | also node --check on open/save |
| Other mapped langs | Yes | Words (most) | Syntax highlight only |
Monaco language workers are unreliable under Electron file://, so JSON/CSS/HTML diagnostics use local lint (same markers UI as PHP/JS/Python).
Snippets + Gemini next-suggest: see code-snippets.md — local Tab templates for ~25 popular stacks, plus optional Gemini ghost-text continuation.
Not included yet (later phases)
- Real language servers (Pyright, Intelephense, etc.)
- Project
tsconfig/ cross-file TS models - Go-to-definition / rename / format providers
Quick test
- Restart ACE (
cd desktop-ide && npm start) - Open folder
desktop-ide/samples/phase3-language-support - Open each sample file and confirm:
| File | Pass if |
|---|---|
bad.json |
Red squiggle (missing comma) |
bad.css |
Warning on colour + error for missing ; |
bad.php |
After open/save, squiggle from php -l |
bad.py |
After open/save, squiggle from py_compile |
bad.js |
After open/save, squiggle from node --check |
ok.html |
Valid — no error squiggles; completions still work |
