Multiline tabs and a whole lot of types!


  • I added a whole lot of options for tabs!
    You can now have tabs split across multiple lines, have them match the label width, and more - check Preferences ➜ Navigation ➜ Tabs for new settings.
    You can also pin/unpin tabs by Ctrl+clicking them - this prevents them from being closed via “close all but this” shortcut and will put them at the beginning of tab list.
  • Outline View now has more display options
    Among other things, this allows using it as a vertical tab list.


  • Object editor now displays overridden properties.
  • aceEditor.debugShowToken() now toggles debug display if called again, shows more information, and looks better than before.
  • When navigating to a function name that matches its script name, GMEdit won’t try to scroll down to the function declaration inside.
    (base IDE shows separate lookup items for functions/scripts, which is a little nasty)
  • You can now include a note after the type in /// @is and this will be shown in auto-completion.
  • You can now create Notes in 2.3 projects, which is also good because Script and Shader creation menu items were too close together.
  • You can now cancel resource creation by pressing Esc when entering the name.


  • Added @typedef JSDoc comment!
    This allows to specify project-wide type aliases.
  • Added support for tuples!
    This means that if you are turning an array with different-typed values, you can specify what each cell holds.
  • Added support for specified_map, a ds_map with known key-value pair types.
    This also means that GMEdit can now check access to async_load
  • Added an option to disable implicit int<->bool casts.
  • Doing arr[i,k] now reasonably implies that arr is a Type[][] rather than just Type[].
  • Index-based built-in types (surfaces, data structures, etc.) now accept -1 very specifically as an allowed value.
  • Object/constructor type inference will now auto-type variables when assigned assets (spr = spr_some types as sprite) and also supports spr = -1 as sprite (or spr = func() as sprite) for convenience.
  • Added an option to warn about redundant casts (like doing 4 as int).
  • @param types now auto-apply to 2.3 named arguments and argument#/argument[] so that you don’t have specify types in both places.
  • Added an option to index non-top-level variables in Create events.
    This can be handy for configuration-specific logic that’s usually in if-blocks.


  • Fixed status bar being able to make the code editor view wider than intended.
    I think this is the third time I’m fixing this specific bug since styling is complex.
  • Fixed a few built-in functions having incorrect return values as far as linter is concerned.
  • Lone $ no longer highlights in numeric value color.
  • Fixed tabs continuing to show the “changes” marker when saving in Show Aside view.
  • Fixed multi-select object properties denying to save.
  • Fixed #import not working for importing items into “built-in” (int, array, etc.) types.
  • Fixed multiple code editors having blinking cursors if focusing-unfocusing the editor in specific ways.
  • Fixed 2.3 timeline moments being saved in 2.2 format.
  • Fixed nested with recovering self type incorrectly.
  • Fixed a few timing-specific issues with GMLive.js

Files 98 MB
Version Aug 23, 2021 Aug 23, 2021 90 MB
Version Aug 23, 2021 Aug 23, 2021 92 MB
Version Aug 23, 2021 Aug 23, 2021 11 MB
Version Aug 23, 2021 Aug 23, 2021

Get GMEdit

Download NowName your own price


Log in with to leave a comment.

The new tab system is amazing! Thank you :)