allow to provide regexp when asking for word ranges, #15724

This commit is contained in:
Johannes Rieken
2016-11-18 14:01:55 +01:00
parent 430cbc463f
commit 00a663b3ef
3 changed files with 45 additions and 7 deletions

View File

@@ -5,6 +5,7 @@
'use strict';
import { onUnexpectedError } from 'vs/base/common/errors';
import { regExpLeadsToEndlessLoop } from 'vs/base/common/strings';
import * as editorCommon from 'vs/editor/common/editorCommon';
import { MirrorModel2 } from 'vs/editor/common/model/mirrorModel2';
import { IThreadService } from 'vs/workbench/services/thread/common/threadService';
@@ -262,7 +263,7 @@ export class ExtHostDocumentData extends MirrorModel2 {
positionAt(offset) { return data.positionAt(offset); },
validateRange(ran) { return data.validateRange(ran); },
validatePosition(pos) { return data.validatePosition(pos); },
getWordRangeAtPosition(pos) { return data.getWordRangeAtPosition(pos); }
getWordRangeAtPosition(pos, regexp?) { return data.getWordRangeAtPosition(pos, regexp); }
};
}
return this._document;
@@ -410,12 +411,14 @@ export class ExtHostDocumentData extends MirrorModel2 {
return new Position(line, character);
}
getWordRangeAtPosition(_position: vscode.Position): vscode.Range {
getWordRangeAtPosition(_position: vscode.Position, regexp?: RegExp): vscode.Range {
let position = this.validatePosition(_position);
if (!regexp || regExpLeadsToEndlessLoop(regexp)) {
regexp = getWordDefinitionFor(this._languageId);
}
let wordAtText = getWordAtText(
position.character + 1,
ensureValidWordDefinition(getWordDefinitionFor(this._languageId)),
ensureValidWordDefinition(regexp),
this._lines[position.line],
0
);