31 QLspSpecification::WorkspaceEdit result;
32 ResponseScopeGuard guard(result, request->m_response);
34 auto itemsFound = itemsForRequest(request);
35 if (!itemsFound.has_value()) {
36 guard.setError(itemsFound.error());
42 const QString newName = QString::fromUtf8(request->m_parameters.newName);
46 if (!expressionType) {
47 guard.setError(QQmlLSUtils::ErrorMessage{ 0, u"Cannot rename the requested object"_s });
51 if (
const auto renameCheckError =
52 QQmlLSUtils::checkNameForRename(front.domItem, newName, expressionType)) {
53 guard.setError(renameCheckError.value());
57 auto &editsByFileForResult = result.documentChanges.emplace();
61 QMap<QUrl, QList<QLspSpecification::TextEdit>> editsByFileUris;
63 const auto renames = QQmlLSUtils::renameUsagesOf(front.domItem, newName, expressionType);
64 for (
const auto &rename : renames.renameInFile()) {
65 QLspSpecification::TextEdit edit;
67 const QUrl uri = QUrl::fromLocalFile(rename.location.filename());
68 edit.range = QQmlLSUtils::qmlLocationToLspLocation(rename.location);
69 edit.newText = rename.replacement.toUtf8();
71 editsByFileUris[uri].append(edit);
74 for (
auto it = editsByFileUris.keyValueBegin(); it != editsByFileUris.keyValueEnd(); ++it) {
75 QLspSpecification::TextDocumentEdit editsForCurrentFile;
76 editsForCurrentFile.textDocument.uri = it->first.toEncoded();
83 for (
const auto &x : std::as_const(it->second)) {
84 editsForCurrentFile.edits.append(x);
86 editsByFileForResult.append(editsForCurrentFile);
90 for (
const auto &rename : renames.renameInFilename()) {
91 QLspSpecification::RenameFile currentRenameFile;
92 currentRenameFile.oldUri = QUrl::fromLocalFile(rename.oldFilename).toEncoded();
93 currentRenameFile.newUri = QUrl::fromLocalFile(rename.newFilename).toEncoded();
94 editsByFileForResult.append(currentRenameFile);