diff --git a/package.json b/package.json index 5f24443..3ba3463 100644 --- a/package.json +++ b/package.json @@ -23,24 +23,27 @@ "Other" ], "engines": { - "vscode": "^1.0.0" + "vscode": "^1.1.18" }, "activationEvents": [ "onCommand:extension.insertNumbers" ], "main": "./out/src/extension", "contributes": { - "commands": [{ - "command": "extension.insertNumbers", - "title": "Insert Numbers" - }], - - "keybindings": [{ - "command": "extension.insertNumbers", - "key": "ctrl+alt+n", - "mac": "cmd+alt+n", - "when": "editorTextFocus" - }] + "commands": [ + { + "command": "extension.insertNumbers", + "title": "Insert Numbers" + } + ], + "keybindings": [ + { + "command": "extension.insertNumbers", + "key": "ctrl+alt+n", + "mac": "cmd+alt+n", + "when": "editorTextFocus" + } + ] }, "scripts": { "vscode:prepublish": "node ./node_modules/vscode/bin/compile", @@ -51,4 +54,4 @@ "typescript": "^1.8.5", "vscode": "^0.11.0" } -} \ No newline at end of file +} diff --git a/src/NumInserter.ts b/src/NumInserter.ts index fae461c..ed55b91 100644 --- a/src/NumInserter.ts +++ b/src/NumInserter.ts @@ -88,7 +88,7 @@ export class NumInserter { let textEditor = vscode.window.activeTextEditor; - const selections : vscode.Selection[] = textEditor.selections; + const selections : vscode.Selection[] = this.quickSort(textEditor.selections); const formatStr = settings.formatStr; const start = settings.start; @@ -110,6 +110,36 @@ export class NumInserter } ) } + + private quickSort(selections : vscode.Selection[]) : vscode.Selection[] + { + let middleIndex : number = selections.length >> 1; + if (selections.length <= 1) { + return selections; + } + let middle : vscode.Selection = selections[middleIndex]; + let left : vscode.Selection[] = []; + let right : vscode.Selection[] = []; + for (var i=0; i middle.start.line) { + right.push(current); + } else { + if (current.start.character <= middle.start.character) { + left.push(current); + } else { + right.push(current); + } + } + + } + return this.quickSort(left).concat([middle], this.quickSort(right)); + } private parseUserInput(input : string) : IInsertSettngs {