// The module 'vscode' contains the VS Code extensibility API // Import the module and reference it with the alias vscode in your code below const vscode = require('vscode'); // this method is called when your extension is activated // your extension is activated the very first time the command is executed function activate(context) { // 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 "negative-spacing" is now active!'); // The command has been defined in the package.json file // Now provide the implementation of the command with registerCommand // The commandId parameter must match the command field in package.json let disposable = vscode.commands.registerCommand('extension.sayHello', function () { // 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!'); }); context.subscriptions.push(disposable); } exports.activate = activate; // this method is called when your extension is deactivated function deactivate() { } exports.deactivate = deactivate; function negativeIndent(text) { let encounteredIndent = false; let indentString = ''; let lines = []; let indents = []; for (let line of text.split('\n')) { if (!encounteredIndent) { let whitespace = /^\s*/.exec(line)[0]; if (whitespace.length > 0) { encounteredIndent = true; indentString = whitespace; } else { lines.push(line); indents.push(0); continue; } } let indentLevel = 0; while (line.substring(0, indentString.length) === indentString) { indentLevel++; line = line.substring(indentString.length); } lines.push(line); indents.push(indentLevel); } if (!encounteredIndent) { return text; } console.log(lines, indents); let maxIndent = Math.max(...indents); let newText = ''; for (let i = 0; i < lines.length; i++) { let line = lines[i]; let indentLevel = indents[i]; newText += indentString.repeat(maxIndent - indentLevel) + line + '\n'; } return newText; }