For the past few days I was messing around with Roblox LSP’s source to integrate it with Argon. I found possible way of doing that but debugging this extension is nearly impossible because I can’ t print stuff to console.
So I decided to make some big changes to Argon itself. So first of all .argon.json will no longer be used. Instead data that has been stored in this file will now be stored in default.project.json, which is a Rojo file. So now by doing that almost every tooling that works on Rojo will work on Argon too.
Another change will be file naming. Instance names will no longer have classs inside it’s name. That’s necessary to make Roblox LSP and other tooling work with Argon. It will obviously break whole Argon project, tho to fix that you will simply have to port from Roblox again. Since Argon now supports properties, the class of an instance will be stored in the .properties.json file.
Last change will be 100% optional. It will be only required if you are interested in tooling. So the .source files will be named init and .properties files will be named meta. You will be able to change this setting inside VSC extension settings.
Probably the best idea (I think), because we have many-many packages which mostly follows the rojo formatting, so fixing it to work with Argon would be a pain. So, I probably like this idea of making it at least kind of similar to Rojo to make it support Roblox LSP and many other things. Good idea!
Nope. At the moment, it jumps to the very first line so you would have to go to that line manually unfortunately. You can go to the line either by scrolling (I don’t think I needed to remind you of that) or by opening up the command palette and replacing the > by : and then the line number (if the script’s too big).
Forgot to mention that in the update but unfortunately it’s not possible. That’s because LogService does not provide enough data - it only provides message, message type and timestamp.
If you know walkaround for that problem let me know and I will add this to Argon!
*In order to fix your project you have to delete literally everything from VSC and port from Roblox again.
**Currently .source files are not working, there is nothing I can do about it because my it requires to get my pull request merged. For now if you really need LSP support inside .source files you should enable “Compatibility Mode” inside Argon settings.
I think this is by far the best update for Argon, keep it up!
Bugs:
It… does not.
Porting folders with no children from VSC to roblox studio just keeps loading.
Edit: After some time it gave this error: Argon: HttpError: ConnectFail (ui4)
Edit2: I was connected but for some reason it disconnected, I connected again and it fixed it. Edit3: Okay, found out that when you try to port blank folders from VSC to roblox, it will load for some time and give a warning (stated above) and there will be a message in the status bar of VSC on the left saying something like: This extension closed unexpectedly or something like that and it disconnects. Also, you cannot open the argon quick pick menu while it is porting.
one thing, I notice that disabled scripts become enabled when sync from VS Code → Roblox
Haven’t read about what you are doing for properties, but is it possible there could be a separate way internally to store the state of a script being enabled or disabled?
There is —disable flag that you should put on the very begging of your script. It should be synced and ported in both sides. If it’s not working let me know and I will fix this with other bugs today!
Got it, but sometimes I use the .Enabled setting for testing purposes.
Also I suggest you make the plugin window have an overlay (that covers all screens perhaps?) which displays game.Name so we can tell what studio session we are syncing to.
It’s only really an issue if the plugin widget is detached and floating around as its own window but would be pretty useful, since if I open another session of studio it just overlays a new copy right over the old one and I have accidentially synced the wrong way before.
Great suggestion, I will add in the exact same way as you described. But for games that are uploaded to Roblox I will use MarketPlaceService to get game name because game.Name return useless names such as “Place1”.
NOTE: THIS IS JUST AFTER UPDATING THE PLUGINS RECENTLY, WORKED 1-2 DAYS AGO
Either I’m having issues on my end, or the plugin has stopped adding classnames to the end of folder names in VSCode, it means that when exporting and importing it just converts things to folders…
Example:
Have RemoteEvent called “event” in replicatedStorage
Convert to VSCode
Current Output:
Folder with name “event” in replicatedStorage dir
Expected:
Folder with name “event.RemoteEvent” in replicatedStorage dir
Convert back to roblox
Current Output:
Folder with name “event” in replicatedStorage
Expected:
RemoteEvent with name “event” in replicatedStorage
Folders are just default classes of objects. If you want to sync classes you have to enable property syncing. And no, Roblox LSP was not working properly e.g. if you had script inside non folder instance.
It’s just a pain if you need to add a .properties.json file to everything and then it means that you don’t get lsp autocomplete for the specific class, so the update just made it a pain to do one of the things that was actually useful-