Working example with start cancel
This commit is contained in:
Vendored
+2
-1
@@ -7,7 +7,8 @@
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${execPath}",
|
||||
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
|
||||
"outFiles": ["${workspaceFolder}/out/**/*.js"]
|
||||
"outFiles": ["${workspaceFolder}/out/**/*.js"],
|
||||
"preLaunchTask": "npm: compile"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "npm: compile",
|
||||
"type": "shell",
|
||||
"command": "npm run compile",
|
||||
"group": "build",
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
}
|
||||
Generated
+18
@@ -8,6 +8,7 @@
|
||||
"name": "speed-code",
|
||||
"version": "0.0.1",
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.2.0",
|
||||
"@types/vscode": "^1.70.0",
|
||||
"tslint": "^6.0.0",
|
||||
"typescript": "^5.0.0"
|
||||
@@ -41,6 +42,16 @@
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "24.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.2.0.tgz",
|
||||
"integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~7.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/vscode": {
|
||||
"version": "1.102.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.102.0.tgz",
|
||||
@@ -497,6 +508,13 @@
|
||||
"node": ">=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "7.10.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
|
||||
"integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
|
||||
+11
-4
@@ -6,13 +6,19 @@
|
||||
"engines": {
|
||||
"vscode": "^1.70.0"
|
||||
},
|
||||
"activationEvents": [],
|
||||
"activationEvents": [
|
||||
"onStartupFinished"
|
||||
],
|
||||
"main": "./out/extension.js",
|
||||
"contributes": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "speed-code.startSpeedRun",
|
||||
"title": "Hello World"
|
||||
"title": "Start Speed Run"
|
||||
},
|
||||
{
|
||||
"command": "speed-code.cancelSpeedRun",
|
||||
"title": "Cancel Speed Run"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -22,8 +28,9 @@
|
||||
"watch": "tsc -watch -p ./"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.2.0",
|
||||
"@types/vscode": "^1.70.0",
|
||||
"typescript": "^5.0.0",
|
||||
"tslint": "^6.0.0"
|
||||
"tslint": "^6.0.0",
|
||||
"typescript": "^5.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
+48
-6
@@ -1,11 +1,53 @@
|
||||
import * as vscode from 'vscode';
|
||||
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
const disposable = vscode.commands.registerCommand('speed-code.startSpeedRun', () => {
|
||||
vscode.window.showInformationMessage('Hello World from My Extension!');
|
||||
});
|
||||
let resetTimer = () => {}
|
||||
|
||||
context.subscriptions.push(disposable);
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
const statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 100);
|
||||
statusBarItem.tooltip = 'Speedrun timer';
|
||||
statusBarItem.text = "No active Speedrun";
|
||||
statusBarItem.show();
|
||||
|
||||
let timer: undefined | NodeJS.Timeout;
|
||||
|
||||
resetTimer = () => {
|
||||
if (timer) {
|
||||
clearInterval(timer);
|
||||
}
|
||||
statusBarItem.text = "No active Speedrun";
|
||||
};
|
||||
|
||||
resetTimer();
|
||||
|
||||
context.subscriptions.push(vscode.commands.registerCommand('speed-code.startSpeedRun', () => {
|
||||
const startTime = Date.now();
|
||||
timer = setInterval(() => {
|
||||
const currentTime = Date.now();
|
||||
const timeSeconds = (currentTime - startTime) / 1000;
|
||||
if (timeSeconds > 86400) {
|
||||
const days = Math.floor(timeSeconds / 86400);
|
||||
const hours = Math.floor(timeSeconds / 3600);
|
||||
const minutes = Math.floor(timeSeconds / 60);
|
||||
statusBarItem.text = `${days}:${hours - (days * 24)}:${minutes - (hours * 60)}:${(timeSeconds - (minutes * 60)).toFixed(3)}`;
|
||||
} else if (timeSeconds >= 3600) {
|
||||
const hours = Math.floor(timeSeconds / 3600);
|
||||
const minutes = Math.floor(timeSeconds / 60);
|
||||
statusBarItem.text = `${hours}:${minutes - (hours * 60)}:${(timeSeconds - (minutes * 60)).toFixed(3)}`;
|
||||
} else if (timeSeconds >= 60) {
|
||||
const minutes = Math.floor(timeSeconds / 60);
|
||||
statusBarItem.text = `${minutes}:${(timeSeconds - (minutes * 60)).toFixed(3)}`;
|
||||
} else {
|
||||
statusBarItem.text = `${timeSeconds}`;
|
||||
}
|
||||
statusBarItem.color = '#fff';
|
||||
}, 10);
|
||||
|
||||
vscode.window.showInformationMessage('Speedrun Started!');
|
||||
}), statusBarItem);
|
||||
|
||||
context.subscriptions.push(vscode.commands.registerCommand('speed-code.cancelSpeedRun', resetTimer), statusBarItem);
|
||||
}
|
||||
|
||||
export function deactivate() {}
|
||||
export function deactivate() {
|
||||
resetTimer();
|
||||
}
|
||||
|
||||
+2
-1
@@ -7,7 +7,8 @@
|
||||
"rootDir": "src",
|
||||
"strict": true,
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true
|
||||
"skipLibCheck": true,
|
||||
"types": ["node", "vscode"]
|
||||
},
|
||||
"exclude": ["node_modules", ".vscode-test"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user