LSP for Rebol & Recoil
- Rebol 93.3%
- JavaScript 6.5%
- Shell 0.2%
|
|
||
|---|---|---|
| .gitea/workflows | ||
| docs | ||
| extension-rebol | ||
| extension-recoil | ||
| lsp | ||
| .gitignore | ||
| README.md | ||
| TASKS.md | ||
rebol-editor-support
VS Code extensions and a small Rebol language server (lsp/recoil-lsp.r3) that runs Recoil and Rebol linters over stdio and publishes LSP diagnostics.
Layout
extension-rebol/— Syntax highlighting (.r3,.reb,.r, …) + LSP client.extension-recoil/—.rcl+ LSP client.lsp/—recoil-lsp.r3,transport.r3,linter.r3,rebol-syntax-linter.r3.
Requirements
r3onPATH(Ren-C / Rebol 3 withload/as … 'jsonandencode 'json).- Recoil checkout for
.rcllinting: setRECOIL_ROOTto the repo root, or placeRecoilas a sibling of this repo (default resolved fromlsp/is../../Recoil).
Behaviour
- Any
.rclpath can be linted (not only files under the Recoil tree), as long as a Recoil home directory exists as above. - Unsaved buffers: diagnostics use a temporary file with the same suffix as the document;
didSavelints from disk. - Full sync (
textDocumentSync.change = 2): eachdidChangeupdates in-memory text and runs diagnostics. On piped stdio, Ren-C’swait [stdin …]does not reliably wake, so the server does not use a separate idle debounce timer; the client may coalescedidChangetraffic.
Developing extensions
cd extension-rebol && npm install
# “Run Extension” from VS Code on this folder
Point rebol.lspScript / recoil.scriptPath at lsp/recoil-lsp.r3 if the default path search does not find it.
Versions
Extensions and LSP are aligned at 0.4.x; see each package.json and recoil-lsp.r3 header.