Merge from vscode f5d3ffa6a0d655c87e1eb0e1e90773df58f7ff25 (#7929)

* Merge from vscode f5d3ffa6a0d655c87e1eb0e1e90773df58f7ff25

* fix launch script

* add missing files
This commit is contained in:
Anthony Dresser
2019-10-22 21:49:55 -07:00
committed by GitHub
parent 4a68ab4659
commit a94cbb528e
189 changed files with 1976 additions and 1541 deletions

View File

@@ -5,57 +5,17 @@
import * as nls from 'vs/nls';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { isHighSurrogate, isLowSurrogate } from 'vs/base/common/strings';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { EditorAction, ServicesAccessor, registerEditorAction } from 'vs/editor/browser/editorExtensions';
import { ReplaceCommand } from 'vs/editor/common/commands/replaceCommand';
import { IPosition, Position } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
import { ICommand } from 'vs/editor/common/editorCommon';
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import { ITextModel } from 'vs/editor/common/model';
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { MoveOperations } from 'vs/editor/common/controller/cursorMoveOperations';
class TransposeLettersAction extends EditorAction {
private positionLeftOf(start: IPosition, model: ITextModel): Position {
let column = start.column;
let lineNumber = start.lineNumber;
if (column > model.getLineMinColumn(lineNumber)) {
if (isLowSurrogate(model.getLineContent(lineNumber).charCodeAt(column - 2))) {
// character before column is a low surrogate
column = column - 2;
} else {
column = column - 1;
}
} else if (lineNumber > 1) {
lineNumber = lineNumber - 1;
column = model.getLineMaxColumn(lineNumber);
}
return new Position(lineNumber, column);
}
private positionRightOf(start: IPosition, model: ITextModel): Position {
let column = start.column;
let lineNumber = start.lineNumber;
if (column < model.getLineMaxColumn(lineNumber)) {
if (isHighSurrogate(model.getLineContent(lineNumber).charCodeAt(column - 1))) {
// character after column is a high surrogate
column = column + 2;
} else {
column = column + 1;
}
} else if (lineNumber < model.getLineCount()) {
lineNumber = lineNumber + 1;
column = 0;
}
return new Position(lineNumber, column);
}
constructor() {
super({
id: 'editor.action.transposeLetters',
@@ -101,10 +61,10 @@ class TransposeLettersAction extends EditorAction {
// otherwise, transpose left and right chars
let endPosition = (column === lastColumn) ?
selection.getPosition() :
this.positionRightOf(selection.getPosition(), model);
MoveOperations.rightPosition(model, selection.getPosition().lineNumber, selection.getPosition().column);
let middlePosition = this.positionLeftOf(endPosition, model);
let beginPosition = this.positionLeftOf(middlePosition, model);
let middlePosition = MoveOperations.leftPosition(model, endPosition.lineNumber, endPosition.column);
let beginPosition = MoveOperations.leftPosition(model, middlePosition.lineNumber, middlePosition.column);
let leftChar = model.getValueInRange(Range.fromPositions(beginPosition, middlePosition));
let rightChar = model.getValueInRange(Range.fromPositions(middlePosition, endPosition));