Skip to main content
Five minutes, six things: what completion looks like when it knows the type of a value, how realms catch cross-realm calls before you run the game, how net messages are checked end to end, and how to silence a false positive inline.

1) Completion follows the value

Assign something the extension recognises and completion offers the methods that thing actually has. A player, a panel, a loop variable — the list changes with the type, not the name.

2) Your own functions

Annotate them if you want, or don’t and let the extension read the type from how the parameters are used.
With annotations, callers get completion and diagnostics on every parameter. Without them, inference reads the type from the methods called on each parameter — enough for most helpers.

3) Realms are not a suggestion

GLua code runs on the server, the client, or both. The file’s path decides which, and a call to an API that does not exist in that realm is reported where you write it:
Move the code to a server file, or send a net message from here — the diagnostic tells you which realm the API belongs to.

4) Net messages checked end to end

net.Start on one side and net.Receive on the other are paired across files and their write/read sequences compared. Mismatch the payload and it is flagged before the message runs.

5) Silencing a finding

When a diagnostic is wrong for a specific line, suppress that line rather than turning the rule off:
The comment goes on the line above the statement it covers. Every other diagnostic on that line still fires.

6) Commands worth knowing

Open the Command Palette (Ctrl+Shift+P or Cmd+Shift+P) and type GLua: to find these: Run GLua: Show Net Message Graph on your project to see every sender and receiver, and how their payloads line up, in one view.