ui: Improved user experience of error display
* label errors as errors instead of references in file snippet headers * show number of fatal errors in file snippet headers as well * only show the first 10 error snippets open, remaining collapsed * don't show status message after parsing in red on errors * don't show stats of parsing when project was only loaded
This commit is contained in:
@@ -28,8 +28,8 @@ const uint CodeController::s_lineRadius = 2;
|
||||
|
||||
void CodeController::handleMessage(MessageActivateAll* message)
|
||||
{
|
||||
std::vector<std::string> errorMessages;
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForErrorLocations(&errorMessages);
|
||||
std::vector<ErrorInfo> errors;
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForErrorLocations(&errors);
|
||||
|
||||
StorageStats stats = m_storageAccess->getStorageStats();
|
||||
CodeSnippetParams statsSnippet;
|
||||
@@ -80,7 +80,7 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
snippets.insert(snippets.begin(), statsSnippet);
|
||||
|
||||
CodeView* view = getView();
|
||||
view->setErrorMessages(errorMessages);
|
||||
view->setErrorInfos(errors);
|
||||
view->showCodeSnippets(snippets, std::vector<Id>());
|
||||
|
||||
showContents(message);
|
||||
@@ -95,7 +95,7 @@ void CodeController::handleMessage(MessageActivateLocalSymbols* message)
|
||||
void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
CodeView* view = getView();
|
||||
view->setErrorMessages(std::vector<std::string>());
|
||||
view->setErrorInfos(std::vector<ErrorInfo>());
|
||||
|
||||
std::vector<Id> activeTokenIds = message->tokenIds;
|
||||
Id declarationId = 0; // 0 means that no token is found.
|
||||
@@ -162,7 +162,14 @@ void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
case MessageChangeFileView::FILE_SNIPPETS:
|
||||
if (message->needsData)
|
||||
{
|
||||
view->addCodeSnippets(getSnippetsForActiveTokenLocationsInFile(message->locationFile), false);
|
||||
if (message->showErrors)
|
||||
{
|
||||
view->addCodeSnippets(getSnippetsForFile(message->locationFile), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
view->addCodeSnippets(getSnippetsForActiveTokenLocationsInFile(message->locationFile), false);
|
||||
}
|
||||
}
|
||||
view->setFileState(message->filePath, CodeView::FILE_SNIPPETS);
|
||||
break;
|
||||
@@ -181,8 +188,8 @@ void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
|
||||
if (message->showErrors)
|
||||
{
|
||||
std::vector<std::string> errorMessages;
|
||||
TokenLocationCollection errorCollection = m_storageAccess->getErrorTokenLocations(&errorMessages);
|
||||
std::vector<ErrorInfo> errors;
|
||||
TokenLocationCollection errorCollection = m_storageAccess->getErrorTokenLocations(&errors);
|
||||
params.locationFile = std::make_shared<TokenLocationFile>(*errorCollection.findTokenLocationFileByPath(message->filePath));
|
||||
params.locationFile->isWholeCopy = true;
|
||||
}
|
||||
@@ -225,11 +232,11 @@ void CodeController::handleMessage(MessageScrollCode* message)
|
||||
|
||||
void CodeController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
std::vector<std::string> errorMessages;
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForErrorLocations(&errorMessages);
|
||||
std::vector<ErrorInfo> errors;
|
||||
std::vector<CodeSnippetParams> snippets = getSnippetsForErrorLocations(&errors);
|
||||
|
||||
CodeView* view = getView();
|
||||
view->setErrorMessages(errorMessages);
|
||||
view->setErrorInfos(errors);
|
||||
view->showCodeSnippets(snippets, std::vector<Id>());
|
||||
|
||||
showContents(message);
|
||||
@@ -256,8 +263,8 @@ void CodeController::handleMessage(MessageShowScope* message)
|
||||
|
||||
if (message->showErrors)
|
||||
{
|
||||
std::vector<std::string> errorMessages;
|
||||
std::vector<CodeSnippetParams> errorSnippets = getSnippetsForErrorLocations(&errorMessages);
|
||||
std::vector<ErrorInfo> errors;
|
||||
std::vector<CodeSnippetParams> errorSnippets = getSnippetsForErrorLocations(&errors);
|
||||
|
||||
for (const CodeSnippetParams& error : errorSnippets)
|
||||
{
|
||||
@@ -556,17 +563,30 @@ std::shared_ptr<TokenLocationFile> CodeController::getTokenLocationOfParentScope
|
||||
}
|
||||
|
||||
std::vector<CodeSnippetParams> CodeController::getSnippetsForErrorLocations(
|
||||
std::vector<std::string>* errorMessages) const
|
||||
std::vector<ErrorInfo>* errors) const
|
||||
{
|
||||
TokenLocationCollection errorCollection = m_storageAccess->getErrorTokenLocations(errorMessages);
|
||||
TokenLocationCollection errorCollection = m_storageAccess->getErrorTokenLocations(errors);
|
||||
|
||||
std::vector<CodeSnippetParams> snippets;
|
||||
|
||||
errorCollection.forEachTokenLocationFile(
|
||||
[&](std::shared_ptr<TokenLocationFile> file) -> void
|
||||
{
|
||||
std::vector<CodeSnippetParams> fileSnippets = getSnippetsForFile(file);
|
||||
snippets.insert(snippets.end(), fileSnippets.begin(), fileSnippets.end());
|
||||
if (snippets.size() < 10)
|
||||
{
|
||||
std::vector<CodeSnippetParams> fileSnippets = getSnippetsForFile(file);
|
||||
snippets.insert(snippets.end(), fileSnippets.begin(), fileSnippets.end());
|
||||
}
|
||||
else
|
||||
{
|
||||
CodeSnippetParams params;
|
||||
params.locationFile = file;
|
||||
params.refCount = file->getUnscopedStartTokenLocationCount();
|
||||
params.modificationTime = m_storageAccess->getFileModificationTime(file->getFilePath());
|
||||
|
||||
params.isCollapsed = true;
|
||||
snippets.push_back(params);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user