logic: Moved all error handling logic into ErrorController (issue #577)
* Handle all error related messages in ErrorController * Moved error filter state from Storage to ErrorController * Moved all error related messages to type/error subdirectory * Enable all errors shown by default * Always show unfiltered error count in status bar and overview * Fixed all errors shown again when changing error filter on errors for file
This commit is contained in:
@@ -81,10 +81,11 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
ss << "\t" + std::to_string(errorCount.total) + " errors (" + std::to_string(errorCount.fatal) + " fatal)\n";
|
||||
ss << "\n";
|
||||
|
||||
if (stats.completedFileCount != stats.fileCount)
|
||||
if (errorCount.fatal)
|
||||
{
|
||||
ss << "\tWarning: Indexing is incomplete as long as it yields fatal errors.\n";
|
||||
ss << "\tTry resolving them and refresh the project.\n";
|
||||
ss << "\tWarning: Your project has fatal errors, which cause\n";
|
||||
ss << "\t a lot of missing information in affected files.\n";
|
||||
ss << "\t Try to resolve them!\n";
|
||||
ss << "\n";
|
||||
}
|
||||
|
||||
@@ -96,6 +97,41 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
showCodeSnippets({ statsSnippet }, params);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageActivateErrors* message)
|
||||
{
|
||||
TRACE("code errors");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView* view = getView();
|
||||
|
||||
CodeView::ScrollParams scrollParams(CodeView::ScrollParams::SCROLL_TO_DEFINITION);
|
||||
view->scrollTo(scrollParams);
|
||||
|
||||
std::vector<ErrorInfo> errors;
|
||||
if (message->file.empty())
|
||||
{
|
||||
errors = m_storageAccess->getErrorsLimited(message->filter);
|
||||
}
|
||||
else
|
||||
{
|
||||
errors = m_storageAccess->getErrorsForFileLimited(message->filter, message->file);
|
||||
}
|
||||
|
||||
m_collection = m_storageAccess->getErrorSourceLocations(errors);
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForCollection(m_collection);
|
||||
|
||||
std::sort(snippets.begin(), snippets.end(), CodeSnippetParams::sortById);
|
||||
|
||||
CodeView::CodeParams params;
|
||||
params.clearSnippets = true;
|
||||
params.errorInfos = errors;
|
||||
params.showContents = !message->isReplayed();
|
||||
params.useSingleFileCache = false;
|
||||
|
||||
showCodeSnippets(snippets, params, false);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageActivateLocalSymbols* message)
|
||||
{
|
||||
CodeView* view = getView();
|
||||
@@ -230,14 +266,6 @@ void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageClearErrorCount* message)
|
||||
{
|
||||
if (getView()->showsErrors())
|
||||
{
|
||||
clear();
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageDeactivateEdge* message)
|
||||
{
|
||||
if (message->scrollToDefinition)
|
||||
@@ -249,6 +277,14 @@ void CodeController::handleMessage(MessageDeactivateEdge* message)
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageErrorCountClear* message)
|
||||
{
|
||||
if (getView()->showsErrors())
|
||||
{
|
||||
clear();
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageFlushUpdates* message)
|
||||
{
|
||||
getView()->showContents();
|
||||
@@ -289,44 +325,6 @@ void CodeController::handleMessage(MessageScrollCode* message)
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
TRACE("code errors");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView* view = getView();
|
||||
if (!view->showsErrors() || !message->errorId)
|
||||
{
|
||||
CodeView::ScrollParams scrollParams(CodeView::ScrollParams::SCROLL_TO_DEFINITION);
|
||||
view->scrollTo(scrollParams);
|
||||
|
||||
std::vector<ErrorInfo> errors;
|
||||
if (!message->showsOnlyErrorIds || message->errorIds.size())
|
||||
{
|
||||
errors = m_storageAccess->getErrorsLimited(message->errorIds);
|
||||
}
|
||||
|
||||
m_collection = m_storageAccess->getErrorSourceLocations(errors);
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForCollection(m_collection);
|
||||
|
||||
std::sort(snippets.begin(), snippets.end(), CodeSnippetParams::sortById);
|
||||
|
||||
CodeView::CodeParams params;
|
||||
params.clearSnippets = true;
|
||||
params.errorInfos = errors;
|
||||
params.showContents = !message->isReplayed();
|
||||
params.useSingleFileCache = false;
|
||||
|
||||
showCodeSnippets(snippets, params, false);
|
||||
}
|
||||
|
||||
if (message->errorId)
|
||||
{
|
||||
view->showActiveSnippet(std::vector<Id>(1, message->errorId), m_collection, message->isLast());
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageSearchFullText* message)
|
||||
{
|
||||
TRACE("code fulltext");
|
||||
@@ -346,6 +344,15 @@ void CodeController::handleMessage(MessageSearchFullText* message)
|
||||
showCodeSnippets(getSnippetsForCollection(m_collection), params);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowError* message)
|
||||
{
|
||||
CodeView* view = getView();
|
||||
if (view->showsErrors())
|
||||
{
|
||||
view->showActiveSnippet({ message->errorId }, m_collection, message->isLast());
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowScope* message)
|
||||
{
|
||||
TRACE("code scope");
|
||||
|
||||
Reference in New Issue
Block a user