Devlogs
[beta] Font/sound editors and type system improvements!

GMEditA downloadable tool for Windows, macOS, and Linux
Additions
- You can now create and edit GMS2.3 fonts! (thanks to Anton)
- You can now create and edit GMS2.3 audio assets! (also thanks to Anton)
- I added an option for implicit type detection for simple instance variables!
Located in Linter settings; when enabled, GMEdit will automatically assign types for variable assignments such as v = 0, v = "", v = buffer_create(...) and alike. This feature isn’t very smart (e.g. no support for script calls or complex expressions), but still can save you from having to type /// @is {type} in a handful of places.
Improvements
- Dark theme now looks a little nicer, especially various checkboxes (thanks to Anton)
- Rearranged the Preferences menu a little based on what you are more likely to change often
#import remapping now works for {types} inside JSDoc comments
- Extending/implementing
object or instance built-in types will now inherit built-in auto-completion and syntax highlighting items.
- self-fields are now syntax-highlighted (e.g. will show missing variables) so long as the function/event does not contain
with-blocks.
- Anonymous structure literals (
{...}) can now be cast to namespaces that they “implement” all fields of.
- I rewrote how syntax highlighting for
@hint works, which now reflects the various degrees of madness that you can do with it.
- If methods are not given an explicit field type, they will now be typed as
function<>, which will spare you of some cases with forgetting parentheses after a = func.
- Rainbow brackets no longer have a limit on max “depth” - so long as your theme supports them.
The work involved with doing so also opens up opportunities in making highlighter a little smarter in future.
- Added a warning if file save operation fails (e.g. the file is read-only).
- Tooltips now show more information when mouseovering variables and I fixed some cases where the tooltip would tell you what the object is rather than what the variable is.
- Checks involving
is_undefined(arg) will now mark 2.3 function arguments as optional.
Fixes
- Fixed linter incorrectly parsing
struct[$ key]
- Fixed rainbow bracket flag for themes not being set on startup.
- Fixed inconsistencies with return types for some built-in functions
- Fixed incorrect linter types for
Fixed incorrect linter types for /// @hint {type} namespace_ImpStatic.inst` combined with #import
- Fixed 2.2 GUID being technically off-spec (no visible effect).
- Fixed 2.3 shaders not opening given specific settings.
- Fixed a very specific case with syntax highlighting breaking on 3+ consecutive
/// @is {type} lines
- Fixed live linter forgetting about variables in
#event properties
- Fixed
function name inside object events changing scope and causing warnings.
- Fixed
@interface clashing with @hint X extends Y
- Fixed
with blocks not changing context correctly for linter type checks.
- Fixed local variables without type information being detected as missing fields sometimes.
- Fixed
static func = function()->type not adding type to function signature.
- Fixed type constraints not being allowed in some cases.
- Fixed auto-completion hints showing the “raw” type sometimes.
- Fixed
: not bringing up type auto-completion when after a function(.
- Fixed context menu copy-paste not working on Mac OS.
- Fixed
function<> not being allowed in some type specifications.
- Fixed a few spots where you could cast
function<> to function<> with incompatible arguments.
- Fixed hint type information not being removed when hints get cleared.
(meaning that you couldn’t “un-type” a field without hitting Ctrl+R)
- Fixed a rare softlock with outline-view involving unusually-formatted code.
- Fixed detection of
#import preprocessor when a script only uses function()-> and nothing else of typed syntax.
- Fixed local variable type inference mistaking
globalvars for local variable declarations.
- Fixed instance variables with names matching those of built-in “types” not being added to instance’s variable list.
- Fixed it being possible to lose
@implements information when reloading a project.
field:s inside struct literals {...} can no longer show up as “missing”, though ultimately this is a complex issue to tackle due to syntax overlap (field: vs case val: vs a?b:c vs var a:type).
- Fixed warning line highlights not moving along when adding/removing code before them (#124).
- Fixed use of
argument inside constructor methods marking constructor as having optional arguments (#127).
- Fixed some cases where tooltips/status bar could not display information about very specific variable names.
- Fixed linter not handling types in
#args in “live” mode.
- Fixed #90 -
#args JSDoc generator shouldn’t insert spaces around =
- Using the “New IDE” button no longer causes the new window to auto-load the original project when assigning GMEdit as “open with” application.
- Fixed GMLive.js not doing anything when running code without any tabs (that is, with code in default tab).
It is entirely possible that I forgot something because there are too many changes.
Hotfix (Mar 01)
- Fixed
global.varname. not bringing up auto-completion.
- Fixed type information in auto-completion info continuing to stack in some cases.
- Fixed
@is and @implements not working in files with Unix endings.
- Fixed snippets overriding other auto-completion items.
Files
GMEdit-Beta-Windows.zip 125 MB
Version Feb 26, 2021
GMEdit-Beta-Mac.zip 113 MB
Version Feb 26, 2021
GMEdit-Beta-Linux.zip 116 MB
Version Feb 26, 2021
GMEdit-Beta-App-Only.zip 4.3 MB
Version Feb 26, 2021