diff --git a/.vscodeignore b/.vscodeignore index 21a002a..ed002e2 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -19,6 +19,6 @@ CONTRIBUTORS.md tsconfig.json tsconfig.build.json package-lock.json -dist/*.map +dist/**/*.map node_modules/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 92cdc56..6ef83f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "junbae-mode", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "junbae-mode", - "version": "0.0.1", + "version": "0.0.2", "license": "MIT", "devDependencies": { "@types/node": "^20.11.5", diff --git a/package.json b/package.json index 242f974..a80cc91 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "junbae-mode", "displayName": "Junbae Mode", - "version": "0.0.1", + "version": "0.0.2", "description": "Junbae is caique parrot!", "main": "./dist/extension.js", "publisher": "JunbaeJs", @@ -54,10 +54,34 @@ }, "contributes": { "commands": [ + { + "command": "junbae-mode.enable", + "title": "Enable Junbae Mode", + "when": "!config.junbae-mode.enabled", + "enablement": "!config.junbae-mode.enabled" + }, + { + "command": "junbae-mode.disable", + "title": "Disable Junbae Mode", + "when": "config.junbae-mode.enabled", + "enablement": "config.junbae-mode.enabled" + }, { "command": "junbae-mode.helloWorld", "title": "Hello World" } - ] + ], + "configuration": { + "title": "General", + "order": 0, + "properties": { + "junbae-mode.enabled": { + "order": 0, + "default": true, + "type": "boolean", + "description": "Enable Junbae Mode" + } + } + } } } diff --git a/package/junbae-mode-0.0.2.vsix b/package/junbae-mode-0.0.2.vsix new file mode 100644 index 0000000..183fae2 Binary files /dev/null and b/package/junbae-mode-0.0.2.vsix differ diff --git a/src/core/index.ts b/src/core/index.ts new file mode 100644 index 0000000..05e9d5f --- /dev/null +++ b/src/core/index.ts @@ -0,0 +1,37 @@ +import * as vscode from 'vscode'; + +const configurationSection = ['enabled'] as const; +type ConfigurationSection = (typeof configurationSection)[number]; + +export class JunbaeMode { + // configurations + enabled: boolean = true; + + /** + * Enables or disables Junbae Mode + * @param enabled + */ + setEnabled(enabled: boolean) { + this.enabled = enabled; + this.updateConfig('enabled', this.enabled); + vscode.window.showInformationMessage(`Junbae Mode is ${this.enabled ? 'enabled' : 'disabled'}!🦜`); + } + + /** + * Initializes Junbae Mode Configuration + */ + init() { + this.setEnabled(true); + this.updateConfig('enabled', this.enabled); + } + + /** + * Updates the configuration + * @param section + * @param value + */ + private updateConfig(section: ConfigurationSection, value: any) { + const config = vscode.workspace.getConfiguration('junbae-mode'); + config.update(section, value, vscode.ConfigurationTarget.Global); + } +} diff --git a/src/extension.ts b/src/extension.ts index e319da3..b7bbc5a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,13 +1,13 @@ // The module 'vscode' contains the VS Code extensibility API // Import the module and reference it with the alias vscode in your code below import * as vscode from 'vscode'; +import { JunbaeMode } from './core'; // This method is called when your extension is activated // Your extension is activated the very first time the command is executed export function activate(context: vscode.ExtensionContext) { - // Use the console to output diagnostic information (console.log) and errors (console.error) - // This line of code will only be executed once when your extension is activated - console.log('Congratulations, your extension "junbae-mode" is now active!🦜'); + const mode = new JunbaeMode(); + mode.init(); // The command has been defined in the package.json file // Now provide the implementation of the command with registerCommand @@ -15,10 +15,16 @@ export function activate(context: vscode.ExtensionContext) { const disposable = vscode.commands.registerCommand('junbae-mode.helloWorld', () => { // The code you place here will be executed every time your command is executed // Display a message box to the user - vscode.window.showInformationMessage('Hello World from Junbae Mode!🦜'); + if (mode.enabled) { + vscode.window.showInformationMessage('Hello World from Junbae Mode!🦜'); + } }); + const enable = vscode.commands.registerCommand('junbae-mode.enable', () => mode.setEnabled(true)); + const disable = vscode.commands.registerCommand('junbae-mode.disable', () => mode.setEnabled(false)); context.subscriptions.push(disposable); + context.subscriptions.push(enable); + context.subscriptions.push(disable); } // This method is called when your extension is deactivated