forked from qt-creator/qt-creator
LanguageClient: Inform user of failed prepareRename request
Also instantiate the search result window if we get an error and use it to display errors. Change-Id: I49dcdcc5ad2ace64391f8d2d849995b046032957 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -284,20 +284,22 @@ bool SymbolSupport::supportsRename(TextEditor::TextDocument *document)
|
||||
|
||||
void SymbolSupport::renameSymbol(TextEditor::TextDocument *document, const QTextCursor &cursor)
|
||||
{
|
||||
bool prepareSupported;
|
||||
if (!LanguageClient::supportsRename(m_client, document, prepareSupported))
|
||||
return;
|
||||
|
||||
const TextDocumentPositionParams params = generateDocPosParams(document, cursor);
|
||||
QTextCursor tc = cursor;
|
||||
tc.select(QTextCursor::WordUnderCursor);
|
||||
const QString oldSymbolName = tc.selectedText();
|
||||
const QString placeHolder = m_defaultSymbolMapper ? m_defaultSymbolMapper(oldSymbolName)
|
||||
const QString placeholder = m_defaultSymbolMapper ? m_defaultSymbolMapper(oldSymbolName)
|
||||
: oldSymbolName;
|
||||
|
||||
if (prepareSupported)
|
||||
requestPrepareRename(generateDocPosParams(document, cursor), placeHolder);
|
||||
else
|
||||
startRenameSymbol(generateDocPosParams(document, cursor), placeHolder);
|
||||
bool prepareSupported;
|
||||
if (!LanguageClient::supportsRename(m_client, document, prepareSupported)) {
|
||||
const QString error = tr("Renaming is not supported with %1").arg(m_client->name());
|
||||
createSearch(params, placeholder)->finishSearch(true, error);
|
||||
} else if (prepareSupported) {
|
||||
requestPrepareRename(generateDocPosParams(document, cursor), placeholder);
|
||||
} else {
|
||||
startRenameSymbol(generateDocPosParams(document, cursor), placeholder);
|
||||
}
|
||||
}
|
||||
|
||||
void SymbolSupport::requestPrepareRename(const TextDocumentPositionParams ¶ms,
|
||||
@@ -307,8 +309,10 @@ void SymbolSupport::requestPrepareRename(const TextDocumentPositionParams ¶m
|
||||
request.setResponseCallback([this, params, placeholder](
|
||||
const PrepareRenameRequest::Response &response) {
|
||||
const std::optional<PrepareRenameRequest::Response::Error> &error = response.error();
|
||||
if (error.has_value())
|
||||
if (error.has_value()) {
|
||||
m_client->log(*error);
|
||||
createSearch(params, placeholder)->finishSearch(true, error->toString());
|
||||
}
|
||||
|
||||
const std::optional<PrepareRenameResult> &result = response.result();
|
||||
if (result.has_value()) {
|
||||
@@ -361,8 +365,8 @@ QList<Core::SearchResultItem> generateReplaceItems(const WorkspaceEdit &edits)
|
||||
return generateSearchResultItems(rangesInDocument);
|
||||
}
|
||||
|
||||
void SymbolSupport::startRenameSymbol(const TextDocumentPositionParams &positionParams,
|
||||
const QString &placeholder)
|
||||
Core::SearchResult *SymbolSupport::createSearch(const TextDocumentPositionParams &positionParams,
|
||||
const QString &placeholder)
|
||||
{
|
||||
Core::SearchResult *search = Core::SearchResultWindow::instance()->startNewSearch(
|
||||
tr("Find References with %1 for:").arg(m_client->name()),
|
||||
@@ -394,7 +398,13 @@ void SymbolSupport::startRenameSymbol(const TextDocumentPositionParams &position
|
||||
applyRename(checkedItems);
|
||||
});
|
||||
|
||||
requestRename(positionParams, placeholder, search);
|
||||
return search;
|
||||
}
|
||||
|
||||
void SymbolSupport::startRenameSymbol(const TextDocumentPositionParams &positionParams,
|
||||
const QString &placeholder)
|
||||
{
|
||||
requestRename(positionParams, placeholder, createSearch(positionParams, placeholder));
|
||||
}
|
||||
|
||||
void SymbolSupport::handleRenameResponse(Core::SearchResult *search,
|
||||
|
@@ -60,6 +60,9 @@ private:
|
||||
const QString &placeholder);
|
||||
void requestRename(const LanguageServerProtocol::TextDocumentPositionParams &positionParams,
|
||||
const QString &newName, Core::SearchResult *search);
|
||||
Core::SearchResult *createSearch(
|
||||
const LanguageServerProtocol::TextDocumentPositionParams &positionParams,
|
||||
const QString &placeholder);
|
||||
void startRenameSymbol(const LanguageServerProtocol::TextDocumentPositionParams ¶ms,
|
||||
const QString &placeholder);
|
||||
void handleRenameResponse(Core::SearchResult *search,
|
||||
|
Reference in New Issue
Block a user