diff --git a/src/vs/editor/contrib/smartSelect/bracketSelections.ts b/src/vs/editor/contrib/smartSelect/bracketSelections.ts index 66f31783c1f8465f3ff93e698685bbc46e2d9ebc..909f0ca5d6603777ed2b75967d3c8111b592115d 100644 --- a/src/vs/editor/contrib/smartSelect/bracketSelections.ts +++ b/src/vs/editor/contrib/smartSelect/bracketSelections.ts @@ -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); } } @@ -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 @@ -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' }); } } } diff --git a/src/vs/editor/contrib/smartSelect/wordSelections.ts b/src/vs/editor/contrib/smartSelect/wordSelections.ts index 378a5ed179aa78d928b595a844ab073aaf193503..d538496f617adf200fd5f38aeeb31d56325c7cc8 100644 --- a/src/vs/editor/contrib/smartSelect/wordSelections.ts +++ b/src/vs/editor/contrib/smartSelect/wordSelections.ts @@ -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' }); } } @@ -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' }); } } diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 17c37f627202b86642c8366326a686c35f833e2f..79243d0bc2a084f9689812f0a5ba08600559a2b4 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -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; diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index a90aabedb367f5c212f577b97516bb299e7f4f9d..df05ef60d0db2a9a447c191264610d8a28143bc4 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -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; diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index f46faac2ee9e19da297d309531816c882fb51dd9..7418365203917d8907ac22b05dfa24606a4afc72 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -773,8 +773,8 @@ suite('ExtHostLanguageFeatureCommands', function () { disposables.push(extHost.registerSelectionRangeProvider(nullExtensionDescription, defaultSelector, { 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)) ]; } })); diff --git a/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts b/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts index 966bc39e7455ce92a71ff2f1c42c0672a75f3dcb..daad32a2850e0105e97a54f683a1d4569ef03e5b 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts @@ -1230,8 +1230,8 @@ suite('ExtHostLanguageFeatures', function () { disposables.push(extHost.registerSelectionRangeProvider(defaultExtension, defaultSelector, { 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)) ]; } }));