{ // Place your learns workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. // Placeholders with the same ids are connected. // Example: // "Print to console": { // "scope": "javascript,typescript", // "prefix": "log", // "body": [ // "console.log('$1');", // "$2" // ], // "description": "Log output to console" // } "GameObject Extension": { "scope": "lua", "prefix": "extendGameObject", "body": [ "---@class ${1:ClassName}:GameObject", "local ${1:ClassName} = GameObject:extend()", "", "function ${1:ClassName}:new(area, x, y, opts)", " ${1:ClassName}.super.new(self, area, x, y, opts)", "end", "", "---Updates ${1:ClassName}", "---@param dt number delta time", "function ${1:ClassName}:update(dt)", " ${1:ClassName}.super.update(self, dt)", "end", "", "---Draws ${1:ClassName}", "function ${1:ClassName}:draw()", " ${1:ClassName}.super.draw(self)", "end", "", "return ${1:ClassName}" ], "description": "Extends GameObject with a LuaLS class definition and implements new, update, and draw." } }