Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
samisalreadytaken committed Jun 15, 2024
0 parents commit 57bb752
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Registers Squirrel language as a debugger. See [samisalreadytaken/sqdbg](https://github.com/samisalreadytaken/sqdbg) for Squirrel debugger using Debug Adapter Protocol.
64 changes: 64 additions & 0 deletions extension.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@

const vscode = require("vscode");

class DebugAdapterServerDescriptorFactory
{
createDebugAdapterDescriptor( session, executable )
{
if ( "address" in session.configuration )
return new vscode.DebugAdapterServer( session.configuration.port, session.configuration.address );
return new vscode.DebugAdapterServer( session.configuration.port );
}
}

class ConfigurationProvider
{
resolveDebugConfiguration( folder, config, token )
{
if ( !config.type && !config.request && !config.name )
{
const editor = vscode.window.activeTextEditor;
if ( editor && editor.document.languageId === "squirrel" )
{
config.type = "squirrel";
config.name = "Attach";
config.request = "attach";
config.port = "${command:GetPort}";
config.address = "${command:GetAddress}";
}
}

return config;
}
}

function activate( context )
{
context.subscriptions.push( vscode.commands.registerCommand( "extension.sqdbg-vs.GetPort", function( config )
{
return vscode.window.showInputBox( { placeHolder: "Enter debug server port" } );
} ) );

context.subscriptions.push( vscode.commands.registerCommand( "extension.sqdbg-vs.GetAddress", function( config )
{
return vscode.window.showInputBox( { placeHolder: "Enter debug server address", value: "127.0.0.1" } );
} ) );

context.subscriptions.push(
vscode.debug.registerDebugConfigurationProvider( "squirrel",
new ConfigurationProvider()
)
);

const factory = new DebugAdapterServerDescriptorFactory();

context.subscriptions.push(
vscode.debug.registerDebugAdapterDescriptorFactory( "squirrel", factory )
);

if ( "dispose" in factory )
context.subscriptions.push( factory );
}

exports.activate = activate;
exports.deactivate = function() {}
72 changes: 72 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"name": "sqdbg-vs",
"displayName": "Squirrel Debug Extension",
"version": "0.1.0",
"publisher": "samisalreadytaken",
"description": "",
"author": { "name": "samisalreadytaken" },
"engines": { "vscode": "^1.74.0" },
"categories": ["Debuggers"],
"repository": { "type": "git", "url": "https://github.com/samisalreadytaken/sqdbg-vs" },
"activationEvents": ["onDebug", "onDebugResolve:squirrel", "onDebugDynamicConfigurations:squirrel"],
"main": "extension.js",
"browser": "extension.js",
"contributes":
{
"breakpoints": [{ "language": "squirrel" }],
"debuggers": [
{
"type": "squirrel",
"label": "Squirrel Debugger",
"languages": ["squirrel"],
"configurationAttributes": {
"attach": {
"required": ["port"],
"properties": {
"port": {
"type": "integer",
"description": "Remote debug target port to connect to"
},
"address": {
"type": "string",
"description": "Remote debug target address to connect to (default: localhost)",
"default": "127.0.0.1"
}
}
}
},
"initialConfigurations": [
{
"type": "squirrel",
"request": "attach",
"name": "Server",
"port": 0
},
{
"type": "squirrel",
"request": "attach",
"name": "Client",
"port": 0
}
],
"compounds": [
{
"name": "Server & Client",
"configurations": ["Server", "Client"]
}
],
"variables": {
"GetPort": "extension.sqdbg-vs.GetPort",
"GetAddress": "extension.sqdbg-vs.GetAddress"
}
}
],
"languages": [
{
"id": "squirrel",
"extensions": [".nut"],
"aliases": ["squirrel", "sq"]
}
]
}
}

0 comments on commit 57bb752

Please sign in to comment.