Processing Language Server Extension for VSCode

Hello everyone,

I’m Diya Solanki, a pr05 2024 grantee currently developing a VSCode extension for Processing to support IntelliSense features and to run sketches directly in VSCode. You can download the extension from the VSCode Marketplace.

Current Features:

  • Stable architecture
  • .vsix release and VSCode Marketplace availability
  • Processing 4.3 integration
  • Workspace management (Sketch and Sketchbook)
  • Run and Stop buttons
  • On-hover documentation
  • Syntax highlighting
  • Sketch error detection
  • Headless Processing sketch execution
  • Multi-sketch support
  • Go-to-definition
  • Go-to-references
  • Code completion

Limitations

  • The LSP features work cross-platform, but sketch execution is currently limited to Windows due to the specific symlink setup for the Windows distribution.
  • The large size of the extension is due to custom dependencies downloaded via the dependency.bat script. The dependency.zip contains the Processing distribution for Windows, which is extracted into jre/deps.
  • This limitation is due to the extension’s JSON-RPC architecture, which enables client-server communication for IntelliSense features. A layered structure was established to connect the protocol, server, client, extension, and Processing distribution, using symlinks to package Processing and execute sketches from the sketch runner.
  • Future development could use similar setups for other platforms to expand compatibility.

Feel free to download the extension and report any issues on GitHub. Instructions are available in the extension’s README, and there’s also a tutorial for setting up the extension and running sketches on Windows.

This project has great potential for further development, including bundling Processing for other platforms, enhancing AST-based features, and the testing strategy, and eventually integrating it into other editors like Neovim, Eclipse, and JetBrains. I’d love to see contributors explore the repository and contribute to the project. Please feel free to ask any questions you may have about setup or use, and I welcome any feedback or ideas for improvement. I would also love to discuss the project’s future and any ideas you might have!

3 Likes

Look promising I will definitely try it out when it is available for macOS :+1: