GML [Tool] GMEdit - a code editor for GM! (now with plugins!)

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I really enjoy using this but I have one gripe with the editor and that's using middle mouse to access the manual while offline. I do a lot of my dev while not having access to a network, so I'm wondering is there a way to access the local html files from the YoYoStudioHelp folder through the GmLive server localhost port... possibly by changing config.json's url address? I'm no js wiz, but I tried changing the line with the url to things like "helpURL": "http://127.0.0.1:5100/C:/.../YoYoStudioHelp/$1" while running the gmlive server offline... no luck.
You should be able to use
Code:
file:///C:/.../<GM doc path>/$1
(also note that API changes only take effect after restarting GMEdit)
GMLive has approximately nothing to do with the docs so I'm not sure why you'd be using it's server for this.

This looks great! I'm impressed with your work as I've just recently started using GMLive. I'm going to check this out, thanks for putting the work in and making the community better :)
Thank you!
 

Cameron

Member
@YellowAfterlife Hey I ended up downloading this and it's even better than I could have imagined. It's so lightweight and elegant! :)
I do have a question though in regards to the backups. I'm working on project for a company on GMS1 and I push changes to a master using source control and would rather not have to push my backup folder. Is there a way to change the storage of the backup folder to my desktop or something? If not, is it that necessary to maintain the backups? I noticed in the settings I can reduce the number of backups from 2 to 0 and may do just that. However, there were a couple of times working on the project where the IDE noticed a conflict between an older version of a file and a newer version. Each time I chose the newer version of the file, but these conflicts gave me pause in reducing the backup count from 2 to 0. Thanks!

Edit: So it seems this is necessary protection when working with GMS1. Still, if you have a way of moving this folder away from the repository folder that would be great!
If not, I can always just take the folder out manually before adding and committing my changes although that would be a slight hassle.
 
Last edited:

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
@YellowAfterlife Hey I ended up downloading this and it's even better than I could have imagined. It's so lightweight and elegant! :)
Thank you!

and would rather not have to push my backup folder
Just add
Code:
/#backups/
(or /project/#backups/ if it's in a subdirectory)
to your .gitignore file.

If you are using a git GUI client, you should have an option to add file(s) to gitignore to the right-click menu when picking them for a commit, and there's usually a "ignore the directory" option to make things easier (but in the end this still just adds a line to .gitignore)
 

Samuel Venable

Time Killer
When is YoYo going to hire you as an official developer of GM? Have you ever looked into that? I think with your level of expertise, you'd be surprised.
 

Cameron

Member
Press Ctrl+Shift+I and copy me the error message from console tab, that's usually the only cause of that
Code:
app.js:288 hello!
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
64ace.js:3999 misspelled option "foldStyle"
warn @ ace.js:3999
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
36ace.js:3999 misspelled option "foldStyle"
warn @ ace.js:3999
 

lolslayer

Member
This looks really good! I also love that you extended GML in this editor.

I don't know if anybody has suggested it yet, but maybe, just maybe, you can add in the support for multi-threading the same way as Mishmash does it:
https://forum.yoyogames.com/index.p...eading-in-gamemaker-no-dlls-networking.44268/

I'm not certain if you can make this compatible with GMEdit,and maybe there are legal problems with this you want to avoid, I don't know, but I would go nuts if there's decent support for multi-threading in GameMaker :)
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
When is YoYo going to hire you as an official developer of GM? Have you ever looked into that? I think with your level of expertise, you'd be surprised.
Thanks! That did happen for a bit.

Code:
app.js:288 hello!
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
64ace.js:3999 misspelled option "foldStyle"
warn @ ace.js:3999
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
app.js:15272 Uncaught TypeError: Cannot read property 'startsWith' of null
    at Function.parsers_GmlSeeker.runSyncImpl (app.js:15272)
    at Function.parsers_GmlSeeker.runGmxObject (app.js:15504)
    at Function.parsers_GmlSeeker.runSync (app.js:15523)
    at next (app.js:14648)
    at tryToString (fs.js:449)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436)
36ace.js:3999 misspelled option "foldStyle"
warn @ ace.js:3999
Hm, ideally I'd need a sample of the project where this happens.
If you open dev tools prior to loading the project, you can switch to Sources tab, tick "pause on exceptions" button on the right, and then check what file this happens in when it pauses on an error (so that you know what you need to isolate).

This looks really good! I also love that you extended GML in this editor.

I don't know if anybody has suggested it yet, but maybe, just maybe, you can add in the support for multi-threading the same way as Mishmash does it:
https://forum.yoyogames.com/index.p...eading-in-gamemaker-no-dlls-networking.44268/

I'm not certain if you can make this compatible with GMEdit,and maybe there are legal problems with this you want to avoid, I don't know, but I would go nuts if there's decent support for multi-threading in GameMaker :)
I am working on a thing like that actually - and it's not just multi-threading.
In fact, oftentimes you don't even need multi-threading because it's possible to squeeze far more performance out of algorithmic code (which is what my tool allows to do).
The tool also offers easy-to-use C++ injection and makes it easy to debug/profile YYC projects in Visual Studio - from automated setup to matching up GML/C++ files for ease of navigation to making VS debugger display GML-specific values in a coherent way (not just as "{...}" mystery values):
upload_2018-12-25_23-35-45.png
So a pretty big deal for those concerned.

But... yeah. This doesn't have very much to do with GMEdit - sure, you can now specify C++ types via type magic or use #import syntax to write code that doesn't just look object-oriented, but is object-oriented, but an editor has no part in the actual process.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
New version is now out! This is a big one
spite-view.gif
Bigger additions:
  • Code editor now has a context menu
    • It has a pretty dumb "show references" thing
  • There are now tooltips for mouseovering functions, macros, variables, and so on
  • You can now import GMS1/GMS2 code editor colors as themes (see wiki)
  • There is now a sprite viewer for both GMS1 and GMS2
  • There is now regular expression search
  • Most code tabs are now restored when reopening a project
Smaller additions:
  • `///prefix ...` now gets a `ace_startswith_prefix` CSS class
  • You can now view GMS2 extension functions/macros via context menu.
  • Local variables inside #lambda functions now get a separate color
  • Global search can now show search results in #lambdas inline
  • Added a preference to control how GMS2 events are ordered for display
  • <html> now gets a hasFocus attribute in case you want your themes to change depending on window focus
  • You can now do `#import func in Name:method` or `#import prefix_* in Name:`
    (without turning every func into Name.method - only the ones for var v:Name)
  • Added a preference to open resource tree items with one click
  • GMEdit now has a taskbar icon thanks to JustFredrik
Improvements:
  • Thumbnails are now generated on-demand and perform much better in very large projects
  • NTT projects now have thumbnails for images
  • The item in resource tree now flashes a few times when you pick "show in resource tree"
  • Themes are now detected in the data directory so that you can remove the program directory and lose nothing
  • Auto-completion for namespaces now pops up when you type `var v:`
Breaking changes for themes:
  • Code editor rules now use `#main .ace-tm` (the editor) instead of `#main .gml` (the whole right side) so you'll need to find-replace that in your themes to be `#main .ace-tm`
  • Numbers are now just .ace_numeric instead of .ace_constant.ace_numeric to avoid requiring CSS priority
Changes:
  • You can now add a "//!usevars" line to your gmedit_lambda.gml after creating it to auto-workaround this bug (GMS <= 2.2.2).
  • Recent project list is now saved into the data directory rather than localStorage.
  • Newly created scripts now open automatically for editing
Fixes:
  • Fixed local variables sometimes not immediately highlighting in newly added GMS2 object events.
  • Fixed replace.gml being too greedy, thus causing xstart/ystart to go missing from highlighting
  • Fixed "use tabs instead of spaces" setting not getting saved.
  • Fixed projects opened via command-line argument adding duplicate entries to recent projects list
  • Fixed GMEdit using uppercase GUIDs while GMS2 uses lowercase (causing GMS2 to lowercase them when it changes that file)
  • Fixed "#event name|desc" (no-space comment) not setting starting line to 2
  • Fixed it being possible to corrupt code with conflicting #import declarations (#import a in v + #import b in v)
  • Fixed "invisible characters" being light gray in dark theme
  • Fixed code indexing being able to get stuck due to errors
 

immortalx

Member
What an update! @YellowAfterlife is there a way to save the code editor setting "Keyboard Handler"? When I set it to emacs, it does remember it for the current session but everytime I re-launch GMEdit it resets to ace.
I noticed these settings are stored in aceOptions.json, but there's no entry for keyboardHandler. Tried to add it myself with no success.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
love the progress

here's a theme
Thank you! I added a link to your itch page to the theme list on wiki

What an update! @YellowAfterlife is there a way to save the code editor setting "Keyboard Handler"? When I set it to emacs, it does remember it for the current session but everytime I re-launch GMEdit it resets to ace.
I noticed these settings are stored in aceOptions.json, but there's no entry for keyboardHandler. Tried to add it myself with no success.
Ah! Was it you that asked about this? I was trying to find what was off about keyboard handlers but couldn't find who asked and what. I think the deal with that is that it's not actually a variable at all, thus you can't get/set it like that. I'll take a look at it for a smaller update soon
 

immortalx

Member
Ah! Was it you that asked about this? I was trying to find what was off about keyboard handlers but couldn't find who asked and what. I think the deal with that is that it's not actually a variable at all, thus you can't get/set it like that. I'll take a look at it for a smaller update soon
Well, it wasn't me who asked but I'm glad it's not just me with weird requests :D
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
New update!
gmedit-split-r2.png
Bigger additions:
  • Plugin support! That's right,
  • Outline view! Makes it far more manageable to work with huge scripts/objects
  • Split view! Show a linked version of one of the tabs on the right for quick editing/reference (right-click on code > Show aside)
  • You can now manage GMS2 objects and shaders from GMEdit, as well as reordering/regrouping (but not creating/deleting) most other resources
Smaller additions:
  • Opening an image from included files now shows it inside GMEdit
  • GMEdit now supports basic INI and Markdown highlighting
    Markdown supports GML highlighting inside ```gml ...``` blocks, making it more convenient to write documentation for GM extensions right inside the project editor.
  • You can now see/edit general properties of GMS2 objects in a special "properties" event
  • GMEdit can now auto-detect whether to use spaces or tabs on per-file basis
  • There is now a command palette (Ctrl+Shift+T or Ctrl+T,>) for accessing semi-common features and plugin commands
  • You can now edit "notes" in GMS2 projects.
  • You can now sort resources in GMS2 projects (via right-click menu).
Improvements:
  • You can "view API" for GMS1 extensions as well
  • Opening a non-project file now consistently shows a file tab and a recent project list on the side
  • Code highlighting inside gml_pragma now works better.
  • If a script has no JSDoc, GMEdit will guess basic argument info from code.
Fixes:
  • Fixed an occasional little seam on tab UI
  • Fixed "/*" in search results breaking highlighting for the subsequent matches
  • Fixed GMEdit using / in new script paths while GMS2 prefers \ (causing GMS2 to later update them)
  • Fixed status bar showing wrong active argument for code with 2d array accessors among arguments
  • Fixed GMLive.gml icons flipping on/off when re-saving the same file with limited changes.
 

Posho

Member
Amazing! Will finally be able to trick my classmates into thinking that I'm doing something important when I'm actually making games. :cool:
I'm assuming this doesn't work with 3D?
 

Posho

Member
My GOD, just tried it out and it is amazing! This is exactly what I've been wanting for a long time now. A true full-text GML experience! Is there anything you'll make that won't impress me? Hahah.

I'm curious about how to run/test the project. I didn't play with it for much, but I didn't find a Run button. As of now are we supposed to keep the GMS window open just to test?
 
I wish something like this exist for use on mobile device; doesn't have to be able to do test run or anything sophisticated. Just the GML coding and adding sprite alone would be nice to allow working while on the go and then sync it back to the pc (GMS) to transfer, test run, and build the project.
 

immortalx

Member
My GOD, just tried it out and it is amazing! This is exactly what I've been wanting for a long time now. A true full-text GML experience! Is there anything you'll make that won't impress me? Hahah.

I'm curious about how to run/test the project. I didn't play with it for much, but I didn't find a Run button. As of now are we supposed to keep the GMS window open just to test?
There has been a plugin released which doesn't even need GMS2 to be running! It's fantastic and you can even view debug messages. Check it out:
https://github.com/nommiin/builder

The older method was using a script that redirected the F5 shortcut to GM's window, but with this new plugin it's redundant.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I'm assuming this doesn't work with 3D?
Is this about the GMLive.js build included? You'll need to switch mode from "2d" to "GL" if so

I'm curious about how to run/test the project. I didn't play with it for much, but I didn't find a Run button. As of now are we supposed to keep the GMS window open just to test?
There's a macro on wiki, and the aforementioned plugin if you are using GMS2.

I wish something like this exist for use on mobile device; doesn't have to be able to do test run or anything sophisticated. Just the GML coding and adding sprite alone would be nice to allow working while on the go and then sync it back to the pc (GMS) to transfer, test run, and build the project.
GMLive.js is very barely usable on mobile, but you need an external keyboard and a big enough screen (screenshot is from an iphone 6s, which is evidently too small)

There are of course, some mystery problems, like
  • The page can be scrolled past the bounds vertically
  • Tapping tabs doesn't switch them
  • Can't drag-resize the splitter
  • Not really optimized for portrait view
Of course, GMEdit is free and open-source, so anyone could fix this and submit a pull request, but that's too much of a perfect-world scenario.

And to use GMEdit itself on mobile you'd have to do some additional work to sync files through a third-party service or something.
 

Attachments

Mick

Member
There's a macro on wiki, and the aforementioned plugin if you are using GMS2.
That plugin sounds great! However, I can't get the plugin to work (no Run project in menu), do I need to do something else than these mentioned steps? (I use the latest version of GMEdit on Windows 7)

EDIT: Disregard my problem above, I was apparently not using the latest version!

Code:
1. create a folder named "builder" inside of `%appdata%/AceGM/GMEdit/plugins/` on Windows, `/Users/<username>/Library/Application Support/AceGM/GMEdit/plugins` on macOS
2. extract `main.js`, `build.js`, and `config.json` into aforementioned folder
3. launch GMEdit and open a project
4. open the main menu and select "Run Project"
5. optional: adjust what runtime to use in the "Preferences" menu
 
Last edited:

Posho

Member
There has been a plugin released which doesn't even need GMS2 to be running! It's fantastic and you can even view debug messages. Check it out:
https://github.com/nommiin/builder

The older method was using a script that redirected the F5 shortcut to GM's window, but with this new plugin it's redundant.
I tried using it and I got the same error message as if it weren't installed.
Code:
Compile Started: 12:21:32
Using Runtime:
Using Temporary Directory: C:\Users\green\AppData\Local/GameMakerStudio2/GMS2TEMP
!!! Could not find "GMAssetCompiler.exe" in C:\ProgramData/GameMakerStudio2/Cache/runtimes//bin/
I think this might be because I'm running Studio 2 from Steam, but despite that a file called "GMAssetCompiler.exe" is nowhere in the Steamapps folder, so I can't really find a way to redirect it.

There's a macro on wiki, and the aforementioned plugin if you are using GMS2.
Worked like a charm, thank you! Now I gotta make a quick executable that launches GMEdit, Studio 2 and the AutoIt script all at once.
 

Cameron

Member
@YellowAfterlife Nice! I'm digging the new update. I noticed the new linter is flagging a script that I use with variable arguments. How can I let the linter know that the script is okay to use with multiple arguments?
 

Cpaz

Member
@YellowAfterlife, I have a question.

Why make this a standalone application as opposed to something akin to a visual code extension? I ask mainly because there are a number QOL features that are still missing or not quite fleshed out.
Like, as @JON213 mentioned, a prettifier, more extensive text shortcuts (move line, copy lines, the such).

Was there inherit advantage to building an application from the ground up?
Just curious.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I'd like to be possible to custom the shortcuts of this ICE editor.
It would certainly be nice, but requires a certain amount of work to implement in a reasonable way.
If you are looking to remap code editor shortcuts, you can do so by making the tiniest plugin that calls aceEditor.commands.bindKey for each command of interest. Raw names of commands can be viewed via Ctrl+Alt+H.

@YellowAfterlife looking great! Will you be planning to add a built in code prettifier like in visual studio?
There is gml_fmt. Someone wrote a GMEdit plugin that allows to easily invoke it for the current file, but they've not put it out. I'll give them a poke.

@YellowAfterlife, I have a question.

Why make this a standalone application as opposed to something akin to a visual code extension? I ask mainly because there are a number QOL features that are still missing or not quite fleshed out.
Like, as @JON213 mentioned, a prettifier, more extensive text shortcuts (move line, copy lines, the such).

Was there inherit advantage to building an application from the ground up?
Just curious.
In short,
  • You cannot do contextual syntax highlighting in VS Code without insane hacks.
  • You can do contextual syntax highlighting in Atom, but whether implementing the rest of required features (like joining-splitting multiple files in one virtual file for editing, or fast indexing without language server communication overhead) would cause immense suffering is unclear.
  • I was fairly confident that I could deliver my desired feature set via plain Electron + Ace.js as I had already experimented with that for GMLive.js, and it did hold up for large files well enough.
  • Publishing a paid VSCode/Atom extension (to justify added development costs) with extremely narrow scope is a no-go (1).
  • Publishing a paid external editor for GameMaker (to justify working a larger feature set) is also a no-go (see: Parakeet).
(1) By "a no-go" I mean that spending anywhere upwards to hundreds of hours development time on something that proceeds to not sell is equivalent to putting yourself some thousand dollars into debt.

