mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-25 09:06:21 +01:00
Merge pull request #1479 from Bigous/master
Implementation of editor.action.insertCursorAtEndOfEachSelectedLine
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
|
||||
import nls = require('vs/nls');
|
||||
import {CommonEditorRegistry, ContextKey, EditorActionDescriptor} from 'vs/editor/common/editorCommonExtensions';
|
||||
import {HandlerEditorAction} from 'vs/editor/common/editorAction';
|
||||
import {TPromise} from 'vs/base/common/winjs.base';
|
||||
import {EditorAction, HandlerEditorAction} from 'vs/editor/common/editorAction';
|
||||
import EditorCommon = require('vs/editor/common/editorCommon');
|
||||
import {INullService} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {KeyMod, KeyCode} from 'vs/base/common/keyCodes';
|
||||
@@ -27,6 +28,44 @@ class InsertCursorBelow extends HandlerEditorAction {
|
||||
}
|
||||
}
|
||||
|
||||
class InsertCursorAtEndOfEachLineSelected extends EditorAction {
|
||||
static ID = 'editor.action.insertCursorAtEndOfEachLineSelected';
|
||||
|
||||
constructor(descriptor:EditorCommon.IEditorActionDescriptorData, editor:EditorCommon.ICommonCodeEditor, @INullService ns) {
|
||||
super(descriptor, editor);
|
||||
}
|
||||
|
||||
public run(): TPromise<boolean> {
|
||||
let selection = this.editor.getSelection();
|
||||
if(!selection.isEmpty()) {
|
||||
let model = this.editor.getModel();
|
||||
let newSelections = new Array<EditorCommon.ISelection>();
|
||||
let selectionStart = selection.getStartPosition();
|
||||
let selectionEnd = selection.getEndPosition();
|
||||
for (var i = selectionStart.lineNumber; i <= selectionEnd.lineNumber; i++) {
|
||||
if(i !== selectionEnd.lineNumber) {
|
||||
let currentLineMaxColumn = model.getLineMaxColumn(i);
|
||||
newSelections.push({
|
||||
selectionStartLineNumber: i,
|
||||
selectionStartColumn: currentLineMaxColumn,
|
||||
positionLineNumber: i,
|
||||
positionColumn: currentLineMaxColumn
|
||||
});
|
||||
} else if( selectionEnd.column > 0 ) {
|
||||
newSelections.push({
|
||||
selectionStartLineNumber: selectionEnd.lineNumber,
|
||||
selectionStartColumn: selectionEnd.column,
|
||||
positionLineNumber: selectionEnd.lineNumber,
|
||||
positionColumn: selectionEnd.column
|
||||
});
|
||||
}
|
||||
}
|
||||
this.editor.setSelections(newSelections);
|
||||
}
|
||||
return TPromise.as(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// register actions
|
||||
CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(InsertCursorAbove, InsertCursorAbove.ID, nls.localize('mutlicursor.insertAbove', "Add Cursor Above"), {
|
||||
@@ -45,3 +84,7 @@ CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(InsertCurso
|
||||
secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow]
|
||||
}
|
||||
}));
|
||||
CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(InsertCursorAtEndOfEachLineSelected, InsertCursorAtEndOfEachLineSelected.ID, nls.localize('mutlicursor.insertAtEndOfEachLineSelected', "Create multiple cursors from selected lines"), {
|
||||
context: ContextKey.EditorTextFocus,
|
||||
primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KEY_I
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user