UltraStar-Deluxe / format

UltraStar Format Specification
https://usdx.eu/format
MIT License
11 stars 2 forks source link

[Tool] Visual Studio Code Plugin, Language Server, and Grammar #18

Open achimmihca opened 1 year ago

achimmihca commented 1 year ago

Suggestion

It would be nice to have a VisualStudio Code plugin for the UltraStar txt file format.

Support for a new language in Visual Studio Code (and many other IDEs) can be added via a Language Server.

Grammar of the Format

Use case

People editing the format by hand in text editor could use the VisualStudio Code plugin.

Extra info/examples/attachments

No response

Baklap4 commented 12 months ago

Would be a really nice addition, but i doubt people are opening the txt files within VSCode that much (at least not your average player)

The plugin could suggest available header fields defined by this format.

Yes love this. Including some documentation about the field or note.

The plugin could highlight errors in the format, e.g., overlapping notes, out of order notes

That'd be really nice! This helps spotting errors early on. Not sure if possible, but implement this checking also on txt-upload

The plugin could suggest improvements, e.g., adding golden notes

Yes things get forgotten, so suggesting improvements is really nice.

Just a question would it be possible to store this in a library or something so creator software can also use this instead of just VSCode?

achimmihca commented 12 months ago

would it be possible to store this in a library or something so creator software can also use this instead of just VSCode

Yes, by implementing the language server protocol it is editor agnostic (see illustration)

codello commented 7 months ago

48 includes a first proposal for a grammar (in ABNF). There are still some open questions about some edge cases but it‘s a start.

I like the idea of having more tooling around the file format but I‘m not sure it would be in scope for this project. Maybe having a VS code plugin and a language server be separate projects would be a better fit?