IDE for the Reach DApp programming language. This provides a VS Code extension with full-fledged IDE support to help with writing Reach programs that can be deployed onto Ethereum. Features: - Auto setup of Reach compiler - Syntax support for Reach .rsh files - Live diagnostic highlighting for Reach compile errors without needing to save the file - Quick fixes with suggestions provided by Reach compiler - Hover documentation for all Reach statements - Snippet insertion for Reach template Right-click menu commands to interact with Reach and Ethereum: - Compile Reach program - Copy Ethereum contract ABI to clipboard - Copy Ethereum contract bytecode to clipboard - Run Reach program - Update Reach compiler

Reach IDE showcase

How it's made

See my published blog post for more details about how this project was developed: This project makes use of the Reach compiler in the background for live compilation results, quick fix suggestions, and Ethereum contract generation. The compiler works on a live working copy of the file without needing the user to save it first, and generates compilation results on the fly that are processed into the IDE's diagnostic highlighting. The suggestions provided by the compiler are converted in to the IDE's Quick Fix selections. If the Reach compiler is updated, for example for syntax changes or for better suggestions, the IDE will make use of those automatically. Hover documentation for all Reach statements was sourced from the Reach reference website by converting to markdown and then converting to Javascript code. Hyperlinks in the documentation for keywords are maintained and point to the relevant sections of the Reach website which opens in a browser. Ethereum integration comes from the compiled Reach contract and is retrieved to the user's clipboard, allowing them to easily grab the contract bytecode or ABI and paste it into whatever tools they are familiar with. The language features are implemented using the Language Server Protocol, which makes this solution easily extensible to other code editors. The project provides both a Reach language server and Reach VS Code language client which communicate with each other through this protocol.

Technologies used