Files
plane000 9ed69a60eb OpenTK
2018-09-02 17:47:00 +01:00

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;
}