I hope this makes my reasoning apparent enough.

Of course the best case scenario would have been people contributing whatever features they'd like to see (either directly or as plugins), but, well,
 

BoB3k

Member
Hello, I've just found and DLed GMEdit. It looks FANTASTIC!! I'm seeing so much that I wish the real GM studio had.

I have a few question, both are very important to my workflow--

- I notice that CTRL-Tab simply goes through the order of the tabs instead of a last-first queue. Is there a way to do last-first functionality? I almost can't use a multi-doc app if it doesn't have that; it's how I code-- working on A, tab around to find B, copy something, quick single CTRL-Tab to go back to A for the paste, know that I want something else that was on C, quick double CTRL-Tab to go back to C, single CTRL-Tab back to A again, etc, etc...

- This kind of goes along with the first one -- the new build plugin is awesome and really kind of takes GMEdit to complete GMS2 coding GUI replacement. BUT, every time I run, when I exit, I come back to the Output window, and not where I was. Which is fine, except I now have to go find where I was. Incidentally, this would totally be fixed if there was last-first CTRL-Tabbing as a single CTRL-Tab would take you back to where you were.

- This seems easy, maybe I'm missing something -- How do I add a new event to a code script?? I'm assuming I can add a #event by hand, but then I have to know the exact event name, and I have to know what order to put it in (to keep things uniform) -- it seems like there would just be a right-click Add Event somewhere..?


Thanks!!
-BoB
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
- I notice that CTRL-Tab simply goes through the order of the tabs instead of a last-first queue. Is there a way to do last-first functionality? I almost can't use a multi-doc app if it doesn't have that; it's how I code-- working on A, tab around to find B, copy something, quick single CTRL-Tab to go back to A for the paste, know that I want something else that was on C, quick double CTRL-Tab to go back to C, single CTRL-Tab back to A again, etc, etc...
I made this mini-plugin that adds browser-style Alt+Left/Alt+Right for tab navigation.
You could bind that to be Ctrl+Tab instead, leaving Ctrl+PgUp/Ctrl+PgDn for tab switching.

I wouldn't be the person to ask to implement a conventional tab switcher UI since I do not use these and thus have no clue as to how these should "feel".
Switching logic is pretty trivial and happens here:
nav-history can be used as reference for tracking tab navigation.

- This seems easy, maybe I'm missing something -- How do I add a new event to a code script?? I'm assuming I can add a #event by hand, but then I have to know the exact event name, and I have to know what order to put it in (to keep things uniform) -- it seems like there would just be a right-click Add Event somewhere..?
In the current beta it should pop up event type suggestions as soon as you type the space after "#event ". For GMS2 you can switch event order (auto-sorted or shown in order of addition) in Preferences
 

BoB3k

Member
In the current beta it should pop up event type suggestions as soon as you type the space after "#event ". For GMS2 you can switch event order (auto-sorted or shown in order of addition) in Preferences
that kind of works. it doesn't pop up the event suggestions until you start typing something, so you still have to type #event st to get to step. I also don't see it changing position even with GMS2 event order set to by event type, which would actually be kind of weird since I'm the one typing it in somewhere in my code, I might as well type it where I want it anway. -- is it supposed to jump to another part of the code?

nav-history can be used as reference for tracking tab navigation.
I dled it. I'm not sure I get it at all. If i actually open a new tab, and then press alt-left, it will go back to my last tab, but it if just move around in the tabs and the do alt-tab, it doesn't do anything.

