Skip to content

RoadMap

Mads Jans edited this page Oct 24, 2024 · 1 revision

Future Features

There are a lot of missing features that I would like to see implemented in ZeroSyntax. Features that make it feel more like a language server for a regular programming language.

RoadMap

  1. Support all .ini files for C&C Genv/ZH
  2. Generate symbol table from directory
  3. Goto Definition
  4. Semantic highlighting

Elaboration

  1. Currently the language server only supports .ini formats relevant for map.ini modification and not the other ones which might be useful when modding the game. As of writing this these are missing;
  • AudioSettings
  • Campaigns
  • ChallengeMode
  • ControlBarResizer
  • ControlBarScheme
  • CrateData
  • Credits
  • EvaEvents
  • GameData
  • GameLOD
  • MiscAudio
  • Mouse
  • Multiplayer
  • Music
  • Roads
  • ShellMenuScheme
  • Terrain
  • Video
  • Water
  • Webpages
  • WindowTransitions
  1. Currently the language server is shipped with lists of all relevant data in a Typscript file. It would be better and moral to have the user input the path to their extracted INI library from the game. Then when the extension is launched it will parse all files in the directory and create the relevant lists. This would also be beneficial for the "Goto Definition" task as it would be possible to store the placement of a value and its location and open that file in vscode when going to that definition.

  2. Files can become rather large with 10s of thousands of lines. So when editing (specially) objects it can a great help if you could go to the object_value you just entered. With goto definition this is possible. By creating a symbol table of the document that stores the definition of a value, the user can navigate to it by ctrl clicking on the value.

  3. Semantic highlighting is more of a nice to have. As it provides some visual aid based on the context of the document. An example would be a TransitionKey for a ConditionState. ConditionStates have a distinct blue color from ZeroSyntax-Highlighting, but by adding a TransitionKey the user introduces a new ConditionState which should have the same color (only if the TransitionKey exists).

Clone this wiki locally