LSP implementation for retro game development on the Super Nintendo Entertainment System using CA65.
The setting retroca65.sourceDirectory
allows the user to specify a directory relative to the source workspace as the "root" directory.
The setting retroca65.libSFXRoot
allows the user to specify a directory relative to the source workspace as the "libSFXRoot" directory.
Procs, labels, enums, structs, and macro references can be used to get the location of their definition.
Navigate to the file specified in the ca65 .includes
control command in source files
When using the .include
control command, the server provides completions for directories and files.
Support for autocompleting many control commands
Hovering over registers constants in .sgs
files will display related documentation
Syntaxt highlighting and parsing provided by libSFX grammars
An example vscode plugin is provided in the .vscode directory
Import NaturalDocs syntax to show related help text to hovers
Rename files, and symbols
Navigate from definitions to usages and references
This first release is buggy, and many features are only half completed. General improvements include auto completion for appropriate control commands (similar to includes file picker). Auto completion for constants and defined symbols will also be ideal.
TODO, but this is an easy maven project.
In general, CA65LanguageServer.java
initializes features and delegates to commands from the client them.
The 'scripts' directory includes simple linking scripts for building jlink launchers for mac, linux, and windows.
GrallVM support is in progress. Recent features broke the configuration and I haven't fixed it.
Java Language Server - https://github.com/georgewfraser/java-language-server GSON library - https://github.com/google/gson ca65 - https://cc65.github.io/doc/ca65.html libSFX - https://github.com/Optiroc/libSFX