forked from qt-creator/qt-creator
Clang: Add clang query pane
We now support highlighting for an example text and for the query. Change-Id: I88c415ff871cf3e4c2d4fc83d60a8555bf0ce08a Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -25,32 +25,40 @@
|
||||
|
||||
#include "refactoringclient.h"
|
||||
|
||||
#include "clangqueryhighlighter.h"
|
||||
#include "clangqueryexamplehighlighter.h"
|
||||
|
||||
#include <refactoringconnectionclient.h>
|
||||
#include <sourcelocationsforrenamingmessage.h>
|
||||
#include <sourcerangesanddiagnosticsforquerymessage.h>
|
||||
#include <clangrefactoringmessages.h>
|
||||
|
||||
namespace ClangRefactoring {
|
||||
|
||||
void RefactoringClient::alive()
|
||||
{
|
||||
if (connectionClient)
|
||||
connectionClient->resetProcessAliveTimer();
|
||||
if (m_connectionClient)
|
||||
m_connectionClient->resetProcessAliveTimer();
|
||||
}
|
||||
|
||||
void RefactoringClient::sourceLocationsForRenamingMessage(
|
||||
ClangBackEnd::SourceLocationsForRenamingMessage &&message)
|
||||
{
|
||||
localRenamingCallback(message.symbolName().toQString(),
|
||||
m_localRenamingCallback(message.symbolName().toQString(),
|
||||
message.sourceLocations(),
|
||||
message.textDocumentRevision());
|
||||
|
||||
refactoringEngine->setUsable(true);
|
||||
m_refactoringEngine->setUsable(true);
|
||||
}
|
||||
|
||||
void RefactoringClient::sourceRangesAndDiagnosticsForQueryMessage(
|
||||
ClangBackEnd::SourceRangesAndDiagnosticsForQueryMessage &&message)
|
||||
{
|
||||
++resultCounter_;
|
||||
m_clangQueryExampleHighlighter->setSourceRanges(message.takeSourceRanges());
|
||||
m_clangQueryHighlighter->setDiagnostics(message.diagnostics());
|
||||
}
|
||||
|
||||
void RefactoringClient::sourceRangesForQueryMessage(ClangBackEnd::SourceRangesForQueryMessage &&message)
|
||||
{
|
||||
++m_resultCounter;
|
||||
addSearchResults(message.sourceRanges());
|
||||
setResultCounterAndSendSearchIsFinishedIfFinished();
|
||||
}
|
||||
@@ -58,50 +66,60 @@ void RefactoringClient::sourceRangesAndDiagnosticsForQueryMessage(
|
||||
void RefactoringClient::setLocalRenamingCallback(
|
||||
CppTools::RefactoringEngineInterface::RenameCallback &&localRenamingCallback)
|
||||
{
|
||||
this->localRenamingCallback = std::move(localRenamingCallback);
|
||||
m_localRenamingCallback = std::move(localRenamingCallback);
|
||||
}
|
||||
|
||||
void RefactoringClient::setRefactoringEngine(RefactoringEngine *refactoringEngine)
|
||||
{
|
||||
this->refactoringEngine = refactoringEngine;
|
||||
m_refactoringEngine = refactoringEngine;
|
||||
}
|
||||
|
||||
void RefactoringClient::setSearchHandle(SearchHandle *searchHandle)
|
||||
{
|
||||
this->searchHandle_ = searchHandle;
|
||||
m_searchHandle = searchHandle;
|
||||
}
|
||||
|
||||
SearchHandle *RefactoringClient::searchHandle() const
|
||||
{
|
||||
return searchHandle_;
|
||||
return m_searchHandle;
|
||||
}
|
||||
|
||||
void RefactoringClient::setClangQueryExampleHighlighter(ClangQueryExampleHighlighter *highlighter)
|
||||
{
|
||||
m_clangQueryExampleHighlighter = highlighter;
|
||||
}
|
||||
|
||||
void RefactoringClient::setClangQueryHighlighter(ClangQueryHighlighter *highlighter)
|
||||
{
|
||||
m_clangQueryHighlighter = highlighter;
|
||||
}
|
||||
|
||||
bool RefactoringClient::hasValidLocalRenamingCallback() const
|
||||
{
|
||||
return bool(localRenamingCallback);
|
||||
return bool(m_localRenamingCallback);
|
||||
}
|
||||
|
||||
void RefactoringClient::setExpectedResultCount(uint count)
|
||||
{
|
||||
expectedResultCount_ = count;
|
||||
resultCounter_ = 0;
|
||||
searchHandle_->setExpectedResultCount(count);
|
||||
m_expectedResultCount = count;
|
||||
m_resultCounter = 0;
|
||||
m_searchHandle->setExpectedResultCount(count);
|
||||
}
|
||||
|
||||
uint RefactoringClient::expectedResultCount() const
|
||||
{
|
||||
return expectedResultCount_;
|
||||
return m_expectedResultCount;
|
||||
}
|
||||
|
||||
uint RefactoringClient::resultCounter() const
|
||||
{
|
||||
return resultCounter_;
|
||||
return m_resultCounter;
|
||||
}
|
||||
|
||||
void RefactoringClient::setRefactoringConnectionClient(
|
||||
ClangBackEnd::RefactoringConnectionClient *connectionClient)
|
||||
{
|
||||
this->connectionClient = connectionClient;
|
||||
m_connectionClient = connectionClient;
|
||||
}
|
||||
|
||||
std::unordered_map<uint, QString> RefactoringClient::convertFilePaths(
|
||||
@@ -135,7 +153,7 @@ void RefactoringClient::addSearchResults(const ClangBackEnd::SourceRangesContain
|
||||
void RefactoringClient::addSearchResult(const ClangBackEnd::SourceRangeWithTextContainer &sourceRangeWithText,
|
||||
std::unordered_map<uint, QString> &filePaths)
|
||||
{
|
||||
searchHandle_->addResult(filePaths[sourceRangeWithText.fileHash()],
|
||||
m_searchHandle->addResult(filePaths[sourceRangeWithText.fileHash()],
|
||||
sourceRangeWithText.text(),
|
||||
{{int(sourceRangeWithText.start().line()),
|
||||
int(sourceRangeWithText.start().column() - 1),
|
||||
@@ -147,9 +165,9 @@ void RefactoringClient::addSearchResult(const ClangBackEnd::SourceRangeWithTextC
|
||||
|
||||
void RefactoringClient::setResultCounterAndSendSearchIsFinishedIfFinished()
|
||||
{
|
||||
searchHandle_->setResultCounter(resultCounter_);
|
||||
if (resultCounter_ == expectedResultCount_)
|
||||
searchHandle_->finishSearch();
|
||||
m_searchHandle->setResultCounter(m_resultCounter);
|
||||
if (m_resultCounter == m_expectedResultCount)
|
||||
m_searchHandle->finishSearch();
|
||||
}
|
||||
|
||||
} // namespace ClangRefactoring
|
||||
|
||||
Reference in New Issue
Block a user