monaco-editor11 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/monaco-editor11.es.js +11 -16
- package/dist/monaco-editor11.umd.js +1 -1
- package/package.json +2 -2
- package/dist/monaco.d.ts +0 -8
- package/dist/workers/common/initialize.js +0 -16
- package/dist/workers/common/workers.js +0 -141
- package/dist/workers/editor/common/abstractSyntaxTokenBackend.js +0 -128
- package/dist/workers/editor/common/abstractText.js +0 -89
- package/dist/workers/editor/common/ast.js +0 -485
- package/dist/workers/editor/common/autoIndent.js +0 -390
- package/dist/workers/editor/common/beforeEditPositionMapper.js +0 -110
- package/dist/workers/editor/common/bracketPairsImpl.js +0 -717
- package/dist/workers/editor/common/bracketPairsTree.js +0 -343
- package/dist/workers/editor/common/brackets.js +0 -108
- package/dist/workers/editor/common/characterClassifier.js +0 -59
- package/dist/workers/editor/common/characterPair.js +0 -40
- package/dist/workers/editor/common/colorizedBracketPairsDecorationProvider.js +0 -97
- package/dist/workers/editor/common/columnRange.js +0 -35
- package/dist/workers/editor/common/combineTextEditInfos.js +0 -124
- package/dist/workers/editor/common/common.js +0 -20
- package/dist/workers/editor/common/computeMovedLines.js +0 -249
- package/dist/workers/editor/common/concat23Trees.js +0 -192
- package/dist/workers/editor/common/contiguousMultilineTokens.js +0 -32
- package/dist/workers/editor/common/contiguousMultilineTokensBuilder.js +0 -23
- package/dist/workers/editor/common/contiguousTokensEditing.js +0 -128
- package/dist/workers/editor/common/contiguousTokensStore.js +0 -207
- package/dist/workers/editor/common/coordinatesConverter.js +0 -51
- package/dist/workers/editor/common/cursor.js +0 -899
- package/dist/workers/editor/common/cursorAtomicMoveOperations.js +0 -145
- package/dist/workers/editor/common/cursorCollection.js +0 -194
- package/dist/workers/editor/common/cursorColumnSelection.js +0 -93
- package/dist/workers/editor/common/cursorColumns.js +0 -112
- package/dist/workers/editor/common/cursorCommon.js +0 -250
- package/dist/workers/editor/common/cursorContext.js +0 -15
- package/dist/workers/editor/common/cursorDeleteOperations.js +0 -231
- package/dist/workers/editor/common/cursorMoveCommands.js +0 -676
- package/dist/workers/editor/common/cursorMoveOperations.js +0 -290
- package/dist/workers/editor/common/cursorTypeEditOperations.js +0 -968
- package/dist/workers/editor/common/cursorTypeOperations.js +0 -173
- package/dist/workers/editor/common/cursorUtils.js +0 -75
- package/dist/workers/editor/common/cursorWordOperations.js +0 -720
- package/dist/workers/editor/common/defaultDocumentColorsComputer.js +0 -138
- package/dist/workers/editor/common/defaultLinesDiffComputer.js +0 -188
- package/dist/workers/editor/common/diffAlgorithm.js +0 -139
- package/dist/workers/editor/common/diffEditor.js +0 -38
- package/dist/workers/editor/common/dynamicProgrammingDiffing.js +0 -101
- package/dist/workers/editor/common/edit.js +0 -183
- package/dist/workers/editor/common/editOperation.js +0 -36
- package/dist/workers/editor/common/editStack.js +0 -363
- package/dist/workers/editor/common/editorAction.js +0 -26
- package/dist/workers/editor/common/editorBaseApi.js +0 -43
- package/dist/workers/editor/common/editorColorRegistry.js +0 -102
- package/dist/workers/editor/common/editorCommon.js +0 -13
- package/dist/workers/editor/common/editorConfigurationSchema.js +0 -338
- package/dist/workers/editor/common/editorContextKeys.js +0 -84
- package/dist/workers/editor/common/editorFeatures.js +0 -17
- package/dist/workers/editor/common/editorOptions.js +0 -3440
- package/dist/workers/editor/common/editorTheme.js +0 -23
- package/dist/workers/editor/common/editorWebWorker.js +0 -299
- package/dist/workers/editor/common/editorWorker.js +0 -9
- package/dist/workers/editor/common/editorWorkerHost.js +0 -15
- package/dist/workers/editor/common/editorZoom.js +0 -26
- package/dist/workers/editor/common/electricCharacter.js +0 -55
- package/dist/workers/editor/common/encodedTokenAttributes.js +0 -79
- package/dist/workers/editor/common/enterAction.js +0 -53
- package/dist/workers/editor/common/eolCounter.js +0 -44
- package/dist/workers/editor/common/findSectionHeaders.js +0 -128
- package/dist/workers/editor/common/fixBrackets.js +0 -67
- package/dist/workers/editor/common/fixedArray.js +0 -70
- package/dist/workers/editor/common/fontInfo.js +0 -172
- package/dist/workers/editor/common/fontInfoFromSettings.js +0 -29
- package/dist/workers/editor/common/getIconClasses.js +0 -106
- package/dist/workers/editor/common/getPositionOffsetTransformerFromTextModel.js +0 -24
- package/dist/workers/editor/common/glyphLanesModel.js +0 -61
- package/dist/workers/editor/common/guidesTextModelPart.js +0 -405
- package/dist/workers/editor/common/heuristicSequenceOptimizations.js +0 -374
- package/dist/workers/editor/common/indentRules.js +0 -63
- package/dist/workers/editor/common/indentation.js +0 -39
- package/dist/workers/editor/common/indentationGuesser.js +0 -178
- package/dist/workers/editor/common/indentationLineProcessor.js +0 -193
- package/dist/workers/editor/common/inlineDecorations.js +0 -26
- package/dist/workers/editor/common/inplaceReplaceSupport.js +0 -87
- package/dist/workers/editor/common/inputMode.js +0 -22
- package/dist/workers/editor/common/intervalTree.js +0 -1002
- package/dist/workers/editor/common/language.js +0 -9
- package/dist/workers/editor/common/languageBracketsConfiguration.js +0 -133
- package/dist/workers/editor/common/languageConfiguration.js +0 -138
- package/dist/workers/editor/common/languageConfigurationRegistry.js +0 -361
- package/dist/workers/editor/common/languageFeatureDebounce.js +0 -137
- package/dist/workers/editor/common/languageFeatureRegistry.js +0 -180
- package/dist/workers/editor/common/languageFeatures.js +0 -9
- package/dist/workers/editor/common/languageFeaturesService.js +0 -47
- package/dist/workers/editor/common/languageSelector.js +0 -112
- package/dist/workers/editor/common/languageService.js +0 -92
- package/dist/workers/editor/common/languages.js +0 -522
- package/dist/workers/editor/common/languagesAssociations.js +0 -193
- package/dist/workers/editor/common/languagesRegistry.js +0 -237
- package/dist/workers/editor/common/legacyLinesDiffComputer.js +0 -468
- package/dist/workers/editor/common/length.js +0 -129
- package/dist/workers/editor/common/lineDecorations.js +0 -208
- package/dist/workers/editor/common/lineEdit.js +0 -75
- package/dist/workers/editor/common/lineHeights.js +0 -370
- package/dist/workers/editor/common/linePart.js +0 -25
- package/dist/workers/editor/common/lineRange.js +0 -312
- package/dist/workers/editor/common/lineSequence.js +0 -36
- package/dist/workers/editor/common/lineTokens.js +0 -405
- package/dist/workers/editor/common/linesDiffComputer.js +0 -29
- package/dist/workers/editor/common/linesDiffComputers.js +0 -13
- package/dist/workers/editor/common/linesLayout.js +0 -765
- package/dist/workers/editor/common/linesSliceCharSequence.js +0 -205
- package/dist/workers/editor/common/linkComputer.js +0 -269
- package/dist/workers/editor/common/markerDecorations.js +0 -9
- package/dist/workers/editor/common/markerDecorationsService.js +0 -248
- package/dist/workers/editor/common/minimapTokensColorTracker.js +0 -58
- package/dist/workers/editor/common/mirrorTextModel.js +0 -117
- package/dist/workers/editor/common/model.js +0 -9
- package/dist/workers/editor/common/modelLineProjection.js +0 -350
- package/dist/workers/editor/common/modelLineProjectionData.js +0 -297
- package/dist/workers/editor/common/modelService.js +0 -413
- package/dist/workers/editor/common/modesRegistry.js +0 -75
- package/dist/workers/editor/common/monospaceLineBreaksComputer.js +0 -473
- package/dist/workers/editor/common/myersDiffAlgorithm.js +0 -159
- package/dist/workers/editor/common/nodeReader.js +0 -127
- package/dist/workers/editor/common/nullTokenize.js +0 -29
- package/dist/workers/editor/common/offsetRange.js +0 -225
- package/dist/workers/editor/common/onEnter.js +0 -109
- package/dist/workers/editor/common/oneCursor.js +0 -117
- package/dist/workers/editor/common/overviewZoneManager.js +0 -176
- package/dist/workers/editor/common/parser.js +0 -121
- package/dist/workers/editor/common/pieceTreeBase.js +0 -1473
- package/dist/workers/editor/common/pieceTreeTextBuffer.js +0 -461
- package/dist/workers/editor/common/pieceTreeTextBufferBuilder.js +0 -140
- package/dist/workers/editor/common/point.js +0 -50
- package/dist/workers/editor/common/position.js +0 -142
- package/dist/workers/editor/common/positionToOffset.js +0 -17
- package/dist/workers/editor/common/positionToOffsetImpl.js +0 -98
- package/dist/workers/editor/common/prefixSumComputer.js +0 -226
- package/dist/workers/editor/common/range.js +0 -421
- package/dist/workers/editor/common/rangeMapping.js +0 -229
- package/dist/workers/editor/common/rangeSingleLine.js +0 -17
- package/dist/workers/editor/common/rbTreeBase.js +0 -362
- package/dist/workers/editor/common/rect.js +0 -163
- package/dist/workers/editor/common/replaceCommand.js +0 -158
- package/dist/workers/editor/common/resolverService.js +0 -5
- package/dist/workers/editor/common/rgba.js +0 -35
- package/dist/workers/editor/common/richEditBrackets.js +0 -356
- package/dist/workers/editor/common/selection.js +0 -145
- package/dist/workers/editor/common/semanticTokensDto.js +0 -82
- package/dist/workers/editor/common/semanticTokensProviderStyling.js +0 -263
- package/dist/workers/editor/common/semanticTokensStyling.js +0 -9
- package/dist/workers/editor/common/semanticTokensStylingService.js +0 -47
- package/dist/workers/editor/common/shiftCommand.js +0 -241
- package/dist/workers/editor/common/smallImmutableSet.js +0 -108
- package/dist/workers/editor/common/sparseMultilineTokens.js +0 -548
- package/dist/workers/editor/common/sparseTokensStore.js +0 -210
- package/dist/workers/editor/common/standaloneEnums.js +0 -1017
- package/dist/workers/editor/common/standaloneStrings.js +0 -42
- package/dist/workers/editor/common/stringBuilder.js +0 -122
- package/dist/workers/editor/common/stringEdit.js +0 -165
- package/dist/workers/editor/common/supports.js +0 -58
- package/dist/workers/editor/common/surroundSelectionCommand.js +0 -44
- package/dist/workers/editor/common/textChange.js +0 -248
- package/dist/workers/editor/common/textEdit.js +0 -269
- package/dist/workers/editor/common/textLength.js +0 -87
- package/dist/workers/editor/common/textModel.js +0 -2031
- package/dist/workers/editor/common/textModelBracketPairs.js +0 -45
- package/dist/workers/editor/common/textModelDefaults.js +0 -18
- package/dist/workers/editor/common/textModelEditSource.js +0 -166
- package/dist/workers/editor/common/textModelEvents.js +0 -216
- package/dist/workers/editor/common/textModelGuides.js +0 -40
- package/dist/workers/editor/common/textModelPart.js +0 -23
- package/dist/workers/editor/common/textModelSearch.js +0 -455
- package/dist/workers/editor/common/textModelStringEdit.js +0 -11
- package/dist/workers/editor/common/textModelSync.impl.js +0 -307
- package/dist/workers/editor/common/textModelText.js +0 -26
- package/dist/workers/editor/common/textModelTokens.js +0 -436
- package/dist/workers/editor/common/textResourceConfiguration.js +0 -6
- package/dist/workers/editor/common/textToHtmlTokenizer.js +0 -139
- package/dist/workers/editor/common/tokenStore.js +0 -407
- package/dist/workers/editor/common/tokenWithTextArray.js +0 -73
- package/dist/workers/editor/common/tokenization.js +0 -287
- package/dist/workers/editor/common/tokenizationRegistry.js +0 -123
- package/dist/workers/editor/common/tokenizationTextModelPart.js +0 -275
- package/dist/workers/editor/common/tokenizer.js +0 -301
- package/dist/workers/editor/common/tokenizerSyntaxTokenBackend.js +0 -261
- package/dist/workers/editor/common/treeSitterLibraryService.js +0 -9
- package/dist/workers/editor/common/treeSitterSyntaxTokenBackend.js +0 -167
- package/dist/workers/editor/common/treeSitterThemeService.js +0 -9
- package/dist/workers/editor/common/treeSitterTokenizationImpl.js +0 -713
- package/dist/workers/editor/common/treeSitterTree.js +0 -395
- package/dist/workers/editor/common/treeViewsDnd.js +0 -24
- package/dist/workers/editor/common/treeViewsDndService.js +0 -12
- package/dist/workers/editor/common/trimTrailingWhitespaceCommand.js +0 -98
- package/dist/workers/editor/common/unicodeTextModelHighlighter.js +0 -188
- package/dist/workers/editor/common/utils.js +0 -62
- package/dist/workers/editor/common/viewContext.js +0 -22
- package/dist/workers/editor/common/viewEventHandler.js +0 -186
- package/dist/workers/editor/common/viewEvents.js +0 -180
- package/dist/workers/editor/common/viewLayout.js +0 -368
- package/dist/workers/editor/common/viewLineRenderer.js +0 -948
- package/dist/workers/editor/common/viewLinesViewportData.js +0 -30
- package/dist/workers/editor/common/viewModel.js +0 -98
- package/dist/workers/editor/common/viewModelDecoration.js +0 -55
- package/dist/workers/editor/common/viewModelDecorations.js +0 -132
- package/dist/workers/editor/common/viewModelEventDispatcher.js +0 -398
- package/dist/workers/editor/common/viewModelImpl.js +0 -1163
- package/dist/workers/editor/common/viewModelLines.js +0 -938
- package/dist/workers/editor/common/wordCharacterClassifier.js +0 -87
- package/dist/workers/editor/common/wordHelper.js +0 -127
- package/dist/workers/language/cssMode.js +0 -198
- package/dist/workers/language/cssWorker.js +0 -183
- package/dist/workers/language/htmlMode.js +0 -213
- package/dist/workers/language/htmlWorker.js +0 -126
- package/dist/workers/language/jsonMode.js +0 -224
- package/dist/workers/language/jsonWorker.js +0 -187
- package/dist/workers/language/languageFeatures.js +0 -1009
- package/dist/workers/language/lib.index.js +0 -103
- package/dist/workers/language/lib.js +0 -1107
- package/dist/workers/language/lspLanguageFeatures.js +0 -716
- package/dist/workers/language/monaco.contribution.js +0 -144
- package/dist/workers/language/tokenization.js +0 -189
- package/dist/workers/language/tsMode.js +0 -212
- package/dist/workers/language/tsWorker.js +0 -352
- package/dist/workers/language/typescriptServices.js +0 -210154
- package/dist/workers/language/typescriptServicesMetadata.js +0 -3
- package/dist/workers/language/workerManager.js +0 -65
- /package/dist/workers/{language/css.worker.js → css.worker.js} +0 -0
- /package/dist/workers/{editor/editor.worker.js → editor.worker.js} +0 -0
- /package/dist/workers/{language/html.worker.js → html.worker.js} +0 -0
- /package/dist/workers/{language/json.worker.js → json.worker.js} +0 -0
- /package/dist/workers/{language/ts.worker.js → ts.worker.js} +0 -0
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import { prevCharLength, nextCharLength } from '../../../base/common/strings.js';
|
|
2
|
-
import { CursorColumns } from '../core/cursorColumns.js';
|
|
3
|
-
import { Position } from '../core/position.js';
|
|
4
|
-
import { Range } from '../core/range.js';
|
|
5
|
-
import { AtomicTabMoveOperations } from './cursorAtomicMoveOperations.js';
|
|
6
|
-
import { SingleCursorState } from '../cursorCommon.js';
|
|
7
|
-
|
|
8
|
-
/*---------------------------------------------------------------------------------------------
|
|
9
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
11
|
-
*--------------------------------------------------------------------------------------------*/
|
|
12
|
-
class CursorPosition {
|
|
13
|
-
constructor(lineNumber, column, leftoverVisibleColumns) {
|
|
14
|
-
this._cursorPositionBrand = undefined;
|
|
15
|
-
this.lineNumber = lineNumber;
|
|
16
|
-
this.column = column;
|
|
17
|
-
this.leftoverVisibleColumns = leftoverVisibleColumns;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
class MoveOperations {
|
|
21
|
-
static leftPosition(model, position) {
|
|
22
|
-
if (position.column > model.getLineMinColumn(position.lineNumber)) {
|
|
23
|
-
return position.delta(undefined, -prevCharLength(model.getLineContent(position.lineNumber), position.column - 1));
|
|
24
|
-
}
|
|
25
|
-
else if (position.lineNumber > 1) {
|
|
26
|
-
const newLineNumber = position.lineNumber - 1;
|
|
27
|
-
return new Position(newLineNumber, model.getLineMaxColumn(newLineNumber));
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return position;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
static leftPositionAtomicSoftTabs(model, position, tabSize) {
|
|
34
|
-
if (position.column <= model.getLineIndentColumn(position.lineNumber)) {
|
|
35
|
-
const minColumn = model.getLineMinColumn(position.lineNumber);
|
|
36
|
-
const lineContent = model.getLineContent(position.lineNumber);
|
|
37
|
-
const newPosition = AtomicTabMoveOperations.atomicPosition(lineContent, position.column - 1, tabSize, 0 /* Direction.Left */);
|
|
38
|
-
if (newPosition !== -1 && newPosition + 1 >= minColumn) {
|
|
39
|
-
return new Position(position.lineNumber, newPosition + 1);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return this.leftPosition(model, position);
|
|
43
|
-
}
|
|
44
|
-
static left(config, model, position) {
|
|
45
|
-
const pos = config.stickyTabStops
|
|
46
|
-
? MoveOperations.leftPositionAtomicSoftTabs(model, position, config.tabSize)
|
|
47
|
-
: MoveOperations.leftPosition(model, position);
|
|
48
|
-
return new CursorPosition(pos.lineNumber, pos.column, 0);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* @param noOfColumns Must be either `1`
|
|
52
|
-
* or `Math.round(viewModel.getLineContent(viewLineNumber).length / 2)` (for half lines).
|
|
53
|
-
*/
|
|
54
|
-
static moveLeft(config, model, cursor, inSelectionMode, noOfColumns) {
|
|
55
|
-
let lineNumber, column;
|
|
56
|
-
if (cursor.hasSelection() && !inSelectionMode) {
|
|
57
|
-
// If the user has a selection and does not want to extend it,
|
|
58
|
-
// put the cursor at the beginning of the selection.
|
|
59
|
-
lineNumber = cursor.selection.startLineNumber;
|
|
60
|
-
column = cursor.selection.startColumn;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
// This has no effect if noOfColumns === 1.
|
|
64
|
-
// It is ok to do so in the half-line scenario.
|
|
65
|
-
const pos = cursor.position.delta(undefined, -(noOfColumns - 1));
|
|
66
|
-
// We clip the position before normalization, as normalization is not defined
|
|
67
|
-
// for possibly negative columns.
|
|
68
|
-
const normalizedPos = model.normalizePosition(MoveOperations.clipPositionColumn(pos, model), 0 /* PositionAffinity.Left */);
|
|
69
|
-
const p = MoveOperations.left(config, model, normalizedPos);
|
|
70
|
-
lineNumber = p.lineNumber;
|
|
71
|
-
column = p.column;
|
|
72
|
-
}
|
|
73
|
-
return cursor.move(inSelectionMode, lineNumber, column, 0);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Adjusts the column so that it is within min/max of the line.
|
|
77
|
-
*/
|
|
78
|
-
static clipPositionColumn(position, model) {
|
|
79
|
-
return new Position(position.lineNumber, MoveOperations.clipRange(position.column, model.getLineMinColumn(position.lineNumber), model.getLineMaxColumn(position.lineNumber)));
|
|
80
|
-
}
|
|
81
|
-
static clipRange(value, min, max) {
|
|
82
|
-
if (value < min) {
|
|
83
|
-
return min;
|
|
84
|
-
}
|
|
85
|
-
if (value > max) {
|
|
86
|
-
return max;
|
|
87
|
-
}
|
|
88
|
-
return value;
|
|
89
|
-
}
|
|
90
|
-
static rightPosition(model, lineNumber, column) {
|
|
91
|
-
if (column < model.getLineMaxColumn(lineNumber)) {
|
|
92
|
-
column = column + nextCharLength(model.getLineContent(lineNumber), column - 1);
|
|
93
|
-
}
|
|
94
|
-
else if (lineNumber < model.getLineCount()) {
|
|
95
|
-
lineNumber = lineNumber + 1;
|
|
96
|
-
column = model.getLineMinColumn(lineNumber);
|
|
97
|
-
}
|
|
98
|
-
return new Position(lineNumber, column);
|
|
99
|
-
}
|
|
100
|
-
static rightPositionAtomicSoftTabs(model, lineNumber, column, tabSize, indentSize) {
|
|
101
|
-
if (column < model.getLineIndentColumn(lineNumber)) {
|
|
102
|
-
const lineContent = model.getLineContent(lineNumber);
|
|
103
|
-
const newPosition = AtomicTabMoveOperations.atomicPosition(lineContent, column - 1, tabSize, 1 /* Direction.Right */);
|
|
104
|
-
if (newPosition !== -1) {
|
|
105
|
-
return new Position(lineNumber, newPosition + 1);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return this.rightPosition(model, lineNumber, column);
|
|
109
|
-
}
|
|
110
|
-
static right(config, model, position) {
|
|
111
|
-
const pos = config.stickyTabStops
|
|
112
|
-
? MoveOperations.rightPositionAtomicSoftTabs(model, position.lineNumber, position.column, config.tabSize, config.indentSize)
|
|
113
|
-
: MoveOperations.rightPosition(model, position.lineNumber, position.column);
|
|
114
|
-
return new CursorPosition(pos.lineNumber, pos.column, 0);
|
|
115
|
-
}
|
|
116
|
-
static moveRight(config, model, cursor, inSelectionMode, noOfColumns) {
|
|
117
|
-
let lineNumber, column;
|
|
118
|
-
if (cursor.hasSelection() && !inSelectionMode) {
|
|
119
|
-
// If we are in selection mode, move right without selection cancels selection and puts cursor at the end of the selection
|
|
120
|
-
lineNumber = cursor.selection.endLineNumber;
|
|
121
|
-
column = cursor.selection.endColumn;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
const pos = cursor.position.delta(undefined, noOfColumns - 1);
|
|
125
|
-
const normalizedPos = model.normalizePosition(MoveOperations.clipPositionColumn(pos, model), 1 /* PositionAffinity.Right */);
|
|
126
|
-
const r = MoveOperations.right(config, model, normalizedPos);
|
|
127
|
-
lineNumber = r.lineNumber;
|
|
128
|
-
column = r.column;
|
|
129
|
-
}
|
|
130
|
-
return cursor.move(inSelectionMode, lineNumber, column, 0);
|
|
131
|
-
}
|
|
132
|
-
static vertical(config, model, lineNumber, column, leftoverVisibleColumns, newLineNumber, allowMoveOnEdgeLine, normalizationAffinity) {
|
|
133
|
-
const currentVisibleColumn = CursorColumns.visibleColumnFromColumn(model.getLineContent(lineNumber), column, config.tabSize) + leftoverVisibleColumns;
|
|
134
|
-
const lineCount = model.getLineCount();
|
|
135
|
-
const wasOnFirstPosition = (lineNumber === 1 && column === 1);
|
|
136
|
-
const wasOnLastPosition = (lineNumber === lineCount && column === model.getLineMaxColumn(lineNumber));
|
|
137
|
-
const wasAtEdgePosition = (newLineNumber < lineNumber ? wasOnFirstPosition : wasOnLastPosition);
|
|
138
|
-
lineNumber = newLineNumber;
|
|
139
|
-
if (lineNumber < 1) {
|
|
140
|
-
lineNumber = 1;
|
|
141
|
-
if (allowMoveOnEdgeLine) {
|
|
142
|
-
column = model.getLineMinColumn(lineNumber);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
column = Math.min(model.getLineMaxColumn(lineNumber), column);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
else if (lineNumber > lineCount) {
|
|
149
|
-
lineNumber = lineCount;
|
|
150
|
-
if (allowMoveOnEdgeLine) {
|
|
151
|
-
column = model.getLineMaxColumn(lineNumber);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
column = Math.min(model.getLineMaxColumn(lineNumber), column);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
column = config.columnFromVisibleColumn(model, lineNumber, currentVisibleColumn);
|
|
159
|
-
}
|
|
160
|
-
if (wasAtEdgePosition) {
|
|
161
|
-
leftoverVisibleColumns = 0;
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
leftoverVisibleColumns = currentVisibleColumn - CursorColumns.visibleColumnFromColumn(model.getLineContent(lineNumber), column, config.tabSize);
|
|
165
|
-
}
|
|
166
|
-
if (normalizationAffinity !== undefined) {
|
|
167
|
-
const position = new Position(lineNumber, column);
|
|
168
|
-
const newPosition = model.normalizePosition(position, normalizationAffinity);
|
|
169
|
-
leftoverVisibleColumns = leftoverVisibleColumns + (column - newPosition.column);
|
|
170
|
-
lineNumber = newPosition.lineNumber;
|
|
171
|
-
column = newPosition.column;
|
|
172
|
-
}
|
|
173
|
-
return new CursorPosition(lineNumber, column, leftoverVisibleColumns);
|
|
174
|
-
}
|
|
175
|
-
static down(config, model, lineNumber, column, leftoverVisibleColumns, count, allowMoveOnLastLine) {
|
|
176
|
-
return this.vertical(config, model, lineNumber, column, leftoverVisibleColumns, lineNumber + count, allowMoveOnLastLine, 4 /* PositionAffinity.RightOfInjectedText */);
|
|
177
|
-
}
|
|
178
|
-
static moveDown(config, model, cursor, inSelectionMode, linesCount) {
|
|
179
|
-
let lineNumber, column;
|
|
180
|
-
if (cursor.hasSelection() && !inSelectionMode) {
|
|
181
|
-
// If we are in selection mode, move down acts relative to the end of selection
|
|
182
|
-
lineNumber = cursor.selection.endLineNumber;
|
|
183
|
-
column = cursor.selection.endColumn;
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
lineNumber = cursor.position.lineNumber;
|
|
187
|
-
column = cursor.position.column;
|
|
188
|
-
}
|
|
189
|
-
let i = 0;
|
|
190
|
-
let r;
|
|
191
|
-
do {
|
|
192
|
-
r = MoveOperations.down(config, model, lineNumber + i, column, cursor.leftoverVisibleColumns, linesCount, true);
|
|
193
|
-
const np = model.normalizePosition(new Position(r.lineNumber, r.column), 2 /* PositionAffinity.None */);
|
|
194
|
-
if (np.lineNumber > lineNumber) {
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
} while (i++ < 10 && lineNumber + i < model.getLineCount());
|
|
198
|
-
return cursor.move(inSelectionMode, r.lineNumber, r.column, r.leftoverVisibleColumns);
|
|
199
|
-
}
|
|
200
|
-
static translateDown(config, model, cursor) {
|
|
201
|
-
const selection = cursor.selection;
|
|
202
|
-
const selectionStart = MoveOperations.down(config, model, selection.selectionStartLineNumber, selection.selectionStartColumn, cursor.selectionStartLeftoverVisibleColumns, 1, false);
|
|
203
|
-
const position = MoveOperations.down(config, model, selection.positionLineNumber, selection.positionColumn, cursor.leftoverVisibleColumns, 1, false);
|
|
204
|
-
return new SingleCursorState(new Range(selectionStart.lineNumber, selectionStart.column, selectionStart.lineNumber, selectionStart.column), 0 /* SelectionStartKind.Simple */, selectionStart.leftoverVisibleColumns, new Position(position.lineNumber, position.column), position.leftoverVisibleColumns);
|
|
205
|
-
}
|
|
206
|
-
static up(config, model, lineNumber, column, leftoverVisibleColumns, count, allowMoveOnFirstLine) {
|
|
207
|
-
return this.vertical(config, model, lineNumber, column, leftoverVisibleColumns, lineNumber - count, allowMoveOnFirstLine, 3 /* PositionAffinity.LeftOfInjectedText */);
|
|
208
|
-
}
|
|
209
|
-
static moveUp(config, model, cursor, inSelectionMode, linesCount) {
|
|
210
|
-
let lineNumber, column;
|
|
211
|
-
if (cursor.hasSelection() && !inSelectionMode) {
|
|
212
|
-
// If we are in selection mode, move up acts relative to the beginning of selection
|
|
213
|
-
lineNumber = cursor.selection.startLineNumber;
|
|
214
|
-
column = cursor.selection.startColumn;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
lineNumber = cursor.position.lineNumber;
|
|
218
|
-
column = cursor.position.column;
|
|
219
|
-
}
|
|
220
|
-
const r = MoveOperations.up(config, model, lineNumber, column, cursor.leftoverVisibleColumns, linesCount, true);
|
|
221
|
-
return cursor.move(inSelectionMode, r.lineNumber, r.column, r.leftoverVisibleColumns);
|
|
222
|
-
}
|
|
223
|
-
static translateUp(config, model, cursor) {
|
|
224
|
-
const selection = cursor.selection;
|
|
225
|
-
const selectionStart = MoveOperations.up(config, model, selection.selectionStartLineNumber, selection.selectionStartColumn, cursor.selectionStartLeftoverVisibleColumns, 1, false);
|
|
226
|
-
const position = MoveOperations.up(config, model, selection.positionLineNumber, selection.positionColumn, cursor.leftoverVisibleColumns, 1, false);
|
|
227
|
-
return new SingleCursorState(new Range(selectionStart.lineNumber, selectionStart.column, selectionStart.lineNumber, selectionStart.column), 0 /* SelectionStartKind.Simple */, selectionStart.leftoverVisibleColumns, new Position(position.lineNumber, position.column), position.leftoverVisibleColumns);
|
|
228
|
-
}
|
|
229
|
-
static _isBlankLine(model, lineNumber) {
|
|
230
|
-
if (model.getLineFirstNonWhitespaceColumn(lineNumber) === 0) {
|
|
231
|
-
// empty or contains only whitespace
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
return false;
|
|
235
|
-
}
|
|
236
|
-
static moveToPrevBlankLine(config, model, cursor, inSelectionMode) {
|
|
237
|
-
let lineNumber = cursor.position.lineNumber;
|
|
238
|
-
// If our current line is blank, move to the previous non-blank line
|
|
239
|
-
while (lineNumber > 1 && this._isBlankLine(model, lineNumber)) {
|
|
240
|
-
lineNumber--;
|
|
241
|
-
}
|
|
242
|
-
// Find the previous blank line
|
|
243
|
-
while (lineNumber > 1 && !this._isBlankLine(model, lineNumber)) {
|
|
244
|
-
lineNumber--;
|
|
245
|
-
}
|
|
246
|
-
return cursor.move(inSelectionMode, lineNumber, model.getLineMinColumn(lineNumber), 0);
|
|
247
|
-
}
|
|
248
|
-
static moveToNextBlankLine(config, model, cursor, inSelectionMode) {
|
|
249
|
-
const lineCount = model.getLineCount();
|
|
250
|
-
let lineNumber = cursor.position.lineNumber;
|
|
251
|
-
// If our current line is blank, move to the next non-blank line
|
|
252
|
-
while (lineNumber < lineCount && this._isBlankLine(model, lineNumber)) {
|
|
253
|
-
lineNumber++;
|
|
254
|
-
}
|
|
255
|
-
// Find the next blank line
|
|
256
|
-
while (lineNumber < lineCount && !this._isBlankLine(model, lineNumber)) {
|
|
257
|
-
lineNumber++;
|
|
258
|
-
}
|
|
259
|
-
return cursor.move(inSelectionMode, lineNumber, model.getLineMinColumn(lineNumber), 0);
|
|
260
|
-
}
|
|
261
|
-
static moveToBeginningOfLine(config, model, cursor, inSelectionMode) {
|
|
262
|
-
const lineNumber = cursor.position.lineNumber;
|
|
263
|
-
const minColumn = model.getLineMinColumn(lineNumber);
|
|
264
|
-
const firstNonBlankColumn = model.getLineFirstNonWhitespaceColumn(lineNumber) || minColumn;
|
|
265
|
-
let column;
|
|
266
|
-
const relevantColumnNumber = cursor.position.column;
|
|
267
|
-
if (relevantColumnNumber === firstNonBlankColumn) {
|
|
268
|
-
column = minColumn;
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
column = firstNonBlankColumn;
|
|
272
|
-
}
|
|
273
|
-
return cursor.move(inSelectionMode, lineNumber, column, 0);
|
|
274
|
-
}
|
|
275
|
-
static moveToEndOfLine(config, model, cursor, inSelectionMode, sticky) {
|
|
276
|
-
const lineNumber = cursor.position.lineNumber;
|
|
277
|
-
const maxColumn = model.getLineMaxColumn(lineNumber);
|
|
278
|
-
return cursor.move(inSelectionMode, lineNumber, maxColumn, sticky ? 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */ - maxColumn : 0);
|
|
279
|
-
}
|
|
280
|
-
static moveToBeginningOfBuffer(config, model, cursor, inSelectionMode) {
|
|
281
|
-
return cursor.move(inSelectionMode, 1, 1, 0);
|
|
282
|
-
}
|
|
283
|
-
static moveToEndOfBuffer(config, model, cursor, inSelectionMode) {
|
|
284
|
-
const lastLineNumber = model.getLineCount();
|
|
285
|
-
const lastColumn = model.getLineMaxColumn(lastLineNumber);
|
|
286
|
-
return cursor.move(inSelectionMode, lastLineNumber, lastColumn, 0);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
export { CursorPosition, MoveOperations };
|