Axon Language Server (axon-lsp)
A VS Code extension that provides Language Server Protocol (LSP) support for the Axon programming language used in SkySpark and Haxall. This is my first whirl at publishing a tool like this so -- you've been warned! I'm hoping to get this working reasonably well circa 3.1.12 and then continue to update once we're in 4.0 to make development easier. I think there are some fun opportunities to add type hints, linting, debuggin into VS Code which should make day to day engineering much easier. Features
InstallationFrom Source
From MarketplaceConfiguration & DependenciesThe server is written in Python on top of pygls (lsprotocol and cattrs are bundled with pygls). Any Python rev newer than 3.11 has ran fine in testing. Pygls should be version 1.3.X. If the server remains in Python I will eventually look at migrating to pygls 2.
I understand this adds some friction to using the extension, but it allowed for the quickest path to do what really amounts to an experimental / open source project first for my own use. In the future, I would consider a server rewrite in Go, so if you have opinions there, please reach out. Beyond that, there's currently no configuration required. This extension has cached the core haxall & skyspark function library, and syncs automatically with your local working directory. This is nice, because you don't need to have the Haxall repo cloned onto your machine to make use of the extension. Future versions will support further customization or multiple directory support. How It WorksAxon LSP has sourced functions from:
The following file types and function types are parsed:
RoadmapSee ROADMAP.md for features under development. NoteIn the interest of keeping this extension small and (hopefully) fast, I've cached core functions into a small file rather than include the entire haxall repo, or making REST calls out to github to update. For that reason, reference linking to the Haxall core lib functions is not currently supported, exploring the best way to do this in the future (either hyperlink out to github web page at that .fan file or allow user to set directory to a local haxall clone for in-editor loading). Requirements
Python DependenciesThis extension requires Python with the following packages installed:
Note: The extension will attempt to use the Python interpreter configured in your VS Code Setting Python Path in VS CodeIf the extension cannot find Python, configure it in your VS Code settings:
Alternatively, the extension will automatically detect Python from common locations. Building
LicenseMIT License - see LICENSE file. |