OpenTK
This commit is contained in:
83
JavaScript/negative-spacing/extension.js
Normal file
83
JavaScript/negative-spacing/extension.js
Normal file
@@ -0,0 +1,83 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user