SpacemanDMM/crates/dm-langserver
Anthony "Shifty Rail 936a5ee5a0
Add basic support for for (var/k, v in X) syntax (#431)
This adds a new arm to the parser for the `for (var/k, v in X)` 
dict-like syntax that was added in 516.

I have hijacked the arm that checks for this type of expressions : 

`for (init, test, inc)` or `for (init; test; inc)`

I have seperated it between `init; test; inc` (left untouched) and
`init, test, inc`.
If `inc` is not None, I then check if `test` in a `BinaryOp::In`
(something like `for(init, [x in y])`. If not I just assume it's a `for
(init, test)` which is valid DM syntax.

I then check if `init` is a `var/k` type of statement, using copypaste.
DM will not compile `for (k, v)` nor will it compile `for (var/k,
var/v)`. I check if v is an ident.

If we're all good, I create a new type of structure
`ForKeyValueStatement` and the lib.rs / findreferences.rs knows what to
do with it.

Both `for (i = 0, i < 10, i++)`, `for (i = 0, i < 10)` still pass.
2025-07-18 20:10:15 -07:00
..
src Add basic support for for (var/k, v in X) syntax (#431) 2025-07-18 20:10:15 -07:00
build.rs Run cargo clippy --fix 2025-06-26 19:05:16 -07:00
Cargo.toml Update git2 to 0.20.2 (#434) 2025-06-18 21:52:55 -07:00
README.md Fix a missed secure.byond.com reference 2023-04-20 17:10:59 -07:00
wasm-imports.js Rename src/ to crates/, match directories to package names 2021-11-16 17:51:02 -08:00

DreamMaker Language Server

This package is a language server implementation for DreamMaker, the scripting language of the BYOND game engine. All features are dependent on client support.

Code completion

  • Completes names of typepaths, procs, type vars, local vars, and macros.
  • Popup includes symbol type as well as the value of constants.
  • Completes var and proc overrides in type definitions.
    • Proc overrides include a stub which calls ..().

Hover

  • Shows inheritance information when hovering proc headers and type vars.

Go to definition

  • Finds the definition of typepaths, procs, type vars, local vars, and macros.
  • In some clients, integrates with DM Reference browser.
  • Searches macros, types, procs, and vars.
  • Prefix query with # to search macros only, var/ to search vars only, or proc/ to search procs only.
  • Include / in query to search types only.
  • In some clients, integrates with DM Reference browser.

Find all references

  • Finds all uses of:
    • Typepaths as a literal.
    • Procs, called and overridden.
    • Type vars, read, written, and overridden.

Diagnostics

Signature help

  • Gives proc argument help, including for builtin procs, when a ( is typed or on command.

Document symbols

  • Provides an "outline" view of symbols in the current file.