Skip to content

Latest commit

 

History

History
111 lines (66 loc) · 5.49 KB

README.md

File metadata and controls

111 lines (66 loc) · 5.49 KB

wow-bundle for VS Code

The MIT License GitHub

This World of Warcraft addon developer toolset for VS Code includes an improved Lua language grammar with WoW API knowledge, a .toc file grammar, colorization for both .lua source and .toc files, and more.

Notice

  • wow-bundle is NOT a generic Lua colorizer, it is closely bound to WoW specificities and is not adapted to other Lua environments. Therefore, you may want to disable this extension when working on non-WoW Lua projects.

Warning

  • With WoW 7.3, Blizzard removed the 3 files I used to maintain wow-bundle (namely GlobalAPI.lua, WidgetAPI.lua and Events.lua from the Helix directory). Therefore, I cannot guarantee any longer that the bundle is 100% accurate with respect to the lastest WoW API.

Features

  • Full (I hope...) WoW 8.0.1 (Build 28153) API
  • Includes a bunch of useful code snippets, thanks to m4xc4v413r4
  • Improved Lua 5.1 grammar with World of Warcraft's built-in Lua interpreter specificities
  • Extensive FrameXML widgets and Lua library support
  • .toc file colorization
  • Four dedicated color themes based on VS Code's default themes: Light+, Dark+, Monokai and Monokai Dimmed

Grammars

> Lua 5.1 language

wow-bundle replaces VS Code's built-in Lua language grammar. Changes worth noticing are:

  • OO-style string functions support, ie. string.upper(mystring), mystring:upper() and even ("somestring"):upper() are supported!
  • Full metamethods support
  • Quoted string constants as consumed or returned by the collectgarbage(), date() and type() functions and the __mode() metamethod
  • Better character escapes inside strings: Unicode entities, decimal and hexadecimal values and control chars

> World of Warcraft API

wow-bundle's Lua grammar also tags a bunch of WoW-related stuff:

  • Blizzard's extensions to the Lua language like [table.]wipe(), strjoin(), etc.
  • World of Warcraft API functions, with (poor, honestly) support for functions that can't be called while in combat and functions that can be called only from secure code
  • WoW Library functions written in Lua (mostly used by UI code)
  • Global objects like UIParent, GameFontNormal and such
  • Global variables like HIGHLIGHT_FONT_COLOR_CODE, UIDROPDOWNMENU_INIT_MENU and such
  • Widgets methods like :AddLine(), :SetTexture() and such
  • Common function parameters like 'CheckButton', 'BOTTOMLEFT', 'OVERLAY', 'player' and such
  • Widgets event handler names like 'OnEnter', 'OnShow' and such
  • Game events like 'PLAYER_ENTERING_WORLD', 'VARIABLES_LOADED' and such
  • Removed and/or deprecated stuff in the API

lua

> Toc files

Also included is a simple grammar for .toc files with support for keywords (like ## Interface, ## Author and such) and X-keywords (like ## X-Date, ## X-Website and such)

toc

Colorization

All VS Code themes should word fine with wow-bundle as long as they follow the standard scope naming convention.

However, for further colorization granularity, wow-bundle also includes four specific theme based on VS Code's default themes and called Light+ (WoW), Dark+ (WoW), Monokai (WoW) and Monokai Dimmed (WoW). To choose one of these themes, open the Color Theme picker with File > Preferences > Color Theme (or Code > Preferences > Color Theme on Mac).

themes

wow-bundle's themes do not interfere with VS Code default colors for Lua or any other language you may use.

New since 1.0.1: I do however add italics to ALL comments and underline to invalid/deprecated keywords. Should you whish to disable this feature, set the following setting into VS Code settings:

"editor.tokenColorCustomizations": {
    "comments": {
        "fontStyle": ""
    }
}

New since 1.0.7: No more underline for invalids, not everybody likes it.

Known Issues

These are the currently known issues with wow-bundle. Should you whish to collaborate to the projet and help resolve these issues, you're welcome to submit a PR on Github.

  • Because Blizzard's FrameXML code exposes hundreds of global functions, objects and variables, it is impossible to support them all. Therefore, only a selection of the most frequently used identifiers is supported. Please open an issue on Github if you need to add more.
  • Game events and widgets script handlers are still shown as regular strings. I'm looking for a way to make them stand appart. - Fixed in 1.0.4

Found an issue not listed here? Head up to Github and open an issue!

TODOs (and mayhaps)

  1. Fix above issues
  2. Add code snippets
  3. Support XML declarations too (low on my priority list, though)
  4. Support VS Code light themes? Support all standard VS Code themes I'm done with themes - If you need more, just ask, I'll consider it
  5. Linting anyone?
  6. Or maybe code formating?
  7. IntelliSense support would be great too (I have no idea where to start, though)
  8. Add support for popular libraries like LibStub, Ace3, LibDataBroker...?

Release notes

See Changelog.md.