aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/languageclient/languageclientutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/languageclient/languageclientutils.cpp')
-rw-r--r--src/plugins/languageclient/languageclientutils.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/languageclient/languageclientutils.cpp b/src/plugins/languageclient/languageclientutils.cpp
index f0a2db61ff..de07c29a6e 100644
--- a/src/plugins/languageclient/languageclientutils.cpp
+++ b/src/plugins/languageclient/languageclientutils.cpp
@@ -88,17 +88,22 @@ bool applyTextDocumentEdit(const Client *client, const TextDocumentEdit &edit)
LanguageClientValue<int> version = edit.textDocument().version();
if (!version.isNull() && version.value(0) < client->documentVersion(filePath))
return false;
- return applyTextEdits(uri, edits);
+ return applyTextEdits(client, uri, edits);
}
-bool applyTextEdits(const DocumentUri &uri, const QList<TextEdit> &edits)
+bool applyTextEdits(const Client *client, const DocumentUri &uri, const QList<TextEdit> &edits)
{
if (edits.isEmpty())
return true;
- RefactoringChanges changes;
+ RefactoringChangesData * const backend = client->createRefactoringChangesBackend();
+ RefactoringChanges changes(backend);
RefactoringFilePtr file;
file = changes.file(uri.toFilePath());
file->setChangeSet(editsToChangeSet(edits, file->document()));
+ if (backend) {
+ for (const TextEdit &edit : edits)
+ file->appendIndentRange(convertRange(file->document(), edit.range()));
+ }
return file->apply();
}
@@ -130,7 +135,7 @@ bool applyWorkspaceEdit(const Client *client, const WorkspaceEdit &edit)
} else {
const WorkspaceEdit::Changes &changes = edit.changes().value_or(WorkspaceEdit::Changes());
for (auto it = changes.cbegin(); it != changes.cend(); ++it)
- result |= applyTextEdits(it.key(), it.value());
+ result |= applyTextEdits(client, it.key(), it.value());
return result;
}
return result;