Opensource Lightweight Cross platform Completely adjustable hotkeys (or automatically map from Visual Studio: https://marketplace.visualstudio.com/items?itemName=ms-vscode.vs-keybindings) Fully customisable theming (with standard themes included) Supports all major languages. Lua is supported via an extension: https://marketplace.visualstudio.com/items?itemName=trixnz.vscode-lua Build in GIT source control Has a huge amount of extensions: https://code.visualstudio.com/docs/editor/extension-gallery Supports creating custom extensions: https://code.visualstudio.com/docs/extensions/overview Supports creating custom debuggers (on top of the ones that already exist).
Leadwerks extension
Personally I would love to see it if Visual Studio Code would be the default code editor for Leadwerks (either with 4.x or 5.x). So I got started on working on a custom Leadwerks extension. You can download it here: https://marketplace.visualstudio.com/items?itemName=aggror.Leadwerks
Todo list:
Done: Leadwerks extension has a dependency on the Lua extension. So this Lua extension is automatically installed when you install the Leadwerks extension. Done: Snippets. Every time you create a new script in the Leadwerks editor, you get a couple of default scripts like Function Script:Start(), UpdateWorld(), PostRender(context). Using a very simple snippet, these kind of functions can be inserted with ease. prop[type] : Creates Leadwerk editor properties print: Shortcut for System:Print("") lescripts: Inserts all entity script functions (commented) class: Creates a basic class objects with example functions start: Start function of an entity script updateworld: UpdateWorld function of an entity script updatephysics: UpdatesPhysics function of an entity script collision: Collision function of an entity script with all parameters PostRender: PostRender function of an entity script with the context parameter function: Creates a function for either a custom object or for the specific script if for pair ipar For instance: just type 'col' followed by 1 tab and you get: function Script:Collision(entity0,entity1,position,normal,speed) end
Partially done: Supporting intellisense (sort of) with Leadwerks entities. Lua is a typeless language (not a strong typed language), which makes intellisense not really possible. VS code is smart enough to recognise some functions that are available in your script, but it is not as complete as when you would work with C# or C++. Done: Generate snippets for the entire Leadwerks API. Snippets are created per object and a second one without the object. For instance Entity:SetPosition() SetPosition() TODO: Classes with parents, would require matching functions. For instance: a pivot is an entity and thus requires Pivot:SetPosition() Done: parameters into placeholder slots. If I can extend the intellisense so that it recognises Leadwerks entities, perhaps we could see correct variables and functions of those entities. TODO: Loading in the API documentation in a split screen. The API documentation is written in an XML format which I can retrieve in VS code. I can display it in a splitscreen. I would have to play with the styling a bit but in general this should work really fast API documentation can be cached if in online mode. Documentation could also be periodically fetched. Moving the API documentation to Github would help improve this process. (newer file versions etc) Debugging Josh stated that he is getting someone to make this for him. So fingers crossed. The biggest issue at the moment is the lack of debugging support. Visual studio has debugging options of course, but it can't communicate with the Leadwerks editor. If you have an error in your script while running from the editor, the default Lua editor is opened.
- Read more...
- 11 comments
- 4,410 views