EPSON SPEL+ Language Support
VS Code extension that recognizes .prg files as EPSON SPEL+ robot programs
(the language used by EPSON RC+) and provides:
- Syntax highlighting for keywords, motion commands, IO, tasks, built-in
functions, types, constants, strings (both
"..." and [...]), numbers
(&H, &B, &O, decimal), and comments.
- Autocompletion for SPEL+ keywords, motion commands (Go / Move / Jump /
Arc / Curve / CVMove), IO commands, task control, types, constants, and
built-in functions. The list is driven by a structured knowledge base so
the official SPEL+ manual can be used to enrich the catalogue without
touching the rest of the extension.
- Hover documentation showing signature, description, and notes.
- Go to Definition for user-declared Functions / Subs.
- Document Outline / Symbols so the Explorer can show a tree of
Functions, Subs, and labels.
- Snippets for
Function, Sub, If, For, While, Select,
Xqt, motion commands, and OnErr / Resume Next skeletons.
- Lightweight validation that warns on unclosed
If / For / While
/ Select / Function / Sub blocks and stray closers.
- Document formatter that normalises indentation to a configurable
size.
Project layout
.
├─ package.json # extension manifest
├─ language-configuration.json
├─ syntaxes/
│ └─ spel.tmLanguage.json # TextMate grammar for SPEL+
├─ snippets/
│ └─ spel.json # common code snippets
├─ src/
│ ├─ extension.ts # extension entry (language client)
│ ├─ common/
│ │ └─ spelKnowledge.ts # keyword/function/motion catalogue
│ └─ server/
│ └─ server.ts # language server (LSP)
├─ .vscode/ # launch / tasks for F5 development
└─ out/ # compiled client (generated)
└─ out-server/ # compiled server (generated)
Build & run locally
npm install
npm run build
Then press F5 in VS Code — this opens an Extension Development Host
with the extension loaded. Open any .prg file to see highlighting,
suggestions, hover, outline, etc.
Package a .vsix
npm run package
The output is spel-plus-0.1.0.vsix. Install it with:
code --install-extension spel-plus-0.1.0.vsix
Filling in real SPEL+ semantics
The current catalogue is a sensible starter. When you share the official
EPSON SPEL+ reference manual, expand src/common/spelKnowledge.ts:
- Add the full keyword list (in the
KEYWORDS array).
- Add the full built-in function list (in
FUNCTIONS) with real
signatures and descriptions.
- Add motion command variants (Go / Move / Jump / Jump3 / Arc / Curve /
CVMove) with their full option set.
- Add task control (Xqt, TaskStart, TaskStop, …).
- Add the system variables (MyTask, TSpeed, etc.) so they appear in
completion too.
- Update
syntaxes/spel.tmLanguage.json to make any keywords that the
starter grammar missed be styled correctly.
The rest of the pipeline (hover, completion, definition, outline,
formatter) will pick up new entries automatically.
Roadmap
- v0.2 – refine formatter and add per-language settings (case-sensitivity,
Indent style).
- v0.3 – diagnostic provider that catches
GoSub to unknown labels,
Call to unknown Subs, and undeclared variable usage.
- v0.4 – symbols + outline polish and code-folding markers.
License
MIT.
| |