This month we addressed some older issues, as well as adding juicy new features. Our spotlight this time is about new vscode features.

We also want to say thanks to the community for the avid support and contributions in the last few months, helping Wurst to become better than ever!

Tool updates

  • Patch 1.30 is supported and the reccommended version for Wurst development.
  • Vanilla Jass is now parsed with its own grammar, which improves compatibility for input maps.
  • Added @inline and @noinline annotations to allow more fine grained control over inlining behavior.
  • The inliner has also been improved and now handling inlining on a call by call basis.
  • Added breadcrumbs, outline view and symbol renaming to vscode extension.
  • Colors used in wurst color tuples and wc3 color codes are now shown in vscode.
  • Functions from blizzard.j that are used during map initialization no longer get inlined, preventing map script bloat, in particular with more than 12 players.
  • Added warnings for unused private class variables and functions.
  • Fixed a case of dead code not being detected, which resulted in duplicate statements when manually nulling handles
  • The error window’s tab width has been reduced so the code isn’t overly indented anymore.
  • Profiled and addressed a couple CPU and Memory concerns (thanks to ej-technologies’ open-source JProfiler license).

Standard library highlights

  • FileIO and Network libraries have been updated for 24 players and new natives (PR #94, PR #106, PR #107).
  • DamageType (PR #95, PR #97), and OnUnitEnterLeave (PR #96) received more fixes for edge cases.
  • Asset lists have been improved by (PR #98, PR #103, PR #114).
  • trigger API received fixes by (PR #102, PR #104)
  • Added Matrices and Quaternion math packages which can also be used to manipulate effects (PR #111, PR #112).
  • Removed another initlater import from the stdlib which improves code quality.
  • We have several more PRs currently in the reviewing process, regarding Damage Modification and FileIO.

Spotlight: VSCode Integration

One of the more noticable improvements these last months have been on making the wurst vscode development experience more feature rich and integrated. We implemented several more features of the language protocol, which we will preset here. Additionally, the wurst file icon is now an offical part of the vscode-icons extension.

Breadcrumbs show the model hiearachy from your cursor positon. You can turn them on via View->Toggle Breadcrumbs.

The Focus Breadcrumbs command (shortcut Ctrl +Shift+.) lets you navigate your code quickly. You can also search for symbols using the Goto symbol in workspace command (Ctrl + t) or using Goto symbol in file (Ctrl+Shift+o).

Outline View

The outline gives you a searchable overview over all elements in that file. Turn it on by rightclicking on the Explorer headline.

Symbol Renaming

VSCode recognizes Wurst’s symbols, allowing for consistent renaming.

Color Preview

Wurst color tuples and wc3 color strings are now previewed and you can use the vscode color picker to adjust them.

Import Quickfix

When using types which are not imported into a given package yet, Wurst will suggest importing a package which will fulfill that type. If applied, the quickfix will add the import statement automatically.

Themability

While not a Wurst feature, it should be noted that everything style related you see here can be customized in some way. There are default and user created themes, take a look:

The theme used for the screenshots above, is called “Atom One Dark”

Cheers!

-Frotty