From fa959c9829c8b0eebef427d6ab9db79a7f30adf8 Mon Sep 17 00:00:00 2001 From: StefanoMartella Date: Fri, 19 Nov 2021 17:06:58 +0100 Subject: [PATCH] [Add] selectionStep option --- extension.js | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/extension.js b/extension.js index dcc7c67..49da1b8 100644 --- a/extension.js +++ b/extension.js @@ -8,13 +8,23 @@ function activate(context) { } exports.activate = activate; +function fromMonoToMultiArray(array, dimension) { + return array.reduce( + (rows, key, index) => + (index % dimension === 0 + ? rows.push([key]) + : rows[rows.length - 1].push(key)) && rows, + [] + ); +} + function sequentialNumberGenerate() { if (vscode.window.activeTextEditor) { let input = vscode.window.showInputBox({ 'value': '1', - 'placeHolder': '1 + 1', - 'prompt' : ' ' + 'placeHolder': '1 + 1 1', + 'prompt' : ' ' }); input.then((value) => { @@ -29,26 +39,33 @@ function sequentialNumberGenerate() { let start = options[0] ? options[0] : '1'; let operator = '+'; - let step = '1'; + let numberStep = '1'; + let selectionStep = '1'; if (options[1]) { if (['+', '-', '*', '/'].includes(options[1])) { operator = options[1]; - step = options[2] ? options[2] : '1'; + numberStep = options[2] ? options[2] : '1'; } else { - step = options[1]; + numberStep = options[1]; } } + if (options[3]) { + selectionStep = options[3]; + } + let result = start; vscode.window.activeTextEditor.edit((editBuilder) => { - vscode.window.activeTextEditor.selections.forEach((element, index) => { + fromMonoToMultiArray(vscode.window.activeTextEditor.selections, selectionStep).forEach((cluster, index) => { if (index != 0) { - result = eval(parseInt(result) + operator + parseInt(step)); + result = eval(parseInt(result) + operator + parseInt(numberStep)); } - editBuilder.replace(element, result.toString()); + cluster.forEach(element => { + editBuilder.replace(element, result.toString()); + }) }); }); }