align names, add RenameContext-type #7340

This commit is contained in:
Johannes Rieken
2018-03-13 11:59:17 +01:00
parent dfc0aa1b95
commit e9d92ca9a7
9 changed files with 50 additions and 37 deletions

View File

@@ -468,20 +468,16 @@ class NavigateTypeAdapter {
}
}
interface RenameProvider2 extends vscode.RenameProvider {
resolveInitialRenameValue?(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.ProviderResult<vscode.RenameInitialValue>;
}
class RenameAdapter {
static supportsResolving(provider: RenameProvider2): boolean {
return typeof provider.resolveInitialRenameValue === 'function';
static supportsResolving(provider: vscode.RenameProvider2): boolean {
return typeof provider.resolveRenameContext === 'function';
}
private _documents: ExtHostDocuments;
private _provider: RenameProvider2;
private _provider: vscode.RenameProvider2;
constructor(documents: ExtHostDocuments, provider: RenameProvider2) {
constructor(documents: ExtHostDocuments, provider: vscode.RenameProvider2) {
this._documents = documents;
this._provider = provider;
}
@@ -514,25 +510,25 @@ class RenameAdapter {
});
}
resolveInitialRenameValue(resource: URI, position: IPosition): TPromise<modes.RenameInformation> {
if (typeof this._provider.resolveInitialRenameValue !== 'function') {
resolveRenameContext(resource: URI, position: IPosition): TPromise<modes.RenameContext> {
if (typeof this._provider.resolveRenameContext !== 'function') {
return TPromise.as(undefined);
}
let doc = this._documents.getDocumentData(resource).document;
let pos = TypeConverters.toPosition(position);
return asWinJsPromise(token => this._provider.resolveInitialRenameValue(doc, pos, token)).then(value => {
if (!value) {
return asWinJsPromise(token => this._provider.resolveRenameContext(doc, pos, token)).then(context => {
if (!context) {
return undefined;
}
if (!value.range.contains(pos)) {
if (!context.range.contains(pos)) {
console.warn('INVALID rename information, must contain the request-position');
return undefined;
}
return <modes.RenameInformation>{
range: TypeConverters.fromRange(value.range),
text: value.text || doc.getText(value.range)
return <modes.RenameContext>{
range: TypeConverters.fromRange(context.range),
text: context.newName || doc.getText(context.range)
};
});
}
@@ -1068,8 +1064,8 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape {
return this._withAdapter(handle, RenameAdapter, adapter => adapter.provideRenameEdits(URI.revive(resource), position, newName));
}
$resolveInitialRenameValue(handle: number, resource: URI, position: IPosition): TPromise<modes.RenameInformation> {
return this._withAdapter(handle, RenameAdapter, adapter => adapter.resolveInitialRenameValue(resource, position));
$resolveRenameContext(handle: number, resource: URI, position: IPosition): TPromise<modes.RenameContext> {
return this._withAdapter(handle, RenameAdapter, adapter => adapter.resolveRenameContext(resource, position));
}
// --- suggestion