I do not use these and thus have no clue as to how these should "feel".
It's how it works in GMS2 for the most part -- once CTRL is held down, each click of the tab takes you back through the list of tabbed docs in reverse order newest to oldest that they've been accessed.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
that kind of works. it doesn't pop up the event suggestions until you start typing something, so you still have to type #event st to get to step.
Are you sure you're running the beta build? There's a stable build and a beta build. Stable build is kind of old now since I keep adding features that need testing to know whether they break anything else. Here's what is supposed to happen in the current build:
autocomp.gif
I also don't see it changing position even with GMS2 event order set to by event type
Event order is enforced upon re-opening the object for editing. I do in-place modifications for a few features (#import, JSDoc generation) but that is a little more dangerous and creates an operation that you have to separately Ctrl+Z through.

I dled it. I'm not sure I get it at all. If i actually open a new tab, and then press alt-left, it will go back to my last tab, but it if just move around in the tabs and the do alt-tab, it doesn't do anything.
You could edit nav-history to hook $gmedit["ui.ChromeTabs"].sync instead, but doesn't that make it mutually exclusive with normal tab shortcuts? Since switching tabs left/right would mess up your history.

That's the kind of thing I'm talking about, by the way - if doing something on my spare time, I cannot take up on tasks that may require multiple revisions to get "right".
 

BoB3k

Member
I thought I got the beta, i got the one pointed to a few posts up in this thread. Is there a way in-app to see what version it is?
 

BoB3k

Member
You could edit nav-history to hook $gmedit["ui.ChromeTabs"].sync instead, but doesn't that make it mutually exclusive with normal tab shortcuts? Since switching tabs left/right would mess up your history.
I don't know about 'mess up' but I do think it would have to be an option in the settings to use one way or the other -- in-order tabbing or last-first tabbing.

I understand this is just a side thing you're doing, but what I'm suggesting is a pretty common thing -- in fact, i would say it's the standard and chrome is one of the few apps that don't do it. The whole reason I can't live without it is because I've used it my whole career in essentially every editor I've used from VisStudio to GMS2 to Notepad++.
 

Chingles

Member
Hello, this looks wonderful! I am testing it right now. For those still using gms1, this seems like a much better alternative to the default editor, almost indispensable. For those of us who use gms 2 it also seems like a good option.
Congratulations on your work, and thanks. I hope my English is understandable.
 

Cameron

Member
@YellowAfterlife Do you have plans for updating this with 2.3? I have noticed a couple of issues.

1) I'm getting a warning on function arguments. I can't seem to make the code editor aware of the parameters a function constructor has so when I create the struct from the function the editor says there are too many arguments.

2) I'm also getting a warning that functions I've created aren't valid even though the project compiles just fine.

3) Adding new events to an object from the editor seems to break the project and it won't compile, even though they are legitimate events. I did not have this issue before and now I have to add an event to an object from the IDE.

4) Can no longer create an object, script, etc., from the editor even thought the option is there, it just doesn't happen. I now have to create resources from the GM IDE.

I'm aware that such a massive change with gml will break things in the editor, that makes sense, and that the new language updates are in their infancy. I just thought I should inquire as well as bring these issues to your attention.

Edit: It seems there are also issues with the recognizing the newly added functionality and their respective properties, like the sequences for example.
 
Last edited:

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
@YellowAfterlife Do you have plans for updating this with 2.3? I have noticed a couple of issues.

1) I'm getting a warning on function arguments. I can't seem to make the code editor aware of the parameters a function constructor has so when I create the struct from the function the editor says there are too many arguments.

2) I'm also getting a warning that functions I've created aren't valid even though the project compiles just fine.

3) Adding new events to an object from the editor seems to break the project and it won't compile, even though they are legitimate events. I did not have this issue before and now I have to add an event to an object from the IDE.

4) Can no longer create an object, script, etc., from the editor even thought the option is there, it just doesn't happen. I now have to create resources from the GM IDE.

I'm aware that such a massive change with gml will break things in the editor, that makes sense, and that the new language updates are in their infancy. I just thought I should inquire as well as bring these issues to your attention.

Edit: It seems there are also issues with the recognizing the newly added functionality and their respective properties, like the sequences for example.
I could use a sample for the linter issues;

Currently GMEdit expects JSDoc to be inside the function declaration while GM allows either way. I'll be looking at that later.

The beta can and will change the format a bunch - e.g. I implemented 2.3. object event management at one point and now that does not work since the format changed. It's unclear whether it is worthwhile repeatedly rewriting the code as the format will change through beta.
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I released a new beta! This improves 2.3 support and shows context when using "find references":
gmedit-refs.png
 

YellowAfterlife

ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ
Forum Staff
Moderator
I released another beta!
gmedit-vec-comp.png
This introduces optional typing via JSDoc or declarations auto-collected from constructors, which allows GMEdit to only show completions for things directly related to the type (and also show the right arguments for functions with multiple signatures across constructors).

There's also a good number of smaller improvements.
 

Hermit

Member
I think there might be a problem with shaders. I was having trouble using builder after updating GMS2 and my project to 2.3, it failed with only this error: Runner exited with non-zero status (0xc0000005 = 3221225477)

It was occasionally accompanied by errors that said my shader files were open in another program (???) so I deleted them all. That made builder work, but now I notice I can't create or open existing shaders. Pre-2.3 projects and shaders work fine. I've tried both beta and stable.

I've never thanked you for this--it's invaluable. Even temporarily using the IDE is painful.
 
Top