Skip to content

Commit

Permalink
refine SelectionRangeKind #63935
Browse files Browse the repository at this point in the history
  • Loading branch information
jrieken committed Dec 18, 2018
1 parent 4dd31e9 commit 27fd58c
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 20 deletions.
12 changes: 6 additions & 6 deletions src/vs/editor/contrib/smartSelect/bracketSelections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ export class BracketSelectionRangeProvider implements SelectionRangeProvider {
}
const innerBracket = Range.fromPositions(bracket.range.getEndPosition(), closing!.getStartPosition());
const outerBracket = Range.fromPositions(bracket.range.getStartPosition(), closing!.getEndPosition());
bucket.push({ range: innerBracket, kind: 'block.bracket' });
bucket.push({ range: outerBracket, kind: 'block.bracket' });
bucket.push({ range: innerBracket, kind: 'statement.brackets' });
bucket.push({ range: outerBracket, kind: 'statement.brackets.full' });
BracketSelectionRangeProvider._addBracketLeading(model, outerBracket, bucket);
}
}
Expand All @@ -128,8 +128,8 @@ export class BracketSelectionRangeProvider implements SelectionRangeProvider {
const startLine = bracket.startLineNumber;
const column = model.getLineFirstNonWhitespaceColumn(startLine);
if (column !== 0 && column !== bracket.startColumn) {
bucket.push({ range: Range.fromPositions(new Position(startLine, column), bracket.getEndPosition()), kind: 'block.bracket.leading' });
bucket.push({ range: Range.fromPositions(new Position(startLine, 1), bracket.getEndPosition()), kind: 'block.bracket.leading' });
bucket.push({ range: Range.fromPositions(new Position(startLine, column), bracket.getEndPosition()), kind: 'statement.brackets.leading' });
bucket.push({ range: Range.fromPositions(new Position(startLine, 1), bracket.getEndPosition()), kind: 'statement.brackets.leading.full' });
}

// xxxxxxxx
Expand All @@ -140,8 +140,8 @@ export class BracketSelectionRangeProvider implements SelectionRangeProvider {
if (aboveLine > 0) {
const column = model.getLineFirstNonWhitespaceColumn(aboveLine);
if (column === bracket.startColumn && column !== model.getLineLastNonWhitespaceColumn(aboveLine)) {
bucket.push({ range: Range.fromPositions(new Position(aboveLine, column), bracket.getEndPosition()), kind: 'block.bracket.leading' });
bucket.push({ range: Range.fromPositions(new Position(aboveLine, 1), bracket.getEndPosition()), kind: 'block.bracket.leading' });
bucket.push({ range: Range.fromPositions(new Position(aboveLine, column), bracket.getEndPosition()), kind: 'statement.brackets.leading' });
bucket.push({ range: Range.fromPositions(new Position(aboveLine, 1), bracket.getEndPosition()), kind: 'statement.brackets.leading.full' });
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/vs/editor/contrib/smartSelect/wordSelections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export class WordSelectionRangeProvider implements SelectionRangeProvider {
private _addWordRanges(bucket: SelectionRange[], model: ITextModel, pos: Position): void {
const word = model.getWordAtPosition(pos);
if (word) {
bucket.push({ range: new Range(pos.lineNumber, word.startColumn, pos.lineNumber, word.endColumn), kind: 'simple.word' });
bucket.push({ range: new Range(pos.lineNumber, word.startColumn, pos.lineNumber, word.endColumn), kind: 'statement.word' });
}
}

Expand Down Expand Up @@ -98,15 +98,15 @@ export class WordSelectionRangeProvider implements SelectionRangeProvider {

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: 'simple.string' });
bucket.push({ range: Range.fromPositions(left, right), kind: 'simple.string' });
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: 'simple.comment' });
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: 'simple.line' });
bucket.push({ range: new Range(pos.lineNumber, model.getLineMinColumn(pos.lineNumber), pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)), kind: 'simple.line' });
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' });
}
}
16 changes: 14 additions & 2 deletions src/vs/vscode.proposed.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,22 @@ declare module 'vscode' {

export class SelectionRangeKind {

/**
* Empty Kind.
*/
static readonly Empty: SelectionRangeKind;

/**
* The statment kind, its value is `statement`, possible extensions can be
* `statement.if` etc
*/
static readonly Statement: SelectionRangeKind;
static readonly Expression: SelectionRangeKind;
static readonly Block: SelectionRangeKind;

/**
* The declaration kind, its value is `declaration`, possible extensions can be
* `declaration.function`, `declaration.class` etc.
*/
static readonly Declaration: SelectionRangeKind;

readonly value: string;

Expand Down
3 changes: 1 addition & 2 deletions src/vs/workbench/api/node/extHostTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1042,8 +1042,7 @@ export class SelectionRangeKind {

static readonly Empty = new SelectionRangeKind('');
static readonly Statement = SelectionRangeKind.Empty.append('statement');
static readonly Expression = SelectionRangeKind.Empty.append('expression');
static readonly Block = SelectionRangeKind.Empty.append('block');
static readonly Declaration = SelectionRangeKind.Empty.append('declaration');

readonly value: string;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -773,8 +773,8 @@ suite('ExtHostLanguageFeatureCommands', function () {
disposables.push(extHost.registerSelectionRangeProvider(nullExtensionDescription, defaultSelector, <vscode.SelectionRangeProvider>{
provideSelectionRanges() {
return [
new types.SelectionRange(types.SelectionRangeKind.Block, new types.Range(0, 10, 0, 18)),
new types.SelectionRange(types.SelectionRangeKind.Block, new types.Range(0, 2, 0, 20))
new types.SelectionRange(types.SelectionRangeKind.Empty, new types.Range(0, 10, 0, 18)),
new types.SelectionRange(types.SelectionRangeKind.Empty, new types.Range(0, 2, 0, 20))
];
}
}));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1230,8 +1230,8 @@ suite('ExtHostLanguageFeatures', function () {
disposables.push(extHost.registerSelectionRangeProvider(defaultExtension, defaultSelector, <vscode.SelectionRangeProvider>{
provideSelectionRanges() {
return [
new types.SelectionRange(types.SelectionRangeKind.Block, new types.Range(0, 10, 0, 18)),
new types.SelectionRange(types.SelectionRangeKind.Block, new types.Range(0, 2, 0, 20))
new types.SelectionRange(types.SelectionRangeKind.Empty, new types.Range(0, 10, 0, 18)),
new types.SelectionRange(types.SelectionRangeKind.Empty, new types.Range(0, 2, 0, 20))
];
}
}));
Expand Down

0 comments on commit 27fd58c

Please sign in to comment.