84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
// 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;
|
|
}
|