Skip to content

Commit

Permalink
remove token based string, comment ranges #64004
Browse files Browse the repository at this point in the history
  • Loading branch information
jrieken committed Dec 18, 2018
1 parent c5f6a74 commit b4ab23c
Showing 1 changed file with 1 addition and 82 deletions.
83 changes: 1 addition & 82 deletions src/vs/editor/contrib/smartSelect/wordSelections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import { SelectionRangeProvider, StandardTokenType, SelectionRange } from 'vs/editor/common/modes';
import { SelectionRangeProvider, SelectionRange } from 'vs/editor/common/modes';
import { ITextModel } from 'vs/editor/common/model';
import { Position } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
Expand All @@ -13,7 +13,6 @@ export class WordSelectionRangeProvider implements SelectionRangeProvider {
provideSelectionRanges(model: ITextModel, position: Position): SelectionRange[] {
let result: SelectionRange[] = [];
this._addWordRanges(result, model, position);
this._addTokenRange(result, model, position);
this._addLineRanges(result, model, position);
return result;
}
Expand All @@ -25,86 +24,6 @@ export class WordSelectionRangeProvider implements SelectionRangeProvider {
}
}

private _addTokenRange(bucket: SelectionRange[], model: ITextModel, pos: Position): void {
const tokens = model.getLineTokens(pos.lineNumber);
const index = tokens.findTokenIndexAtOffset(pos.column - 1);
const type = tokens.getStandardTokenType(index);
if (type === StandardTokenType.Other) {
return;
}

// grow left
let left: Position | undefined;
{
let leftIndex = index;
let leftTokens = tokens;
let leftLine = pos.lineNumber;
while (!left) {
let newLeftIndex = leftIndex - 1;
if (newLeftIndex < 0) {
if (leftLine > 1) {
leftLine -= 1;
leftTokens = model.getLineTokens(leftLine);
leftIndex = leftTokens.getCount();
} else {
left = new Position(1, 1);
}
} else {
if (leftTokens.getStandardTokenType(newLeftIndex) === type) {
leftIndex = newLeftIndex;
} else {
if (newLeftIndex === leftTokens.getCount() - 1) {
// we got here but there was nothing
left = new Position(leftLine + 1, 1);

} else {
left = new Position(leftLine, leftTokens.getStartOffset(leftIndex) + 1);
}
}
}
}
}

// grow right
let right: Position | undefined;
{
let rightIndex = index;
let rightTokens = tokens;
let rightLine = pos.lineNumber;
while (!right) {
let newRightIndex = rightIndex + 1;
if (newRightIndex >= rightTokens.getCount()) {
if (rightLine < model.getLineCount()) {
rightLine += 1;
rightTokens = model.getLineTokens(rightLine);
rightIndex = -1;
} else {
right = new Position(model.getLineCount(), model.getLineMaxColumn(model.getLineCount()));
}
} else {
if (rightTokens.getStandardTokenType(newRightIndex) === type) {
rightIndex = newRightIndex;
} else {
if (newRightIndex === 0) {
// we got here but there was nothing
right = new Position(rightLine - 1, model.getLineMaxColumn(rightLine - 1));
} else {
right = new Position(rightLine, rightTokens.getEndOffset(rightIndex) + 1);
}
}
}
}
}

if (type === StandardTokenType.String) {
// just assume that quotation marks are length=1
bucket.push({ range: Range.fromPositions(left.delta(0, 1), right.delta(0, -1)), kind: 'statement.string' });
bucket.push({ range: Range.fromPositions(left, right), kind: 'statement.string.full' });
} else {
bucket.push({ range: Range.fromPositions(left, right), kind: 'statement.comment' });
}
}

private _addLineRanges(bucket: SelectionRange[], model: ITextModel, pos: Position): void {
bucket.push({ range: new Range(pos.lineNumber, model.getLineFirstNonWhitespaceColumn(pos.lineNumber), pos.lineNumber, model.getLineLastNonWhitespaceColumn(pos.lineNumber)), kind: 'statement.line' });
bucket.push({ range: new Range(pos.lineNumber, model.getLineMinColumn(pos.lineNumber), pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)), kind: 'statement.line.full' });
Expand Down

0 comments on commit b4ab23c

Please sign in to comment.