mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-15 08:18:55 +00:00
Merge pull request #1674 from Darkgaja/renaming-service-extension
Allow for custom modifications in rename service
This commit is contained in:
commit
b34bbe849a
1 changed files with 30 additions and 15 deletions
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (c) 2019, 2020 TypeFox GmbH (http://www.typefox.io) and others.
|
||||
* Copyright (c) 2019, 2021 TypeFox GmbH (http://www.typefox.io) and others.
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0.
|
||||
|
@ -125,20 +125,7 @@ public class RenameService2 implements IRenameService2 {
|
|||
issueAcceptor.add(RefactoringIssueAcceptor.Severity.FATAL,
|
||||
"No element found at " + toPositionFragment(position, uri));
|
||||
} else {
|
||||
IResourceServiceProvider services = serviceProviderRegistry
|
||||
.getResourceServiceProvider(element.eResource().getURI());
|
||||
IChangeSerializer changeSerializer = services.get(IChangeSerializer.class);
|
||||
RenameChange change = new RenameChange(options.getRenameParams().getNewName(),
|
||||
EcoreUtil.getURI(element));
|
||||
RenameContext renameContext = new RenameContext(Lists.newArrayList(change), resourceSet,
|
||||
changeSerializer, issueAcceptor);
|
||||
IRenameStrategy2 renameStrategy = services.<IRenameStrategy2>get(IRenameStrategy2.class);
|
||||
renameStrategy.applyRename(renameContext);
|
||||
ChangeConverter2.Factory converterFactory = services.<ChangeConverter2.Factory>get(
|
||||
ChangeConverter2.Factory.class);
|
||||
ChangeConverter2 changeConverter = converterFactory.create(workspaceEdit,
|
||||
options.getLanguageServerAccess());
|
||||
changeSerializer.applyModifications(changeConverter);
|
||||
applyModifications(element, workspaceEdit, issueAcceptor, options, context);
|
||||
}
|
||||
} else {
|
||||
issueAcceptor.add(RefactoringIssueAcceptor.Severity.FATAL,
|
||||
|
@ -163,6 +150,34 @@ public class RenameService2 implements IRenameService2 {
|
|||
throw Exceptions.sneakyThrow(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Performs the actual renaming. Runs within a read transaction on the index and a live-scoped resource set.
|
||||
* </p>
|
||||
* <p>
|
||||
* Override this method to implement custom renaming behavior.
|
||||
* </p>
|
||||
*
|
||||
* @since 2.25
|
||||
*/
|
||||
protected void applyModifications(EObject element, WorkspaceEdit workspaceEdit,
|
||||
ServerRefactoringIssueAcceptor issueAcceptor, IRenameService2.Options options,
|
||||
ILanguageServerAccess.Context context) {
|
||||
IResourceServiceProvider services = serviceProviderRegistry
|
||||
.getResourceServiceProvider(element.eResource().getURI());
|
||||
IChangeSerializer changeSerializer = services.get(IChangeSerializer.class);
|
||||
RenameChange change = new RenameChange(options.getRenameParams().getNewName(), EcoreUtil.getURI(element));
|
||||
ResourceSet resourceSet = element.eResource().getResourceSet();
|
||||
RenameContext renameContext = new RenameContext(Lists.newArrayList(change), resourceSet, changeSerializer,
|
||||
issueAcceptor);
|
||||
IRenameStrategy2 renameStrategy = services.<IRenameStrategy2>get(IRenameStrategy2.class);
|
||||
renameStrategy.applyRename(renameContext);
|
||||
ChangeConverter2.Factory converterFactory = services.<ChangeConverter2.Factory>get(
|
||||
ChangeConverter2.Factory.class);
|
||||
ChangeConverter2 changeConverter = converterFactory.create(workspaceEdit, options.getLanguageServerAccess());
|
||||
changeSerializer.applyModifications(changeConverter);
|
||||
}
|
||||
|
||||
protected EObject getElementAtOffset(XtextResource xtextResource, Document document, Position caretPosition) {
|
||||
int caretOffset = document.getOffSet(caretPosition);
|
||||
|
|
Loading…
Reference in a new issue